1037 Commits

Author SHA1 Message Date
cf5bb87b6c refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-07 10:48:39 -06:00
31df328be7 added TaskWaitMillis to config
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-07 10:43:12 -06:00
ff8d037474 removed event
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-07 07:27:10 -06:00
031682051f refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-07 07:21:15 -06:00
0e8824a8d2 refactor 2024-12-07 07:13:13 -06:00
f0ddbe7a8c refactor 2024-12-07 07:12:52 -06:00
18c5948e3f use new tasks interface
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-06 17:40:26 -06:00
660bc28f0c refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-06 14:31:29 -06:00
9c5166b921 refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-06 13:59:34 -06:00
4a7c76cc1c refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-06 13:55:05 -06:00
1e2fd53b86 refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-05 13:59:40 -06:00
ab09407c3d refactor 2024-12-05 13:26:58 -06:00
9b2310a3e7 refactor 2024-12-05 12:40:41 -06:00
56a56e57c8 meta db unit tests and fixes 2024-12-05 11:09:16 -06:00
7908e7e982 meta db unit tests and fixes 2024-12-05 11:08:53 -06:00
92b32b838c meta db unit tests and fixes 2024-12-05 10:50:59 -06:00
65efa8590f meta db unit tests and fixes 2024-12-05 10:46:30 -06:00
d70aa968d6 meta db unit tests and fixes 2024-12-05 09:15:22 -06:00
591cd0ad2d meta db unit tests and fixes 2024-12-05 09:13:31 -06:00
1bdc78e5e0 meta db unit tests and fixes 2024-12-05 09:08:47 -06:00
7100708dfd meta db unit tests and fixes 2024-12-05 08:34:35 -06:00
08379ea622 meta db unit tests and fixes 2024-12-05 08:08:40 -06:00
161208a1fd meta db unit tests and fixes 2024-12-05 07:00:16 -06:00
3959067f22 meta db unit tests and fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-04 18:40:50 -06:00
65096f60b1 updates
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-04 17:58:52 -06:00
4b32664e46 meta db unit tests and fixes 2024-12-04 14:53:01 -06:00
cf1ee8db02 meta db unit tests and fixes 2024-12-04 14:44:41 -06:00
89d4b4245d meta db unit tests and fixes 2024-12-04 14:21:03 -06:00
1d7d221da1 meta db unit tests and fixes 2024-12-04 13:56:06 -06:00
b4621f6a4e meta db unit tests and fixes 2024-12-04 13:51:41 -06:00
c6b895ced2 meta db unit tests and fixes 2024-12-04 12:16:42 -06:00
5f51a9384e meta db unit tests and fixes 2024-12-04 12:08:19 -06:00
88736fc58a meta db unit tests and fixes 2024-12-04 11:38:02 -06:00
be96d79281 added rocksdb meta db 2024-12-04 10:11:09 -06:00
2a28eed7e8 added rocksdb 2024-12-04 08:07:37 -06:00
443aaff217 added task scheduler and refactored remove deleted items 2024-12-04 07:38:59 -06:00
b4d3bb083d refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-03 17:39:30 -06:00
b9ce21853f refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-03 16:38:38 -06:00
31e20e9af0 refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-03 14:32:28 -06:00
cfb7a74841 refactor 2024-12-03 14:28:01 -06:00
c8f2485ff0 refactor meta db to allow alternate implementations 2024-12-03 14:25:35 -06:00
62857e1372 refactor 2024-12-03 14:02:51 -06:00
ae3b592cf6 move event to trace 2024-12-03 10:44:40 -06:00
3365363d23 updated build system 2024-12-03 10:27:46 -06:00
f480720665 refactor 2024-12-03 10:08:19 -06:00
d0a8f9df58 refactor 2024-12-03 10:03:42 -06:00
28dc153822 refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-02 19:20:17 -06:00
b265dcf73f refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-02 19:18:23 -06:00
4b9b095104 refactor stop 2024-12-02 19:16:52 -06:00
ea8eb53a34 fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-02 18:26:14 -06:00
412b807d3f refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-02 14:54:58 -06:00
14cbde2586 refactor 2024-12-02 14:37:49 -06:00
429751e1fc refactor 2024-12-02 13:57:25 -06:00
04f50f7453 refactor 2024-12-02 13:56:08 -06:00
3814b9797d refactor 2024-12-02 13:54:02 -06:00
44d810c398 refactor used drive space and get_file_list 2024-12-02 13:46:49 -06:00
c982972ee8 refactor used drive space and get_file_list 2024-12-02 13:45:41 -06:00
cfba3d3082 refactor used drive space and get_file_list 2024-12-02 13:44:04 -06:00
587527e418 evict 0 byte files 2024-12-02 12:12:05 -06:00
bb4a3bc6cb refactor 2024-12-02 12:03:26 -06:00
29615d61eb [bug] Incorrect file size displayed while upload is pending #23 2024-12-02 11:10:40 -06:00
86f910c865 [bug] Incorrect file size displayed while upload is pending #23 2024-12-02 11:05:28 -06:00
2f6a691f65 [bug] Incorrect file size displayed while upload is pending #23 2024-12-02 11:03:25 -06:00
ea59ce6dc3 [bug] Incorrect file size displayed while upload is pending #23 2024-12-02 10:57:56 -06:00
3cbe39784f update
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-01 19:17:00 -06:00
cb2089ccfe updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-12-01 18:52:39 -06:00
c2bdb884c2 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-01 12:12:28 -06:00
7daec9d0f5 moved to debug
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-12-01 09:18:58 -06:00
a05c642f5e updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-12-01 09:04:57 -06:00
4c70641d8f refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-30 18:57:42 -06:00
e1939d4d11 refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-30 17:41:49 -06:00
6da5d9f4f0 refactor
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-11-30 17:40:48 -06:00
401344ac5a s3 fixes 2024-11-30 17:40:22 -06:00
329ba1d5e4 s3 fixes 2024-11-30 17:38:24 -06:00
7faf648919 s3 fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-30 17:21:41 -06:00
8b5369d120 fix drive space 2024-11-30 16:59:11 -06:00
8af198f7a4 fix drive space 2024-11-30 16:58:26 -06:00
b1735ab0af fuse unit tests and fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-29 06:47:21 -06:00
1ab36272f6 fuse unit tests and fixes 2024-11-29 06:44:26 -06:00
86e5f0359d revert
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-25 16:44:40 -06:00
ff007bca7f future support 2024-11-24 17:25:05 -06:00
d03e6e8201 refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-14 13:25:35 -06:00
d481aeae66 cleanup
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-14 12:41:21 -06:00
c832d4ce21 updated changelog
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-14 09:54:10 -06:00
a5a0e690ce updates
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-11-14 09:52:47 -06:00
74496016f0 fuse unit tests and fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-14 09:42:42 -06:00
bb8ff0de59 fix aarch64
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-13 17:33:38 -06:00
c66369f302 fixes
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-13 17:17:32 -06:00
de800f79e9 fuse unit tests and fixes
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-13 14:31:53 -06:00
c0111d83ae refactor
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-13 12:44:11 -06:00
596b171c2c refactor 2024-11-13 12:31:10 -06:00
99785c0b41 refactor
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-13 12:02:57 -06:00
f2eafe0f14 fuse unit tests and fixes
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-13 11:58:30 -06:00
5ea9f27645 fuse unit tests and fixes
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-13 10:10:01 -06:00
6300270a21 fuse unit tests and fixes
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-13 10:03:10 -06:00
2e587fd897 fuse unit tests and fixes 2024-11-13 09:42:57 -06:00
f022be6fb9 fuse unit tests and fixes
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-13 08:41:35 -06:00
8ebf66a686 fuse unit tests and fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-11 19:54:56 -06:00
ee695eb738 fuse unit tests and fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-11 18:55:14 -06:00
80d8d6f32f fuse unit tests and fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-11 18:38:47 -06:00
0b7a9c6a56 fuse unit tests and fixes 2024-11-11 18:05:59 -06:00
54b70f99cc refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-11 14:15:00 -06:00
fe0fef2f21 refactor 2024-11-11 14:12:48 -06:00
1eec19c583 cleanup 2024-11-11 13:59:20 -06:00
6b40658eac refactor 2024-11-11 13:58:47 -06:00
bd836b9ecb fuse unit tests and fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-11 12:58:02 -06:00
074a026d64 fuse unit tests and fixes 2024-11-10 17:21:57 -06:00
60864649c0 fuse unit tests and fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-10 17:14:19 -06:00
d2a26f0c09 fuse unit tests and fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-10 17:10:29 -06:00
74546807f4 fuse unit tests and fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-10 16:53:00 -06:00
d7d9199f8e fuse unit tests and fixes 2024-11-10 16:33:44 -06:00
77299455f9 fuse unit tests and fixes 2024-11-10 16:32:38 -06:00
0d5ac30e49 refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-10 16:21:26 -06:00
2c55e243f5 fuse unit tests and fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-10 16:09:31 -06:00
cb2362432e cleanup
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-10 15:48:29 -06:00
9c3e464ce4 fuse unit tests and fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-10 15:45:25 -06:00
4e8e188d24 fuse unit tests and fixes 2024-11-10 15:18:05 -06:00
e476b4f0c6 fuse unit tests and fixes 2024-11-10 10:26:38 -06:00
eec286845e fuse unit tests and fixes 2024-11-10 10:25:53 -06:00
c276cb8979 fuse unit tests and fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-10 10:24:13 -06:00
58107e6ed8 fuse unit tests and fixes 2024-11-10 10:18:08 -06:00
eb4c8c6cc0 fuse unit tests and fixes 2024-11-10 10:13:02 -06:00
0f7dfc6ce7 cleanup
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-09 17:06:08 -06:00
a4693f8acc refactor 2024-11-09 17:02:26 -06:00
fc7c6b9705 fuse unit tests and fixes 2024-11-09 16:58:38 -06:00
43ce2d13ec fuse unit tests and fixes 2024-11-09 16:21:13 -06:00
6f6f8d4d52 temporarily disable sia testing
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-11-09 16:18:38 -06:00
54fdcf6d80 fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-09 16:15:00 -06:00
fd46d3ef96 fix
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-09 15:56:52 -06:00
2a15d6b4a3 fixes
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-09 15:54:34 -06:00
acdc165102 remove tests
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-09 15:44:10 -06:00
bb4e3c26f4 unit test fixes
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-09 15:39:08 -06:00
8e4a8f0f4b refactor
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-09 15:20:02 -06:00
2fd6f68c97 winfsp unit tests and fixes
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-09 15:14:32 -06:00
f7ca4f8fa3 spelling
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-09 14:18:30 -06:00
4c3d759837 winfsp unit tests and fixes
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-09 14:11:44 -06:00
04daf393d7 winfsp unit tests and fixes
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-09 12:07:00 -06:00
e62477a38e winfsp unit tests and fixes 2024-11-09 12:06:17 -06:00
3338fcf91f winfsp unit tests and fixes 2024-11-09 11:50:27 -06:00
136f76c575 winfsp unit tests and fixes
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-09 09:36:17 -06:00
b94c124869 winfsp unit tests and fixes 2024-11-09 09:21:52 -06:00
1fe7b68f0e winfsp unit tests and fixes
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-09 09:19:01 -06:00
3d9ed2dfe8 spelling
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-09 09:17:04 -06:00
c8cc0feae5 winfsp unit tests and fixes 2024-11-09 09:16:17 -06:00
1d53cd8e8b refactor 2024-11-09 07:22:33 -06:00
73ec7f2252 winfsp unit tests and fixes
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-08 14:49:22 -06:00
5450ffc280 winfsp unit tests and fixes 2024-11-08 14:41:59 -06:00
a9125196ce winfsp unit tests and fixes 2024-11-08 14:35:55 -06:00
ab9765582a winfsp unit tests and fixes 2024-11-08 14:27:10 -06:00
060b2b70dc winfsp unit tests and fixes 2024-11-08 13:10:21 -06:00
739a31538f winfsp unit tests and fixes 2024-11-08 13:05:53 -06:00
67595b4d45 winfsp unit tests and fixes 2024-11-08 13:04:15 -06:00
c5003e0ee6 winfsp unit tests and fixes 2024-11-08 13:01:28 -06:00
984657a5dd fix 2024-11-08 12:41:21 -06:00
2930933f19 winfsp unit tests and fixes 2024-11-08 12:37:15 -06:00
72a6f5ae08 refactor 2024-11-08 12:33:38 -06:00
7a96a8cbf3 winfsp unit tests and fixes 2024-11-08 12:32:00 -06:00
0b4befd823 winfsp unit tests and fixes 2024-11-08 12:26:48 -06:00
151b6775b0 winfsp unit tests and fixes 2024-11-08 12:24:01 -06:00
47a6bdbcd2 winfsp unit tests and fixes 2024-11-08 11:53:21 -06:00
20ab95380a winfsp unit tests and fixes 2024-11-08 11:09:03 -06:00
73afdaedb9 winfsp unit tests and fixes 2024-11-08 10:54:23 -06:00
a231c2afaf fuse unit tests and fixes 2024-11-08 10:32:37 -06:00
74109d1195 fuse unit tests and fixes 2024-11-08 10:31:20 -06:00
2bd847b833 winfsp unit tests and fixes 2024-11-08 10:17:43 -06:00
2d74fb30de remote fixes 2024-11-08 09:40:56 -06:00
af339e6086 debugging
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-08 05:55:52 -06:00
ae5c4a11a8 fix
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-07 16:50:31 -06:00
4ce7d76500 refactor 2024-11-07 16:39:13 -06:00
a031f9d867 refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-07 14:34:01 -06:00
2f6fa792df refactor 2024-11-07 14:32:57 -06:00
be0f977dc7 refactor 2024-11-07 14:32:12 -06:00
73efae7c2f refactor 2024-11-07 14:31:56 -06:00
6b67cd676d refactor 2024-11-07 14:29:47 -06:00
2db38a87e3 refactor 2024-11-07 14:28:25 -06:00
213511a77d fix 2024-11-07 14:27:13 -06:00
a38a033143 refactor 2024-11-07 14:22:49 -06:00
619d5939b3 refactor 2024-11-07 14:22:03 -06:00
68a26d2bc6 refactor 2024-11-07 14:20:14 -06:00
2661885cf2 refactor 2024-11-07 14:19:26 -06:00
6a820837cc refactor 2024-11-07 14:16:27 -06:00
02b74402f4 refactor 2024-11-07 14:13:30 -06:00
3535a61844 refactor 2024-11-07 14:12:44 -06:00
eb4fe4ff60 refactor 2024-11-07 14:12:17 -06:00
793ec5b4a5 refactor 2024-11-07 14:08:08 -06:00
c14b637536 winfsp unit tests and fixes 2024-11-07 14:06:39 -06:00
489d9b1960 winfsp unit tests and fixes 2024-11-07 12:37:35 -06:00
2f60890d29 winfsp unit tests and fixes 2024-11-07 12:36:24 -06:00
19d4b0a247 winfsp unit tests and fixes 2024-11-07 12:33:15 -06:00
69d190e485 winfsp unit tests and fixes 2024-11-07 12:32:07 -06:00
2df84f53ed winfsp unit tests and fixes 2024-11-07 11:14:38 -06:00
876a1e9cd8 refactor 2024-11-07 09:57:21 -06:00
2945793de9 fix 2024-11-07 09:25:51 -06:00
0de0e511ee winfsp unit tests and fixes 2024-11-07 09:22:24 -06:00
c16d9f9712 winfsp unit tests and fixes 2024-11-07 09:21:00 -06:00
0903d4b83e winfsp unit tests and fixes 2024-11-07 09:17:32 -06:00
0bd1f72017 winfsp unit tests and fixes 2024-11-07 08:56:18 -06:00
7bc1440b8b winfsp unit tests and fixes 2024-11-07 08:31:39 -06:00
9562ac2c62 winfsp unit tests and fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-06 11:51:39 -06:00
9da78b82f3 debugging
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-05 14:02:30 -06:00
8018ce51a0 winfsp unit tests and fixes 2024-11-05 13:52:05 -06:00
3871e44732 winfsp unit tests and fixes 2024-11-05 13:20:08 -06:00
beb1058a51 winfsp unit tests and fixes 2024-11-05 13:07:50 -06:00
259efff707 winfsp unit tests and fixes 2024-11-05 13:07:22 -06:00
3c4a4d8976 winfsp unit tests and fixes 2024-11-05 13:01:01 -06:00
e3ad402853 winfsp unit tests and fixes 2024-11-05 13:00:34 -06:00
470e7b0b07 winfsp unit tests and fixes 2024-11-05 12:53:19 -06:00
cda89d0588 winfsp unit tests and fixes-support remote mount 2024-11-05 12:46:13 -06:00
f5993d472c winfsp unit tests and fixes
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-11-04 14:17:59 -06:00
0d01862441 winfsp unit tests and fixes 2024-11-04 13:54:04 -06:00
ec2ff87ac7 winfsp unit tests and fixes 2024-11-04 13:43:59 -06:00
fd16a55745 winfsp unit tests and fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-11-01 09:41:50 -05:00
f1f9e4547d updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-31 17:22:12 -05:00
3238b6d4de fix
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-10-31 17:06:43 -05:00
43f0a4b646 fix
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-10-31 16:53:04 -05:00
c760b7328b fix
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-10-31 16:51:27 -05:00
7d9db55d5d refactor
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-10-31 16:50:29 -05:00
0741e307cc fix
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-10-31 16:49:17 -05:00
38f5374e49 winfsp unit tests and fixes
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-10-31 14:46:42 -05:00
db1320dd3a updated build system 2024-10-31 14:12:32 -05:00
2f8f38b6a2 winfsp unit tests and fixes 2024-10-31 12:14:09 -05:00
0303dcf16a updated build system 2024-10-31 10:55:31 -05:00
4c4db56a82 winfsp unit tests and fixes 2024-10-31 10:43:41 -05:00
11c58c4afb winfsp unit tests and fixes 2024-10-30 15:28:33 -05:00
07d0eb0616 winfsp unit tests and fixes 2024-10-30 14:56:50 -05:00
7d74d192f9 winfsp unit tests and fixes 2024-10-30 12:37:26 -05:00
da60c39216 winfsp unit tests and fixes 2024-10-30 11:25:08 -05:00
5ca67b28cf winfsp unit tests and fixes 2024-10-30 11:01:45 -05:00
8247669d3b winfsp unit tests and fixes 2024-10-30 09:49:28 -05:00
55762f9c92 winfsp unit tests and fixes 2024-10-30 09:26:45 -05:00
2a1a48bc68 show logging 2024-10-30 07:49:01 -05:00
d5b47a803c winfsp unit tests and fixes 2024-10-29 14:53:30 -05:00
695a7b0195 winfsp unit tests and fixes 2024-10-29 14:45:19 -05:00
ff13142093 winfsp unit tests and fixes 2024-10-29 14:45:05 -05:00
d6aace8c51 winfsp unit tests and fixes 2024-10-29 14:29:10 -05:00
ec2b8e1854 winfsp unit tests and fixes 2024-10-29 14:21:15 -05:00
884d2d6890 winfsp unit tests 2024-10-29 14:15:04 -05:00
72899173a0 fix 2024-10-28 15:15:10 -05:00
79c72d1aef added test 2024-10-28 14:36:38 -05:00
ab0b1b645b fix 2024-10-28 14:20:02 -05:00
7eb12d09f9 fixes 2024-10-28 14:18:24 -05:00
ed8ec257cc fix 2024-10-28 14:09:52 -05:00
c7a28ae526 refactor 2024-10-28 13:57:06 -05:00
c22c68ef28 refactor 2024-10-28 13:51:24 -05:00
d07e1f9cce refactor 2024-10-28 12:50:53 -05:00
158cd55b1a fixes 2024-10-28 12:50:20 -05:00
5fcc59434b refactor 2024-10-28 12:35:46 -05:00
0650790c43 fixes
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-10-26 21:27:35 -05:00
55debcb643 fix
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-10-26 21:17:58 -05:00
ded55057cc updated changelog
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-10-26 21:15:24 -05:00
7cb78cab40 fix 2024-10-26 21:11:20 -05:00
468aba1399 fixes 2024-10-26 20:53:41 -05:00
eba242de7f fix
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-10-26 20:39:01 -05:00
fa92540bb9 fix
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-10-25 18:38:56 -05:00
b508d98dd7 windows fixes
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-10-25 17:42:32 -05:00
4b68e5e4b7 fixes 2024-10-25 13:19:02 -05:00
3f6121839a fix 2024-10-25 12:03:45 -05:00
5e1745ebfb fix 2024-10-25 11:59:29 -05:00
b20bc6c28a refactor 2024-10-25 11:50:19 -05:00
9a1483377c refactor 2024-10-25 11:45:10 -05:00
4c97f6b098 remove logging 2024-10-25 11:37:52 -05:00
f9af43309d fixes 2024-10-25 11:24:47 -05:00
a77fd75687 refactor 2024-10-25 10:18:29 -05:00
f5b4928818 fix windows upload 2024-10-25 10:15:35 -05:00
25d61b5cd4 refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-24 20:41:21 -05:00
e65e14f796 fixes
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-10-24 20:33:20 -05:00
6aea801779 fix
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-10-24 20:28:14 -05:00
21fd9fe227 fixes
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-10-24 20:25:06 -05:00
948b0fdd99 fix
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-10-24 20:14:43 -05:00
b5cf2de900 refactor 2024-10-24 20:08:40 -05:00
18d05ca635 fixes
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-10-24 20:07:04 -05:00
b8cd42e235 updated build system
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-10-24 19:06:05 -05:00
4e8ff7815e refactor
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-10-24 19:02:11 -05:00
57b007759e fixes
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-10-24 19:01:33 -05:00
8692541e7f fuse test fixes 2024-10-24 18:27:36 -05:00
f5b827a039 test fixes 2024-10-24 17:32:07 -05:00
3a79cee2f9 fix
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-24 14:58:06 -05:00
3b68543e32 fix 2024-10-24 14:47:13 -05:00
7c2a245944 fix 2024-10-24 14:42:47 -05:00
56e27e3184 fix 2024-10-24 14:41:45 -05:00
b7c87bed82 refactor 2024-10-24 12:44:52 -05:00
3cfda97c05 refactor 2024-10-24 12:42:56 -05:00
52df12493b refactor 2024-10-24 12:40:30 -05:00
6e7b030afa fix 2024-10-24 08:14:43 -05:00
afeeb97f05 refactor 2024-10-24 08:10:46 -05:00
5f925d3e71 refactor 2024-10-24 08:08:40 -05:00
26e1975edc added winfsp test executable 2024-10-24 08:02:39 -05:00
2169456d6a added winfsp test executable 2024-10-24 07:45:20 -05:00
cca53b2d26 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-23 11:19:59 -05:00
2a6ecf61b2 refactor 2024-10-23 11:13:56 -05:00
18c53fad9a refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-22 19:11:00 -05:00
84fc05acc0 fixes 2024-10-22 19:00:08 -05:00
c960df8f70 refactor
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-10-22 15:08:50 -05:00
9d0baf30b8 refactor 2024-10-22 15:07:15 -05:00
312e4bc0f1 fix 2024-10-22 15:05:54 -05:00
1d7f5b7ef1 fix 2024-10-22 15:04:38 -05:00
08e381a307 refactor 2024-10-22 15:01:04 -05:00
49e518ac19 refactor 2024-10-22 13:10:01 -05:00
8e2ebf05b8 refactor 2024-10-22 13:06:02 -05:00
924b79add2 refactor 2024-10-22 13:02:17 -05:00
857dcc5535 cleanup 2024-10-22 12:22:58 -05:00
7c0d583435 temp disable drive and provider unit tests 2024-10-22 11:53:24 -05:00
2b6a88f8cb continue refactor drive tests 2024-10-22 10:47:51 -05:00
fbf31c77ed fixes 2024-10-22 10:45:08 -05:00
9c2aa62f1f continue refactor drive tests 2024-10-22 10:36:39 -05:00
b6456abf0d continue refactor drive tests 2024-10-22 10:27:31 -05:00
5138b0d1ab refactor 2024-10-22 09:25:55 -05:00
0f60a5a467 continue refactor drive tests 2024-10-22 09:18:09 -05:00
982e5357a5 continue refactor drive tests 2024-10-22 09:14:33 -05:00
0ad0ff508b continue refactor drive tests 2024-10-22 08:18:53 -05:00
b4d61649cb refactor winfsp test 2024-10-22 08:00:16 -05:00
cdfbaa47b6 grammar 2024-10-21 11:57:38 -05:00
211805e460 updated CHANGELOG.md 2024-10-21 11:55:32 -05:00
841d57cf13 fuse permission fixes 2024-10-21 11:52:21 -05:00
bd25904371 fix 2024-10-21 08:30:26 -05:00
3c001c11ae updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-20 18:48:01 -05:00
1f6036ec18 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-20 12:01:23 -05:00
104e101158 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-19 20:45:55 -05:00
b281b4c105 fix
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-19 20:06:39 -05:00
cf6a370eea updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-19 15:58:51 -05:00
8feb244dc9 updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-10-19 11:39:55 -05:00
f9e2e72d84 updated build system
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-10-19 11:34:41 -05:00
32ef8ba3c3 updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-10-19 11:33:28 -05:00
2fb53e34af updated build system
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-10-19 11:10:36 -05:00
c72dec6369 fix
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-18 15:15:27 -05:00
c0b0c5d397 fixes 2024-10-18 14:56:44 -05:00
d34ccc424d refactor 2024-10-18 14:53:31 -05:00
663c89ac53 refactor 2024-10-18 14:30:13 -05:00
414f18a518 fix 2024-10-18 14:28:22 -05:00
9bfdece859 fixes 2024-10-18 14:27:50 -05:00
ad79c5daf5 refactor 2024-10-18 14:22:24 -05:00
48a1bef1ae fix 2024-10-18 13:28:21 -05:00
09cb5d8f19 updated build system 2024-10-18 11:46:59 -05:00
c216df9b73 refactor 2024-10-18 11:38:27 -05:00
a0a5ca3390 refactor 2024-10-18 07:36:52 -05:00
ae0a921ba8 updated build system 2024-10-18 06:50:09 -05:00
3ce03dabf5 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-17 18:49:50 -05:00
4a530c4703 refactor 2024-10-17 18:26:24 -05:00
c9f9c2a24c fix
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-17 17:13:20 -05:00
cd538566d3 updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-10-17 16:34:32 -05:00
f0fe0a1962 fix 2024-10-17 14:41:01 -05:00
68e3f6fc00 fix 2024-10-17 13:43:45 -05:00
a23adf6db6 fixes 2024-10-17 13:35:00 -05:00
da5752e971 refactor 2024-10-17 13:14:40 -05:00
40682e37c0 refactor 2024-10-17 13:13:13 -05:00
cbd36efd91 refactor 2024-10-17 12:52:40 -05:00
96c712ae9c refactor 2024-10-17 12:51:31 -05:00
28065c2c8e refactor 2024-10-17 12:49:00 -05:00
9677ebb44e disable tests 2024-10-17 12:41:16 -05:00
172ea8bc00 disable tests 2024-10-17 12:40:24 -05:00
d2ec6f1f10 Add support for bucket name in Sia provider #16 2024-10-17 12:37:22 -05:00
bc7a74e432 Add support for bucket name in Sia provider #16 2024-10-17 12:29:46 -05:00
8561278539 fixes 2024-10-17 12:24:11 -05:00
f932799efa refactor 2024-10-17 12:14:31 -05:00
67dedc3fb5 refactor 2024-10-17 11:23:20 -05:00
7120856407 refactor 2024-10-17 11:20:59 -05:00
a1b138ccd1 refactor 2024-10-17 11:19:14 -05:00
d192904f8c updated build system 2024-10-17 11:18:08 -05:00
0bd7070ec5 refactor 2024-10-17 10:21:22 -05:00
63ca3089da updated build system 2024-10-17 10:20:07 -05:00
39d644e115 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-12 17:59:32 -05:00
ac89796d5d updated build system
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-10-12 17:48:29 -05:00
4e1250a832 updated build system
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-10-12 17:06:31 -05:00
4049af94dc updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-10-12 13:17:59 -05:00
ab40037cb4 updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-10-12 13:12:47 -05:00
66305c3c86 updated build system
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-10-12 13:06:42 -05:00
989d14072d cleanup
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-11 21:29:21 -05:00
21d4f4b78d refactor 2024-10-11 21:27:32 -05:00
94b7950cf1 fix 2024-10-11 21:26:48 -05:00
1fe3f62be4 fix
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-10-11 21:24:06 -05:00
43df4356b6 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-11 18:11:48 -05:00
5440dd3dac updated build system
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-10-11 18:03:30 -05:00
88718de96e updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-11 16:15:07 -05:00
d8d86f3f0c cleanup 2024-10-11 16:09:40 -05:00
1ff62fb2b5 updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-10-11 16:03:42 -05:00
284e2a3ead updated build system
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-10-11 15:56:46 -05:00
3c97c2d953 updated build system 2024-10-10 17:58:32 -05:00
196aeae11f update build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-10-10 15:16:26 -05:00
ba2850ea21 updated build system 2024-10-10 15:07:46 -05:00
1f4872769d updated build system 2024-10-10 14:33:37 -05:00
24c647966b updated build system 2024-10-10 14:22:17 -05:00
d3f3048568 updated build system 2024-10-10 14:20:19 -05:00
ea249723f9 updated build system 2024-10-10 14:10:27 -05:00
52a2df2576 updated build system 2024-10-10 13:36:55 -05:00
6645b322bd updated build system 2024-10-10 12:52:51 -05:00
7a683a46a9 updated build system 2024-10-10 11:37:01 -05:00
cb24252286 updated build system 2024-10-10 11:24:35 -05:00
fff3dc4685 updated build system 2024-10-10 09:57:47 -05:00
9c01d51334 updated build system 2024-10-10 08:30:53 -05:00
9aafb62961 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-09 20:50:08 -05:00
891040479b fix 2024-10-09 20:46:44 -05:00
55bcf082ec fixes 2024-10-09 19:50:05 -05:00
67053645e1 fixes 2024-10-09 19:36:35 -05:00
854caffea8 fix
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-10-09 16:58:27 -05:00
36e952606b fix
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-10-09 14:20:50 -05:00
eba93484c1 fix 2024-10-09 14:15:02 -05:00
d09d55951d refactor 2024-10-09 14:08:38 -05:00
b35e100bb2 fix 2024-10-09 14:03:06 -05:00
27b37eb570 refactor 2024-10-09 13:58:41 -05:00
92295506a7 refactor 2024-10-09 13:56:40 -05:00
d20ed07066 fix 2024-10-09 13:41:32 -05:00
3fa16fd846 updated build system 2024-10-09 12:50:41 -05:00
481dfd5ff5 fix 2024-10-09 12:50:17 -05:00
e5a99943a5 fix 2024-10-09 12:23:17 -05:00
dbaf379f19 refactor 2024-10-09 11:32:03 -05:00
e1bd3bb8ec refactor 2024-10-09 11:29:27 -05:00
ca834dd119 refactor 2024-10-09 11:11:07 -05:00
163549098d cleanup 2024-10-09 10:46:22 -05:00
4800db00d9 fix 2024-10-09 10:45:12 -05:00
675707b46c fix 2024-10-09 10:37:43 -05:00
14ebdab034 fix 2024-10-09 10:27:51 -05:00
8541e292cd fix 2024-10-09 09:51:09 -05:00
9adec02640 fix 2024-10-09 09:47:35 -05:00
6a97ad664b fix 2024-10-09 09:18:25 -05:00
8bb291bbd9 updated build system 2024-10-09 09:15:18 -05:00
13a55bff61 refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-08 19:14:39 -05:00
d6efc19ba8 fix
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-08 18:04:56 -05:00
517e603539 added test 2024-10-08 18:02:02 -05:00
d144101a7e refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-08 17:50:57 -05:00
b84202a689 refactor 2024-10-08 17:45:14 -05:00
572351067c refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-08 17:32:11 -05:00
9a3d6e725e refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-08 17:01:17 -05:00
d6ac8cfeca fix
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-08 14:26:06 -05:00
e697363574 fix 2024-10-08 14:17:32 -05:00
8cc6868480 fix 2024-10-08 14:15:53 -05:00
37d393c1f9 fix 2024-10-08 13:23:19 -05:00
ec8b7783f3 fix 2024-10-08 13:20:34 -05:00
7b375eb912 fix 2024-10-08 11:22:41 -05:00
ffdea97de3 fix 2024-10-08 11:08:47 -05:00
7c02d79a5c added enhanced where suport 2024-10-08 11:03:38 -05:00
46bbc4bf92 future where support
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-07 19:48:26 -05:00
08104c97f7 future where handling
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-07 16:55:44 -05:00
8cf169849c future group support
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-03 13:54:48 -05:00
67ac6a6c6e [Unit Test] SQLite mini-ORM unit tests and cleanup #14
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-02 15:16:21 -05:00
ef270887fc [Unit Test] SQLite mini-ORM unit tests and cleanup #14 2024-10-02 15:12:57 -05:00
d61cb3f0f3 [Unit Test] SQLite mini-ORM unit tests and cleanup #14 2024-10-02 15:08:37 -05:00
12d3fbe9a7 [Unit Test] SQLite mini-ORM unit tests and cleanup #14 2024-10-02 14:46:28 -05:00
bf9d6157f5 [Unit Test] SQLite mini-ORM unit tests and cleanup #14 2024-10-02 14:42:42 -05:00
c4d7868381 [Unit Test] SQLite mini-ORM unit tests and cleanup #14 2024-10-02 14:41:21 -05:00
de0a88e45b [Unit Test] SQLite mini-ORM unit tests and cleanup #14 2024-10-02 14:36:02 -05:00
fed4f40cfb [Unit Test] SQLite mini-ORM unit tests and cleanup #14 2024-10-02 14:25:14 -05:00
d1b4aab952 [Unit Test] SQLite mini-ORM unit tests and cleanup #14 2024-10-02 13:11:05 -05:00
072a5356b6 fix 2024-10-02 12:25:21 -05:00
781278df06 fix 2024-10-02 11:40:12 -05:00
42a81b1c8e fixes 2024-10-02 11:38:45 -05:00
3e6ed45562 refactor 2024-10-02 11:11:57 -05:00
366fe60e2f fixed log 2024-10-02 10:39:33 -05:00
be30230422 added error handling 2024-10-02 10:39:00 -05:00
a523d1ca66 [Unit Test] SQLite mini-ORM unit tests and cleanup #14
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-10-01 14:21:23 -05:00
62a75bcddd [Unit Test] SQLite mini-ORM unit tests and cleanup #14 2024-10-01 14:10:21 -05:00
bd754a7ee8 fix 2024-10-01 10:16:39 -05:00
ae98d199e7 continue sqlite3 mini-orm 2024-10-01 09:31:20 -05:00
95ff5dd5eb refactor 2024-10-01 08:46:29 -05:00
3f3e9b5735 refactor 2024-10-01 08:45:54 -05:00
82a48fa3b4 continue sqlite3 mini-orm 2024-10-01 08:44:54 -05:00
97ce74b798 sqlite3 mini-orm work 2024-10-01 07:49:42 -05:00
91704df08d fix test
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-29 20:19:33 -05:00
4add037dc7 fix config
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-29 20:18:44 -05:00
79314a11b5 fix
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-29 14:50:52 -05:00
0ff87a0ac3 fix 2024-09-29 14:50:07 -05:00
1aef67368b cleanup
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-29 14:47:58 -05:00
ba2a669be6 fix tests
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-29 09:56:32 -05:00
fd721c5dc4 [bug] Rename file is broken for files that are existing #19 2024-09-29 09:51:25 -05:00
34070bba89 [bug] Rename file is broken for files that are existing #19 2024-09-29 09:49:28 -05:00
1b1fc0fc09 [bug] Rename file is broken for files that are existing #19
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-29 09:16:37 -05:00
44a1547d2e refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-28 17:32:22 -05:00
439f9cce3d [bug] Rename file is broken for files that are existing #19 2024-09-28 17:28:47 -05:00
9aecec2d96 updates
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-28 15:03:45 -05:00
26fffdd3e8 fix
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-28 15:01:06 -05:00
7bf69ec350 updated changelog
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-28 13:21:56 -05:00
49f884bb68 [bug] Rename file is broken for files that are existing #19
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-09-28 13:19:35 -05:00
a58fcc7f14 [bug] Rename file is broken for files that are existing #19
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-28 13:16:37 -05:00
113b5e7258 updated changelog
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-28 11:54:50 -05:00
5b337d4c65 updated changelog
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-28 11:45:35 -05:00
0b80e82721 Add support for bucket name in Sia provider #16
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-28 09:58:02 -05:00
7e45fa9708 Add support for bucket name in Sia provider #16
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-09-28 09:54:01 -05:00
aa92f3d401 Add support for bucket name in Sia provider #16
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-28 09:52:57 -05:00
692c92b0df fix time
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-28 08:26:01 -05:00
51cb2c0b9a refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-27 14:07:13 -05:00
6e52474953 refactor 2024-09-27 14:03:36 -05:00
35db1cd0c4 refactor
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-09-27 14:01:26 -05:00
739a1103f0 refactor 2024-09-27 13:54:14 -05:00
bb8cbb49f5 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-27 13:36:39 -05:00
3be29f5b73 updated changelog
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-27 09:27:47 -05:00
d944569fb2 updated changelog 2024-09-27 09:27:01 -05:00
3ca27ec566 cleanup
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-09-27 09:22:17 -05:00
779bfc762e fix times
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-27 09:16:59 -05:00
54828600a8 refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-26 20:44:38 -05:00
d5410b88a3 refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-26 20:22:14 -05:00
e86d9fd29b updated test
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-09-26 20:20:33 -05:00
cbebcfae82 fix liunx
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-26 20:17:03 -05:00
3dc16db278 changes
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-09-26 17:05:02 -05:00
e81227e5f7 fixes 2024-09-26 16:16:02 -05:00
fd83c263e1 fix 2024-09-26 15:52:06 -05:00
9ca857c98e fixes 2024-09-26 15:50:37 -05:00
afcba6b086 fix 2024-09-26 15:41:59 -05:00
ef50acc867 fix 2024-09-26 11:43:39 -05:00
f12833f36c refactor 2024-09-26 11:20:07 -05:00
b26788819e fix 2024-09-26 10:47:07 -05:00
f905de7c42 update test 2024-09-26 09:38:55 -05:00
8466a8850f refactor 2024-09-26 09:23:52 -05:00
af8e2cddcb fix time conversion 2024-09-26 09:20:13 -05:00
0089866142 removed test 2024-09-26 09:00:32 -05:00
ca892c7f11 fix tests 2024-09-26 08:46:02 -05:00
2a33000ace refactor 2024-09-26 08:38:41 -05:00
bd8da9b987 Merge branch 'development' of https://git.fifthgrid.com/blockstorage/repertory into development 2024-09-26 08:37:42 -05:00
5bd780ef07 updates
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-25 21:24:56 -05:00
25c445b889 removed is_processing check
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-25 18:47:36 -05:00
ca4111ac77 updated readme 2024-09-25 07:33:56 -05:00
868e8ae124 refactor 2024-09-25 07:18:48 -05:00
51358c7110 remove check for processing 2024-09-25 07:13:11 -05:00
ad97741e1e updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-24 17:03:41 -05:00
5d281e0fd0 fix
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-24 11:04:01 -05:00
c1a1242398 updated build system 2024-09-24 07:44:58 -05:00
5000215973 updated build system 2024-09-24 07:32:27 -05:00
ceda21830f refactor 2024-09-24 07:30:18 -05:00
b80b7b482c refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-23 20:43:50 -05:00
8e41f71e70 refactor 2024-09-23 20:42:46 -05:00
72286c865f revert 2024-09-23 20:42:06 -05:00
2d435457e6 fixes 2024-09-23 20:41:44 -05:00
cef1ff7067 refactor 2024-09-23 20:38:52 -05:00
393dc07de8 fix
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-09-23 20:35:45 -05:00
49f0425e56 fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-23 20:34:27 -05:00
7973e523c3 refactor 2024-09-23 20:24:49 -05:00
c4326520cd refactor 2024-09-23 20:22:43 -05:00
dfb9d78448 clean cache directory 2024-09-23 20:08:35 -05:00
26714a836c added failure event
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-16 11:17:59 -05:00
59e2986080 fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-16 11:15:34 -05:00
65fc484fa4 fix
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-14 19:31:21 -05:00
253978bc5f update 2024-09-14 19:12:42 -05:00
4aad60f69d fallback to stat
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-09-09 15:05:04 -05:00
72f7aaf9e4 move events to debug 2024-09-06 12:15:17 -05:00
d12b5f7b05 fix 2024-09-06 11:24:50 -05:00
a7239558bd new_build_system (#18)
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
Reviewed-on: #18
2024-09-06 15:05:48 +00:00
9d3e4b8767 fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-08-05 19:51:50 -05:00
cbb99c7b47 fixes 2024-08-05 19:50:48 -05:00
dca0752189 updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-08-05 19:38:13 -05:00
760a1e4322 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-08-04 19:51:35 -05:00
56bc78f63c updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-08-04 19:18:39 -05:00
60b89c5c08 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-08-04 19:12:42 -05:00
fa0f648a0b cleanup
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-08-04 18:34:15 -05:00
5592c663a4 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-08-04 17:06:00 -05:00
c847353baf updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-08-04 16:58:28 -05:00
a140f59acb updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-08-04 14:11:39 -05:00
b2eae73fb0 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-08-04 13:57:00 -05:00
a34dc8f1f8 updated build system 2024-08-04 13:38:48 -05:00
92e2937a6b updated build system 2024-08-04 13:29:19 -05:00
47757f69bd updated build system 2024-08-04 13:27:55 -05:00
b642294193 updated build system 2024-08-04 13:21:29 -05:00
8075af364f updated build system 2024-08-04 13:18:42 -05:00
3d7285063a updated build system 2024-08-04 13:13:45 -05:00
232420621a updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-08-04 13:12:16 -05:00
a0432be819 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-08-04 12:42:23 -05:00
468093227d updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-08-04 12:31:36 -05:00
32facdc2ff updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-08-04 11:02:17 -05:00
3a719272cb updated build system 2024-08-04 10:37:31 -05:00
9ce4c5a494 updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-08-04 10:30:49 -05:00
15cc7b0b87 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-08-04 09:55:01 -05:00
6d152181d3 fixes
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-08-03 16:11:25 -05:00
97082fa42c fixes 2024-08-03 16:09:14 -05:00
becd137cf5 updated build system 2024-08-03 15:55:38 -05:00
89fc0fb372 fixes
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-08-03 15:50:16 -05:00
68d79c73cf updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-08-03 14:10:15 -05:00
d0e9ed4181 fix 2024-08-03 14:00:14 -05:00
535d2f85ca updated build system 2024-08-03 13:54:18 -05:00
5ec20fbcbd updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-08-03 13:44:02 -05:00
0225fb8e5d updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-08-03 12:24:22 -05:00
035f830b71 updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-08-03 12:15:08 -05:00
7a1fb4a790 updated build system
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-08-03 11:00:57 -05:00
4939b05ca7 updated build system 2024-08-03 10:57:56 -05:00
2e1f0c8f5f updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-08-03 10:55:25 -05:00
d8ac596687 updated build system
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-08-03 10:33:39 -05:00
1f43ab3bcc updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-08-03 10:28:17 -05:00
ef9fbf775c fix
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-08-03 07:37:32 -05:00
d6ff728a4d updated build system 2024-08-03 07:33:30 -05:00
f6ea8f077b updated build system 2024-08-03 07:28:10 -05:00
3e96764fc4 updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-08-03 07:20:37 -05:00
45b21ae0af updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-08-03 07:19:32 -05:00
490e49406f updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-08-03 00:04:04 -05:00
36e7d06b39 updated build system 2024-08-03 00:02:12 -05:00
b26b52fd2d updated build system 2024-08-02 23:28:33 -05:00
b35041f1f3 updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-08-02 23:27:05 -05:00
bf7ba3991f updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-08-02 23:11:38 -05:00
30806c6ebd updated build system 2024-08-02 23:07:48 -05:00
29af6e5b7c updated build system 2024-08-02 23:02:32 -05:00
cde0e92591 updated build system 2024-08-02 22:58:05 -05:00
85b28f7ee3 cleanup 2024-08-02 22:45:35 -05:00
df24b99303 updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-08-02 22:41:42 -05:00
d659a5e04d updated build system
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-08-02 22:34:01 -05:00
99c0246720 updated build system 2024-08-02 21:41:44 -05:00
c0dba76ecd fixes 2024-08-02 21:30:17 -05:00
e37a375c18 fix 2024-08-02 21:01:21 -05:00
6718eb374d fix 2024-08-02 20:59:41 -05:00
bba7f10703 updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build started...
2024-08-02 19:46:19 -05:00
df947db055 updated build system 2024-08-02 19:43:21 -05:00
256e873e7b updated build system 2024-08-02 19:42:49 -05:00
34bc3b759e updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-08-02 19:42:05 -05:00
853aa2784c updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-08-02 19:23:42 -05:00
4011ab8080 fix 2024-08-02 19:21:05 -05:00
07eaad7226 update 2024-08-02 18:59:30 -05:00
c743d3c341 updated build system 2024-08-02 18:57:35 -05:00
05a5645f4c update 2024-08-02 18:52:33 -05:00
7aa71fb202 updated build system 2024-08-02 18:52:00 -05:00
6410faa5b4 update
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-08-02 18:45:52 -05:00
a3e578240b updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-08-02 18:45:17 -05:00
dd492ff52d updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-08-02 17:18:09 -05:00
e7b576bc45 updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-08-02 16:33:52 -05:00
7fcc40d0e1 updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-08-02 16:22:46 -05:00
e6fc6093b2 added test 2024-08-02 16:10:07 -05:00
73ee70a862 fix 2024-08-02 16:04:04 -05:00
b647053fb9 updated build system 2024-08-02 15:43:36 -05:00
d518e55a67 updated build system 2024-08-02 15:34:01 -05:00
fcd38db2ef updated build system 2024-08-02 15:22:01 -05:00
89cd8c8fd0 test fixes 2024-08-02 15:10:59 -05:00
88c7e7f192 fixs 2024-08-02 14:55:29 -05:00
a00e77d554 refactor 2024-08-02 14:54:29 -05:00
05d5bd9fe5 fixes 2024-08-02 14:46:01 -05:00
e14e7e96c7 updated build system 2024-08-02 14:39:45 -05:00
4b8ac300c8 update 2024-08-02 14:23:36 -05:00
ee9c5fffad fix
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-08-02 14:15:56 -05:00
55caf049b1 updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-08-02 14:09:57 -05:00
4bdaeaa30d refactor 2024-08-02 14:09:20 -05:00
7c58d9c569 updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-08-02 14:06:25 -05:00
d6b2c1d81e updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-08-02 14:02:14 -05:00
4a2acf99a7 updated build system 2024-08-02 13:14:29 -05:00
3567941139 updated build system 2024-08-02 13:10:05 -05:00
50e7fb612c refactor 2024-08-02 13:08:03 -05:00
03dd9ee579 refactor 2024-08-02 13:05:15 -05:00
2a3c6f3522 updated build system 2024-08-02 13:01:00 -05:00
2e46f2fead cleanup 2024-08-02 12:59:29 -05:00
b00b72d70f updated build system 2024-08-02 12:58:44 -05:00
7dbaf9b8d9 updated build system 2024-08-02 12:57:40 -05:00
6b463adbb9 updated build system 2024-08-02 12:53:12 -05:00
cb819d7da6 updated build system 2024-08-02 12:51:39 -05:00
841ba37841 updated build system 2024-08-02 12:50:19 -05:00
7cfefbc512 updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-08-02 12:47:29 -05:00
9ebba7252c updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-08-02 12:37:55 -05:00
835c56330a update
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-08-02 12:19:01 -05:00
3e5c70e6b4 refactor 2024-08-02 12:15:15 -05:00
95b88b6ac6 updated build system 2024-08-02 12:11:45 -05:00
c1f39afaa3 updated build system 2024-08-02 12:10:55 -05:00
1893f7204e refactor 2024-08-02 12:05:51 -05:00
4a062abfde updated build system 2024-08-02 12:03:33 -05:00
fb26aa04b6 updated build system 2024-08-02 12:01:25 -05:00
7c538b471d updated build system 2024-08-02 11:56:58 -05:00
c4c1941fc8 updated build system 2024-08-02 11:46:51 -05:00
0ce2be24a3 updated build system 2024-08-02 11:44:51 -05:00
3cf60d0d26 updated build system 2024-08-02 11:34:45 -05:00
7d33ee80d0 update 2024-08-02 11:32:54 -05:00
52ba2de51f refactor 2024-08-02 11:31:59 -05:00
a1b8b57d34 cleanup
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-08-02 11:30:12 -05:00
cf9e0a356c updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-08-02 11:25:14 -05:00
e66b783df8 updated build system 2024-08-02 11:24:30 -05:00
b695200123 updated build system 2024-08-02 11:14:44 -05:00
a383fb405e updated build system 2024-08-02 11:14:28 -05:00
1cebaf83e1 updated build system 2024-08-02 10:57:34 -05:00
4976825bd6 updated build system 2024-08-02 10:56:40 -05:00
098d172f40 updated build system 2024-08-02 10:53:11 -05:00
f4a3c52428 refactor 2024-08-02 10:29:31 -05:00
2d60b637ec refactor 2024-08-02 10:00:14 -05:00
79b16d9a34 refactor 2024-08-02 09:58:16 -05:00
d69f2fd321 refactor 2024-08-02 09:52:12 -05:00
4015c1bb6e refactor 2024-08-02 09:50:53 -05:00
9f76f20ea8 refactor 2024-08-02 09:32:26 -05:00
b399ff3291 refactor 2024-08-02 09:30:41 -05:00
4fafc17b90 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-28 13:31:30 -05:00
f1bb88624b updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-28 12:40:51 -05:00
f950e3192f updated build system 2024-07-28 12:33:26 -05:00
bef2f078e0 updated build system 2024-07-28 12:10:26 -05:00
218053a2be updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-07-28 11:50:19 -05:00
baca904079 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-28 11:48:01 -05:00
b5175cb82b updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-28 09:52:58 -05:00
39888a1ebc updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-28 09:27:35 -05:00
ffea22c71b updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-27 16:31:45 -05:00
dd15bb2205 updated build system 2024-07-27 15:54:01 -05:00
4b53b5544f updated build system 2024-07-27 15:53:45 -05:00
24ca2d3531 updated build system 2024-07-27 15:27:36 -05:00
5587e3430b updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-07-27 15:15:05 -05:00
0c36669fef updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-27 15:10:30 -05:00
bbce86cb9d updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-27 11:24:19 -05:00
ed3a45bfc6 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-27 10:22:56 -05:00
144fd59c1c updated build system 2024-07-27 10:17:14 -05:00
bdc54d7115 updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-07-27 10:11:59 -05:00
aa04371663 updated build system
Some checks failed
BlockStorage/repertory/pipeline/head Something is wrong with the build of this commit
2024-07-27 10:00:59 -05:00
78ef412516 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-27 09:32:01 -05:00
28f7f5cb14 cleanup
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-27 09:17:34 -05:00
624b92bc97 enable backward-cpp for test 2024-07-27 09:14:51 -05:00
ca799298f4 switch to backward-cpp 2024-07-27 09:13:43 -05:00
42b67a7b61 refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-27 09:00:11 -05:00
4de4386142 fix
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-27 08:42:14 -05:00
509eeca760 fix test dir
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-07-27 08:38:50 -05:00
1cb9663776 fix
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-07-27 08:36:59 -05:00
26667fdcd6 fix
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-07-27 08:28:23 -05:00
681a3eec53 fixes 2024-07-27 08:23:20 -05:00
2a5df890f7 fix sign 2024-07-27 08:13:23 -05:00
ae0059591c fix directory caching 2024-07-27 08:12:43 -05:00
8655becf1e fix directory caching 2024-07-27 07:54:46 -05:00
2a3a0aa689 refactor
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-26 17:11:48 -05:00
ce417ec7c8 fix
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-07-26 17:08:49 -05:00
4e848a998e fix
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-26 16:56:58 -05:00
d89f35775e fix crash
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-26 16:54:01 -05:00
88ebf72003 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-26 15:15:28 -05:00
9437b175a2 updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-26 15:08:41 -05:00
302d73a078 unmount if initilization fails 2024-07-26 14:54:05 -05:00
ba7c36e30e updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-26 14:43:06 -05:00
b4da43c87f added override.sh support
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-26 12:28:21 -05:00
f5e078ea3d updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-26 12:21:42 -05:00
8aba39c955 optional stack trace support
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-26 09:23:21 -05:00
68a5f90715 added cpptrace 2024-07-26 08:07:10 -05:00
f3dfadddfa added cpptrace 2024-07-26 07:54:29 -05:00
f1ec1fd4a6 format log message
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-26 07:22:15 -05:00
cf59db9cee fix logging
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-25 20:42:57 -05:00
e21fbe84ba fix
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-25 19:02:34 -05:00
1e4d675f76 added todo
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-25 15:02:26 -05:00
e02fe870e9 fix 2024-07-25 14:58:16 -05:00
9ef9250c18 moved event to debug 2024-07-25 14:46:51 -05:00
2e4b9d3787 added flush policy 2024-07-25 14:43:16 -05:00
fd2b3c3239 fix 2024-07-25 14:38:27 -05:00
6640394bd3 fix 2024-07-25 14:21:20 -05:00
84cc726c4f don't register loggers 2024-07-25 14:18:31 -05:00
5d99d21915 refactor 2024-07-25 13:58:27 -05:00
3b8636544a refactor logging 2024-07-25 13:55:30 -05:00
14ce60ab65 fix 2024-07-25 13:38:37 -05:00
7506431b34 fix 2024-07-25 13:31:48 -05:00
8621209eb3 fix 2024-07-25 13:30:48 -05:00
d1fe317fb9 refactor console consumer 2024-07-25 13:24:54 -05:00
a5c47d3f22 updated build system 2024-07-25 13:01:03 -05:00
267c272ce5 changed thread count 2024-07-25 12:31:12 -05:00
7a8ae32b85 refactor 2024-07-25 12:30:16 -05:00
921d404a5a switch to spdlog 2024-07-25 12:28:47 -05:00
de6a7beb5e refactor 2024-07-25 12:17:12 -05:00
5a928208fd added spdlog 2024-07-25 10:55:48 -05:00
92fc163341 fix 2024-07-25 10:47:26 -05:00
ca1e03f3ea logging changes 2024-07-25 10:46:29 -05:00
de8c3ad603 fix 2024-07-25 10:27:25 -05:00
f7d56bdd48 refactor 2024-07-25 10:19:50 -05:00
afc13b45f4 refactor 2024-07-25 10:16:17 -05:00
11d2c3c69e updated build system 2024-07-25 09:31:01 -05:00
356521e176 updated build system 2024-07-25 09:26:32 -05:00
468668e518 updated build system 2024-07-25 07:21:01 -05:00
e53dec7bab updated build system 2024-07-25 07:09:45 -05:00
26cd6de110 updated build system 2024-07-25 06:58:50 -05:00
d1157ca261 updated build system 2024-07-25 06:50:56 -05:00
0d49b49482 updated build system 2024-07-25 06:49:11 -05:00
753820bd81 updated build system 2024-07-25 06:45:38 -05:00
2a98e44a5c updated build system 2024-07-25 06:37:36 -05:00
9650d3f56b updated build system
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-24 19:38:51 -05:00
aff308f67d updated build system
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...
2024-07-24 19:35:43 -05:00
be76d663b5 update
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-07-24 18:27:10 -05:00
160863561f updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-07-23 11:49:23 -05:00
de02fdb812 updated build system 2024-07-23 10:57:31 -05:00
1dda98e337 fix test data location 2024-07-23 09:20:56 -05:00
ccc6afdfa4 updated build system 2024-07-23 09:14:36 -05:00
6b166551af updated build system 2024-07-23 09:11:01 -05:00
90694f816f updated build system 2024-07-23 08:15:44 -05:00
51636fbac3 fix 2024-07-23 08:00:48 -05:00
3c7aa417a9 updated build system 2024-07-23 07:51:09 -05:00
04d560739d updated build system 2024-07-23 07:48:34 -05:00
2c1842f06c updated build system 2024-07-23 07:13:55 -05:00
aba487277c updated build system 2024-07-22 15:26:32 -05:00
1b95d5dfed updated build system 2024-07-22 15:19:43 -05:00
7590fc4f45 fix
Some checks failed
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
BlockStorage/repertory/pipeline/head This commit looks good
2024-07-17 17:27:48 -05:00
a409408ac0 fix
Some checks failed
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2024-07-17 17:21:27 -05:00
b121c9778f fix 2024-07-17 17:19:30 -05:00
d452761ff9 fix permissions
Some checks failed
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2024-07-17 17:08:38 -05:00
dbc5725779 fix
Some checks failed
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2024-07-17 13:58:31 -05:00
8b6536c55b fix 2024-07-17 13:57:08 -05:00
c7318b0383 const refactor 2024-07-17 13:53:56 -05:00
26fa85e421 updated build system 2024-07-17 12:28:20 -05:00
939742a991 updated build system 2024-07-17 12:22:44 -05:00
6ab7386a79 updated build system 2024-07-17 09:18:04 -05:00
a750cdc3cb updated build system 2024-07-17 09:02:14 -05:00
2f8af0fb08 updated build system 2024-07-17 08:59:06 -05:00
7a9802ccb7 updated build system 2024-07-17 08:05:37 -05:00
d356d04bf5 updated build system 2024-07-17 07:54:51 -05:00
c99c4988ff fix 2024-07-16 14:29:02 -05:00
6c564eb98b updated version.rc 2024-07-16 14:28:17 -05:00
786d8634cf updated build system 2024-07-16 14:17:00 -05:00
70b5204a9f updated build system 2024-07-16 14:00:12 -05:00
1d70309a16 updated build system 2024-07-16 13:50:25 -05:00
b2aba8c447 updated build system 2024-07-16 13:19:07 -05:00
8757b47b35 updated build system 2024-07-16 13:04:21 -05:00
b1a7632536 updated readme 2024-07-16 10:58:53 -05:00
97c73d5358 fix 2024-07-16 10:52:42 -05:00
bb3f05aef1 fix 2024-07-16 10:50:46 -05:00
2001ffc27c fix 2024-07-16 09:51:46 -05:00
bd2dd4035e isolate test directory 2024-07-16 09:46:13 -05:00
7eb793f577 fix test 2024-07-16 09:27:26 -05:00
b05cedb509 refactor 2024-07-16 09:17:59 -05:00
cd484aa7bb isolate test directory 2024-07-16 09:16:59 -05:00
fbfb528adc fix 2024-07-16 09:01:05 -05:00
d9cba7f4cc fix 2024-07-16 08:58:22 -05:00
7d5c5e18c6 isolate test directory 2024-07-16 08:54:41 -05:00
2c0935a771 isolate test directory 2024-07-16 08:13:13 -05:00
5312797b97 refactor 2024-07-16 08:04:49 -05:00
801af6b799 fix test 2024-07-16 07:52:49 -05:00
b42379b519 updated script 2024-07-16 07:51:35 -05:00
8b328b92b1 added post_build.sh 2024-07-16 07:49:16 -05:00
2e6ecf8ddb added test data to distribution 2024-07-16 07:48:13 -05:00
12c7c48b20 updated build system 2024-07-15 13:22:06 -05:00
732a42a073 refactor preprocessor directives 2024-07-15 13:19:27 -05:00
5638d5c010 fix 2024-07-15 13:12:14 -05:00
6a984ac84c refactor proprocessor directives 2024-07-15 12:20:15 -05:00
c1eb6b94ed updated build system 2024-07-15 11:11:11 -05:00
85135b9267 updated build system
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-07-11 20:38:02 -05:00
670c5bac17 updated build system
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-07-11 20:27:02 -05:00
2dab1426b4 fix permissions
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-07-11 19:54:31 -05:00
43004b19c3 updated build system
Some checks failed
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2024-07-11 14:10:43 -05:00
4044d95aaa updated build system 2024-07-11 13:56:36 -05:00
c6024c06ce fix 2024-07-11 13:01:06 -05:00
e56bcb6489 updated build system 2024-07-11 12:31:50 -05:00
d9e0164080 updated build system 2024-07-11 11:42:06 -05:00
b588cd645e updated build system 2024-07-11 09:28:07 -05:00
2c163d7219 updated build system 2024-07-11 09:25:32 -05:00
39c53fe903 updated public key 2024-07-11 09:12:49 -05:00
7b12d8f9e9 updated build system 2024-07-11 07:42:28 -05:00
4649f66c00 updated build system 2024-07-11 07:35:44 -05:00
9648abf4b9 fix
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-07-10 15:16:18 -05:00
cc1246d0f5 moved version.rc.in 2024-07-10 14:59:33 -05:00
726aa43a95 fix 2024-07-10 14:56:09 -05:00
224f983ca8 fix 2024-07-10 14:48:31 -05:00
f962884341 updated build system 2024-07-10 14:46:17 -05:00
6f35cc8bfa remove unused file 2024-07-10 10:14:25 -05:00
c08c9bc216 updated build system 2024-07-09 15:04:45 -05:00
239652be7c updated build system 2024-07-09 14:58:56 -05:00
68c9ec0f82 updated build system 2024-07-09 14:28:39 -05:00
da07122997 updated build system 2024-07-09 13:30:49 -05:00
5fb66dc6ee updated build system 2024-07-09 13:25:46 -05:00
0c414fc8a6 updated build system 2024-07-09 13:12:02 -05:00
097507a2d9 version handling 2024-07-09 12:38:10 -05:00
466b3fcead update build system 2024-07-09 12:22:47 -05:00
81dc6d1269 updated build system 2024-07-09 12:09:52 -05:00
b6c020d35d updated build system 2024-07-09 11:42:30 -05:00
dfbe97988f fixes 2024-07-09 08:37:31 -05:00
cd36679a1c update build system 2024-06-27 12:12:09 -05:00
4d555bce96 updated build system 2024-06-27 12:04:37 -05:00
d96c6012c5 update build system 2024-06-27 08:33:54 -05:00
15793e714d update build system
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-06-07 20:17:07 -05:00
437cb94dda fix
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-06-07 18:32:21 -05:00
544765e408 refactor 2024-06-07 18:27:29 -05:00
472b1f0da1 fix data directory
Some checks are pending
BlockStorage/repertory_linux_builds/pipeline/head Build queued...
2024-06-07 18:20:55 -05:00
867b2eee40 added back s3 enable/disable option
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-06-07 18:04:33 -05:00
5a30b15d1e update build system
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-06-07 16:15:22 -05:00
0f2c507c30 fix
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-06-07 16:09:46 -05:00
c545916332 update build system
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-06-07 14:42:23 -05:00
ac81f5f624 fix
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-06-07 11:48:28 -05:00
50ae7ab558 updated build system 2024-06-07 11:36:15 -05:00
a5e29ed745 build script changes 2024-06-07 11:26:37 -05:00
6d29170342 removed temporary scripts 2024-06-07 11:25:39 -05:00
410314022f updated build system
Some checks are pending
BlockStorage/repertory_linux_builds/pipeline/head Build queued...
2024-06-07 10:01:58 -05:00
815e00d389 updated cmake
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-06-07 09:37:09 -05:00
fbf5455f89 renamed project 2024-06-07 09:34:44 -05:00
8925704555 build system update
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-06-07 09:32:43 -05:00
462365dc97 updated build system
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-06-06 18:22:05 -05:00
e73dd52973 updated changelog
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-06-06 14:32:36 -05:00
881eec4e02 updates 2024-06-06 14:31:41 -05:00
bcdfc73767 remove rc 2024-06-06 14:26:16 -05:00
0520aa3d40 fixes 2024-06-06 14:24:28 -05:00
c562d17b78 update 2024-06-06 14:19:30 -05:00
aee68520b3 move to new build system 2024-06-06 14:17:47 -05:00
88d8bf63f5 fix
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-04-21 14:25:00 -05:00
303887ea37 update
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-03-15 18:06:27 -05:00
51d3d33175 changed sqlite db options
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-03-11 09:15:46 -05:00
cdb5ea279d cleanup
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-02-08 22:12:20 -06:00
311e1b318a updated mingw64 docker 2024-02-08 22:06:54 -06:00
31c5b6f1db Merge branch 'development' of https://git.fifthgrid.com/blockstorage/repertory into development
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-02-05 07:21:45 -06:00
a024f81e5d fix runaway thread
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2024-02-03 10:41:38 -06:00
4089fca87c msys2 support 2024-01-30 13:23:14 -06:00
99533a9687 revert
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2024-01-29 11:36:26 -06:00
d175a38ad1 revert
Some checks failed
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2024-01-29 11:30:39 -06:00
28e918be18 fix
Some checks failed
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2024-01-29 11:22:41 -06:00
b4403ff959 Merge branch 'development' of ssh://git.fifthgrid.com:3022/blockstorage/repertory into development
Some checks failed
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2024-01-29 11:20:47 -06:00
8c548bad92 Merge branch 'development' of ssh://git.fifthgrid.com:3022/blockstorage/repertory into development 2024-01-29 11:18:24 -06:00
6ecad9af72 fix windows build
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2024-01-29 10:54:57 -06:00
df73f9a18f fix
Some checks failed
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2024-01-29 09:48:02 -06:00
9b453327a8 fix download path
Some checks failed
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2024-01-29 08:00:50 -06:00
071552ffd5 updated zlib
Some checks failed
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2024-01-29 07:57:33 -06:00
33a0b4b295 fix unittests link on mingw64
Some checks failed
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2024-01-27 12:34:43 -06:00
21bcd0780c fix unittests build on mingw64 2024-01-27 12:31:21 -06:00
f6cdf2914c mingw64 build fixes 2024-01-27 12:21:37 -06:00
7698a62c1f updated mingw64 build 2024-01-27 11:51:35 -06:00
2ae22cdb30 fixes
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-12-22 21:44:52 -06:00
7705432820 refactor
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-12-20 13:13:52 -06:00
f150832676 default to release 2023-12-20 12:12:22 -06:00
80c9375d65 fix 2023-12-20 12:05:59 -06:00
48ddff9e85 default to release 2023-12-20 11:59:41 -06:00
6f64fe02d5 address compiler warning 2023-12-18 09:15:28 -06:00
61ab4d8d58 refactor
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-12-15 18:52:14 -06:00
3bb962a266 cleanup
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-12-15 18:46:35 -06:00
c286dc4f5c refactoring
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-12-15 18:35:07 -06:00
9d36ded2b3 fix
Some checks are pending
BlockStorage/repertory_linux_builds/pipeline/head Build queued...
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-12-15 18:30:33 -06:00
71686405e0 refactoring
Some checks failed
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2023-12-15 17:58:49 -06:00
34c4a9c508 refactoring
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-12-15 09:01:45 -06:00
effafd3e91 fix
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-12-14 13:51:48 -06:00
5a61bdf2b0 fix compiler warnings
Some checks failed
BlockStorage/repertory_osx_builds/pipeline/head There was a failure building this commit
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-12-14 13:45:08 -06:00
d21fcfd1c6 windows compiler warnings
Some checks failed
BlockStorage/repertory_osx_builds/pipeline/head There was a failure building this commit
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-12-14 09:37:58 -06:00
fff9a27362 cleanup
Some checks failed
BlockStorage/repertory_linux_builds/pipeline/head Build queued...
BlockStorage/repertory_osx_builds/pipeline/head There was a failure building this commit
2023-12-14 09:17:15 -06:00
ad7872a0e3 refactor
Some checks failed
BlockStorage/repertory_osx_builds/pipeline/head There was a failure building this commit
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-12-14 09:11:49 -06:00
f3ea2ccc21 fix warnings 2023-12-14 09:06:30 -06:00
e959a9e795 fix 2023-12-14 09:00:21 -06:00
3fe5eac56d fix 2023-12-14 08:58:33 -06:00
67191be78d fix encryption provider 2023-12-14 08:55:04 -06:00
00cfb67b64 fix file read 2023-12-14 08:46:44 -06:00
35aa8f5a94 fix scripts
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-12-13 20:12:18 -06:00
f44972b8b3 refactor
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-12-13 15:32:30 -06:00
94675a3011 refactor 2023-12-13 15:22:19 -06:00
7112fbee7e refactor 2023-12-13 15:21:21 -06:00
ff13633962 refactor 2023-12-13 14:57:08 -06:00
cb93e34de0 refactor 2023-12-13 14:53:39 -06:00
883968f53e refactor 2023-12-13 14:50:19 -06:00
d6d4b579c9 fix encryption provider 2023-12-13 13:34:21 -06:00
0e83d84360 fix encription provider 2023-12-13 10:02:05 -06:00
63a6b3bdba address windows compiler warnings
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-12-12 14:48:52 -06:00
aafa7e112a fix 2023-12-12 13:14:59 -06:00
804eb7aa5a fix 2023-12-12 13:11:46 -06:00
eeba641732 windows build script 2023-12-12 13:06:31 -06:00
932ea6cb1d fix
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-12-10 20:04:49 -06:00
dd4724e374 refactor
Some checks failed
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2023-12-10 19:40:38 -06:00
e652c9956e address warnings
Some checks failed
BlockStorage/repertory_osx_builds/pipeline/head There was a failure building this commit
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2023-12-10 17:02:02 -06:00
d11767776e fix
Some checks are pending
BlockStorage/repertory_linux_builds/pipeline/head Build queued...
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-12-10 16:59:48 -06:00
daefa58c0c code reorg
Some checks failed
BlockStorage/repertory_osx_builds/pipeline/head There was a failure building this commit
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2023-12-10 16:53:54 -06:00
7fe7299e7c refactor
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-12-10 16:21:01 -06:00
0af9c6e8b0 updated json
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-12-10 14:27:34 -06:00
b9c2113d43 test refactor
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-12-10 14:09:53 -06:00
4fd23de9b6 prepare for 2024
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-12-10 14:06:54 -06:00
3b372ebe86 prepare for 2024 2023-12-10 14:06:17 -06:00
d14d149a3b fix test 2023-12-10 14:03:09 -06:00
44acf7dace fix test 2023-12-10 14:02:10 -06:00
da7efdb1a8 cleanup
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-12-10 13:41:18 -06:00
444f39f9ff refactor
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-12-10 13:38:44 -06:00
fd9c26f016 updated changelog
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-12-10 13:03:22 -06:00
7ef9f5cd65 removed binaries
Some checks are pending
BlockStorage/repertory_linux_builds/pipeline/head Build queued...
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-12-10 13:02:10 -06:00
d3321b3c57 updated changelog 2023-12-10 12:22:34 -06:00
bbe546008f updated version
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-12-10 12:19:55 -06:00
5ec91e2d20 fix
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-12-01 11:12:58 -06:00
fbe4df0251 refactor
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-30 17:36:26 -06:00
e5c690eb89 added curl error event
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-30 16:30:09 -06:00
aeedd114a6 refactoring
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-30 16:07:16 -06:00
dfa5e0e005 unit tests and fixes
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-30 13:32:06 -06:00
5911d370e5 fix
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-30 13:15:16 -06:00
baf769c462 close all files in background
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-30 13:10:32 -06:00
33e8e0890b test fixes
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-30 12:54:00 -06:00
e2e82edefb script changes 2023-11-30 10:52:11 -06:00
da1b5c6953 refactor boost build
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-30 10:44:40 -06:00
629725e262 build fixes
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-30 10:40:29 -06:00
6ba4c0091b fix
Some checks failed
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-11-30 09:24:51 -06:00
99d5261aab updates 2023-11-30 09:19:09 -06:00
97487cf0c4 updates 2023-11-30 09:18:10 -06:00
8436f2e2bb refactor
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-19 18:02:28 -06:00
310e436163 fix crash
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-19 17:58:51 -06:00
b64477fd7e updated CHANGELOG.md
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-19 11:43:06 -06:00
782da43114 updated CHANGELOG.md
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-19 11:40:40 -06:00
37854b693b refactor
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-19 00:19:28 -06:00
7360b72c7b fix
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-18 23:54:51 -06:00
6f68f268c0 fix
Some checks are pending
BlockStorage/repertory_linux_builds/pipeline/head Build queued...
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-11-18 23:54:13 -06:00
983587aeb7 fix deadlock
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-18 23:53:03 -06:00
ee415d2e4a refactor
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-18 23:01:49 -06:00
0c075d7fe4 fix
Some checks are pending
BlockStorage/repertory_linux_builds/pipeline/head Build queued...
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-11-18 22:55:50 -06:00
eec3653c6b refactor
Some checks failed
BlockStorage/repertory_osx_builds/pipeline/head There was a failure building this commit
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-18 22:47:07 -06:00
5ac2a24611 refactor
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-18 20:05:34 -06:00
144683d7b3 cleanup
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-11-18 19:23:52 -06:00
9c917a9119 enable s3 test
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-11-18 19:08:14 -06:00
dc48b84191 fix truncate
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-11-18 19:07:53 -06:00
8555d31ddf refactor
Some checks are pending
BlockStorage/repertory_linux_builds/pipeline/head Build queued...
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-11-18 18:19:57 -06:00
cb0dde2a80 fix
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-18 17:38:48 -06:00
5f5b1f751b fix
Some checks failed
BlockStorage/repertory_osx_builds/pipeline/head Something is wrong with the build of this commit
BlockStorage/repertory_linux_builds/pipeline/head Something is wrong with the build of this commit
2023-11-18 17:18:03 -06:00
24c5dad929 fix lib64 directory issue 2023-11-18 17:14:38 -06:00
f0046fcd57 updated ignore list 2023-11-18 17:04:10 -06:00
3c3e415175 refactor 2023-11-18 17:03:42 -06:00
00d3355f43 updated openssl 2023-11-18 16:56:37 -06:00
907a14faff fix tests
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-18 16:34:40 -06:00
4348e89f99 refactor tests
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-18 15:34:43 -06:00
7a24cc54f8 refactor
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-16 08:08:03 -06:00
80f6e3c272 extract common behavior
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-15 20:54:28 -06:00
edb1297c4a fix boost version
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-11-15 19:56:44 -06:00
1ee157f943 switch to storj for binary hosting
All checks were successful
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-11-15 19:17:21 -06:00
1b2981b06e removed logs
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-14 20:34:43 -06:00
7203fefd33 refactor
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-14 20:28:47 -06:00
d808b2dd19 refactor
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-14 20:09:50 -06:00
ee34a1e361 extract common behavior
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-14 19:49:46 -06:00
1766f91697 extract common behavior
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-14 18:35:18 -06:00
b3aa28d085 refactor
Some checks are pending
BlockStorage/repertory_linux_builds/pipeline/head Build queued...
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-11-14 18:26:00 -06:00
a605d7af11 Merge branch 'development' of ssh://git.fifthgrid.com:3022/BlockStorage/repertory into development
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-14 18:24:27 -06:00
19b1a33c48 extract common behavior 2023-11-14 18:20:11 -06:00
04aa511448 Address compiler warnings #10
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-12 19:44:58 -06:00
8dc3d4466b refactor 2023-11-12 19:43:52 -06:00
0716a58ff0 Address compiler warnings #10
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-12 19:36:00 -06:00
60052081b4 fix
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-12 14:36:02 -06:00
f11d49b264 fix test
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-11-12 14:34:58 -06:00
103dae6d08 unit tests and fixes
Some checks are pending
BlockStorage/repertory_linux_builds/pipeline/head Build queued...
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-11-12 14:33:19 -06:00
821ed7b25e fix test 2023-11-12 14:27:11 -06:00
87f83b6f30 fix test
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-12 14:08:02 -06:00
ace81d797e cleanup 2023-11-12 14:01:53 -06:00
57ca2c7c6d refactor
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-12 12:41:18 -06:00
8360d9e045 extract common behavior
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-12 12:36:44 -06:00
560ffbbb6a fix events
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-12 11:49:03 -06:00
72314606f3 extract common behavior 2023-11-12 11:45:54 -06:00
db009b69dd fix
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-11 21:24:15 -06:00
3ed99dc0ce cleanup
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-11 21:17:07 -06:00
762a7c99d5 refactor s3 provider
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-11 21:15:08 -06:00
4e62156b70 added read retry to s3 provider
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-11 21:04:21 -06:00
cc49536755 fix
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-11 20:33:57 -06:00
54b844dc3b fix
Some checks are pending
BlockStorage/repertory_linux_builds/pipeline/head Build queued...
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
2023-11-11 20:24:21 -06:00
1e8ba13f66 s3 provider fixes
Some checks failed
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2023-11-11 20:21:12 -06:00
93011cee9c refactor s3 provider
Some checks failed
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2023-11-11 19:05:27 -06:00
a474a5c73c refactor s3 provider
Some checks failed
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2023-11-11 18:49:15 -06:00
17b98ca99d refactor
Some checks failed
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2023-11-11 18:31:49 -06:00
281eedb71e refactor s3 provider
Some checks failed
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2023-11-11 16:42:38 -06:00
1ee533591c refactor s3 provider
Some checks failed
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2023-11-11 16:28:00 -06:00
b87e1df140 refactor s3 provider 2023-11-11 15:35:35 -06:00
f88239a13e updated changelog 2023-11-11 11:52:19 -06:00
68476cbc00 refactor s3 provider 2023-11-11 11:32:14 -06:00
f2c1f64f02 Address compiler warnings #10
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-08 19:53:12 -06:00
a7209184c8 changed number of jobs
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-11-01 13:59:36 -05:00
ba59e29499 fix build
Some checks failed
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
BlockStorage/repertory/pipeline/head There was a failure building this commit
BlockStorage/repertory_osx_builds/pipeline/head There was a failure building this commit
2023-10-31 16:03:03 -05:00
f94196d865 Address compiler warnings #10
Some checks failed
BlockStorage/repertory_osx/pipeline/head There was a failure building this commit
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-10-30 19:33:18 -05:00
bb5a9f9737 fix
Some checks failed
BlockStorage/repertory_linux_builds/pipeline/head Build queued...
BlockStorage/repertory_osx/pipeline/head There was a failure building this commit
2023-10-30 19:08:35 -05:00
4bc5cf7c64 [require c++20] [moved to stduuid]
Some checks failed
BlockStorage/repertory_osx/pipeline/head There was a failure building this commit
BlockStorage/repertory_linux_builds/pipeline/head Build started...
2023-10-30 19:03:12 -05:00
639d14452b Address compiler warnings #10
Some checks failed
BlockStorage/repertory_osx/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2023-10-30 13:31:52 -05:00
e7413fb741 Address compiler warnings #10
All checks were successful
BlockStorage/repertory_osx/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-10-30 12:06:07 -05:00
c0e720498d Address compiler warnings #10
All checks were successful
BlockStorage/repertory_osx/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-10-30 11:49:56 -05:00
383c3b4be6 Address compiler warnings #10 [Wconversion] 2023-10-30 11:41:45 -05:00
e9b202f5c8 \#10 Address compiler warnings
All checks were successful
BlockStorage/repertory_osx/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-10-30 11:07:42 -05:00
bc3005a6a4 \#10 Address compiler warnings 2023-10-30 10:59:04 -05:00
8cf19e0594 \#10 Address compiler warnings 2023-10-30 10:54:35 -05:00
b137b57dbc \#10 Address compiler warnings 2023-10-30 10:36:31 -05:00
5dff8927da build win32 last
All checks were successful
BlockStorage/repertory_osx/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-10-30 10:04:00 -05:00
197e79dd07 fix mingw64 jenkins build
All checks were successful
BlockStorage/repertory_osx/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-10-30 10:02:55 -05:00
6262aca761 cmake build cleanup
Some checks failed
BlockStorage/repertory_osx/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2023-10-29 20:38:13 -05:00
c156ae704b cmake build refactor
All checks were successful
BlockStorage/repertory_osx/pipeline/head This commit looks good
2023-10-29 20:21:37 -05:00
a67979ec40 cleanup build
All checks were successful
BlockStorage/repertory_osx/pipeline/head This commit looks good
2023-10-29 20:05:38 -05:00
54bfc11620 fix erroneous nodiscard
All checks were successful
BlockStorage/repertory_osx/pipeline/head This commit looks good
2023-10-29 19:45:21 -05:00
d33c2cd3a2 removed msvc compilation support
Some checks are pending
BlockStorage/repertory_linux_builds/pipeline/head Build queued...
BlockStorage/repertory_osx/pipeline/head Build queued...
2023-10-29 19:40:29 -05:00
3a5f428fb6 [boost to v1.83.0] [curl to v8.4.0] [libsodium to v1.0.19] [rocksdb to v8.6.7]
Some checks failed
BlockStorage/repertory_windows/pipeline/head Something is wrong with the build of this commit
BlockStorage/repertory_osx/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head There was a failure building this commit
2023-10-29 19:26:09 -05:00
0331152569 add zlib as project dependency
All checks were successful
BlockStorage/repertory_windows/pipeline/head This commit looks good
BlockStorage/repertory_osx/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-10-29 19:12:16 -05:00
1b7e854f5f added zlib
All checks were successful
BlockStorage/repertory_windows/pipeline/head This commit looks good
BlockStorage/repertory_osx/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-10-29 19:05:40 -05:00
12a945d863 updated version
All checks were successful
BlockStorage/repertory_osx/pipeline/head This commit looks good
BlockStorage/repertory_windows/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
2023-10-29 01:59:00 -05:00
670 changed files with 26306 additions and 59610 deletions

View File

@@ -3,9 +3,7 @@ _mkgmtime
_sh_denyno _sh_denyno
_sh_denyrd _sh_denyrd
_sh_denyrw _sh_denyrw
_spawnv
aarch64 aarch64
abcdefgh
advapi32 advapi32
armv8 armv8
autogen autogen
@@ -17,12 +15,8 @@ boost_asio_has_std_string_view
bugprone bugprone
cflags cflags
chrono chrono
clsid
cmake_current_source_dir cmake_current_source_dir
cmdc
coinit_apartmentthreaded
comdlg32 comdlg32
conin$
cppcoreguidelines cppcoreguidelines
cppdbg cppdbg
cppflags cppflags
@@ -31,11 +25,7 @@ cpptrace
cppvsdbg cppvsdbg
create_notraverse create_notraverse
crypto_aead_xchacha20poly1305_ietf_npubbytes crypto_aead_xchacha20poly1305_ietf_npubbytes
cspan
cstdint cstdint
curl_zstd
curle_couldnt_resolve_host
curlopt_aws_sigv4
cxxflags cxxflags
cxxstd cxxstd
d_largefile64_source d_largefile64_source
@@ -60,7 +50,6 @@ dcurl_staticlib
dcurl_use_libpsl dcurl_use_libpsl
dcurl_use_libssh2 dcurl_use_libssh2
dcurl_zlib dcurl_zlib
dcurl_zstd
ddebug ddebug
decmult_gen_prec_bits decmult_gen_prec_bits
decmult_window_size decmult_window_size
@@ -93,7 +82,6 @@ dspdlog_fmt_external
dthreads_prefer_pthread_flag dthreads_prefer_pthread_flag
dunw_local_only dunw_local_only
duse_libidn2 duse_libidn2
duse_nghttp2
duuid_build_tests duuid_build_tests
dwith_benchmark dwith_benchmark
dwith_gflags dwith_gflags
@@ -105,9 +93,6 @@ endforeach
endfunction endfunction
eventlib eventlib
expect_streq expect_streq
expect_strne
falloc_fl_keep_size
fallocate
fallocate_impl fallocate_impl
fext fext
fgetattr fgetattr
@@ -116,10 +101,7 @@ filebase
flac_version flac_version
flag_nopath flag_nopath
flarge flarge
folderid
fontconfig_version fontconfig_version
foob
fooba
freetype2_version freetype2_version
fsetattr_x fsetattr_x
fusermount fusermount
@@ -131,18 +113,13 @@ googletest
gpath gpath
gtest_version gtest_version
has_setxattr has_setxattr
hkey
hresult
httpapi httpapi
httplib httplib
hwnd
icudata icudata
icui18n icui18n
icuuc icuuc
inproc
iostreams iostreams
iphlpapi iphlpapi
ipstream
jthread jthread
libbitcoin libbitcoin
libbitcoinsystem libbitcoinsystem
@@ -150,7 +127,6 @@ libcurl
libdsm libdsm
libevent libevent
libexample libexample
libexpat
libfuse3 libfuse3
libgmock libgmock
libgtest libgtest
@@ -163,56 +139,38 @@ libuuid
libuuid_include_dirs libuuid_include_dirs
libvlc libvlc
linkflags linkflags
llabsll
localappdata
lpbyte
lpthread
lptr lptr
lpwstr lpwstr
markdownlint markdownlint
mbig mbig
minio
msvc msvc
msvcr120 msvcr120
msys2 msys2
mtune mtune
musl-libc musl-libc
mwindows
nana nana
ncrypt ncrypt
nlohmann
nlohmann_json nlohmann_json
nmakeprg nmakeprg
noappledouble
nohup
nominmax nominmax
ntstatus ntstatus
nullptr
nuspell_version nuspell_version
oleaut32 oleaut32
openal_version openal_version
openssldir openssldir
osascript
osxfuse
pistream
pkgconfig pkgconfig
plarge_integer plarge_integer
plex plex
posix
println
project_enable_fontconfig project_enable_fontconfig
project_enable_gtkmm project_enable_gtkmm
project_enable_libdsm project_enable_libdsm
project_enable_nana project_enable_nana
project_macos_icns_name
propgrid propgrid
psecurity_descriptor psecurity_descriptor
pthreads
pugi pugi
pugixml_project pugixml_project
puint32 puint32
pvoid pvoid
pwhash
pwstr pwstr
rdrw rdrw
remote_winfsp remote_winfsp
@@ -220,34 +178,25 @@ renterd
richtext richtext
rocksdb_library rocksdb_library
rpcrt4 rpcrt4
runas
s_igid s_igid
s_isvtx s_isvtx
s_iuid s_iuid
sddl_revision_1 sddl_revision_1
secp256k1 secp256k1
secur32 secur32
see_mask_nocloseprocess
sfml_project sfml_project
shellexecuteinfoa
shlwapi shlwapi
sigchld
skynet
source_subdir source_subdir
spdlog spdlog
spdlog_project spdlog_project
st_ctim st_ctim
startf_useshowwindow
startupinfoa
static-libgcc static-libgcc
static-libstdc++ static-libstdc++
stbuf stbuf
stduuid_project stduuid_project
strequal strequal
sw_shownoactivate
ularge_integer ularge_integer
uring uring
url
userenv userenv
utimens_impl utimens_impl
utimensat utimensat
@@ -263,7 +212,6 @@ wextra
wfloat wfloat
wformat=2 wformat=2
winfsp winfsp
winfsp_drive
winhttp winhttp
wininet wininet
winspool winspool

5
.gitattributes vendored
View File

@@ -1,5 +0,0 @@
*.msi filter=lfs diff=lfs merge=lfs -text
*.tar.gz filter=lfs diff=lfs merge=lfs -text
*.tar.xz filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text

13
.gitignore vendored
View File

@@ -1,16 +1,13 @@
.DS_Store
.cache/ .cache/
.vs/
Info.plist
build*/ build*/
compile_commands.json compile_commands.json
cspell.json cspell.json
deps/ .vs/
support/Dockerfile
dist/ dist/
override.sh deps/
repertory.iss
scripts/cleanup.cmd scripts/cleanup.cmd
scripts/cleanup.sh scripts/cleanup.sh
support/Dockerfile
version.cpp
version.rc version.rc
version.cpp
override.sh

View File

@@ -6,87 +6,56 @@ pipeline {
environment { environment {
DEVELOPER_PRIVATE_KEY = "/.ci/repertory/cert/developer.priv" DEVELOPER_PRIVATE_KEY = "/.ci/repertory/cert/developer.priv"
DEVELOPER_PUBLIC_KEY = "/.ci/repertory/cert/developer.pub" DEVELOPER_PUBLIC_KEY = "/.ci/repertory/cert/developer.pub"
PROJECT_TEST_CONFIG_DIR = "/.ci/repertory/test" PROJECT_TEST_CONFIG_DIR = "/.ci/repertory/test_config"
} }
options { options {
disableConcurrentBuilds() disableConcurrentBuilds()
skipDefaultCheckout() retry(2)
timestamps()
} }
stages { stages {
stage('Build • Test • Deliver') {
agent any
stages {
stage('Checkout') {
steps {
script {
int maxAttempts = 6
int baseDelay = 10
for (int attempt = 1; attempt <= maxAttempts; attempt++) {
try {
checkout scm
break
} catch (err) {
if (attempt == maxAttempts) { throw err }
int waitSec = baseDelay * (1 << (attempt - 1))
echo "Checkout failed (attempt ${attempt}/${maxAttempts}). Waiting ${waitSec}s before retry..."
sleep time: waitSec, unit: 'SECONDS'
}
}
}
}
}
stage('linux_x86_64') { stage('linux_x86_64') {
agent any
steps { steps {
script { retryWithBackoff(2, 5) { sh 'scripts/make_unix.sh' } } retry(2) {
sleep time: 5, unit: 'SECONDS'
sh 'scripts/make_unix.sh'
}
} }
} }
stage('mingw64') { stage('mingw64') {
agent any
steps { steps {
script { retryWithBackoff(2, 5) { sh 'scripts/make_win32.sh' } } retry(2) {
sleep time: 5, unit: 'SECONDS'
sh 'scripts/make_win32.sh'
}
} }
} }
stage('linux_aarch64') { stage('linux_aarch64') {
steps { agent any
script { retryWithBackoff(2, 5) { sh 'scripts/make_unix.sh aarch64' } }
}
}
stage('linux_x86_64_test') {
steps { steps {
script { retryWithBackoff(2, 5) { sh 'scripts/run_tests.sh' } } retry(2) {
sleep time: 5, unit: 'SECONDS'
sh 'scripts/make_unix.sh aarch64'
}
} }
} }
stage('deliver') { stage('deliver') {
steps { agent any
script {
retryWithBackoff(3, 10) { sh 'scripts/deliver.sh /mnt/repertory "" "" "" "" 1 1' }
retryWithBackoff(3, 10) { sh 'scripts/deliver.sh /mnt/repertory "" aarch64' }
retryWithBackoff(3, 10) { sh 'scripts/deliver.sh /mnt/repertory' }
}
}
}
}
}
}
}
def retryWithBackoff(int maxAttempts, int baseDelaySeconds, Closure body) { steps {
for (int attempt = 1; attempt <= maxAttempts; attempt++) { sh 'scripts/deliver.sh /mnt/repertory "" "" "" "" 1 1'
try { sh 'scripts/deliver.sh /mnt/repertory "" aarch64'
body() sh 'scripts/deliver.sh /mnt/repertory'
return }
} catch (err) {
if (attempt == maxAttempts) { throw err }
int waitSec = baseDelaySeconds * (1 << (attempt - 1))
echo "Step failed (attempt ${attempt}/${maxAttempts}). Waiting ${waitSec}s before retry..."
sleep time: waitSec, unit: 'SECONDS'
} }
} }
} }

View File

@@ -1,79 +0,0 @@
#!groovy
pipeline {
agent none
environment {
DEVELOPER_PRIVATE_KEY = "${env.HOME}/.ci/repertory/cert/developer.priv"
DEVELOPER_PUBLIC_KEY = "${env.HOME}/.ci/repertory/cert/developer.pub"
PROJECT_TEST_CONFIG_DIR = "${env.HOME}/.ci/repertory/test"
}
options {
disableConcurrentBuilds()
skipDefaultCheckout()
timestamps()
}
stages {
stage('Build • Test • Deliver') {
agent any
stages {
stage('Checkout') {
steps {
script {
int maxAttempts = 6
int baseDelay = 10
for (int attempt = 1; attempt <= maxAttempts; attempt++) {
try {
checkout scm
break
} catch (err) {
if (attempt == maxAttempts) { throw err }
int waitSec = baseDelay * (1 << (attempt - 1))
echo "Checkout failed (attempt ${attempt}/${maxAttempts}). Waiting ${waitSec}s before retry..."
sleep time: waitSec, unit: 'SECONDS'
}
}
}
}
}
stage('darwin_aarch64') {
steps { script { retryWithBackoff(2, 5) { sh 'scripts/make_unix.sh aarch64' } } }
}
stage('darwin_x86_64') {
steps { script { retryWithBackoff(2, 5) { sh 'scripts/make_unix.sh x86_64' } } }
}
stage('darwin_aarch64_test') {
steps { script { retryWithBackoff(2, 5) { sh 'scripts/run_tests.sh aarch64' } } }
}
stage('deliver') {
steps {
script {
retryWithBackoff(3, 10) { sh "scripts/deliver.sh ${env.HOME}/mnt/repertory '' aarch64" }
retryWithBackoff(3, 10) { sh "scripts/deliver.sh ${env.HOME}/mnt/repertory '' x86_64" }
}
}
}
}
}
}
}
def retryWithBackoff(int maxAttempts, int baseDelaySeconds, Closure body) {
for (int attempt = 1; attempt <= maxAttempts; attempt++) {
try {
body()
return
} catch (err) {
if (attempt == maxAttempts) { throw err }
int waitSec = baseDelaySeconds * (1 << (attempt - 1))
echo "Step failed (attempt ${attempt}/${maxAttempts}). Waiting ${waitSec}s before retry..."
sleep time: waitSec, unit: 'SECONDS'
}
}
}

View File

@@ -1,68 +0,0 @@
#!groovy
pipeline {
agent none
environment {
PROJECT_TEST_CONFIG_DIR = "c:\\.ci\\repertory\\test"
}
options {
disableConcurrentBuilds()
skipDefaultCheckout()
timestamps()
}
stages {
stage('Build • Test') {
agent any
stages {
stage('Checkout') {
steps {
script {
int maxAttempts = 6
int baseDelay = 10
for (int attempt = 1; attempt <= maxAttempts; attempt++) {
try {
checkout scm
break
} catch (err) {
if (attempt == maxAttempts) { throw err }
int waitSec = baseDelay * (1 << (attempt - 1))
echo "Checkout failed (attempt ${attempt}/${maxAttempts}). Waiting ${waitSec}s before retry..."
sleep time: waitSec, unit: 'SECONDS'
}
}
}
}
}
stage('msys2') {
steps {
script { retryWithBackoff(2, 5) { bat 'scripts\\make_win32.cmd' } }
}
}
// stage('msys2_test') {
// steps {
// script { retryWithBackoff(2, 5) { bat 'scripts\\run_tests.cmd' } }
// }
// }
}
}
}
}
def retryWithBackoff(int maxAttempts, int baseDelaySeconds, Closure body) {
for (int attempt = 1; attempt <= maxAttempts; attempt++) {
try {
body()
return
} catch (err) {
if (attempt == maxAttempts) { throw err }
int waitSec = baseDelaySeconds * (1 << (attempt - 1))
echo "Step failed (attempt ${attempt}/${maxAttempts}). Waiting ${waitSec}s before retry..."
sleep time: waitSec, unit: 'SECONDS'
}
}
}

36
.vimspector.json Normal file
View File

@@ -0,0 +1,36 @@
{
"configurations": {
"UnixDebug": {
"adapter": "vscode-cpptools",
"configuration": {
"request": "launch",
"program": "${workspaceRoot}/build/debug/repertory",
"args": ["-f", "/home/sgraves/mnt"],
"cwd": "${workspaceRoot}/build/debug",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"stopAtEntry": true,
"logging": {
"engineLogging": false
}
}
},
"UnixDebugTest": {
"adapter": "vscode-cpptools",
"configuration": {
"request": "launch",
"program": "${workspaceRoot}/build/debug/unittests",
"args": ["--gtest_filter=file_manager.can_close_after_download_timeout"],
"cwd": "${workspaceRoot}/build",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"stopAtEntry": true,
"logging": {
"engineLogging": false
}
}
}
}
}

View File

@@ -1,179 +1,10 @@
# Changelog # Changelog
## v2.1.0-rc.2
### Issues
* \#21 [unit test] Complete WinFSP unit tests
* \#65 [bug] Mount state is not being removed after unmount on Windows
* \#66 [bug] UI fails to install plist if LaunchAgents directory does not exist
### Changes from v2.0.7-release
* Fixed Windows setup icon location
---
## v2.1.0-rc
### BREAKING CHANGES
* Mount state has been moved into the configuration directory
* Unmount all active mounts prior to upgrade
* Remote mounts must be upgraded to v2.1.0+ to support new authentication scheme
* Protocol handshake added for DoS protection
<!-- markdownlint-disable-next-line -->
### Issues
* \#12 [unit test] Complete all providers unit tests
* \#22 [unit test] Complete FUSE unit tests
* \#33 Complete initial v2.0 documentation
* \#34 Add macOS support
* \#38 Pinning a file should automatically initiate a download to cache
* \#51 [ui] UI console window should close after launch
* \#52 [ui] Add auto-mount on first launch functionality
* \#53 Create Windows installer
* \#54 Remove 'default' as initial bucket name for Sia
* \#58 Create macOS bundle for simplified installation
* \#59 [bug] [ui] UI is hanging after launching repertory mount in background
* \#60 Implement secure key via KDF for transparent data encryption/decryption
* \#61 [ui] UI theme should match repertory blue
### Changes from v2.0.7-release
* Added check version support to remote mounts
* Fixed directory item count bug on S3 provider
* Fixed handling of `FALLOC_FL_KEEP_SIZE` on Linux
* Fixed intermittent client hang on remote mount server disconnect
* Implemented POSIX-compliant `unlink()` with FUSE `hard_remove`
* Open handles remain valid after `unlink()`
* Refactored CLI messages and error handling to use common methods
* Enhanced remote mount client thread mapping
* Threads are now mapped 1-1 from client to server instead of being tied to a fixed-size thread pool
---
## v2.0.7-release
<!-- markdownlint-disable-next-line -->
### Issues
* \#55 [bug] UI is unable to launch `repertory.exe` on Windows when absolute path contains spaces
* \#57 [bug] Directory entries . and .. are incorrectly being reported as files in Linux remote mounts
---
## v2.0.6-release
<!-- markdownlint-disable-next-line -->
### Issues
* \#42 [bug] Remote mount directory listing on Windows connected to Linux is failing
* \#43 [bug] Directories are not importing properly for Sia
* \#44 [bug] Windows-to-Linux remote mount ignores `CREATE_NEW`
* \#45 [bug] Windows-to-Linux remote mount is not handling attempts to remove a non-empty directory properly
* \#46 [bug] Changes to maximum cache size should be updated live
* \#47 [bug] Windows-to-Linux remote mount is allowing directory rename when directory is not empty
* \#48 [bug] Windows-to-Linux remote mount overlapped I/O is not detecting EOF for read operations
* \#49 [ui] Implement provider test button
### Changes from v2.0.5-rc
* Added request retry on `libcurl` error code `CURLE_COULDNT_RESOLVE_HOST`
* Added `libcurl` DNS caching
* Drive letters in UI should always be lowercase
* Fixed WinFSP directory rename for non-empty directories
* Fixed segfault in UI due to incorrect `SIGCHLD` handling
* Migrated to v2 error handling
* Upgraded WinFSP to v2.1 (2025)
---
## v2.0.5-rc
<!-- markdownlint-disable-next-line -->
### Issues
* \#39 Create management portal in Flutter
### Changes from v2.0.4-rc
* Continue documentation updates
* Fixed `-status` command erasing active mount information
* Fixed overlapping HTTP REST API port's
* Refactored/fixed instance locking
* Removed passwords and secret key values from API calls
* Renamed setting `ApiAuth` to `ApiPassword`
* Require `--name,-na` option for encryption provider
---
## v2.0.4-rc
### BREAKING CHANGES
* `renterd` v2.0.0+ is now required. Prior versions will fail to mount.
<!-- markdownlint-disable-next-line -->
### Issues
* \#35 [bug] Low frequency check is set to '0' instead of 1 hour by default
* \#36 [bug] Max cache size bytes is set to '0' by default
### Changes from v2.0.3-rc
* Added Sia API version check prior to mounting
* Added back `-cv` (check version) CLI option
* Continue documentation updates
* Fixed setting `ApiAuth` via `set_value_by_name`
* Fixed setting `HostConfig.ApiUser` via `set_value_by_name`
* Fixed setting `HostConfig.Path` via `set_value_by_name`
* Fixed setting `HostConfig.Protocol` via `set_value_by_name`
* Improved ring buffer read-ahead
* Integrated `renterd` version 2.0.0
* Prefer using local cache file when opening files
* Refactored `app_config` unit tests
* Refactored polling to be more accurate on scheduling tasks
---
## v2.0.3-rc
<!-- markdownlint-disable-next-line -->
### Issues
* \#28 \[bug\] Address slow directory responses in S3 mounts for deeply nested directories
* \#29 \[bug\] S3 error responses are not being logged
* \#30 \[bug\] Sia provider error responses are not logged
* \#31 \[bug\] S3 provider should limit max key size to 1024
### Changes from v2.0.2-rc
* Always use direct for read-only providers
* Fixed externally removed files not being processed during cleanup
* Fixed http headers not being added for requests
* Fixed incorrect `stat` values for remote mounts
* Fixed invalid directory nullptr error on remote mounts
* Fixed memory leak in event system
* Refactored application shutdown
* Refactored event system
* Updated build system to Alpine 3.21.0
* Updated build system to MinGW-w64 12.0.0
* Updated copyright to 2018-2025
---
## v2.0.2-rc ## v2.0.2-rc
<!-- markdownlint-disable-next-line -->
### BREAKING CHANGES
* Refactored `config.json` - will need to verify configuration settings prior to mounting
<!-- markdownlint-disable-next-line -->
### Issues ### Issues
* \#12 \[Unit Test\] Complete all providers unit tests
* \#14 \[Unit Test\] SQLite mini-ORM unit tests and cleanup * \#14 \[Unit Test\] SQLite mini-ORM unit tests and cleanup
* \#16 Add support for bucket name in Sia provider * \#16 Add support for bucket name in Sia provider
* \#17 Update to common c++ build system * \#17 Update to common c++ build system
@@ -183,20 +14,13 @@
* MSYS2 is required for building Windows binaries on Windows * MSYS2 is required for building Windows binaries on Windows
* OS X support is temporarily disabled * OS X support is temporarily disabled
* \#19 \[bug\] Rename file is broken for files that are existing * \#19 \[bug\] Rename file is broken for files that are existing
* \#23 \[bug\] Incorrect file size displayed while upload is pending
* \#24 RocksDB implementations should be transactional
* \#25 Writes should block when maximum cache size is reached
* \#26 Complete ring buffer and direct download support
### Changes from v2.0.1-rc ### Changes from v2.0.1-rc
* Ability to choose between RocksDB and SQLite databases
* Added direct reads and implemented download fallback
* Corrected file times on S3 and Sia providers * Corrected file times on S3 and Sia providers
* Corrected handling of `chown()` and `chmod()` * Corrected handling of `chown()` and `chmod()`
* Fixed erroneous download of chunks after resize * Fixed erroneous download of chunks after resize
* Comprehensive WinFSP and FUSE unit tests, including remote testing
---
## v2.0.1-rc ## v2.0.1-rc
@@ -220,8 +44,6 @@
* Updated `curl` to v8.4.0 * Updated `curl` to v8.4.0
* Updated `libsodium` to v1.0.19 * Updated `libsodium` to v1.0.19
---
## v2.0.0-rc ## v2.0.0-rc
<!-- markdownlint-disable-next-line --> <!-- markdownlint-disable-next-line -->
@@ -266,5 +88,3 @@
* Supports re-upload after mount restart for incomplete uploads * Supports re-upload after mount restart for incomplete uploads
* NOTE: Uploads for all providers are full file (no resume support) * NOTE: Uploads for all providers are full file (no resume support)
* Multipart upload support is planned for S3 * Multipart upload support is planned for S3
---

View File

@@ -3,10 +3,6 @@ cmake_minimum_required(VERSION 3.27)
cmake_policy(SET CMP0135 NEW) cmake_policy(SET CMP0135 NEW)
cmake_policy(SET CMP0144 NEW) cmake_policy(SET CMP0144 NEW)
if (NOT PROJECT_INTERFACE)
message(FATAL_ERROR "Project must be compiled via 'make_win32.cmd'/'make_win32.sh' or 'make_unix.sh' build scripts. Invoking 'cmake' directly is not supported.")
endif()
project(${PROJECT_NAME} project(${PROJECT_NAME}
DESCRIPTION ${PROJECT_DESC} DESCRIPTION ${PROJECT_DESC}
HOMEPAGE_URL ${PROJECT_URL} HOMEPAGE_URL ${PROJECT_URL}
@@ -51,10 +47,6 @@ if(PROJECT_IS_ARM64)
add_definitions(-DPROJECT_IS_ARM64) add_definitions(-DPROJECT_IS_ARM64)
endif() endif()
if(PROJECT_IS_DARWIN)
add_definitions(-DPROJECT_IS_DARWIN)
endif()
if(PROJECT_IS_MINGW) if(PROJECT_IS_MINGW)
option(PROJECT_ENABLE_WIN32_LONG_PATH_NAMES "Enable path sizes of 32767 characters on Windows" OFF) option(PROJECT_ENABLE_WIN32_LONG_PATH_NAMES "Enable path sizes of 32767 characters on Windows" OFF)
if(PROJECT_ENABLE_WIN32_LONG_PATH_NAMES) if(PROJECT_ENABLE_WIN32_LONG_PATH_NAMES)
@@ -62,10 +54,6 @@ if(PROJECT_IS_MINGW)
endif() endif()
endif() endif()
if (PROJECT_ENABLE_V2_ERRORS)
add_definitions(-DPROJECT_ENABLE_V2_ERRORS)
endif()
include(cmake/settings.cmake) include(cmake/settings.cmake)
include(cmake/flags.cmake) include(cmake/flags.cmake)
@@ -119,26 +107,10 @@ if(PROJECT_BUILD)
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/version.cpp ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/version.cpp
@ONLY @ONLY
) )
if (PROJECT_IS_MINGW AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.iss.in")
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.iss.in
${PROJECT_DIST_DIR}/../${PROJECT_NAME}.iss
@ONLY
)
endif()
if (PROJECT_IS_DARWIN AND EXISTS "${CMAKE_SOURCE_DIR}/${PROJECT_NAME}/Info.plist.in")
configure_file(
${CMAKE_SOURCE_DIR}/${PROJECT_NAME}/Info.plist.in
${CMAKE_SOURCE_DIR}/${PROJECT_NAME}/Info.plist
@ONLY
)
endif()
find_package(ICU REQUIRED COMPONENTS data i18n io uc)
else() else()
message(STATUS "-=[CMake Settings]=-") message(STATUS "-=[CMake Settings]=-")
message(STATUS " C standard: ${CMAKE_C_STANDARD}")
message(STATUS " C++ standard: ${CMAKE_CXX_STANDARD}")
message(STATUS " CPU architecture: ${PROJECT_MARCH}") message(STATUS " CPU architecture: ${PROJECT_MARCH}")
if(PROJECT_ENABLE_FUSE) if(PROJECT_ENABLE_FUSE)
message(STATUS " FUSE version: ${PROJECT_FUSE}") message(STATUS " FUSE version: ${PROJECT_FUSE}")
@@ -155,8 +127,6 @@ endif()
DEPENDS ${PROJECT_DEPENDENCIES} DEPENDS ${PROJECT_DEPENDENCIES}
COMMAND cd build && cmake COMMAND cd build && cmake
${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
-DCMAKE_C_STANDARD=${CMAKE_C_STANDARD}
-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
-DCMAKE_GENERATOR=${CMAKE_GENERATOR} -DCMAKE_GENERATOR=${CMAKE_GENERATOR}
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
-DPROJECT_3RD_PARTY_DIR=${PROJECT_3RD_PARTY_DIR} -DPROJECT_3RD_PARTY_DIR=${PROJECT_3RD_PARTY_DIR}
@@ -169,7 +139,6 @@ endif()
-DPROJECT_COPYRIGHT=${PROJECT_COPYRIGHT} -DPROJECT_COPYRIGHT=${PROJECT_COPYRIGHT}
-DPROJECT_DESC=${PROJECT_DESC} -DPROJECT_DESC=${PROJECT_DESC}
-DPROJECT_DIST_DIR=${PROJECT_DIST_DIR} -DPROJECT_DIST_DIR=${PROJECT_DIST_DIR}
-DPROJECT_ENABLE_V2_ERRORS=${PROJECT_ENABLE_V2_ERRORS}
-DPROJECT_ENABLE_WIN32_LONG_PATH_NAMES=${PROJECT_ENABLE_WIN32_LONG_PATH_NAMES} -DPROJECT_ENABLE_WIN32_LONG_PATH_NAMES=${PROJECT_ENABLE_WIN32_LONG_PATH_NAMES}
-DPROJECT_ENABLE_BOOST=${PROJECT_ENABLE_BOOST} -DPROJECT_ENABLE_BOOST=${PROJECT_ENABLE_BOOST}
-DPROJECT_ENABLE_CPP_HTTPLIB=${PROJECT_ENABLE_CPP_HTTPLIB} -DPROJECT_ENABLE_CPP_HTTPLIB=${PROJECT_ENABLE_CPP_HTTPLIB}
@@ -189,15 +158,11 @@ endif()
-DPROJECT_FUSE=${PROJECT_FUSE} -DPROJECT_FUSE=${PROJECT_FUSE}
-DPROJECT_FUSE_INCLUDE_DIRS=${PROJECT_FUSE_INCLUDE_DIRS} -DPROJECT_FUSE_INCLUDE_DIRS=${PROJECT_FUSE_INCLUDE_DIRS}
-DPROJECT_GIT_REV=${PROJECT_GIT_REV} -DPROJECT_GIT_REV=${PROJECT_GIT_REV}
-DPROJECT_INTERFACE=1
-DPROJECT_IS_ALPINE=${PROJECT_IS_ALPINE} -DPROJECT_IS_ALPINE=${PROJECT_IS_ALPINE}
-DPROJECT_IS_ARM64=${PROJECT_IS_ARM64} -DPROJECT_IS_ARM64=${PROJECT_IS_ARM64}
-DPROJECT_IS_DARWIN=${PROJECT_IS_DARWIN}
-DPROJECT_IS_MINGW=${PROJECT_IS_MINGW} -DPROJECT_IS_MINGW=${PROJECT_IS_MINGW}
-DPROJECT_IS_MINGW_UNIX=${PROJECT_IS_MINGW_UNIX} -DPROJECT_IS_MINGW_UNIX=${PROJECT_IS_MINGW_UNIX}
-DPROJECT_MAJOR_VERSION=${PROJECT_MAJOR_VERSION} -DPROJECT_MAJOR_VERSION=${PROJECT_MAJOR_VERSION}
-DPROJECT_MACOS_BUNDLE_ID=${PROJECT_MACOS_BUNDLE_ID}
-DPROJECT_MACOS_ICNS_NAME=${PROJECT_MACOS_ICNS_NAME}
-DPROJECT_MINOR_VERSION=${PROJECT_MINOR_VERSION} -DPROJECT_MINOR_VERSION=${PROJECT_MINOR_VERSION}
-DPROJECT_NAME=${PROJECT_NAME} -DPROJECT_NAME=${PROJECT_NAME}
-DPROJECT_RELEASE_ITER=${PROJECT_RELEASE_ITER} -DPROJECT_RELEASE_ITER=${PROJECT_RELEASE_ITER}

View File

@@ -1,5 +1,5 @@
# Repertory MIT License # Repertory MIT License
### Copyright <2018-2025> <scott.e.graves@protonmail.com> ### Copyright <2018-2024> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

911
README.md
View File

@@ -1,804 +1,117 @@
# Repertory # Repertory
> /rĕpər-tôr″ē/
> noun
> *A place, such as a storehouse, where a stock of things is kept; a repository*
Repertory allows you to mount **S3** and **Sia** storage as local drives using: Repertory allows you to mount AWS S3 and Sia via FUSE on Linux ~~/OS X~~ or via WinFSP
on Windows.
- **FUSE** (Linux/macOS)
- **WinFSP** (Windows) ## Details and Features
It supports: * Optimized for [Plex Media Server](https://www.plex.tv/)
* Single application to mount AWS S3 and/or Sia
- Local mounts * Remote mounting of Repertory instances on Linux ~~, OS X~~ and Windows
- Remote encrypted mounts between systems * Securely share your mounts over TCP/IP (`XChaCha20-Poly1305` stream cipher)
- Optional file name and data encryption using `XChaCha20-Poly1305` and `Argon2id` for key generation * Cross-platform support (Linux 64-bit, Linux arm64/aarch64, ~~OS X,~~ Windows 64-bit)
--- ## Minimum Requirements
## 📖 Contents * [Sia renterd](https://github.com/SiaFoundation/renterd/releases) v0.4.0+ for Sia support
* Only 64-bit operating systems are supported
1. [Quick Start (Sia Example)](#-quick-start-sia-example) * By default, Linux requires `fusermount3`; otherwise, `repertory` must be manually compiled with `libfuse2` support
2. [Details & Features](#-details-and-features) * ~~OS X requires the following dependency to be installed:~~
3. [Minimum Requirements](#-minimum-requirements) * ~~[FUSE for macOS v4.5.0](https://github.com/osxfuse/osxfuse/releases/download/macfuse-4.5.0/macfuse-4.5.0.dmg)~~
- [Supported Operating Systems](#supported-operating-systems) * Windows requires the following dependencies to be installed:
4. [Data Directories](#-data-directories) * [WinFSP 2023](https://github.com/winfsp/winfsp/releases/download/v2.0/winfsp-2.0.23075.msi)
5. [GUI](#-gui)
6. [Usage](#-usage) ## Supported Operating Systems
- [Important Options](#important-options)
- [Unmounting](#unmounting) * Linux `arm64/aarch64`
7. [Sia Setup](#-sia-setup) * Linux `amd64`
- [Sia Initial Configuration](#sia-initial-configuration) * ~~OS X Mojave and above~~
- [Sia Mounting](#sia-mounting) * Windows 64-bit 10, 11
- [Sia Configuration File](#sia-configuration-file)
8. [S3 Setup](#-s3-setup) ## Usage
- [S3 Initial Configuration](#s3-initial-configuration)
- [S3 Mounting](#s3-mounting) ### Notable Options
- [S3 Configuration File](#s3-configuration-file)
9. [Remote Mounting](#-remote-mounting) * `-dc`
- [Server Setup](#server-setup) * Display mount configuration.
- [Client Setup](#client-setup) * For Sia, `--name` is optional
- [Remote Mount Configuration File](#remote-mount-configuration-file) * For S3, the `-s3` option is required along with `--name`
10. [Compiling from Source](#-compiling) * `--help`
- [Linux Compilation](#linux-compilation) * Display all mount utility options.
- [macOS Compilation](#macos-compilation) * `--name, -na [name]`
- [Windows Compilation](#windows-compilation) * The `--name` option can be set to any valid value allowed as a file name for your filesystem.
11. [Credits](#-credits) * For Sia, the bucket name will be set to the same value if it is empty in the configuration file.
12. [Developer Public Key](#-developer-public-key) * If the `--name` option is not specified, `default` will be used.
13. [Consult the Wiki for additional information](https://git.fifthgrid.com/BlockStorage/repertory/wiki) * For S3, the `--name` option is required and does not affect the bucket name.
* `-set SiaConfig.Bucket`
--- * Set Sia bucket name for the mount.
* Can be used in combination with `--name` to target a unique configuration.
## 🚀 Quick Start (Sia Example) * `-set S3Config.Bucket`
* S3 bucket name for the mount.
> 💡 Want to mount S3 instead? * Must be used in combination with `--name` to target a unique configuration.
> Skip ahead to [S3 Setup](#-s3-setup) — the process is almost identical. * Must be used in combination with `-s3`.
This example mounts a Sia bucket from a running [renterd](https://github.com/SiaFoundation/renterd) instance. ### Sia
--- * Linux
* `repertory /mnt/location`
### 1. Install dependencies * `repertory --name default /mnt/location`
* Windows
#### Linux * `repertory.exe t:`
* `repertory.exe --name default t:`
``` shell
sudo apt install fuse3 # Debian/Ubuntu ### S3
# or
sudo dnf install fuse3 # Fedora * Linux
``` * `repertory --name storj -s3 /mnt/location`
* Windows
#### macOS * `repertory.exe --name storj -s3 t:`
- Install [macFUSE 5.0.7](https://github.com/macfuse/macfuse/releases/download/macfuse-5.0.7/macfuse-5.0.7.dmg) ## Compiling
#### Windows * Successful compilation will result in all required files being placed in the `dist/` directory
* Linux
- Install [WinFSP 2025](https://github.com/winfsp/winfsp/releases/download/v2.1/winfsp-2.1.25156.msi) * Ensure `docker` is installed
* For x86_64:
--- * RelWithDebInfo: `scripts/make_unix.sh`
* Release: `scripts/make_unix.sh x86_64 Release`
### 2. Configure * Debug: `scripts/make_unix.sh x86_64 Debug`
* For aarch64:
Replace placeholders with your actual values: * RelWithDebInfo: `scripts/make_unix.sh aarch64`
* Release: `scripts/make_unix.sh aarch64 Release`
``` shell * Debug: `scripts/make_unix.sh aarch64 Debug`
repertory --name mybucket -set HostConfig.ApiPassword "<renterd api password>" * Windows
repertory --name mybucket -set SiaConfig.Bucket "<bucket name>" * OFFICIAL: Cross-compiling on Linux
``` * Ensure `docker` is installed
* RelWithDebInfo: `scripts/make_win32.sh`
Optional: * Release: `scripts/make_win32.sh x86_64 Release`
* Debug: `scripts/make_win32.sh x86_64 Debug`
``` shell * UNOFFICIAL: Compiling on Windows
# If renterd is not running locally * Ensure latest [MSYS2](https://www.msys2.org/) is installed
repertory --name mybucket -set HostConfig.HostNameOrIp "<hostname or IP>" * RelWithDebInfo: `scripts\make_win32.cmd`
* Release: `scripts\make_win32.cmd x86_64 Release`
# If renterd uses a non-default port (default 9980) * Debug: `scripts\make_win32.cmd x86_64 Debug`
repertory --name mybucket -set HostConfig.ApiPort <port>
``` ## Credits
--- * [boost c++ libraries](https://www.boost.org/)
* [cpp-httplib](https://github.com/yhirose/cpp-httplib)
### 3. Mount * [curl](https://curl.haxx.se/)
* ~~[FUSE for macOS](https://osxfuse.github.io/)~~
<!-- markdownlint-disable-next-line --> * [Google Test](https://github.com/google/googletest)
#### Linux * [JSON for Modern C++](https://github.com/nlohmann/json)
* [libfuse](https://github.com/libfuse/libfuse)
``` shell * [libsodium](https://doc.libsodium.org/)
repertory --name mybucket /mnt/mybucket * [OpenSSL](https://www.openssl.org/)
``` * [ScPrime](https://scpri.me/)
* [Sia Decentralized Cloud Storage](https://sia.tech/)
<!-- markdownlint-disable-next-line --> * [SQLite](https://www.sqlite.org)
#### macOS * [stduuid](https://github.com/mariusbancila/stduuid)
* [Storj](https://storj.io/)
``` shell * [WinFSP - FUSE for Windows](https://github.com/billziss-gh/winfsp)
repertory --name mybucket /Volumes/mybucket * [zlib](https://zlib.net/)
```
## Developer Public Key
<!-- markdownlint-disable-next-line -->
#### Windows
``` shell
repertory --name mybucket t:
```
---
### 4. Unmount
``` shell
repertory --name mybucket --unmount
```
---
## ✨ Details and Features
- **Optimized for [Plex Media Server](https://www.plex.tv/).**
- Remote mounting of `repertory` instances between Linux, macOS, and/or Windows.
- Securely share your mounts over TCP/IP via `XChaCha20-Poly1305` with other systems on your network or over the internet.
- Cross-platform support (Linux, macOS, and Windows).
- Optionally encrypt file names and file data via `XChaCha20-Poly1305` in S3 mounts.
---
## 📋 Minimum Requirements
- **Sia:** [renterd](https://github.com/SiaFoundation/renterd/releases) v2.0.0+ for Sia support
- **Linux:** requires `fusermount3`; otherwise, `repertory` must be manually compiled with `libfuse2` support
- **macOS:** requires:
- [macFUSE 5.0.7](https://github.com/macfuse/macfuse/releases/download/macfuse-5.0.7/macfuse-5.0.7.dmg)
- **Windows:** requires:
- [WinFSP 2025](https://github.com/winfsp/winfsp/releases/download/v2.1/winfsp-2.1.25156.msi)
### Supported Operating Systems
Only **64-bit operating systems** are supported:
- Linux `arm64/aarch64`
- Linux `x86_64`
- macOS `arm64/aarch64`
- macOS `x86_64`
- Windows `x86_64` 10, 11
---
## 📂 Data Directories
<!-- markdownlint-disable-next-line -->
### Linux
``` shell
# Mounts
~/.local/repertory2/encrypt
~/.local/repertory2/s3
~/.local/repertory2/sia
# UI
~/.local/repertory2
```
### macOS
``` shell
# Mounts
~/Library/Application Support/repertory2/encrypt
~/Library/Application Support/repertory2/s3
~/Library/Application Support/repertory2/sia
# UI
~/Library/Application Support/repertory2
```
<!-- markdownlint-disable-next-line -->
### Windows
``` cmd
:: Mounts
%LOCALAPPDATA%\repertory2\encrypt
%LOCALAPPDATA%\repertory2\s3
%LOCALAPPDATA%\repertory2\sia
:: UI
%LOCALAPPDATA%\repertory2
```
**IMPORTANT:**
It is highly recommended to **exclude** these folders from any anti-virus/anti-malware applications as severe performance issues may arise. Excluding the mounted drive letter is also highly recommended.
---
## 🖥 GUI
As of `v2.0.6-release`, mounts can be managed using the **Repertory Management Portal**.
Launch the portal:
``` shell
repertory -ui
```
### ⚠️ Security tip
- Change the default UI credentials on first launch (`ui.json`) or via the portal
- Default username: `repertory`
- Default password: `repertory`
After first launch, `ui.json` will be created in the appropriate data directory (see [Data Directories](#-data-directories)). Modify this file directly or use the portal to change the default credentials.
### Screenshots
#### Login screen
![alt text](assets/login.png)
#### Home screen
![alt text](assets/home.png)
---
## 🛠 Usage
### Important Options
- `--help`
Display all mount utility options.
- `-f`
Keep process in foreground on Linux.
- `--name, -na [name]`
Identifies a unique configuration name to support multiple mounts.
The `--name` option can be set to any valid value allowed as a file name for your filesystem.
**The `--name` option is required.**
- `-dc`
Display mount configuration.
For Sia, the `--name` option is required.
For S3, the `-s3` and `--name` options are required.
### Unmounting
#### Remote
``` shell
repertory -rm 192.168.0.1:20000 --unmount
```
#### S3
``` shell
repertory -s3 --name '<my config name>' --unmount
```
#### Sia
``` shell
repertory --name '<my config name>' --unmount
```
---
## 🔒 Security Best Practices
When enabling **encryption tokens** for S3 or remote mounts:
- Use a **long, random string**.
- Store it **offline** (password manager and an offline backup).
- Losing it means **permanent data loss**.
---
<!-- markdownlint-disable-next-line -->
<a id="sia-setup"></a>
<!-- markdownlint-disable-next-line -->
<a id="-sia-setup"></a>
## ☁️ Sia Setup
### Sia Initial Configuration
**Required steps:**
- Set the appropriate bucket name and `renterd` API password in `repertory` configuration:
``` shell
repertory --name '<my config name>' -set HostConfig.ApiPassword '<my password>'
repertory --name '<my config name>' -set SiaConfig.Bucket '<my bucket name>'
```
**Optional steps:**
- Set a user name used during `renterd` basic authentication:
``` shell
repertory --name '<my config name>' -set HostConfig.ApiUser '<my user>'
```
- Set a custom agent string (default `Sia-Agent`):
``` shell
repertory --name '<my config name>' -set HostConfig.AgentString '<my agent>'
```
- Set the host name or IP of the `renterd` instance (default `localhost`):
``` shell
repertory --name '<my config name>' -set HostConfig.HostNameOrIp '<my host name>'
```
- Set the `renterd` API port (default `9980`):
``` shell
repertory --name '<my config name>' -set HostConfig.ApiPort 9981
```
**Verify/view all configuration options:**
``` shell
repertory --name '<my config name>' -dc
# Example:
repertory --name my_bucket -dc
```
### Sia Mounting
<!-- markdownlint-disable-next-line -->
#### Linux
``` shell
repertory --name '<my config name>' /mnt/location
# Example:
repertory --name my_bucket /mnt/location
```
<!-- markdownlint-disable-next-line -->
#### macOS
``` shell
repertory --name '<my config name>' /Volumes/mybucket
# Example:
repertory --name my_bucket /Volumes/mybucket
```
<!-- markdownlint-disable-next-line -->
#### Windows
``` shell
repertory --name '<my config name>' t:
# Example:
repertory --name my_bucket t:
```
### Sia Configuration File
```json
{
"ApiPassword": "<random generated rpc password>",
"ApiPort": 10000,
"ApiUser": "repertory",
"DatabaseType": "rocksdb",
"DownloadTimeoutSeconds": 30,
"EnableDownloadTimeout": true,
"EnableDriveEvents": false,
"EventLevel": "info",
"EvictionDelayMinutes": 1,
"EvictionUseAccessedTime": false,
"HighFreqIntervalSeconds": 30,
"HostConfig": {
"AgentString": "Sia-Agent",
"ApiPassword": "<renterd api password>",
"ApiPort": 9980,
"ApiUser": "",
"HostNameOrIp": "localhost",
"Path": "",
"Protocol": "http",
"TimeoutMs": 60000
},
"LowFreqIntervalSeconds": 3600,
"MaxCacheSizeBytes": 21474836480,
"MaxUploadCount": 5,
"MedFreqIntervalSeconds": 120,
"OnlineCheckRetrySeconds": 60,
"PreferredDownloadType": "default",
"RemoteMount": {
"ApiPort": 20000,
"ClientPoolSize": 20,
"Enable": false,
"EncryptionToken": ""
},
"RetryReadCount": 6,
"RingBufferFileSize": 512,
"SiaConfig": {
"Bucket": "my_bucket"
},
"TaskWaitMs": 100,
"Version": 1
}
```
---
## 🪣 S3 Setup
### S3 Initial Configuration
**Required steps:**
- Set the appropriate base URL:
``` shell
repertory -s3 --name '<my config name>' -set S3Config.URL '<my url>'
# Example:
repertory -s3 --name minio -set S3Config.URL 'http://localhost:9000'
```
- Set the appropriate bucket name:
``` shell
repertory -s3 --name '<my config name>' -set S3Config.Bucket '<my bucket name>'
```
- Set the appropriate access key:
``` shell
repertory -s3 --name '<my config name>' -set S3Config.AccessKey '<my access key>'
```
- Set the appropriate secret key:
``` shell
repertory -s3 --name '<my config name>' -set S3Config.SecretKey '<my secret key>'
```
- For Sia and most local S3 gateway instances, enable path style URLs:
``` shell
repertory -s3 --name '<my config name>' -set S3Config.UsePathStyle true
```
**Optional steps:**
- Set an appropriate region. Default is `any`:
``` shell
repertory -s3 --name '<my config name>' -set S3Config.Region '<my region>'
```
- Enable encrypted file names and file data. Set a strong, random encryption token and store it securely:
``` shell
repertory -s3 --name '<my config name>' -set S3Config.EncryptionToken '<my strong password>'
```
**Verify/view all configuration options:**
``` shell
repertory -s3 --name '<my config name>' -dc
# Example:
repertory -s3 --name minio -dc
```
### S3 Mounting
<!-- markdownlint-disable-next-line -->
#### Linux
``` shell
repertory -s3 --name '<my config name>' /mnt/location
# Example:
repertory -s3 --name minio /mnt/location
```
<!-- markdownlint-disable-next-line -->
#### macOS
``` shell
repertory -s3 --name '<my config name>' /Volumes/minio
# Example:
repertory -s3 --name minio /Volumes/minio
```
<!-- markdownlint-disable-next-line -->
#### Windows
``` shell
repertory -s3 --name '<my config name>' t:
# Example:
repertory -s3 --name minio t:
```
### S3 Configuration File
```json
{
"ApiPassword": "<random generated rpc password>",
"ApiPort": 10100,
"ApiUser": "repertory",
"DatabaseType": "rocksdb",
"DownloadTimeoutSeconds": 30,
"EnableDownloadTimeout": true,
"EnableDriveEvents": false,
"EventLevel": "info",
"EvictionDelayMinutes": 1,
"EvictionUseAccessedTime": false,
"HighFreqIntervalSeconds": 30,
"LowFreqIntervalSeconds": 3600,
"MaxCacheSizeBytes": 21474836480,
"MaxUploadCount": 5,
"MedFreqIntervalSeconds": 120,
"OnlineCheckRetrySeconds": 60,
"PreferredDownloadType": "default",
"RemoteMount": {
"ApiPort": 20100,
"ClientPoolSize": 20,
"Enable": false,
"EncryptionToken": ""
},
"RetryReadCount": 6,
"RingBufferFileSize": 512,
"S3Config": {
"AccessKey": "<my access key>",
"Bucket": "<my bucket name>",
"EncryptionToken": "",
"Region": "any",
"SecretKey": "<my secret key>",
"TimeoutMs": 60000,
"URL": "http://localhost:9000",
"UsePathStyle": true,
"UseRegionInURL": false
},
"TaskWaitMs": 100,
"Version": 1
}
```
---
## 🌐 Remote Mounting
`repertory` allows local mounts to be shared with other computers on your network or over the internet. This option is referred to as **remote mounting**.
### Server Setup
The following steps must be performed on the mount you wish to share with other systems. Changes to configuration will not take effect while a mount is active, so it is recommended to unmount beforehand.
**Required steps:**
- Enable remote mount:
- **Sia**
``` shell
repertory -set RemoteMount.Enable true
repertory --name '<my config name>' -set RemoteMount.Enable true
```
- **S3**
``` shell
repertory -set RemoteMount.Enable true
repertory -s3 --name '<my config name>' -set RemoteMount.Enable true
```
- Set a secure encryption token:
- **Sia**
``` shell
repertory -set RemoteMount.EncryptionToken '<my secure password>'
repertory --name '<my config name>' -set RemoteMount.EncryptionToken '<my secure password>'
```
- **S3**
``` shell
repertory -s3 --name '<my config name>' -set RemoteMount.EncryptionToken '<my secure password>'
```
**Optional steps:**
- Change the port clients will use to connect to your mount:
- **Sia**
``` shell
repertory -set RemoteMount.ApiPort 20000
repertory --name '<my config name>' -set RemoteMount.ApiPort 20000
```
- **S3**
``` shell
repertory -s3 --name '<my config name>' -set RemoteMount.ApiPort 20000
```
**IMPORTANT:**
Be sure to configure your firewall to allow incoming TCP connections on the port configured in `RemoteMount.ApiPort`.
#### Remote Mount Configuration File Section
```json
{
"RemoteMount": {
"ApiPort": 20000,
"ClientPoolSize": 20,
"Enable": true,
"EncryptionToken": "<my secure password>"
}
}
```
### Client Setup
Client configuration is provider agnostic, so there's no need to specify `-s3` for S3 providers.
**Required steps:**
- Set the encryption token to the same value configured during server setup:
``` shell
repertory -rm <host name or IP>:<port> -set RemoteConfig.EncryptionToken '<my secure password>'
# Replace <host name or IP> with the host name or IP of the server
# Replace <port> with the value of RemoteMount.ApiPort used in the server configuration
# Example:
repertory -rm 192.168.1.10:20000 -set RemoteConfig.EncryptionToken '<my secure password>'
repertory -rm my.host.com:20000 -set RemoteConfig.EncryptionToken '<my secure password>'
```
#### Client Remote Mounting
<!-- markdownlint-disable-next-line -->
##### Linux
``` shell
repertory -rm <host name or IP>:<port> /mnt/location
# Example:
repertory -rm 192.168.1.10:20000 /mnt/location
```
<!-- markdownlint-disable-next-line -->
##### macOS
``` shell
repertory -rm <host name or IP>:<port> /Volumes/remotemount
# Example:
repertory -rm 192.168.1.10:20000 /Volumes/remotemount
```
<!-- markdownlint-disable-next-line -->
##### Windows
``` shell
repertory -rm <host name or IP>:<port> t:
# Example:
repertory -rm 192.168.1.10:20000 t:
```
#### Remote Mount Configuration File
```json
{
"ApiPassword": "<random generated rpc password>",
"ApiPort": 10010,
"ApiUser": "repertory",
"EnableDriveEvents": false,
"EventLevel": "info",
"RemoteConfig": {
"ApiPort": 20000,
"EncryptionToken": "<my secure password>",
"HostNameOrIp": "192.168.1.10",
"MaxConnections": 20,
"ReceiveTimeoutMs": 120000,
"SendTimeoutMs": 30000
},
"TaskWaitMs": 100,
"Version": 1
}
```
---
## 🧰 Compiling
Successful compilation will place all required files for execution in the `dist/` directory.
### Linux Compilation
- Ensure `docker` is installed
- For `x86_64`:
``` shell
scripts/make_unix.sh x86_64
scripts/make_unix.sh x86_64 Release
scripts/make_unix.sh x86_64 Debug
```
- For `aarch64`:
``` shell
scripts/make_unix.sh aarch64
scripts/make_unix.sh aarch64 Release
scripts/make_unix.sh aarch64 Debug
```
### macOS Compilation
- Ensure `Xcode` and `CMake` are installed
- For `x86_64`:
``` shell
scripts/make_unix.sh x86_64
scripts/make_unix.sh x86_64 Release
scripts/make_unix.sh x86_64 Debug
```
- For `aarch64`:
``` shell
scripts/make_unix.sh aarch64
scripts/make_unix.sh aarch64 Release
scripts/make_unix.sh aarch64 Debug
```
### Windows Compilation
- **OFFICIAL: Cross-compiling on Linux**
- Ensure `docker` is installed
``` shell
scripts/make_win32.sh x86_64
scripts/make_win32.sh x86_64 Release
scripts/make_win32.sh x86_64 Debug
```
- **UNOFFICIAL: Compiling on Windows**
- Ensure latest [MSYS2](https://www.msys2.org/) is installed
``` cmd
scripts\make_win32.cmd x86_64
scripts\make_win32.cmd x86_64 Release
scripts\make_win32.cmd x86_64 Debug
```
---
## 📜 Credits
- [binutils](https://www.gnu.org/software/binutils/)
- [boost c++ libraries](https://www.boost.org/)
- [cpp-httplib](https://github.com/yhirose/cpp-httplib)
- [curl](https://curl.haxx.se/)
- [docker](https://www.docker.com/)
- [Google Test](https://github.com/google/googletest)
- [ICU](https://icu.unicode.org/)
- [JSON for Modern C++](https://github.com/nlohmann/json)
- [libexpat](https://github.com/libexpat/libexpat)
- [libfuse](https://github.com/libfuse/libfuse)
- [libsodium](https://doc.libsodium.org/)
- [macFUSE](https://macfuse.github.io/)
- [mingw-w64](https://www.mingw-w64.org/)
- [MSYS2](https://www.msys2.org)
- [OpenSSL](https://www.openssl.org/)
- [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/)
- [pugixml](https://pugixml.org/)
- [RocksDB](https://rocksdb.org)
- [ScPrime](https://scpri.me/)
- [Sia Decentralized Cloud Storage](https://sia.tech/)
- [spdlog](https://github.com/gabime/spdlog)
- [SQLite](https://www.sqlite.org)
- [stduuid](https://github.com/mariusbancila/stduuid)
- [Storj](https://www.storj.io/)
- [WinFSP - FUSE for Windows](https://github.com/billziss-gh/winfsp)
- [zlib](https://zlib.net/)
---
## 🔑 Developer Public Key
```text ```text
-----BEGIN PUBLIC KEY----- -----BEGIN PUBLIC KEY-----

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

Binary file not shown.

View File

@@ -35,9 +35,13 @@ list(APPEND PROJECT_CXXFLAGS_LIST
-Wcast-align -Wcast-align
-Wconversion -Wconversion
-Wdouble-promotion -Wdouble-promotion
-Wduplicated-branches
-Wduplicated-cond
-Wextra -Wextra
-Wformat=2 -Wformat=2
-Wlogical-op
-Wmisleading-indentation -Wmisleading-indentation
-Wno-useless-cast
-Wnon-virtual-dtor -Wnon-virtual-dtor
-Wnull-dereference -Wnull-dereference
-Wold-style-cast -Wold-style-cast
@@ -48,19 +52,6 @@ list(APPEND PROJECT_CXXFLAGS_LIST
-Wunused -Wunused
) )
if (PROJECT_ENABLE_LIBBITCOIN_SYSTEM AND PROJECT_IS_DARWIN)
list(APPEND PROJECT_CXXFLAGS_LIST -Wno-enum-constexpr-conversion)
endif()
if (NOT PROJECT_IS_DARWIN)
list(APPEND PROJECT_CXXFLAGS_LIST
-Wduplicated-branches
-Wduplicated-cond
-Wlogical-op
-Wno-useless-cast
)
endif()
list(APPEND PROJECT_CFLAGS_LIST list(APPEND PROJECT_CFLAGS_LIST
${PROJECT_COMMON_FLAG_LIST} ${PROJECT_COMMON_FLAG_LIST}
-std=c${CMAKE_C_STANDARD} -std=c${CMAKE_C_STANDARD}
@@ -71,7 +62,7 @@ list(APPEND PROJECT_CXXFLAGS_LIST
-std=gnu++${CMAKE_CXX_STANDARD} -std=gnu++${CMAKE_CXX_STANDARD}
) )
if(NOT PROJECT_IS_DARWIN AND PROJECT_STATIC_LINK) if(PROJECT_STATIC_LINK)
list(APPEND PROJECT_CMAKE_EXE_LINKER_FLAGS list(APPEND PROJECT_CMAKE_EXE_LINKER_FLAGS
-static-libgcc -static-libgcc
-static-libstdc++ -static-libstdc++
@@ -98,11 +89,7 @@ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${PROJECT_RELEASE_FLAG_L
set(CMAKE_EXE_LINKER_FLAGS "${PROJECT_CMAKE_EXE_LINKER_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "${PROJECT_CMAKE_EXE_LINKER_FLAGS}")
set(EXTERNAL_CMAKE_CXX_FLAGS "-include cstdint -include utility ${PROJECT_COMMON_FLAG_LIST}") set(EXTERNAL_CMAKE_CXX_FLAGS "-include cstdint -include utility -fext-numeric-literals ${PROJECT_COMMON_FLAG_LIST}")
if (NOT PROJECT_IS_DARWIN)
set(EXTERNAL_CMAKE_CXX_FLAGS "-fext-numeric-literals ${EXTERNAL_CMAKE_CXX_FLAGS}")
endif()
list(APPEND PROJECT_EXTERNAL_CMAKE_FLAGS list(APPEND PROJECT_EXTERNAL_CMAKE_FLAGS
-DCMAKE_BUILD_TYPE=${PROJECT_CMAKE_BUILD_TYPE} -DCMAKE_BUILD_TYPE=${PROJECT_CMAKE_BUILD_TYPE}
-DCMAKE_COLOR_MAKEFILE=${CMAKE_COLOR_MAKEFILE} -DCMAKE_COLOR_MAKEFILE=${CMAKE_COLOR_MAKEFILE}

View File

@@ -1,7 +1,3 @@
if (PROJECT_MACOS_ICNS_NAME)
set(PROJECT_MACOS_ICNS_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/assets/${PROJECT_MACOS_ICNS_NAME}")
endif()
function(set_common_target_options name) function(set_common_target_options name)
target_compile_definitions(${name} PUBLIC target_compile_definitions(${name} PUBLIC
${PROJECT_DEFINITIONS} ${PROJECT_DEFINITIONS}
@@ -16,17 +12,6 @@ function(set_common_target_options name)
${PROJECT_EXTERNAL_BUILD_ROOT}/lib ${PROJECT_EXTERNAL_BUILD_ROOT}/lib
) )
if (PROJECT_STATIC_LINK)
target_compile_definitions(${name} PRIVATE U_STATIC_IMPLEMENTATION)
endif()
target_link_libraries(${name} PRIVATE
ICU::io
ICU::i18n
ICU::uc
ICU::data
)
target_include_directories(${name} AFTER PUBLIC target_include_directories(${name} AFTER PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include
${name}_INCLUDES ${name}_INCLUDES
@@ -46,31 +31,11 @@ function(add_project_executable2 name dependencies libraries headers sources is_
list(APPEND sources ${PROJECT_WINDOWS_VERSION_RC}) list(APPEND sources ${PROJECT_WINDOWS_VERSION_RC})
endif() endif()
if (PROJECT_IS_DARWIN AND PROJECT_MACOS_ICNS_SOURCE AND "${name}" STREQUAL "${PROJECT_NAME}")
set_source_files_properties(${PROJECT_MACOS_ICNS_SOURCE} PROPERTIES
MACOSX_PACKAGE_LOCATION "Resources"
)
add_executable(${name}
MACOSX_BUNDLE
${headers}
${sources}
${PROJECT_MACOS_ICNS_SOURCE}
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/main.cpp
)
set_target_properties(${name} PROPERTIES
MACOSX_BUNDLE TRUE
MACOSX_BUNDLE_ICON_FILE "${PROJECT_MACOS_ICNS_NAME}"
RESOURCE "${PROJECT_MACOS_ICNS_SOURCE}"
)
else()
add_executable(${name} add_executable(${name}
${headers} ${headers}
${sources} ${sources}
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/main.cpp ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/main.cpp
) )
endif()
foreach(dependency ${dependencies}) foreach(dependency ${dependencies})
set_common_target_options(${dependency}) set_common_target_options(${dependency})

View File

@@ -1,22 +1,20 @@
set(BINUTILS_HASH ce2017e059d63e67ddb9240e9d4ec49c2893605035cd60e92ad53177f4377237) set(BINUTILS_HASH ae9a5789e23459e59606e6714723f2d3ffc31c03174191ef0d015bdf06007450)
set(BOOST_HASH 2575e74ffc3ef1cd0babac2c1ee8bdb5782a0ee672b1912da40e5b4b591ca01f)
set(BOOST2_HASH 7bd7ddceec1a1dfdcbdb3e609b60d01739c38390a5f956385a12f3122049f0ca) set(BOOST2_HASH 7bd7ddceec1a1dfdcbdb3e609b60d01739c38390a5f956385a12f3122049f0ca)
set(BOOST_HASH 9de758db755e8330a01d995b0a24d09798048400ac25c03fc5ea9be364b13c93) set(CPP_HTTPLIB_HASH 405abd8170f2a446fc8612ac635d0db5947c0d2e156e32603403a4496255ff00)
set(CPP_HTTPLIB_HASH a66f908f50ccb119769adce44fe1eac75f81b6ffab7c4ac0211bb663ffeb2688) set(CURL_HASH 5a231145114589491fc52da118f9c7ef8abee885d1cb1ced99c7290e9a352f07)
set(CURL_HASH d4d9a5001b491f5726efe9b50bc4aad03029506e73c9261272e809c64b05e814) set(EXPAT_HASH 372b18f6527d162fa9658f1c74d22a37429b82d822f5a1e1fc7e00f6045a06a2)
set(EXPAT_HASH 85372797ff0673a8fc4a6be16466bb5a0ca28c0dcf3c6f7ac1686b4a3ba2aabb) set(GCC_HASH 7d376d445f93126dc545e2c0086d0f647c3094aae081cdb78f42ce2bc25e7293)
set(GCC_HASH 7294d65cc1a0558cb815af0ca8c7763d86f7a31199794ede3f630c0d1b0a5723) set(GTEST_HASH 7b42b4d6ed48810c5362c265a17faebe90dc2373c885e5216439d37927f02926)
set(GTEST_HASH 65fab701d9829d38cb77c14acdc431d2108bfdbf8979e40eb8ae567edf10b27c) set(ICU_HASH 925e6b4b8cf8856e0ac214f6f34e30dee63b7bb7a50460ab4603950eff48f89e)
set(ICU_HASH a2c443404f00098e9e90acf29dc318e049d2dc78d9ae5f46efb261934a730ce2) set(JSON_HASH 0d8ef5af7f9794e3263480193c491549b2ba6cc74bb018906202ada498a79406)
set(INNOSETUP_HASH fa73bf47a4da250d185d07561c2bfda387e5e20db77e4570004cf6a133cc10b1)
set(JSON_HASH 4b92eb0c06d10683f7447ce9406cb97cd4b453be18d7279320f7b2f025c10187)
set(LIBSODIUM_HASH 8e5aeca07a723a27bbecc3beef14b0068d37e7fc0e97f51b3f1c82d2a58005c1) set(LIBSODIUM_HASH 8e5aeca07a723a27bbecc3beef14b0068d37e7fc0e97f51b3f1c82d2a58005c1)
set(MINGW_HASH 5afe822af5c4edbf67daaf45eec61d538f49eef6b19524de64897c6b95828caf) set(MINGW_HASH 3f66bce069ee8bed7439a1a13da7cb91a5e67ea6170f21317ac7f5794625ee10)
set(OPENSSL_HASH b6a5f44b7eb69e3fa35dbf15524405b44837a481d43d81daddde3ff21fcbb8e9) set(OPENSSL_HASH e15dda82fe2fe8139dc2ac21a36d4ca01d5313c75f99f46c4e8a27709b7294bf)
set(PKG_CONFIG_HASH 6fc69c01688c9458a57eb9a1664c9aba372ccda420a02bf4429fe610e7e7d591) set(PKG_CONFIG_HASH 6fc69c01688c9458a57eb9a1664c9aba372ccda420a02bf4429fe610e7e7d591)
set(PUGIXML_HASH 655ade57fa703fb421c2eb9a0113b5064bddb145d415dd1f88c79353d90d511a) set(PUGIXML_HASH 2f10e276870c64b1db6809050a75e11a897a8d7456c4be5c6b2e35a11168a015)
set(ROCKSDB_HASH 7ec942baab802b2845188d02bc5d4e42c29236e61bcbc08f5b3a6bdd92290c22) set(ROCKSDB_HASH 9b810c81731835fda0d4bbdb51d3199d901fa4395733ab63752d297da84c5a47)
set(SPDLOG_HASH 15a04e69c222eb6c01094b5c7ff8a249b36bb22788d72519646fb85feb267e67) set(SPDLOG_HASH 9962648c9b4f1a7bbc76fd8d9172555bad1871fdb14ff4f842ef87949682caa5)
set(SQLITE_HASH 1d3049dd0f830a025a53105fc79fd2ab9431aea99e137809d064d8ee8356b032) set(SQLITE_HASH 77823cb110929c2bcb0f5d48e4833b5c59a8a6e40cdea3936b99e199dbbe5784)
set(STDUUID_HASH b1176597e789531c38481acbbed2a6894ad419aab0979c10410d59eb0ebf40d3) set(STDUUID_HASH b1176597e789531c38481acbbed2a6894ad419aab0979c10410d59eb0ebf40d3)
set(WINFSP_HASH 073a70e00f77423e34bed98b86e600def93393ba5822204fac57a29324db9f7a)
set(ZLIB_HASH 17e88863f3600672ab49182f217281b6fc4d3c762bde361935e436a95214d05c) set(ZLIB_HASH 17e88863f3600672ab49182f217281b6fc4d3c762bde361935e436a95214d05c)

View File

@@ -4,17 +4,13 @@ set(Boost_USE_STATIC_LIBS ${PROJECT_STATIC_LINK})
set(CURL_USE_STATIC_LIBS ${PROJECT_STATIC_LINK}) set(CURL_USE_STATIC_LIBS ${PROJECT_STATIC_LINK})
set(OPENSSL_USE_STATIC_LIBS ${PROJECT_STATIC_LINK}) set(OPENSSL_USE_STATIC_LIBS ${PROJECT_STATIC_LINK})
set(SFML_STATIC_LIBRARIES ${PROJECT_STATIC_LINK}) set(SFML_STATIC_LIBRARIES ${PROJECT_STATIC_LINK})
if (PROJECT_IS_DARWIN)
set(ZLIB_USE_STATIC_LIBS OFF)
else()
set(ZLIB_USE_STATIC_LIBS ${PROJECT_STATIC_LINK}) set(ZLIB_USE_STATIC_LIBS ${PROJECT_STATIC_LINK})
endif()
set(wxWidgets_USE_STATIC ${PROJECT_STATIC_LINK}) set(wxWidgets_USE_STATIC ${PROJECT_STATIC_LINK})
set(ICU_USE_STATIC_LIBS ${PROJECT_STATIC_LINK})
include(cmake/libraries/icu.cmake)
include(cmake/libraries/openssl.cmake) include(cmake/libraries/openssl.cmake)
include(cmake/libraries/boost.cmake) include(cmake/libraries/boost.cmake)
include(cmake/libraries/cpp_httplib.cmake) include(cmake/libraries/cpp_httplib.cmake)
include(cmake/libraries/curl.cmake) include(cmake/libraries/curl.cmake)
include(cmake/libraries/fuse.cmake) include(cmake/libraries/fuse.cmake)
@@ -63,7 +59,7 @@ if(PROJECT_BUILD)
winspool winspool
ws2_32 ws2_32
) )
elseif(NOT PROJECT_IS_DARWIN) else()
link_libraries( link_libraries(
uring uring
) )

View File

@@ -39,14 +39,6 @@ if(PROJECT_ENABLE_BOOST)
wserialization wserialization
) )
else() else()
if(PROJECT_IS_DARWIN)
set(CMAKE_HAVE_THREADS_LIBRARY 1)
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
set(CMAKE_USE_PTHREADS_INIT 1)
set(CMAKE_USE_WIN32_THREADS_INIT 0)
set(THREADS_PREFER_PTHREAD_FLAG ON)
endif()
find_package(Boost ${BOOST_MAJOR_VERSION}.${BOOST_MINOR_VERSION}.${BOOST_PATCH_VERSION} find_package(Boost ${BOOST_MAJOR_VERSION}.${BOOST_MINOR_VERSION}.${BOOST_PATCH_VERSION}
REQUIRED REQUIRED
COMPONENTS COMPONENTS
@@ -62,6 +54,7 @@ if(PROJECT_ENABLE_BOOST)
random random
regex regex
serialization serialization
system
thread thread
wserialization wserialization
) )
@@ -94,28 +87,29 @@ if(PROJECT_ENABLE_BOOST)
set(BOOST_LINK "static,shared") set(BOOST_LINK "static,shared")
endif() endif()
if(PROJECT_ENABLE_LIBBITCOIN_SYSTEM)
set(BOOST_CXX_STANDARD 14)
set(BOOST_OPTIONS cxxflags=-Wno-enum-constexpr-conversion)
else()
set(BOOST_CXX_STANDARD ${CMAKE_CXX_STANDARD})
set(BOOST_OPTIONS define=BOOST_ASIO_HAS_STD_STRING_VIEW)
endif()
set(BOOST_BUILD_ARGS set(BOOST_BUILD_ARGS
--openssldir=$ENV{OPENSSL_ROOT_DIR} --openssldir=$ENV{OPENSSL_ROOT_DIR}
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT} --prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
address-model=64 address-model=64
architecture=${BOOST_ARCH} architecture=${BOOST_ARCH}
cxxstd=20
cxxstd-dialect=gnu cxxstd-dialect=gnu
cxxstd=${BOOST_CXX_STANDARD} cxxflags=-std=gnu++${CMAKE_CXX_STANDARD}
cxxstd=${CMAKE_CXX_STANDARD}
define=BOOST_ASIO_HAS_STD_STRING_VIEW
define=BOOST_SYSTEM_NO_DEPRECATED define=BOOST_SYSTEM_NO_DEPRECATED
link=${BOOST_LINK} link=${BOOST_LINK}
linkflags=-std=gnu++${CMAKE_CXX_STANDARD}
threading=multi threading=multi
variant=${BOOST_BUILD_TYPE_LOWER} variant=${BOOST_BUILD_TYPE_LOWER}
${BOOST_OPTIONS}
) )
if(PROJECT_ENABLE_LIBBITCOIN_SYSTEM)
set(BOOST_URL_HASH SHA256=${BOOST2_HASH})
else()
set(BOOST_URL_HASH SHA256=${BOOST_HASH})
endif()
ExternalProject_Add(boost_project ExternalProject_Add(boost_project
PREFIX external PREFIX external
URL ${PROJECT_3RD_PARTY_DIR}/boost_${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}_${BOOST_PATCH_VERSION}.tar.gz URL ${PROJECT_3RD_PARTY_DIR}/boost_${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}_${BOOST_PATCH_VERSION}.tar.gz
@@ -126,23 +120,17 @@ if(PROJECT_ENABLE_BOOST)
--with-libraries=atomic,chrono,date_time,filesystem,iostreams,locale,log,program_options,random,regex,serialization,system,test,thread --with-libraries=atomic,chrono,date_time,filesystem,iostreams,locale,log,program_options,random,regex,serialization,system,test,thread
BUILD_COMMAND BUILD_COMMAND
./b2 ./b2
-sNO_BZIP2=1 -j1
-j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}
${BOOST_BUILD_ARGS} ${BOOST_BUILD_ARGS}
INSTALL_COMMAND INSTALL_COMMAND
./b2 ./b2
-sNO_BZIP2=1 -j1
-j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}
${BOOST_BUILD_ARGS} ${BOOST_BUILD_ARGS}
install install
) )
list(APPEND PROJECT_DEPENDENCIES boost_project) list(APPEND PROJECT_DEPENDENCIES boost_project)
if(PROJECT_IS_DARWIN OR PROJECT_REQUIRE_ALPINE)
add_dependencies(boost_project icu_project)
endif()
if (NOT CMAKE_HOST_WIN32) if (NOT CMAKE_HOST_WIN32)
add_dependencies(boost_project openssl_project) add_dependencies(boost_project openssl_project)
endif() endif()

View File

@@ -15,14 +15,10 @@ if(PROJECT_ENABLE_CPP_HTTPLIB)
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS} CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS} -DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
-DBUILD_STATIC_LIBS=ON -DBUILD_STATIC_LIBS=ON
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} -DHTTPLIB_REQUIRE_OPENSSL=${PROJECT_ENABLE_OPENSSL}
-DHTTPLIB_REQUIRE_BROTLI=OFF
-DHTTPLIB_REQUIRE_OPENSSL=ON
-DHTTPLIB_REQUIRE_ZLIB=ON -DHTTPLIB_REQUIRE_ZLIB=ON
-DHTTPLIB_REQUIRE_BROTLI=OFF
-DHTTPLIB_TEST=OFF -DHTTPLIB_TEST=OFF
-DHTTPLIB_USE_BROTLI_IF_AVAILABLE=OFF
-DHTTPLIB_USE_OPENSSL_IF_AVAILABLE=ON
-DHTTPLIB_USE_ZLIB_IF_AVAILABLE=ON
-DOPENSSL_USE_STATIC_LIBS=${OPENSSL_USE_STATIC_LIBS} -DOPENSSL_USE_STATIC_LIBS=${OPENSSL_USE_STATIC_LIBS}
) )

View File

@@ -18,18 +18,14 @@ if(PROJECT_ENABLE_CURL)
URL ${PROJECT_3RD_PARTY_DIR}/curl-${CURL_VERSION}.tar.gz URL ${PROJECT_3RD_PARTY_DIR}/curl-${CURL_VERSION}.tar.gz
URL_HASH SHA256=${CURL_HASH} URL_HASH SHA256=${CURL_HASH}
LIST_SEPARATOR | LIST_SEPARATOR |
BUILD_COMMAND CMAKE_ARGS
${CMAKE_COMMAND} --build . -- -j$ENV{CMAKE_BUILD_PARALLEL_LEVEL} ${PROJECT_EXTERNAL_CMAKE_FLAGS}
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
-DBUILD_CURL_EXE=OFF
-DBUILD_LIBCURL_DOCS=OFF
-DBUILD_MISC_DOCS=OFF
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS} -DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
-DBUILD_STATIC_LIBS=ON
-DBUILD_CURL_EXE=OFF
-DBUILD_STATIC_CURL=ON -DBUILD_STATIC_CURL=ON
-DBUILD_STATIC_LIBS=ON -DBUILD_STATIC_LIBS=ON
-DBUILD_TESTING=OFF -DBUILD_TESTING=OFF
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
-DCURL_BROTLI=OFF
-DCURL_CA_BUNDLE=./cacert.pem -DCURL_CA_BUNDLE=./cacert.pem
-DCURL_CA_FALLBACK=ON -DCURL_CA_FALLBACK=ON
-DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAP=ON
@@ -37,13 +33,10 @@ if(PROJECT_ENABLE_CURL)
-DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH2=OFF
-DCURL_USE_OPENSSL=${PROJECT_ENABLE_OPENSSL} -DCURL_USE_OPENSSL=${PROJECT_ENABLE_OPENSSL}
-DCURL_ZLIB=ON -DCURL_ZLIB=ON
-DCURL_ZSTD=OFF
-DENABLE_CURL_MANUAL=OFF
-DENABLE_THREADED_RESOLVER=ON -DENABLE_THREADED_RESOLVER=ON
-DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR} -DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR}
-DOPENSSL_USE_STATIC_LIBS=${OPENSSL_USE_STATIC_LIBS} -DOPENSSL_USE_STATIC_LIBS=${OPENSSL_USE_STATIC_LIBS}
-DUSE_LIBIDN2=OFF -DUSE_LIBIDN2=OFF
-DUSE_NGHTTP2=OFF
-DZLIB_USE_STATIC_LIBS=${ZLIB_USE_STATIC_LIBS} -DZLIB_USE_STATIC_LIBS=${ZLIB_USE_STATIC_LIBS}
) )

View File

@@ -19,13 +19,6 @@ if(PROJECT_ENABLE_FUSE AND NOT PROJECT_IS_MINGW)
link_libraries(fuse) link_libraries(fuse)
endif() endif()
endif() endif()
else()
if (PROJECT_IS_DARWIN)
find_library(OSXFUSE NO_CACHE NAMES MACFUSE OSXFUSE)
if (NOT OSXFUSE)
message(FATAL_ERROR "FUSE for macOS not found (https://macfuse.github.io)")
endif ()
set(PROJECT_FUSE fuse2)
else() else()
pkg_check_modules(LIBFUSE3 fuse3>=3.0.0) pkg_check_modules(LIBFUSE3 fuse3>=3.0.0)
if(LIBFUSE3_FOUND) if(LIBFUSE3_FOUND)
@@ -42,4 +35,3 @@ if(PROJECT_ENABLE_FUSE AND NOT PROJECT_IS_MINGW)
endif() endif()
endif() endif()
endif() endif()
endif()

View File

@@ -1,24 +0,0 @@
if((PROJECT_IS_DARWIN OR PROJECT_REQUIRE_ALPINE) AND NOT PROJECT_IS_MINGW AND NOT PROJECT_BUILD)
if(PROJECT_BUILD_SHARED_LIBS)
set(ICU_ENABLE_SHARED yes)
else()
set(ICU_ENABLE_SHARED no)
endif()
ExternalProject_Add(icu_project
PREFIX external
URL ${PROJECT_3RD_PARTY_DIR}/mingw64/icu-release-${ICU_VERSION}.tar.gz
URL_HASH SHA256=${ICU_HASH}
BUILD_IN_SOURCE 1
LIST_SEPARATOR |
PATCH_COMMAND chmod +x ${PROJECT_3RD_PARTY_DIR}/icu_configure.sh
CONFIGURE_COMMAND cd icu4c/source && ${PROJECT_3RD_PARTY_DIR}/icu_configure.sh
${PROJECT_MARCH}
${PROJECT_EXTERNAL_BUILD_ROOT}
${ICU_ENABLE_SHARED}
BUILD_COMMAND cd icu4c/source && make -j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}
INSTALL_COMMAND cd icu4c/source && make install
)
list(APPEND PROJECT_DEPENDENCIES icu_project)
endif()

View File

@@ -18,7 +18,6 @@ if(PROJECT_ENABLE_JSON)
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS} CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS} -DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
-DBUILD_STATIC_LIBS=ON -DBUILD_STATIC_LIBS=ON
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
-DJSON_BuildTests=OFF -DJSON_BuildTests=OFF
-DJSON_Install=ON -DJSON_Install=ON
-DJSON_MultipleHeaders=OFF -DJSON_MultipleHeaders=OFF

View File

@@ -15,12 +15,6 @@ if(PROJECT_ENABLE_OPENSSL)
elseif(NOT PROJECT_IS_MINGW) elseif(NOT PROJECT_IS_MINGW)
if(PROJECT_IS_MINGW) if(PROJECT_IS_MINGW)
set(OPENSSL_COMPILE_TYPE mingw64) set(OPENSSL_COMPILE_TYPE mingw64)
elseif(PROJECT_IS_DARWIN)
if(PROJECT_IS_ARM64)
set(OPENSSL_COMPILE_TYPE darwin64-arm64)
else()
set(OPENSSL_COMPILE_TYPE darwin64-x86_64)
endif()
elseif(PROJECT_IS_ARM64) elseif(PROJECT_IS_ARM64)
set(OPENSSL_COMPILE_TYPE linux-aarch64) set(OPENSSL_COMPILE_TYPE linux-aarch64)
else() else()

View File

@@ -20,7 +20,6 @@ if(PROJECT_ENABLE_PUGIXML)
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS} CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS} -DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
-DBUILD_STATIC_LIBS=ON -DBUILD_STATIC_LIBS=ON
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
) )
list(APPEND PROJECT_DEPENDENCIES pugixml_project) list(APPEND PROJECT_DEPENDENCIES pugixml_project)

View File

@@ -1,7 +1,9 @@
if(PROJECT_ENABLE_ROCKSDB) if(PROJECT_ENABLE_ROCKSDB)
if(PROJECT_BUILD) if(PROJECT_BUILD)
add_definitions(-DPROJECT_ENABLE_ROCKSDB) add_definitions(-DPROJECT_ENABLE_ROCKSDB)
find_library(ROCKSDB_LIBRARY NAMES librocksdb.a REQUIRED) find_library(ROCKSDB_LIBRARY NAMES librocksdb.a REQUIRED)
link_libraries(${ROCKSDB_LIBRARY}) link_libraries(${ROCKSDB_LIBRARY})
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32) elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
ExternalProject_Add(rocksdb_project ExternalProject_Add(rocksdb_project
@@ -9,19 +11,15 @@ if(PROJECT_ENABLE_ROCKSDB)
URL ${PROJECT_3RD_PARTY_DIR}/rocksdb-${ROCKSDB_VERSION}.tar.gz URL ${PROJECT_3RD_PARTY_DIR}/rocksdb-${ROCKSDB_VERSION}.tar.gz
URL_HASH SHA256=${ROCKSDB_HASH} URL_HASH SHA256=${ROCKSDB_HASH}
LIST_SEPARATOR | LIST_SEPARATOR |
BUILD_COMMAND
${CMAKE_COMMAND} --build . -- -j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS} CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
-DBUILD_SHARED_LIBS=OFF -DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
-DBUILD_STATIC_LIBS=ON -DBUILD_STATIC_LIBS=ON
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
-DFAIL_ON_WARNINGS=OFF -DFAIL_ON_WARNINGS=OFF
-DPORTABLE=1 -DPORTABLE=1
-DROCKSDB_BUILD_SHARED=OFF -DROCKSDB_BUILD_SHARED=${PROJECT_BUILD_SHARED_LIBS}
-DROCKSDB_INSTALL_ON_WINDOWS=ON -DROCKSDB_INSTALL_ON_WINDOWS=ON
-DWITH_BENCHMARK=OFF -DWITH_BENCHMARK=OFF
-DWITH_BENCHMARK_TOOLS=OFF -DWITH_BENCHMARK_TOOLS=OFF
-DWITH_BZ2=OFF
-DWITH_CORE_TOOLS=OFF -DWITH_CORE_TOOLS=OFF
-DWITH_EXAMPLES=OFF -DWITH_EXAMPLES=OFF
-DWITH_GFLAGS=OFF -DWITH_GFLAGS=OFF

View File

@@ -15,7 +15,6 @@ if(PROJECT_ENABLE_SPDLOG)
LIST_SEPARATOR | LIST_SEPARATOR |
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS} CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS} -DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
-DSPDLOG_BUILD_EXAMPLE=OFF -DSPDLOG_BUILD_EXAMPLE=OFF
-DSPDLOG_FMT_EXTERNAL=OFF -DSPDLOG_FMT_EXTERNAL=OFF
-DSPDLOG_FMT_EXTERNAL_HO=OFF -DSPDLOG_FMT_EXTERNAL_HO=OFF

View File

@@ -2,7 +2,7 @@ if(PROJECT_ENABLE_SQLITE)
if(PROJECT_BUILD) if(PROJECT_BUILD)
add_definitions(-DPROJECT_ENABLE_SQLITE) add_definitions(-DPROJECT_ENABLE_SQLITE)
if (PROJECT_IS_MINGW AND NOT PROJECT_IS_MINGW_UNIX) if (PROJECT_IS_MINGW AND NOT PROJECT_IS_MINGW_UNIX)
pkg_check_modules(SQLITE3 REQUIRED sqlite3) pkg_check_modules(SQLITE3 REQUIRED sqlite3>=${SQLITE2_VERSION})
include_directories(SYSTEM BEFORE ${SQLITE3_INCLUDE_DIRS}) include_directories(SYSTEM BEFORE ${SQLITE3_INCLUDE_DIRS})
link_libraries(${SQLITE3_LIBRARIES}) link_libraries(${SQLITE3_LIBRARIES})
else() else()

View File

@@ -16,7 +16,6 @@ if(PROJECT_ENABLE_STDUUID)
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS} CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS} -DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
-DBUILD_STATIC_LIBS=ON -DBUILD_STATIC_LIBS=ON
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
-DUUID_BUILD_TESTS=OFF -DUUID_BUILD_TESTS=OFF
-DUUID_ENABLE_INSTALL=ON -DUUID_ENABLE_INSTALL=ON
-DUUID_USING_CXX20_SPAN=ON -DUUID_USING_CXX20_SPAN=ON

View File

@@ -10,7 +10,6 @@ if (PROJECT_ENABLE_TESTING)
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS} CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS} -DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
-DBUILD_STATIC_LIBS=ON -DBUILD_STATIC_LIBS=ON
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
) )
list(APPEND PROJECT_DEPENDENCIES gtest_project) list(APPEND PROJECT_DEPENDENCIES gtest_project)

View File

@@ -2,9 +2,9 @@ if(PROJECT_ENABLE_WINFSP AND PROJECT_IS_MINGW)
if(PROJECT_BUILD) if(PROJECT_BUILD)
add_definitions(-DPROJECT_ENABLE_WINFSP) add_definitions(-DPROJECT_ENABLE_WINFSP)
include_directories(BEFORE SYSTEM ${PROJECT_3RD_PARTY_DIR}/winfsp-2.1/inc) include_directories(BEFORE SYSTEM ${PROJECT_3RD_PARTY_DIR}/winfsp-2.0/inc)
link_directories(BEFORE ${PROJECT_3RD_PARTY_DIR}/winfsp-2.1/lib) link_directories(BEFORE ${PROJECT_3RD_PARTY_DIR}/winfsp-2.0/lib)
if(PROJECT_IS_ARM64) if(PROJECT_IS_ARM64)
link_libraries(winfsp-a64) link_libraries(winfsp-a64)

View File

@@ -2,6 +2,10 @@ if(MSVC)
message(FATAL_ERROR "MSVC will not be supported") message(FATAL_ERROR "MSVC will not be supported")
endif() endif()
if(UNIX AND APPLE)
message(FATAL_ERROR "Apple is not currently supported")
endif()
if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
message(FATAL_ERROR "FreeBSD is not currently supported") message(FATAL_ERROR "FreeBSD is not currently supported")
endif() endif()
@@ -9,15 +13,3 @@ endif()
if(PROJECT_REQUIRE_ALPINE AND NOT PROJECT_IS_ALPINE AND PROJECT_IS_MINGW AND PROJECT_IS_MINGW_UNIX) if(PROJECT_REQUIRE_ALPINE AND NOT PROJECT_IS_ALPINE AND PROJECT_IS_MINGW AND PROJECT_IS_MINGW_UNIX)
message(FATAL_ERROR "Project requires Alpine Linux to build") message(FATAL_ERROR "Project requires Alpine Linux to build")
endif() endif()
if (PROJECT_IS_DARWIN)
if (PROJECT_IS_ARM64)
set(CMAKE_OSX_ARCHITECTURES "arm64")
else()
set(CMAKE_OSX_ARCHITECTURES "x86_64")
endif()
endif()
if (PROJECT_IS_DARWIN AND NOT PROJECT_MACOS_BUNDLE_ID)
message(FATAL_ERROR "'PROJECT_MACOS_BUNDLE_ID' is not set in 'config.sh'")
endif()

View File

@@ -4,7 +4,7 @@ set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

View File

@@ -1,30 +1,28 @@
set(BINUTILS_VERSION 2.44) set(BINUTILS_VERSION 2.41)
set(BOOST_MAJOR_VERSION 1)
set(BOOST_MINOR_VERSION 86)
set(BOOST_PATCH_VERSION 0)
set(BOOST2_MAJOR_VERSION 1) set(BOOST2_MAJOR_VERSION 1)
set(BOOST2_MINOR_VERSION 76) set(BOOST2_MINOR_VERSION 76)
set(BOOST2_PATCH_VERSION 0) set(BOOST2_PATCH_VERSION 0)
set(BOOST_MAJOR_VERSION 1) set(CPP_HTTPLIB_VERSION 0.18.1)
set(BOOST_MINOR_VERSION 89) set(CURL_VERSION 8.11.0)
set(BOOST_PATCH_VERSION 0) set(CURL2_VERSION 8_11_0)
set(CPP_HTTPLIB_VERSION 0.26.0) set(EXPAT_VERSION 2.6.4)
set(CURL2_VERSION 8_16_0) set(EXPAT2_VERSION 2_6_4)
set(CURL_VERSION 8.16.0) set(GCC_VERSION 14.2.0)
set(EXPAT2_VERSION 2_7_1) set(GTEST_VERSION 1.15.2)
set(EXPAT_VERSION 2.7.1) set(ICU_VERSION 75-1)
set(GCC_VERSION 15.2.0) set(JSON_VERSION 3.11.3)
set(GTEST_VERSION 1.17.0)
set(ICU_VERSION 76-1)
set(INNOSETUP_VERSION 6.5.4)
set(JSON_VERSION 3.12.0)
set(LIBSODIUM_VERSION 1.0.20) set(LIBSODIUM_VERSION 1.0.20)
set(MINGW_VERSION 13.0.0) set(MESA_VERSION 23.3.3)
set(OPENSSL_VERSION 3.6.0) set(MINGW_VERSION 11.0.1)
set(OPENSSL_VERSION 3.4.0)
set(PKG_CONFIG_VERSION 0.29.2) set(PKG_CONFIG_VERSION 0.29.2)
set(PUGIXML_VERSION 1.15) set(PUGIXML_VERSION 1.14)
set(ROCKSDB_VERSION 10.5.1) set(ROCKSDB_VERSION 9.7.4)
set(SPDLOG_VERSION 1.15.3) set(SPDLOG_VERSION 1.15.0)
set(SQLITE2_VERSION 3.50.4) set(SQLITE_VERSION 3460100)
set(SQLITE_VERSION 3500400) set(SQLITE2_VERSION 3.46.1)
set(STDUUID_VERSION 1.2.3) set(STDUUID_VERSION 1.2.3)
set(WINFSP2_VERSION 2.1)
set(WINFSP_VERSION 2.1.25156)
set(ZLIB_VERSION 1.3.1) set(ZLIB_VERSION 1.3.1)

View File

@@ -5,26 +5,20 @@ PROJECT_NAME="repertory"
PROJECT_COMPANY_NAME="https://git.fifthgrid.com/blockstorage" PROJECT_COMPANY_NAME="https://git.fifthgrid.com/blockstorage"
PROJECT_URL="${PROJECT_COMPANY_NAME}/repertory" PROJECT_URL="${PROJECT_COMPANY_NAME}/repertory"
PROJECT_COPYRIGHT="Copyright <2018-2025> <MIT License> <${PROJECT_URL}>" PROJECT_COPYRIGHT="Copyright <2018-2024> <MIT License> <${PROJECT_URL}>"
PROJECT_DESC="Mount utility for Sia and S3" PROJECT_DESC="Mount utility for Sia and S3"
PROJECT_MACOS_BUNDLE_ID="com.fifthgrid.blockstorage.repertory"
PROJECT_MACOS_ICNS_NAME="icon.icns"
PROJECT_MAJOR_VERSION=2 PROJECT_MAJOR_VERSION=2
PROJECT_MINOR_VERSION=1 PROJECT_MINOR_VERSION=0
PROJECT_REVISION_VERSION=0 PROJECT_REVISION_VERSION=2
PROJECT_RELEASE_NUM=1 PROJECT_RELEASE_NUM=0
PROJECT_RELEASE_ITER=rc.2 PROJECT_RELEASE_ITER=rc
PROJECT_APP_LIST=(${PROJECT_NAME}) PROJECT_APP_LIST=(${PROJECT_NAME})
PROJECT_PRIVATE_KEY=${DEVELOPER_PRIVATE_KEY} PROJECT_PRIVATE_KEY=${DEVELOPER_PRIVATE_KEY}
PROJECT_PUBLIC_KEY=${DEVELOPER_PUBLIC_KEY} PROJECT_PUBLIC_KEY=${DEVELOPER_PUBLIC_KEY}
PROJECT_FLUTTER_BASE_HREF="/ui/"
PROJECT_ENABLE_V2_ERRORS=ON
PROJECT_ENABLE_WIN32_LONG_PATH_NAMES=OFF PROJECT_ENABLE_WIN32_LONG_PATH_NAMES=OFF
PROJECT_ENABLE_BACKWARD_CPP=OFF PROJECT_ENABLE_BACKWARD_CPP=OFF

View File

@@ -1,12 +1,10 @@
#comment FROM arm64v8/alpine:3.20.3
FROM arm64v8/alpine:3.23
MAINTAINER Scott E. Graves <scott.e.graves@protonmail.com> MAINTAINER Scott E. Graves <scott.e.graves@protonmail.com>
CMD bash CMD bash
RUN apk update RUN apk update
RUN apk upgrade RUN apk upgrade
RUN apk add \ RUN apk add \
7zip \
autoconf \ autoconf \
automake \ automake \
bash \ bash \
@@ -32,7 +30,10 @@ RUN apk add \
gflags \ gflags \
gflags-dev \ gflags-dev \
git \ git \
git-lfs \ gtkmm3-dev \
icu-dev \
icu-libs \
icu-static \
libogg-dev \ libogg-dev \
libogg-static \ libogg-static \
libtool \ libtool \
@@ -68,6 +69,7 @@ RUN apk add \
tcl \ tcl \
tcl-dev \ tcl-dev \
texinfo \ texinfo \
vlc-dev \
wget \ wget \
xz \ xz \
xz-dev \ xz-dev \
@@ -80,6 +82,3 @@ RUN apk add \
zstd-libs \ zstd-libs \
zstd-static \ zstd-static \
xz-static xz-static
RUN ln -sf /usr/bin/aclocal-1.18 /usr/bin/aclocal-1.16
RUN ln -sf /usr/bin/automake-1.18 /usr/bin/automake-1.16

View File

@@ -1,12 +1,10 @@
#comment FROM alpine:3.20.3
FROM --platform=linux/amd64 alpine:3.23
MAINTAINER Scott E. Graves <scott.e.graves@protonmail.com> MAINTAINER Scott E. Graves <scott.e.graves@protonmail.com>
CMD bash CMD bash
RUN apk update RUN apk update
RUN apk upgrade RUN apk upgrade
RUN apk add \ RUN apk add \
7zip \
autoconf \ autoconf \
automake \ automake \
bash \ bash \
@@ -32,7 +30,9 @@ RUN apk add \
gflags \ gflags \
gflags-dev \ gflags-dev \
git \ git \
git-lfs \ icu-dev \
icu-libs \
icu-static \
libogg-dev \ libogg-dev \
libogg-static \ libogg-static \
libtool \ libtool \
@@ -80,6 +80,3 @@ RUN apk add \
zstd-libs \ zstd-libs \
zstd-static \ zstd-static \
xz-static xz-static
RUN ln -sf /usr/bin/aclocal-1.18 /usr/bin/aclocal-1.16
RUN ln -sf /usr/bin/automake-1.18 /usr/bin/automake-1.16

View File

@@ -1,48 +0,0 @@
#comment
FROM debian:latest
ARG UID=0
ARG GID=0
RUN apt-get update
RUN apt-get install -y \
bash \
curl \
fonts-droid-fallback \
gdb \
git \
lib32stdc++6-x32-cross \
libglu1-mesa \
libstdc++6 \
python3 \
unzip \
wget
RUN apt-get clean
RUN git clone https://github.com/flutter/flutter.git /flutter
RUN git config --system --add safe.directory /flutter
ENV PATH="/flutter/bin:/flutter/bin/cache/dart-sdk/bin:${PATH}"
RUN flutter doctor -v
RUN flutter channel master
RUN flutter upgrade
RUN flutter --disable-analytics
RUN flutter config --no-analytics
RUN flutter config --enable-web
RUN flutter config --no-cli-animations
RUN mkdir /nonexistent
RUN chown -R $UID:$GID /nonexistent
RUN mkdir /.config
RUN chown -R $UID:$GID /.config
RUN mkdir /.dart-tool
RUN chown -R $UID:$GID /.dart-tool
RUN mkdir /.pub-cache
RUN chown -R $UID:$GID /.pub-cache
RUN chown -R $UID:$GID /flutter

View File

@@ -1,26 +1,23 @@
#comment #comment
FROM --platform=linux/amd64 alpine:3.23 FROM alpine:3.20.3
RUN apk update RUN apk update
RUN apk upgrade RUN apk upgrade
RUN apk add \ RUN apk add \
7zip \
autoconf \ autoconf \
automake \ automake \
bash \ bash \
binutils \ binutils \
bison \ bison \
bzip2 \ bzip2 \
clang21-extra-tools \ clang17-extra-tools \
cmake \ cmake \
curl \
file \ file \
flex \ flex \
g++ \ g++ \
gcc \ gcc \
gettext \ gettext \
git \ git \
git-lfs \
gmp \ gmp \
gmp-dev \ gmp-dev \
gperf \ gperf \
@@ -45,7 +42,6 @@ RUN apk add \
ruby \ ruby \
texinfo \ texinfo \
unzip \ unzip \
xvfb \
wget \ wget \
wine \ wine \
xz \ xz \
@@ -64,10 +60,7 @@ ENV MY_MINGW_PREFIX=${MINGW_PREFIX}
ARG NUM_JOBS=2 ARG NUM_JOBS=2
ENV MY_NUM_JOBS=${NUM_JOBS} ENV MY_NUM_JOBS=${NUM_JOBS}
ARG C_STANDARD=11 ARG CXX_STANDARD=20
ENV MY_C_STANDARD=${C_STANDARD}
ARG CXX_STANDARD=23
ENV MY_CXX_STANDARD=${CXX_STANDARD} ENV MY_CXX_STANDARD=${CXX_STANDARD}
ARG TOOLCHAIN_FILE_CMAKE=/cmake_toolchain.cmake ARG TOOLCHAIN_FILE_CMAKE=/cmake_toolchain.cmake
@@ -108,39 +101,6 @@ RUN echo -e \
"system = 'windows'\n"\ "system = 'windows'\n"\
> ${MY_TOOLCHAIN_FILE_MESON} > ${MY_TOOLCHAIN_FILE_MESON}
RUN mkdir -p /opt/bin;echo -e \
"#!/bin/sh\n"\
"COUNT=0\n"\
"echo \"Start waiting on \$@\"\n"\
"while pgrep \"\$@\" > /dev/null; do \n"\
" echo \"waiting ...\"\n"\
" sleep 1;\n"\
" COUNT=\$((COUNT+1))\n"\
" if [ \$COUNT -eq 60 ]; then\n"\
" exit 3;\n"\
" fi\n"\
"done\n"\
"echo \"\$@ completed\"\n"\
> /opt/bin/waitonprocess && \
chmod +x /opt/bin/waitonprocess && \
cat /opt/bin/waitonprocess
RUN echo -e \
"#!/bin/sh\n"\
"Xvfb \$DISPLAY &\n"\
"tokill=\$!\n"\
"wine wineboot --init\n"\
"waitonprocess wineserver\n"\
"\"\$@\"\n"\
"retval=\$?\n"\
"kill -15 \$tokill\n"\
"wine wineboot --shutdown\n"\
"return \$retval\n"\
> /opt/bin/wine-x11-run && \
chmod +x /opt/bin/wine-x11-run && \
cat /opt/bin/wine-x11-run
ENV PATH="/opt/bin:${PATH}"
SHELL [ "/bin/bash", "-c" ] SHELL [ "/bin/bash", "-c" ]
RUN mkdir -p \ RUN mkdir -p \
@@ -263,7 +223,6 @@ RUN cd /3rd_party/mingw64 && sha256sum -c ./pkg-config-${MY_PKG_CONFIG_VERSION}.
&& tar xvzf /3rd_party/mingw64/pkg-config-${MY_PKG_CONFIG_VERSION}.tar.gz \ && tar xvzf /3rd_party/mingw64/pkg-config-${MY_PKG_CONFIG_VERSION}.tar.gz \
&& cd pkg-config-${MY_PKG_CONFIG_VERSION} \ && cd pkg-config-${MY_PKG_CONFIG_VERSION} \
&& ./configure \ && ./configure \
CFLAGS='-std=gnu11' \
--disable-nls \ --disable-nls \
--disable-shared \ --disable-shared \
--prefix=/usr/local \ --prefix=/usr/local \
@@ -278,7 +237,7 @@ RUN python3 -m pip install --break-system-packages -U mako
RUN python3 -m pip install --break-system-packages -U meson RUN python3 -m pip install --break-system-packages -U meson
RUN python3 -m pip install --break-system-packages -U packaging RUN python3 -m pip install --break-system-packages -U packaging
ENV CXXFLAGS="-std=gnu++${MY_CXX_STANDARD}" ENV CXXFLAGS="-std=gnu++20"
ENV LDFLAGS="-L${MY_MINGW_DIR}/lib -L${MY_MINGW_DIR}/lib64" ENV LDFLAGS="-L${MY_MINGW_DIR}/lib -L${MY_MINGW_DIR}/lib64"
ENV PATH="${MY_MINGW_DIR}/bin:/usr/local/bin:${PATH}" ENV PATH="${MY_MINGW_DIR}/bin:/usr/local/bin:${PATH}"
ENV PKG_CONFIG_PATH="${MY_MINGW_DIR}/lib/pkgconfig:${MY_MINGW_DIR}/lib64/pkgconfig" ENV PKG_CONFIG_PATH="${MY_MINGW_DIR}/lib/pkgconfig:${MY_MINGW_DIR}/lib64/pkgconfig"
@@ -391,9 +350,9 @@ RUN cd /3rd_party/mingw64 && sha256sum -c ./expat-${MY_EXPAT_VERSION}.tar.gz.sha
ARG FONTCONFIG_VERSION ARG FONTCONFIG_VERSION
ENV MY_FONTCONFIG_VERSION=${FONTCONFIG_VERSION} ENV MY_FONTCONFIG_VERSION=${FONTCONFIG_VERSION}
RUN if [ -f "/3rd_party/fontconfig-${MY_FONTCONFIG_VERSION}.tar.xz" ]; then \ RUN if [ -f "/3rd_party/fontconfig-${MY_FONTCONFIG_VERSION}.tar.gz" ]; then \
cd /3rd_party && sha256sum -c ./fontconfig-${MY_FONTCONFIG_VERSION}.tar.xz.sha256 && cd - \ cd /3rd_party && sha256sum -c ./fontconfig-${MY_FONTCONFIG_VERSION}.tar.gz.sha256 && cd - \
&& tar xvJf /3rd_party/fontconfig-${MY_FONTCONFIG_VERSION}.tar.xz \ && tar xvzf /3rd_party/fontconfig-${MY_FONTCONFIG_VERSION}.tar.gz \
&& cd fontconfig-${MY_FONTCONFIG_VERSION} \ && cd fontconfig-${MY_FONTCONFIG_VERSION} \
&& meson setup \ && meson setup \
--cross-file ${MY_TOOLCHAIN_FILE_MESON} \ --cross-file ${MY_TOOLCHAIN_FILE_MESON} \
@@ -495,7 +454,7 @@ RUN if [ -f "/3rd_party/boost_${MY_BOOST2_MAJOR_VERSION}_${MY_BOOST2_MINOR_VERSI
&& ./bootstrap.sh \ && ./bootstrap.sh \
--with-libraries=atomic,chrono,date_time,filesystem,iostreams,locale,log,program_options,random,regex,serialization,system,test,thread \ --with-libraries=atomic,chrono,date_time,filesystem,iostreams,locale,log,program_options,random,regex,serialization,system,test,thread \
address-model=64 \ address-model=64 \
cxxstd=20 \ cxxstd=${MY_CXX_STANDARD} \
cxxstd-dialect=gnu \ cxxstd-dialect=gnu \
architecture=x86 \ architecture=x86 \
link=static,shared \ link=static,shared \
@@ -509,7 +468,7 @@ RUN if [ -f "/3rd_party/boost_${MY_BOOST2_MAJOR_VERSION}_${MY_BOOST2_MINOR_VERSI
--prefix=${MY_MINGW_DIR} \ --prefix=${MY_MINGW_DIR} \
-j${MY_NUM_JOBS} \ -j${MY_NUM_JOBS} \
address-model=64 \ address-model=64 \
cxxstd=20 \ cxxstd=${MY_CXX_STANDARD} \
cxxstd-dialect=gnu \ cxxstd-dialect=gnu \
architecture=x86 \ architecture=x86 \
link=static,shared \ link=static,shared \
@@ -712,15 +671,12 @@ RUN if [ -f "/3rd_party/curl-${MY_CURL_VERSION}.tar.gz" ]; then \
&& cd build \ && cd build \
&& cmake .. \ && cmake .. \
-DBUILD_CURL_EXE=ON \ -DBUILD_CURL_EXE=ON \
-DBUILD_LIBCURL_DOCS=OFF \
-DBUILD_MISC_DOCS=OFF \
-DBUILD_SHARED_LIBS=OFF \ -DBUILD_SHARED_LIBS=OFF \
-DBUILD_STATIC_LIBS=ON \ -DBUILD_STATIC_LIBS=ON \
-DBUILD_TESTING=OFF \ -DBUILD_TESTING=OFF \
-DCMAKE_CXX_STANDARD=${MY_CXX_STANDARD} \ -DCMAKE_CXX_STANDARD=${MY_CXX_STANDARD} \
-DCMAKE_INSTALL_PREFIX=${MY_MINGW_DIR} \ -DCMAKE_INSTALL_PREFIX=${MY_MINGW_DIR} \
-DCMAKE_TOOLCHAIN_FILE=${MY_TOOLCHAIN_FILE_CMAKE} \ -DCMAKE_TOOLCHAIN_FILE=${MY_TOOLCHAIN_FILE_CMAKE} \
-DCURL_BROTLI=OFF \
-DCURL_CA_BUNDLE=./cacert.pem \ -DCURL_CA_BUNDLE=./cacert.pem \
-DCURL_CA_FALLBACK=ON \ -DCURL_CA_FALLBACK=ON \
-DCURL_DISABLE_LDAP=ON \ -DCURL_DISABLE_LDAP=ON \
@@ -728,7 +684,6 @@ RUN if [ -f "/3rd_party/curl-${MY_CURL_VERSION}.tar.gz" ]; then \
-DCURL_USE_LIBSSH2=OFF \ -DCURL_USE_LIBSSH2=OFF \
-DCURL_USE_OPENSSL=ON \ -DCURL_USE_OPENSSL=ON \
-DCURL_ZLIB=ON \ -DCURL_ZLIB=ON \
-DENABLE_CURL_MANUAL=OFF \
-DENABLE_THREADED_RESOLVER=ON \ -DENABLE_THREADED_RESOLVER=ON \
-DOPENSSL_USE_STATIC_LIBS=ON \ -DOPENSSL_USE_STATIC_LIBS=ON \
-DUSE_LIBIDN2=OFF \ -DUSE_LIBIDN2=OFF \
@@ -751,15 +706,11 @@ RUN if [ -f "/3rd_party/cpp-httplib-${MY_CPP_HTTPLIB_VERSION}.tar.gz" ]; then \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=${MY_CXX_STANDARD} \ -DCMAKE_CXX_STANDARD=${MY_CXX_STANDARD} \
-DCMAKE_INSTALL_PREFIX=${MY_MINGW_DIR} \ -DCMAKE_INSTALL_PREFIX=${MY_MINGW_DIR} \
-DCMAKE_SYSTEM_VERSION="10.0.0" \
-DCMAKE_TOOLCHAIN_FILE=${MY_TOOLCHAIN_FILE_CMAKE} \ -DCMAKE_TOOLCHAIN_FILE=${MY_TOOLCHAIN_FILE_CMAKE} \
-DHTTPLIB_REQUIRE_BROTLI=OFF \ -DHTTPLIB_REQUIRE_BROTLI=OFF \
-DHTTPLIB_REQUIRE_OPENSSL=ON \ -DHTTPLIB_REQUIRE_OPENSSL=ON \
-DHTTPLIB_REQUIRE_ZLIB=ON \ -DHTTPLIB_REQUIRE_ZLIB=ON \
-DHTTPLIB_TEST=OFF \ -DHTTPLIB_TEST=OFF \
-DHTTPLIB_USE_BROTLI_IF_AVAILABLE=OFF \
-DHTTPLIB_USE_OPENSSL_IF_AVAILABLE=YES \
-DHTTPLIB_USE_ZLIB_IF_AVAILABLE=ON \
&& make -j${MY_NUM_JOBS} \ && make -j${MY_NUM_JOBS} \
&& make install \ && make install \
&& cd ${MY_WORKDIR} \ && cd ${MY_WORKDIR} \
@@ -840,9 +791,7 @@ RUN if [ -f "/3rd_party/libevent-${MY_LIBEVENT_VERSION}-stable.tar.gz" ]; then \
&& cmake .. \ && cmake .. \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=${MY_CXX_STANDARD} \ -DCMAKE_CXX_STANDARD=${MY_CXX_STANDARD} \
-DCMAKE_C_FLAGS="-include winsock2.h -include ws2tcpip.h -include iphlpapi.h" \
-DCMAKE_INSTALL_PREFIX=${MY_MINGW_DIR} \ -DCMAKE_INSTALL_PREFIX=${MY_MINGW_DIR} \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DCMAKE_TOOLCHAIN_FILE=${MY_TOOLCHAIN_FILE_CMAKE} \ -DCMAKE_TOOLCHAIN_FILE=${MY_TOOLCHAIN_FILE_CMAKE} \
-DEVENT__DISABLE_OPENSSL=ON \ -DEVENT__DISABLE_OPENSSL=ON \
-DEVENT__DISABLE_SAMPLES=ON \ -DEVENT__DISABLE_SAMPLES=ON \
@@ -931,7 +880,6 @@ RUN if [ -f "/3rd_party/rocksdb-${MY_ROCKSDB_VERSION}.tar.gz" ]; then \
-DROCKSDB_INSTALL_ON_WINDOWS=ON \ -DROCKSDB_INSTALL_ON_WINDOWS=ON \
-DWITH_BENCHMARK=OFF \ -DWITH_BENCHMARK=OFF \
-DWITH_BENCHMARK_TOOLS=OFF \ -DWITH_BENCHMARK_TOOLS=OFF \
-DWITH_BZ2=OFF \
-DWITH_CORE_TOOLS=OFF \ -DWITH_CORE_TOOLS=OFF \
-DWITH_EXAMPLES=OFF \ -DWITH_EXAMPLES=OFF \
-DWITH_GFLAGS=OFF \ -DWITH_GFLAGS=OFF \
@@ -1163,33 +1111,6 @@ RUN if [ -f "/3rd_party/libdsm-${MY_LIBDSM_VERSION}.tar.gz" ]; then \
&& rm -r libdsm-${MY_LIBDSM_VERSION} \ && rm -r libdsm-${MY_LIBDSM_VERSION} \
; fi ; fi
ENV DISPLAY=:90 RUN (mv ${MY_MINGW_DIR}/lib/*.dll ${MY_MINGW_DIR}/bin || echo "no dll's found") \
ENV WINEDEBUG=-all,err+all
ARG INNOSETUP_VERSION
ENV MY_INNOSETUP_VERSION=${INNOSETUP_VERSION}
RUN rm -rf /root/.wine; \
wine64 reg add 'HKEY_CURRENT_USER\Software\Wine' /v ShowDotFiles /d Y \
&& while [ ! -f /root/.wine/user.reg ]; do sleep 1; done; \
wine-x11-run wine64 /3rd_party/mingw64/innosetup-${MY_INNOSETUP_VERSION}.exe /SP- /VERYSILENT /ALLUSERS /SUPPRESSMSGBOXES /DOWNLOADISCRYPT=1
ARG UID=1000
ARG GID=1000
ARG USERNAME=myuser
RUN delgroup scanner || echo "no scanner group found"
RUN addgroup -g $GID $USERNAME && \
adduser -D -u $UID -G $USERNAME -h /home/$USERNAME $USERNAME
RUN rsync -av --progress /root/.wine/ /home/$USERNAME/.wine/ && \
chown -R $UID:$GID -R /home/$USERNAME/.wine/
RUN (cp ${MY_MINGW_DIR}/lib/*.dll ${MY_MINGW_DIR}/bin || echo "no dll's found") \
&& chmod 0777 -R ${MY_MINGW_DIR} \ && chmod 0777 -R ${MY_MINGW_DIR} \
&& rm -rf /3rd_party \ && rm -rf /3rd_party
&& rm -rf /root/.wine
USER $USERNAME
WORKDIR /home/$USERNAME

View File

@@ -8,7 +8,3 @@ rsync -av --progress ${CURRENT_DIR}/${PROJECT_NAME}/${PROJECT_NAME}_test/test_in
rsync -av --progress ${CURRENT_DIR}/${PROJECT_NAME}/${PROJECT_NAME}_test/test_input/ \ rsync -av --progress ${CURRENT_DIR}/${PROJECT_NAME}/${PROJECT_NAME}_test/test_input/ \
${PROJECT_DIST_DIR}/test_input/ ${PROJECT_DIST_DIR}/test_input/
rsync -av --progress ${CURRENT_DIR}/assets/icon.ico ${PROJECT_DIST_DIR}/icon.ico
rsync -av --progress ${CURRENT_DIR}/assets/blue/logo.iconset/icon_128x128.png ${PROJECT_DIST_DIR}/repertory.png

View File

@@ -3,10 +3,5 @@ set(CMAKE_CXX_FLAGS "-include common.hpp ${CMAKE_CXX_FLAGS}")
add_project_library(lib${PROJECT_NAME} "" "" "${PROJECT_ADDITIONAL_SOURCES}") add_project_library(lib${PROJECT_NAME} "" "" "${PROJECT_ADDITIONAL_SOURCES}")
add_project_executable(${PROJECT_NAME} lib${PROJECT_NAME} lib${PROJECT_NAME}) add_project_executable(${PROJECT_NAME} lib${PROJECT_NAME} lib${PROJECT_NAME})
if (PROJECT_IS_DARWIN AND EXISTS "${CMAKE_SOURCE_DIR}/${PROJECT_NAME}/Info.plist")
set_target_properties(${PROJECT_NAME} PROPERTIES
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/Info.plist
)
endif()
add_project_test_executable(${PROJECT_NAME}_test lib${PROJECT_NAME} lib${PROJECT_NAME}) add_project_test_executable(${PROJECT_NAME}_test lib${PROJECT_NAME} lib${PROJECT_NAME})

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>@PROJECT_NAME@</string>
<key>CFBundleIdentifier</key>
<string>@PROJECT_MACOS_BUNDLE_ID@</string>
<key>CFBundleName</key>
<string>@PROJECT_NAME@</string>
<key>CFBundleVersion</key>
<string>@PROJECT_MAJOR_VERSION@.@PROJECT_MINOR_VERSION@.@PROJECT_REVISION_VERSION@-@PROJECT_RELEASE_ITER@_@PROJECT_GIT_REV@</string>
<key>CFBundleShortVersionString</key>
<string>@PROJECT_MAJOR_VERSION@.@PROJECT_MINOR_VERSION@.@PROJECT_REVISION_VERSION@.@PROJECT_RELEASE_NUM@</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>LSUIElement</key>
<true />
<key>CFBundleIconFile</key>
<string>@PROJECT_MACOS_ICNS_NAME@</string>
</dict>
</plist>

View File

@@ -1,421 +0,0 @@
#!/usr/bin/env bash
# No `-e` (we tolerate benign non-zero returns); keep -Euo
set -Euo pipefail
LOG_DIR="/tmp"
LOG_FILE="${LOG_DIR}/Install-$(date +%Y%m%d-%H%M%S).log"
exec > >(tee -a "$LOG_FILE") 2>&1
echo "Logging to: $LOG_FILE"
TARGET_DIR="/Applications"
APP_NAME="repertory.app"
# Embedded at pack time (from CFBundleIdentifier prefix)
LABEL_PREFIX="__LABEL_PREFIX__"
UI_LABEL="${LABEL_PREFIX}.ui"
staged=""
backup=""
snapfile=""
skip_ui_launch=0
log() { printf "[%(%H:%M:%S)T] %s\n" -1 "$*"; }
warn() { log "WARN: $*"; }
die() {
log "ERROR: $*"
exit 2
}
here="$(cd "$(dirname "$0")" && pwd)"
# Locate source app on the DMG (supports hidden payload dirs)
src_app="${here}/${APP_NAME}"
if [[ ! -d "$src_app" ]]; then
src_app="$(/usr/bin/find "$here" -type d -name "$APP_NAME" -print -quit 2>/dev/null || true)"
fi
[[ -d "$src_app" ]] || die "Could not find ${APP_NAME} on this disk image."
app_basename="$(basename "$src_app")"
dest_app="${TARGET_DIR}/${APP_NAME}"
bundle_id_of() { /usr/bin/defaults read "$1/Contents/Info" CFBundleIdentifier 2>/dev/null || true; }
bundle_exec_of() { /usr/bin/defaults read "$1/Contents/Info" CFBundleExecutable 2>/dev/null || echo "${app_basename%.app}"; }
bundle_version_of() {
/usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' "$1/Contents/Info.plist" 2>/dev/null ||
/usr/bin/defaults read "$1/Contents/Info" CFBundleShortVersionString 2>/dev/null || echo "(unknown)"
}
bundle_build_of() {
/usr/libexec/PlistBuddy -c 'Print :CFBundleVersion' "$1/Contents/Info.plist" 2>/dev/null ||
/usr/bin/defaults read "$1/Contents/Info" CFBundleVersion 2>/dev/null || echo "(unknown)"
}
# Require /Applications; prompt for sudo if needed; abort if cannot elevate
USE_SUDO=0
SUDO=""
ensure_target_writable() {
if mkdir -p "${TARGET_DIR}/.repertory_install_test.$$" 2>/dev/null; then
rmdir "${TARGET_DIR}/.repertory_install_test.$$" 2>/dev/null || true
USE_SUDO=0
SUDO=""
return 0
fi
if command -v sudo >/dev/null 2>&1; then
log "Elevating privileges to write to ${TARGET_DIR}…"
sudo -v || die "Administrator privileges required to install into ${TARGET_DIR}."
USE_SUDO=1
SUDO="sudo"
return 0
fi
die "Cannot write to ${TARGET_DIR} and sudo is unavailable."
}
# ----- STRICT LABEL PREFIX GATE (fail if invalid) -----
_is_valid_label_prefix() {
local p="${1:-}"
[[ -n "$p" ]] && [[ "$p" != "__LABEL_PREFIX__" ]] && [[ "$p" =~ ^[A-Za-z0-9._-]+$ ]] && [[ "$p" == *.* ]]
}
if ! _is_valid_label_prefix "${LABEL_PREFIX:-}"; then
die "Invalid LABEL_PREFIX in installer (value: \"${LABEL_PREFIX:-}\"). Rebuild the DMG so the installer contains a valid reverse-DNS prefix."
fi
# ----- LaunchServices helpers -----
ls_prune_bundle_id() {
local bundle_id="$1" keep_path="$2"
[[ -z "$bundle_id" ]] && return 0
local search_roots=("/Applications" "$HOME/Applications" "/Volumes")
if [[ -n "${here:-}" && "$here" == /Volumes/* ]]; then search_roots+=("$here"); fi
local candidates=""
for root in "${search_roots[@]}"; do
[[ -d "$root" ]] || continue
candidates+=$'\n'"$(/usr/bin/mdfind -onlyin "$root" "kMDItemCFBundleIdentifier == '${bundle_id}'" 2>/dev/null || true)"
done
# Include backups adjacent to keep_path (quote-safe)
local parent_dir="${keep_path%/*.app}"
candidates+=$'\n'$(/bin/ls -1d "${parent_dir}/"*.bak 2>/dev/null || true)
local LSREG="/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister"
printf "%s\n" "$candidates" | /usr/bin/awk 'NF' | /usr/bin/sort -u | while IFS= read -r p; do
[[ -z "$p" || ! -d "$p" || "$p" == "$keep_path" ]] && continue
log "Unregistering older LS entry for ${bundle_id}: $p"
"$LSREG" -u "$p" >/dev/null 2>&1 || true
done
}
# ----- FUSE unmount (no process killing here) -----
is_mounted() { /sbin/mount | /usr/bin/awk '{print $3}' | /usr/bin/grep -Fx "${1:-}" >/dev/null 2>&1; }
_list_repertory_fuse_mounts() { /sbin/mount | /usr/bin/grep -Ei 'macfuse|osxfuse' | /usr/bin/awk '{print $3}' | /usr/bin/grep -i "repertory" || true; }
_unmount_one() {
local mnt="${1:-}"
[[ -n "$mnt" ]] || return 0
/usr/sbin/diskutil unmount "$mnt" >/dev/null 2>&1 || /sbin/umount "$mnt" >/dev/null 2>&1 || true
if is_mounted "$mnt"; then
/usr/sbin/diskutil unmount force "$mnt" >/dev/null 2>&1 || /sbin/umount -f "$mnt" >/dev/null 2>&1 || true
fi
for _ in {1..20}; do
is_mounted "$mnt" || return 0
sleep 0.25
done
return 1
}
unmount_existing_repertory_volumes() {
# Hard-fail on the first unmount problem.
while IFS= read -r mnt; do
[[ -z "$mnt" ]] && continue
log "Unmounting FUSE mount: $mnt"
if ! _unmount_one "$mnt"; then
warn "Failed to unmount $mnt"
return 1
fi
done < <(_list_repertory_fuse_mounts)
sync || true
sleep 0.3
return 0
}
# ----- user LaunchAgents (by LABEL_PREFIX only) -----
get_plist_label() { /usr/bin/defaults read "$1" Label 2>/dev/null || /usr/libexec/PlistBuddy -c "Print :Label" "$1" 2>/dev/null || basename "$1" .plist; }
# Return the executable path a LaunchAgent runs (ProgramArguments[0] or Program).
# Echoes empty string if neither is present.
get_plist_exec_path() {
local plist="$1" arg0=""
# Prefer ProgramArguments[0]
arg0="$(/usr/libexec/PlistBuddy -c 'Print :ProgramArguments:0' "$plist" 2>/dev/null || true)"
if [[ -z "$arg0" ]]; then
# Fallback to Program (older style)
arg0="$(/usr/libexec/PlistBuddy -c 'Print :Program' "$plist" 2>/dev/null || true)"
fi
printf '%s\n' "$arg0"
}
snapshot_launchagents_user() {
local user_agents="$HOME/Library/LaunchAgents"
snapfile="$(/usr/bin/mktemp "/tmp/repertory_launchagents.XXXXXX")" || snapfile=""
if [[ -z "$snapfile" ]]; then
warn "Could not create temporary snapshot file; skipping LaunchAgent restart snapshot."
return 0
fi
[[ -d "$user_agents" ]] || return 0
# We collect non-UI first, then UI last, to preserve restart order later.
local tmp_nonui tmp_ui
tmp_nonui="$(/usr/bin/mktemp "/tmp/repertory_launchagents.nonui.XXXXXX")" || tmp_nonui=""
tmp_ui="$(/usr/bin/mktemp "/tmp/repertory_launchagents.ui.XXXXXX")" || tmp_ui=""
/usr/bin/find "$user_agents" -maxdepth 1 -type f -name "${LABEL_PREFIX}"'*.plist' -print 2>/dev/null |
while IFS= read -r plist; do
[[ -z "$plist" ]] && continue
# Label must match the prefix
local label
label="$(get_plist_label "$plist")"
[[ -n "$label" && "$label" == "${LABEL_PREFIX}"* ]] || continue
# Executable must point into the *installed* app path
local exec_path
exec_path="$(get_plist_exec_path "$plist")"
[[ -n "$exec_path" ]] || continue
# Normalize: only accept absolute paths under $dest_app (e.g. .../repertory.app/Contents/...)
if [[ "$exec_path" != "$dest_app/"* ]]; then
# Not one of ours; skip
continue
fi
# Defer UI label to the end
if [[ "$label" == "$UI_LABEL" ]]; then
[[ -n "$tmp_ui" ]] && printf "%s\t%s\n" "$plist" "$label" >>"$tmp_ui"
else
[[ -n "$tmp_nonui" ]] && printf "%s\t%s\n" "$plist" "$label" >>"$tmp_nonui"
fi
done
# Stitch together: non-UI first, then UI
[[ -s "$tmp_nonui" ]] && /bin/cat "$tmp_nonui" >>"$snapfile"
[[ -s "$tmp_ui" ]] && /bin/cat "$tmp_ui" >>"$snapfile"
[[ -n "$tmp_nonui" ]] && /bin/rm -f "$tmp_nonui" 2>/dev/null || true
[[ -n "$tmp_ui" ]] && /bin/rm -f "$tmp_ui" 2>/dev/null || true
log "Snapshot contains $(/usr/bin/wc -l <"$snapfile" 2>/dev/null || echo 0) LaunchAgent(s)."
}
unload_launchd_helpers_user() {
local uid user_agents
uid="$(id -u)"
user_agents="$HOME/Library/LaunchAgents"
[[ -d "$user_agents" ]] || return 0
while IFS= read -r plist; do
[[ -z "$plist" ]] && continue
local base label
base="$(basename "$plist")"
[[ "$base" == "${LABEL_PREFIX}"* ]] || continue
label="$(get_plist_label "$plist")"
[[ -n "$label" && "$label" == "${LABEL_PREFIX}"* ]] || continue
log "Booting out user label ${label} (${plist})"
/bin/launchctl bootout "gui/${uid}" "$plist" 2>/dev/null ||
/bin/launchctl bootout "gui/${uid}" "$label" 2>/dev/null ||
/bin/launchctl remove "$label" 2>/dev/null || true
done < <(/usr/bin/find "$user_agents" -maxdepth 1 -type f -name "${LABEL_PREFIX}"'*.plist' -print 2>/dev/null)
/bin/launchctl list 2>/dev/null | /usr/bin/awk -v pre="$LABEL_PREFIX" 'NF>=3 && index($3, pre)==1 {print $3}' |
while read -r lbl; do
[[ -z "$lbl" ]] && continue
log "Booting out leftover user label: $lbl"
/bin/launchctl bootout "gui/${uid}" "$lbl" 2>/dev/null || /bin/launchctl remove "$lbl" 2>/dev/null || true
done
}
restart_launchagents_from_snapshot() {
[[ -n "${snapfile:-}" && -f "${snapfile}" ]] || return 0
local uid count=0 ui_seen=0
uid="$(id -u)"
# Pass 1: restart all non-UI agents first
while IFS=$'\t' read -r plist label; do
[[ -n "$plist" && -n "$label" ]] || continue
[[ -f "$plist" ]] || continue
[[ "$label" == "$UI_LABEL" ]] && continue
log "Re-starting LaunchAgent: ${label}"
/bin/launchctl bootstrap "gui/${uid}" "$plist" 2>/dev/null || true
/bin/launchctl kickstart -k "gui/${uid}/${label}" 2>/dev/null || true
((count++)) || true
done <"$snapfile"
# Give helpers a moment to settle (e.g., automounts)
sleep 0.3
# Pass 2: restart the UI agent last (if present in the snapshot)
while IFS=$'\t' read -r plist label; do
[[ -n "$plist" && -n "$label" ]] || continue
[[ -f "$plist" ]] || continue
[[ "$label" == "$UI_LABEL" ]] || continue
log "Re-starting UI LaunchAgent last: ${label}"
/bin/launchctl bootstrap "gui/${uid}" "$plist" 2>/dev/null || true
/bin/launchctl kickstart -k "gui/${uid}/${label}" 2>/dev/null || true
ui_seen=1
((count++)) || true
done <"$snapfile"
log "Re-started ${count} LaunchAgent(s) with prefix ${LABEL_PREFIX}." || true
if ((ui_seen)); then
# If the UI label is active, skip manual open(1).
if /bin/launchctl list | /usr/bin/awk '{print $3}' | /usr/bin/grep -Fxq "$UI_LABEL"; then
log "UI LaunchAgent (${UI_LABEL}) active after restart; skipping manual UI launch."
skip_ui_launch=1
fi
fi
}
# ----- quarantine helper -----
remove_quarantine() {
local path="${1:-}"
if [[ "${USE_SUDO:-0}" == "1" ]]; then
sudo /usr/bin/xattr -dr com.apple.quarantine "$path" 2>/dev/null || true
else
/usr/bin/xattr -dr com.apple.quarantine "$path" 2>/dev/null || true
fi
}
# ----- process helpers -----
kill_repertory_processes() {
local exec_name="$1"
/usr/bin/pkill -TERM -f "$dest_app" >/dev/null 2>&1 || true
/usr/bin/pkill -TERM -x "$exec_name" >/dev/null 2>&1 || true
for _ in {1..20}; do
/usr/bin/pgrep -af "$dest_app" >/dev/null 2>&1 || /usr/bin/pgrep -x "$exec_name" >/dev/null 2>&1 || break
sleep 0.1
done
/usr/bin/pkill -KILL -f "$dest_app" >/dev/null 2>&1 || true
/usr/bin/pkill -KILL -x "$exec_name" >/dev/null 2>&1 || true
}
# ----- visibility helper -----
unhide_path() {
local path="$1"
/usr/bin/chflags -R nohidden "$path" 2>/dev/null || true
/usr/bin/xattr -d -r com.apple.FinderInfo "$path" 2>/dev/null || true
}
# ----- stage / validate / activate / post-activate -----
stage_new_app() {
staged="${dest_app}.new-$$"
log "Staging new app → $staged"
$SUDO /usr/bin/ditto "$src_app" "$staged" || die "ditto to stage failed"
remove_quarantine "$staged"
}
validate_staged_app() {
[[ -f "$staged/Contents/Info.plist" ]] || {
$SUDO /bin/rm -rf "$staged"
die "staged app missing Info.plist"
}
local exe_name_staged
exe_name_staged="$(/usr/bin/defaults read "$staged/Contents/Info" CFBundleExecutable 2>/dev/null || echo "${app_basename%.app}")"
[[ -x "$staged/Contents/MacOS/$exe_name_staged" ]] || {
$SUDO /bin/rm -rf "$staged"
die "staged app missing main executable"
}
}
activate_staged_app() {
if [[ -d "$dest_app" ]]; then
backup="${dest_app}.$(date +%Y%m%d%H%M%S).bak"
log "Moving existing app to backup: $backup"
$SUDO /bin/mv "$dest_app" "$backup" || {
$SUDO /bin/rm -rf "$staged"
die "failed to move existing app out of the way"
}
fi
log "Activating new app → $dest_app"
if ! $SUDO /bin/mv "$staged" "$dest_app"; then
warn "Activation failed; attempting rollback…"
[[ -n "$backup" && -d "$backup" ]] && $SUDO /bin/mv "$backup" "$dest_app" || true
$SUDO /bin/rm -rf "$staged" || true
die "install activation failed"
fi
}
post_activate_cleanup() {
log "Clearing quarantine on installed app…"
remove_quarantine "$dest_app"
log "Clearing hidden flags on installed app…"
unhide_path "$dest_app"
local LSREG="/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister"
[[ -x "$LSREG" ]] && "$LSREG" -f "$dest_app" >/dev/null 2>&1 || true
local BID
BID="$(bundle_id_of "$dest_app")"
ls_prune_bundle_id "$BID" "$dest_app"
log "Installed ${app_basename}: version=$(bundle_version_of "$dest_app") build=$(bundle_build_of "$dest_app")"
}
launch_ui() {
log "Launching the new app…"
/usr/bin/open -n "$dest_app" || warn "open -n by path failed; not falling back to -b to avoid launching a stale copy."
}
remove_backup() {
[[ -n "$backup" && -d "$backup" ]] && {
log "Removing backup: $backup"
$SUDO /bin/rm -rf "$backup" || warn "Could not remove backup (safe to delete manually): $backup"
}
log "Done."
}
cleanup_staged() {
if [[ -n "${staged:-}" && -d "${staged}" ]]; then
log "Cleaning up staged folder: ${staged}"
if [[ "${USE_SUDO:-0}" == "1" ]]; then
sudo /bin/rm -rf "${staged}" 2>/dev/null || true
else
/bin/rm -rf "${staged}" 2>/dev/null || true
fi
fi
if [[ -n "${snapfile:-}" && -f "${snapfile}" ]]; then
/bin/rm -f "${snapfile}" 2>/dev/null || true
fi
}
main() {
ensure_target_writable
local exec_name
exec_name="$(bundle_exec_of "$src_app")"
# 1) Snapshot agents we'll restart later
snapshot_launchagents_user
# 2) Hard-fail if any FUSE unmount fails
unmount_existing_repertory_volumes || die "One or more FUSE mounts resisted unmount."
# 3) Stop user LaunchAgents (do NOT delete plists)
unload_launchd_helpers_user
# 4) Kill any remaining repertory processes
kill_repertory_processes "$exec_name"
# 5) Stage → validate → activate → post-activate
stage_new_app
validate_staged_app
activate_staged_app
post_activate_cleanup
# 6) Re-start previously-running LaunchAgents (so automount helpers come up)
restart_launchagents_from_snapshot
# 7) If UI LaunchAgent came back, skip manual launch
if ((!skip_ui_launch)); then
launch_ui
fi
# 8) Remove backup now that everything is good
remove_backup
}
trap 'rc=$?; cleanup_staged; if (( rc != 0 )); then echo "Installer failed with code $rc. See $LOG_FILE"; fi' EXIT
main "$@"

View File

@@ -1,5 +1,5 @@
/* /*
Copyright <2018-2025> <scott.e.graves@protonmail.com> Copyright <2018-2024> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@@ -22,241 +22,452 @@
#ifndef REPERTORY_INCLUDE_APP_CONFIG_HPP_ #ifndef REPERTORY_INCLUDE_APP_CONFIG_HPP_
#define REPERTORY_INCLUDE_APP_CONFIG_HPP_ #define REPERTORY_INCLUDE_APP_CONFIG_HPP_
#include "types/remote.hpp" #include "events/event_system.hpp"
#include "events/events.hpp"
#include "types/repertory.hpp" #include "types/repertory.hpp"
#include "utils/error_utils.hpp"
namespace repertory { namespace repertory {
class app_config final { class app_config final {
private: public:
static stop_type stop_requested; [[nodiscard]] static auto
default_agent_name(const provider_type &prov) -> std::string;
[[nodiscard]] static auto
default_api_port(const provider_type &prov) -> std::uint16_t;
[[nodiscard]] static auto
default_data_directory(const provider_type &prov) -> std::string;
[[nodiscard]] static auto
default_remote_port(const provider_type &prov) -> std::uint16_t;
[[nodiscard]] static auto
default_rpc_port(const provider_type &prov) -> std::uint16_t;
[[nodiscard]] static auto
get_provider_display_name(const provider_type &prov) -> std::string;
[[nodiscard]] static auto
get_provider_name(const provider_type &prov) -> std::string;
public: public:
[[nodiscard]] static auto default_agent_name(provider_type prov) app_config(const provider_type &prov, std::string_view data_directory = "");
-> std::string;
[[nodiscard]] static auto default_api_port(provider_type prov)
-> std::uint16_t;
[[nodiscard]] static auto default_data_directory(provider_type prov)
-> std::string;
[[nodiscard]] static auto default_remote_api_port(provider_type prov)
-> std::uint16_t;
[[nodiscard]] static auto get_provider_display_name(provider_type prov)
-> std::string;
[[nodiscard]] static auto get_provider_name(provider_type prov)
-> std::string;
[[nodiscard]] static auto get_root_data_directory() -> std::string;
public:
[[nodiscard]] static auto get_stop_requested() -> bool;
static void set_stop_requested();
public:
app_config(provider_type prov, std::string_view data_directory);
app_config() = delete;
app_config(app_config &&) = delete;
app_config(const app_config &) = delete;
~app_config() { save(); } ~app_config() { save(); }
auto operator=(const app_config &) -> app_config & = delete;
auto operator=(app_config &&) -> app_config & = delete;
private: private:
provider_type prov_; provider_type prov_;
utils::atomic<std::string> api_password_; std::string api_auth_;
std::atomic<std::uint16_t> api_port_; std::uint16_t api_port_;
utils::atomic<std::string> api_user_; std::string api_user_;
std::string cache_directory_; bool config_changed_;
std::atomic<bool> config_changed_;
std::string data_directory_; std::string data_directory_;
std::atomic<database_type> db_type_{database_type::rocksdb}; std::uint8_t download_timeout_secs_;
std::atomic<std::uint8_t> download_timeout_secs_; bool enable_chunk_downloader_timeout_;
std::atomic<bool> enable_download_timeout_; bool enable_comm_duration_events_;
std::atomic<bool> enable_drive_events_; bool enable_drive_events_;
bool enable_max_cache_size_;
#if defined(_WIN32) #if defined(_WIN32)
std::atomic<bool> enable_mount_manager_; bool enable_mount_manager_;
#endif // defined(_WIN32) #endif // defined(_WIN32)
std::atomic<event_level> event_level_; bool enable_remote_mount_;
std::atomic<std::uint32_t> eviction_delay_mins_; encrypt_config encrypt_config_;
std::atomic<bool> eviction_uses_accessed_time_; event_level event_level_;
std::atomic<std::uint16_t> high_freq_interval_secs_; std::uint32_t eviction_delay_mins_;
std::string log_directory_; bool eviction_uses_accessed_time_;
std::atomic<std::uint16_t> low_freq_interval_secs_; std::uint8_t high_freq_interval_secs_;
std::atomic<std::uint64_t> max_cache_size_bytes_; bool is_remote_mount_;
std::atomic<std::uint8_t> max_upload_count_; std::uint32_t low_freq_interval_secs_;
std::atomic<std::uint16_t> med_freq_interval_secs_; std::uint64_t max_cache_size_bytes_;
std::atomic<std::uint16_t> online_check_retry_secs_; std::uint8_t max_upload_count_;
std::atomic<download_type> preferred_download_type_; std::uint8_t min_download_timeout_secs_;
std::atomic<std::uint16_t> retry_read_count_; std::uint16_t online_check_retry_secs_;
std::atomic<std::uint16_t> ring_buffer_file_size_; std::uint16_t orphaned_file_retention_days_;
std::atomic<std::uint16_t> task_wait_ms_; std::string preferred_download_type_;
std::uint8_t read_ahead_count_;
std::uint8_t remote_client_pool_size_;
std::string remote_host_name_or_ip_;
std::uint8_t remote_max_connections_;
std::uint16_t remote_port_;
std::uint16_t remote_receive_timeout_secs_;
std::uint16_t remote_send_timeout_secs_;
std::string remote_token_;
std::uint16_t retry_read_count_;
std::uint16_t ring_buffer_file_size_;
std::uint16_t task_wait_ms_;
private: private:
utils::atomic<encrypt_config> encrypt_config_; std::string cache_directory_;
utils::atomic<host_config> host_config_; host_config hc_{};
mutable std::recursive_mutex read_write_mutex_; s3_config s3_config_{};
utils::atomic<remote::remote_config> remote_config_; sia_config sia_config_{};
utils::atomic<remote::remote_mount> remote_mount_;
utils::atomic<s3_config> s3_config_;
utils::atomic<sia_config> sia_config_;
std::unordered_map<std::string, std::function<std::string()>>
value_get_lookup_;
std::unordered_map<std::string, std::function<std::string(std::string_view)>>
value_set_lookup_;
std::uint64_t version_{REPERTORY_CONFIG_VERSION}; std::uint64_t version_{REPERTORY_CONFIG_VERSION};
std::string log_directory_;
mutable std::recursive_mutex read_write_mutex_;
mutable std::recursive_mutex remote_mount_mutex_;
private: private:
[[nodiscard]] auto load() -> bool; [[nodiscard]] auto load() -> bool;
template <typename dest, typename source> template <typename dest>
auto set_value(dest &dst, const source &src) -> bool; auto get_value(const json &json_document, const std::string &name, dest &dst,
bool &success_flag) -> bool {
REPERTORY_USES_FUNCTION_NAME();
auto set_value(utils::atomic<std::string> &dst, std::string_view src) -> bool; auto ret{false};
try {
if (json_document.find(name) != json_document.end()) {
dst = json_document[name].get<dest>();
ret = true;
} else {
success_flag = false;
}
} catch (const json::exception &ex) {
utils::error::raise_error(function_name, ex, "exception occurred");
success_flag = false;
ret = false;
}
return ret;
}
template <typename dest, typename source>
auto set_value(dest &dst, const source &src) -> bool {
auto ret{false};
recur_mutex_lock lock(read_write_mutex_);
if (dst != src) {
dst = src;
config_changed_ = true;
save();
ret = true;
}
return ret;
}
public: public:
[[nodiscard]] auto get_api_password() const -> std::string; [[nodiscard]] auto get_api_auth() const -> std::string { return api_auth_; }
[[nodiscard]] auto get_api_port() const -> std::uint16_t; [[nodiscard]] auto get_api_port() const -> std::uint16_t { return api_port_; }
[[nodiscard]] auto get_api_user() const -> std::string; [[nodiscard]] auto get_api_user() const -> std::string { return api_user_; }
[[nodiscard]] auto get_cache_directory() const -> std::string; [[nodiscard]] auto get_cache_directory() const -> std::string {
return cache_directory_;
}
[[nodiscard]] auto get_chunk_downloader_timeout_secs() const -> std::uint8_t {
return std::max(min_download_timeout_secs_, download_timeout_secs_);
}
[[nodiscard]] auto get_config_file_path() const -> std::string; [[nodiscard]] auto get_config_file_path() const -> std::string;
[[nodiscard]] auto get_database_type() const -> database_type; [[nodiscard]] auto get_data_directory() const -> std::string {
return data_directory_;
}
[[nodiscard]] auto get_data_directory() const -> std::string; [[nodiscard]] auto get_enable_chunk_download_timeout() const -> bool {
return enable_chunk_downloader_timeout_;
}
[[nodiscard]] auto get_download_timeout_secs() const -> std::uint8_t; [[nodiscard]] auto get_enable_comm_duration_events() const -> bool {
return enable_comm_duration_events_;
}
[[nodiscard]] auto get_enable_download_timeout() const -> bool; [[nodiscard]] auto get_enable_drive_events() const -> bool {
return enable_drive_events_;
}
[[nodiscard]] auto get_enable_drive_events() const -> bool; [[nodiscard]] auto get_encrypt_config() const -> encrypt_config {
return encrypt_config_;
[[nodiscard]] auto get_encrypt_config() const -> encrypt_config; }
#if defined(_WIN32) #if defined(_WIN32)
[[nodiscard]] auto get_enable_mount_manager() const -> bool; [[nodiscard]] auto get_enable_mount_manager() const -> bool {
#endif // defined(_WIN32) return enable_mount_manager_;
}
#endif
[[nodiscard]] auto get_event_level() const -> event_level; [[nodiscard]] auto get_enable_max_cache_size() const -> bool {
return enable_max_cache_size_;
}
[[nodiscard]] auto get_eviction_delay_mins() const -> std::uint32_t; [[nodiscard]] auto get_enable_remote_mount() const -> bool {
return enable_remote_mount_;
}
[[nodiscard]] auto get_eviction_uses_accessed_time() const -> bool; [[nodiscard]] auto get_event_level() const -> event_level {
return event_level_;
}
[[nodiscard]] auto get_high_frequency_interval_secs() const -> std::uint16_t; [[nodiscard]] auto get_eviction_delay_mins() const -> std::uint32_t {
return eviction_delay_mins_;
}
[[nodiscard]] auto get_host_config() const -> host_config; [[nodiscard]] auto get_eviction_uses_accessed_time() const -> bool {
return eviction_uses_accessed_time_;
}
[[nodiscard]] auto get_high_frequency_interval_secs() const -> std::uint8_t {
return std::max(static_cast<std::uint8_t>(1U), high_freq_interval_secs_);
}
[[nodiscard]] auto get_host_config() const -> host_config { return hc_; }
[[nodiscard]] auto get_is_remote_mount() const -> bool {
return is_remote_mount_;
}
[[nodiscard]] auto get_json() const -> json; [[nodiscard]] auto get_json() const -> json;
[[nodiscard]] auto get_log_directory() const -> std::string; [[nodiscard]] auto get_log_directory() const -> std::string {
return log_directory_;
}
[[nodiscard]] auto get_low_frequency_interval_secs() const -> std::uint16_t; [[nodiscard]] auto get_low_frequency_interval_secs() const -> std::uint32_t {
return std::max(1U, low_freq_interval_secs_);
}
[[nodiscard]] auto get_max_cache_size_bytes() const -> std::uint64_t; [[nodiscard]] auto get_max_cache_size_bytes() const -> std::uint64_t;
[[nodiscard]] auto get_max_upload_count() const -> std::uint8_t; [[nodiscard]] auto get_max_upload_count() const -> std::uint8_t {
return std::max(std::uint8_t(1U), max_upload_count_);
}
[[nodiscard]] auto get_med_frequency_interval_secs() const -> std::uint16_t; [[nodiscard]] auto get_online_check_retry_secs() const -> std::uint16_t {
return std::max(std::uint16_t(15U), online_check_retry_secs_);
}
[[nodiscard]] auto get_online_check_retry_secs() const -> std::uint16_t; [[nodiscard]] auto get_orphaned_file_retention_days() const -> std::uint16_t {
return std::min(static_cast<std::uint16_t>(31U),
std::max(static_cast<std::uint16_t>(1U),
orphaned_file_retention_days_));
}
[[nodiscard]] auto get_preferred_download_type() const -> download_type; [[nodiscard]] auto get_preferred_download_type() const -> download_type {
return download_type_from_string(preferred_download_type_,
download_type::fallback);
}
[[nodiscard]] auto get_provider_type() const -> provider_type; [[nodiscard]] auto get_provider_type() const -> provider_type {
return prov_;
}
[[nodiscard]] auto get_remote_config() const -> remote::remote_config; [[nodiscard]] auto get_read_ahead_count() const -> std::uint8_t {
return std::max(static_cast<std::uint8_t>(1U), read_ahead_count_);
}
[[nodiscard]] auto get_remote_mount() const -> remote::remote_mount; [[nodiscard]] auto get_remote_client_pool_size() const -> std::uint8_t {
return std::max(static_cast<std::uint8_t>(5U), remote_client_pool_size_);
}
[[nodiscard]] auto get_retry_read_count() const -> std::uint16_t; [[nodiscard]] auto get_remote_host_name_or_ip() const -> std::string {
return remote_host_name_or_ip_;
}
[[nodiscard]] auto get_ring_buffer_file_size() const -> std::uint16_t; [[nodiscard]] auto get_remote_max_connections() const -> std::uint8_t {
return std::max(static_cast<std::uint8_t>(1U), remote_max_connections_);
}
[[nodiscard]] auto get_s3_config() const -> s3_config; [[nodiscard]] auto get_remote_port() const -> std::uint16_t {
return remote_port_;
}
[[nodiscard]] auto get_sia_config() const -> sia_config; [[nodiscard]] auto get_remote_receive_timeout_secs() const -> std::uint16_t {
return remote_receive_timeout_secs_;
}
[[nodiscard]] auto get_task_wait_ms() const -> std::uint16_t; [[nodiscard]] auto get_remote_send_timeout_secs() const -> std::uint16_t {
return remote_send_timeout_secs_;
}
[[nodiscard]] auto get_value_by_name(std::string_view name) const [[nodiscard]] auto get_remote_token() const -> std::string {
-> std::string; return remote_token_;
}
[[nodiscard]] auto get_raw_value_by_name(std::string_view name) const [[nodiscard]] auto get_retry_read_count() const -> std::uint16_t {
-> std::string; return std::max(std::uint16_t(2), retry_read_count_);
}
[[nodiscard]] auto get_version() const -> std::uint64_t; [[nodiscard]] auto get_ring_buffer_file_size() const -> std::uint16_t {
return std::max(
static_cast<std::uint16_t>(64U),
std::min(static_cast<std::uint16_t>(1024U), ring_buffer_file_size_));
}
[[nodiscard]] auto get_s3_config() const -> s3_config { return s3_config_; }
[[nodiscard]] auto get_sia_config() const -> sia_config {
return sia_config_;
}
[[nodiscard]] auto get_task_wait_ms() const -> std::uint16_t {
return std::max(static_cast<std::uint16_t>(50U), task_wait_ms_);
}
[[nodiscard]] auto get_value_by_name(const std::string &name) -> std::string;
[[nodiscard]] auto get_version() const -> std::uint64_t { return version_; }
void save(); void save();
void set_api_password(std::string_view value); void set_api_auth(const std::string &api_auth) {
set_value(api_auth_, api_auth);
}
void set_api_port(std::uint16_t value); void set_api_port(std::uint16_t api_port) { set_value(api_port_, api_port); }
void set_api_user(std::string_view value); void set_api_user(const std::string &api_user) {
set_value(api_user_, api_user);
}
void set_download_timeout_secs(std::uint8_t value); void set_chunk_downloader_timeout_secs(
std::uint8_t chunk_downloader_timeout_secs) {
set_value(download_timeout_secs_, chunk_downloader_timeout_secs);
}
void set_database_type(const database_type &value); void
set_enable_chunk_downloader_timeout(bool enable_chunk_downloader_timeout) {
set_value(enable_chunk_downloader_timeout_,
enable_chunk_downloader_timeout);
}
void set_enable_download_timeout(bool value); void set_enable_comm_duration_events(bool enable_comm_duration_events) {
set_value(enable_comm_duration_events_, enable_comm_duration_events);
}
void set_enable_drive_events(bool value); void set_enable_drive_events(bool enable_drive_events) {
set_value(enable_drive_events_, enable_drive_events);
}
void set_enable_max_cache_size(bool enable_max_cache_size) {
set_value(enable_max_cache_size_, enable_max_cache_size);
}
#if defined(_WIN32) #if defined(_WIN32)
void set_enable_mount_manager(bool value); void set_enable_mount_manager(bool enable_mount_manager) {
#endif // defined(_WIN32) set_value(enable_mount_manager_, enable_mount_manager);
}
#endif
void set_event_level(const event_level &value); void set_enable_remote_mount(bool enable_remote_mount);
void set_encrypt_config(encrypt_config value); void set_event_level(const event_level &level) {
if (set_value(event_level_, level)) {
event_system::instance().raise<event_level_changed>(
event_level_to_string(level));
}
}
void set_eviction_delay_mins(std::uint32_t value); void set_eviction_delay_mins(std::uint32_t eviction_delay_mins) {
set_value(eviction_delay_mins_, eviction_delay_mins);
}
void set_eviction_uses_accessed_time(bool value); void set_eviction_uses_accessed_time(bool eviction_uses_accessed_time) {
set_value(eviction_uses_accessed_time_, eviction_uses_accessed_time);
}
void set_high_frequency_interval_secs(std::uint16_t value); void
set_high_frequency_interval_secs(std::uint8_t high_frequency_interval_secs) {
set_value(high_freq_interval_secs_, high_frequency_interval_secs);
}
void set_host_config(host_config value); #if defined(PROJECT_TESTING)
void set_host_config(host_config hc) {
config_changed_ = true;
hc_ = std::move(hc);
save();
}
void set_low_frequency_interval_secs(std::uint16_t value); void set_s3_config(s3_config s3) {
config_changed_ = true;
s3_config_ = std::move(s3);
save();
}
void set_max_cache_size_bytes(std::uint64_t value); void set_sia_config(sia_config sia) {
config_changed_ = true;
sia_config_ = std::move(sia);
save();
}
#endif // defined(PROJECT_TESTING)
void set_max_upload_count(std::uint8_t value); void set_is_remote_mount(bool is_remote_mount);
void set_med_frequency_interval_secs(std::uint16_t value); void
set_low_frequency_interval_secs(std::uint32_t low_frequency_interval_secs) {
set_value(low_freq_interval_secs_, low_frequency_interval_secs);
}
void set_online_check_retry_secs(std::uint16_t value); void set_max_cache_size_bytes(std::uint64_t max_cache_size_bytes) {
set_value(max_cache_size_bytes_, max_cache_size_bytes);
}
void set_preferred_download_type(const download_type &value); void set_max_upload_count(std::uint8_t max_upload_count) {
set_value(max_upload_count_, max_upload_count);
}
void set_remote_config(remote::remote_config value); void set_online_check_retry_secs(std::uint16_t online_check_retry_secs) {
set_value(online_check_retry_secs_, online_check_retry_secs);
}
void set_remote_mount(remote::remote_mount value); void
set_orphaned_file_retention_days(std::uint16_t orphaned_file_retention_days) {
set_value(orphaned_file_retention_days_, orphaned_file_retention_days);
}
void set_retry_read_count(std::uint16_t value); void set_preferred_download_type(const download_type &dt) {
set_value(preferred_download_type_, download_type_to_string(dt));
}
void set_ring_buffer_file_size(std::uint16_t value); void set_read_ahead_count(std::uint8_t read_ahead_count) {
set_value(read_ahead_count_, read_ahead_count);
}
void set_s3_config(s3_config value); void set_remote_client_pool_size(std::uint8_t remote_client_pool_size) {
set_value(remote_client_pool_size_, remote_client_pool_size);
}
void set_sia_config(sia_config value); void set_ring_buffer_file_size(std::uint16_t ring_buffer_file_size) {
set_value(ring_buffer_file_size_, ring_buffer_file_size);
}
void set_task_wait_ms(std::uint16_t value); void set_remote_host_name_or_ip(const std::string &remote_host_name_or_ip) {
set_value(remote_host_name_or_ip_, remote_host_name_or_ip);
}
[[nodiscard]] auto set_value_by_name(std::string_view name, void set_remote_max_connections(std::uint8_t remote_max_connections) {
std::string_view value) -> std::string; set_value(remote_max_connections_, remote_max_connections);
}
void set_remote_port(std::uint16_t remote_port) {
set_value(remote_port_, remote_port);
}
void
set_remote_receive_timeout_secs(std::uint16_t remote_receive_timeout_secs) {
set_value(remote_receive_timeout_secs_, remote_receive_timeout_secs);
}
void set_remote_send_timeout_secs(std::uint16_t remote_send_timeout_secs) {
set_value(remote_send_timeout_secs_, remote_send_timeout_secs);
}
void set_remote_token(const std::string &remote_token) {
set_value(remote_token_, remote_token);
}
void set_retry_read_count(std::uint16_t retry_read_count) {
set_value(retry_read_count_, retry_read_count);
}
void set_task_wait_ms(std::uint16_t task_wait_ms) {
set_value(task_wait_ms_, task_wait_ms);
}
[[nodiscard]] auto set_value_by_name(const std::string &name,
const std::string &value) -> std::string;
}; };
} // namespace repertory } // namespace repertory

View File

@@ -1,5 +1,5 @@
/* /*
Copyright <2018-2025> <scott.e.graves@protonmail.com> Copyright <2018-2024> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@@ -22,12 +22,10 @@
#ifndef REPERTORY_INCLUDE_COMM_CURL_CURL_COMM_HPP_ #ifndef REPERTORY_INCLUDE_COMM_CURL_CURL_COMM_HPP_
#define REPERTORY_INCLUDE_COMM_CURL_CURL_COMM_HPP_ #define REPERTORY_INCLUDE_COMM_CURL_CURL_COMM_HPP_
#include "app_config.hpp"
#include "comm/curl/curl_shared.hpp"
#include "comm/curl/multi_request.hpp" #include "comm/curl/multi_request.hpp"
#include "comm/i_http_comm.hpp" #include "comm/i_http_comm.hpp"
#include "events/event_system.hpp" #include "events/event_system.hpp"
#include "events/types/curl_error.hpp" #include "events/events.hpp"
#include "utils/encryption.hpp" #include "utils/encryption.hpp"
namespace repertory { namespace repertory {
@@ -43,40 +41,42 @@ private:
using write_callback = size_t (*)(char *, size_t, size_t, void *); using write_callback = size_t (*)(char *, size_t, size_t, void *);
struct read_write_info final { struct read_write_info final {
data_buffer data; data_buffer data{};
stop_type_callback stop_requested_cb; stop_type &stop_requested;
}; };
static const write_callback write_data; static const write_callback write_data;
static const write_callback write_headers; static const write_callback write_headers;
static constexpr std::uint8_t retry_request_count{5U};
private: private:
std::optional<host_config> host_config_; std::optional<host_config> host_config_;
std::optional<s3_config> s3_config_; std::optional<s3_config> s3_config_;
private:
bool use_s3_path_style_{false};
public: public:
[[nodiscard]] static auto create_curl() -> CURL *; [[nodiscard]] static auto create_curl() -> CURL *;
[[nodiscard]] static auto reset_curl(CURL *curl_handle) -> CURL *; [[nodiscard]] static auto reset_curl(CURL *curl_handle) -> CURL *;
public: public:
[[nodiscard]] static auto construct_url(CURL *curl, [[nodiscard]] static auto
std::string_view relative_path, construct_url(CURL *curl, const std::string &relative_path,
const host_config &cfg) const host_config &cfg) -> std::string;
-> std::string;
[[nodiscard]] static auto create_host_config(const s3_config &cfg) [[nodiscard]] static auto
-> host_config; create_host_config(const s3_config &cfg,
bool use_s3_path_style) -> host_config;
[[nodiscard]] static auto url_encode(CURL *curl, std::string_view data, [[nodiscard]] static auto url_encode(CURL *curl, const std::string &data,
bool allow_slash) -> std::string; bool allow_slash) -> std::string;
template <typename request_type> template <typename request_type>
[[nodiscard]] static auto [[nodiscard]] static auto
make_encrypted_request(const host_config &cfg, const request_type &request, make_encrypted_request(const host_config &cfg, const request_type &request,
long &response_code, stop_type &stop_requested) long &response_code,
-> bool { stop_type &stop_requested) -> bool {
response_code = 0; response_code = 0;
if (not request.decryption_token.has_value() || if (not request.decryption_token.has_value() ||
@@ -93,19 +93,19 @@ public:
} }
data_buffer data{}; data_buffer data{};
const auto key = utils::encryption::generate_key<utils::hash::hash_256_t>( const auto key =
utils::encryption::generate_key<utils::encryption::hash_256_t>(
request.decryption_token.value()); request.decryption_token.value());
if (not utils::encryption::read_encrypted_range( if (not utils::encryption::read_encrypted_range(
request.range.value(), key, request.range.value(), key,
[&](data_buffer &buffer, std::uint64_t start_offset, [&](data_buffer &ct, std::uint64_t start_offset,
std::uint64_t end_offset) -> bool { std::uint64_t end_offset) -> bool {
auto encrypted_request = request; auto encrypted_request = request;
encrypted_request.decryption_token = std::nullopt; encrypted_request.decryption_token = std::nullopt;
encrypted_request.range = {{start_offset, end_offset}}; encrypted_request.range = {{start_offset, end_offset}};
encrypted_request.response_handler = encrypted_request.response_handler =
[&buffer](const auto &encrypted_data, [&ct](const auto &encrypted_data, long /*response_code*/) {
long /*response_code*/) { ct = encrypted_data;
buffer = encrypted_data;
}; };
encrypted_request.total_size = std::nullopt; encrypted_request.total_size = std::nullopt;
@@ -114,7 +114,7 @@ public:
return false; return false;
} }
if (response_code != http_error_codes::ok) { if (response_code != 200) {
return false; return false;
} }
@@ -135,10 +135,6 @@ public:
[[nodiscard]] static auto [[nodiscard]] static auto
make_request(const host_config &cfg, const request_type &request, make_request(const host_config &cfg, const request_type &request,
long &response_code, stop_type &stop_requested) -> bool { long &response_code, stop_type &stop_requested) -> bool {
REPERTORY_USES_FUNCTION_NAME();
CURLcode curl_code{};
const auto do_request = [&]() -> bool {
if (request.decryption_token.has_value() && if (request.decryption_token.has_value() &&
not request.decryption_token.value().empty()) { not request.decryption_token.value().empty()) {
return make_encrypted_request(cfg, request, response_code, return make_encrypted_request(cfg, request, response_code,
@@ -173,12 +169,7 @@ public:
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, write_headers); curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, write_headers);
} }
read_write_info write_info{ read_write_info write_info{{}, stop_requested};
{},
[&stop_requested]() -> bool {
return stop_requested || app_config::get_stop_requested();
},
};
if (request.response_handler.has_value()) { if (request.response_handler.has_value()) {
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &write_info); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &write_info);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
@@ -202,33 +193,15 @@ public:
request.aws_service.value().c_str()); request.aws_service.value().c_str());
} }
curl_slist *header_list{nullptr};
if (not request.headers.empty()) {
for (const auto &header : request.headers) {
header_list = curl_slist_append(
header_list,
fmt::format("{}: {}", header.first, header.second).c_str());
}
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, header_list);
}
curl_shared::set_share(curl);
auto url = construct_url(curl, request.get_path(), cfg) + parameters; auto url = construct_url(curl, request.get_path(), cfg) + parameters;
curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
multi_request curl_request(curl, stop_requested); multi_request curl_request(curl, stop_requested);
curl_code = CURLE_OK; CURLcode curl_code{};
curl_request.get_result(curl_code, response_code); curl_request.get_result(curl_code, response_code);
if (header_list != nullptr) {
curl_slist_free_all(header_list);
}
if (curl_code != CURLE_OK) { if (curl_code != CURLE_OK) {
event_system::instance().raise<curl_error>(curl_code, function_name, event_system::instance().raise<curl_error>(url, curl_code);
request.get_type(), url);
return false; return false;
} }
@@ -237,52 +210,31 @@ public:
} }
return true; return true;
};
bool ret{false};
for (std::uint8_t retry = 0U; !ret && retry < retry_request_count;
++retry) {
ret = do_request();
if (ret) {
break;
}
if (curl_code == CURLE_COULDNT_RESOLVE_HOST) {
std::this_thread::sleep_for(1s);
continue;
}
break;
}
return ret;
} }
public: public:
[[nodiscard]] auto make_request(const curl::requests::http_delete &del, void enable_s3_path_style(bool enable) override;
long &response_code,
stop_type &stop_requested) const
-> bool override;
[[nodiscard]] auto make_request(const curl::requests::http_get &get, [[nodiscard]] auto
long &response_code, make_request(const curl::requests::http_delete &del, long &response_code,
stop_type &stop_requested) const stop_type &stop_requested) const -> bool override;
-> bool override;
[[nodiscard]] auto make_request(const curl::requests::http_head &head, [[nodiscard]] auto
long &response_code, make_request(const curl::requests::http_get &get, long &response_code,
stop_type &stop_requested) const stop_type &stop_requested) const -> bool override;
-> bool override;
[[nodiscard]] auto make_request(const curl::requests::http_post &post_file, [[nodiscard]] auto
long &response_code, make_request(const curl::requests::http_head &head, long &response_code,
stop_type &stop_requested) const stop_type &stop_requested) const -> bool override;
-> bool override;
[[nodiscard]] auto make_request(const curl::requests::http_put_file &put_file, [[nodiscard]] auto
make_request(const curl::requests::http_post &post_file, long &response_code,
stop_type &stop_requested) const -> bool override;
[[nodiscard]] auto
make_request(const curl::requests::http_put_file &put_file,
long &response_code, long &response_code,
stop_type &stop_requested) const stop_type &stop_requested) const -> bool override;
-> bool override;
}; };
} // namespace repertory } // namespace repertory

View File

@@ -1,67 +0,0 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
#ifndef REPERTORY_INCLUDE_COMM_CURL_CURL_SHARED_HPP_
#define REPERTORY_INCLUDE_COMM_CURL_CURL_SHARED_HPP_
namespace repertory {
class curl_shared final {
private:
struct curl_sh_deleter final {
void operator()(CURLSH *ptr) {
if (ptr != nullptr) {
curl_share_cleanup(ptr);
}
}
};
using curl_sh_t = std::unique_ptr<CURLSH, curl_sh_deleter>;
public:
curl_shared() = delete;
curl_shared(const curl_shared &) = delete;
curl_shared(curl_shared &&) = delete;
~curl_shared() = delete;
auto operator=(const curl_shared &) -> curl_shared & = delete;
auto operator=(curl_shared &&) -> curl_shared & = delete;
private:
static curl_sh_t cache_;
static std::recursive_mutex mtx_;
private:
static void lock_callback(CURL * /* curl */, curl_lock_data /* data */,
curl_lock_access /* access */, void * /* ptr */);
static void unlock_callback(CURL * /* curl */, curl_lock_data /* data */,
curl_lock_access /* access */, void * /* ptr */);
public:
static void cleanup();
[[nodiscard]] static auto init() -> bool;
static void set_share(CURL *curl);
};
} // namespace repertory
#endif // REPERTORY_INCLUDE_COMM_CURL_DNS_CACHE_HPP_

View File

@@ -1,5 +1,5 @@
/* /*
Copyright <2018-2025> <scott.e.graves@protonmail.com> Copyright <2018-2024> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@@ -36,9 +36,6 @@ private:
stop_type &stop_requested_; stop_type &stop_requested_;
CURLM *multi_handle_; CURLM *multi_handle_;
private:
[[nodiscard]] auto get_stop_requested() const -> bool;
public: public:
void get_result(CURLcode &curl_code, long &http_code); void get_result(CURLcode &curl_code, long &http_code);
}; };

View File

@@ -1,5 +1,5 @@
/* /*
Copyright <2018-2025> <scott.e.graves@protonmail.com> Copyright <2018-2024> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@@ -26,13 +26,11 @@
namespace repertory::curl::requests { namespace repertory::curl::requests {
struct http_delete final : http_request_base { struct http_delete final : http_request_base {
[[nodiscard]] auto get_type() const -> std::string override { ~http_delete() override = default;
return "delete";
}
[[nodiscard]] auto set_method(CURL *curl, [[nodiscard]] auto
stop_type & /* stop_requested */) const set_method(CURL *curl,
-> bool override { stop_type & /* stop_requested */) const -> bool override {
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE"); curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE");
return true; return true;
} }

View File

@@ -1,5 +1,5 @@
/* /*
Copyright <2018-2025> <scott.e.graves@protonmail.com> Copyright <2018-2024> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@@ -33,11 +33,9 @@ struct http_get final : http_request_base {
auto operator=(http_get &&) -> http_get & = default; auto operator=(http_get &&) -> http_get & = default;
~http_get() override = default; ~http_get() override = default;
[[nodiscard]] auto get_type() const -> std::string override { return "get"; } [[nodiscard]] auto
set_method(CURL *curl,
[[nodiscard]] auto set_method(CURL *curl, stop_type & /*stop_requested*/) const -> bool override {
stop_type & /*stop_requested*/) const
-> bool override {
curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
return true; return true;
} }

View File

@@ -1,5 +1,5 @@
/* /*
Copyright <2018-2025> <scott.e.graves@protonmail.com> Copyright <2018-2024> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@@ -26,11 +26,11 @@
namespace repertory::curl::requests { namespace repertory::curl::requests {
struct http_head final : http_request_base { struct http_head final : http_request_base {
[[nodiscard]] auto get_type() const -> std::string override { return "head"; } ~http_head() override = default;
[[nodiscard]] auto set_method(CURL *curl, [[nodiscard]] auto
stop_type & /* stop_requested */) const set_method(CURL *curl,
-> bool override { stop_type & /* stop_requested */) const -> bool override {
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "HEAD"); curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "HEAD");
curl_easy_setopt(curl, CURLOPT_NOBODY, 1L); curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
return true; return true;

View File

@@ -1,5 +1,5 @@
/* /*
Copyright <2018-2025> <scott.e.graves@protonmail.com> Copyright <2018-2024> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@@ -26,15 +26,21 @@
namespace repertory::curl::requests { namespace repertory::curl::requests {
struct http_post final : http_request_base { struct http_post final : http_request_base {
http_post() = default;
http_post(const http_post &) = default;
http_post(http_post &&) = default;
auto operator=(const http_post &) -> http_post & = default;
auto operator=(http_post &&) -> http_post & = default;
~http_post() override;
std::optional<nlohmann::json> json; std::optional<nlohmann::json> json;
[[nodiscard]] auto get_type() const -> std::string override { return "post"; } [[nodiscard]] auto
set_method(CURL *curl, stop_type & /*stop_requested*/) const -> bool override;
[[nodiscard]] auto set_method(CURL *curl,
stop_type & /*stop_requested*/) const
-> bool override;
private: private:
mutable curl_slist *headers{nullptr};
mutable std::optional<std::string> json_str; mutable std::optional<std::string> json_str;
}; };
} // namespace repertory::curl::requests } // namespace repertory::curl::requests

View File

@@ -1,5 +1,5 @@
/* /*
Copyright <2018-2025> <scott.e.graves@protonmail.com> Copyright <2018-2024> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@@ -27,11 +27,18 @@
namespace repertory::curl::requests { namespace repertory::curl::requests {
struct http_put_file final : http_request_base { struct http_put_file final : http_request_base {
http_put_file() = default;
http_put_file(const http_put_file &) = default;
http_put_file(http_put_file &&) = default;
auto operator=(const http_put_file &) -> http_put_file & = default;
auto operator=(http_put_file &&) -> http_put_file & = default;
~http_put_file() override = default;
std::shared_ptr<utils::encryption::encrypting_reader> reader; std::shared_ptr<utils::encryption::encrypting_reader> reader;
std::string source_path; std::string source_path;
[[nodiscard]] auto get_type() const -> std::string override { return "put"; }
[[nodiscard]] auto set_method(CURL *curl, stop_type &stop_requested) const [[nodiscard]] auto set_method(CURL *curl, stop_type &stop_requested) const
-> bool override; -> bool override;

View File

@@ -1,5 +1,5 @@
/* /*
Copyright <2018-2025> <scott.e.graves@protonmail.com> Copyright <2018-2024> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@@ -51,7 +51,7 @@ struct http_request_base {
bool allow_timeout{}; bool allow_timeout{};
std::optional<std::string> aws_service; std::optional<std::string> aws_service;
std::optional<std::string> decryption_token{}; std::optional<std::string> decryption_token{};
mutable http_headers headers{}; http_headers headers{};
std::string path{}; std::string path{};
http_query_parameters query{}; http_query_parameters query{};
std::optional<http_range> range{}; std::optional<http_range> range{};
@@ -61,8 +61,6 @@ struct http_request_base {
[[nodiscard]] virtual auto get_path() const -> std::string { return path; } [[nodiscard]] virtual auto get_path() const -> std::string { return path; }
[[nodiscard]] virtual auto get_type() const -> std::string = 0;
[[nodiscard]] virtual auto set_method(CURL *curl, [[nodiscard]] virtual auto set_method(CURL *curl,
stop_type &stop_requested) const stop_type &stop_requested) const
-> bool = 0; -> bool = 0;

View File

@@ -1,5 +1,5 @@
/* /*
Copyright <2018-2025> <scott.e.graves@protonmail.com> Copyright <2018-2024> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@@ -34,29 +34,28 @@ struct i_http_comm {
INTERFACE_SETUP(i_http_comm); INTERFACE_SETUP(i_http_comm);
public: public:
virtual void enable_s3_path_style(bool enable) = 0;
[[nodiscard]] virtual auto [[nodiscard]] virtual auto
make_request(const curl::requests::http_delete &del, long &response_code, make_request(const curl::requests::http_delete &del, long &response_code,
stop_type &stop_requested) const -> bool = 0; stop_type &stop_requested) const -> bool = 0;
[[nodiscard]] virtual auto make_request(const curl::requests::http_get &get, [[nodiscard]] virtual auto
long &response_code, make_request(const curl::requests::http_get &get, long &response_code,
stop_type &stop_requested) const stop_type &stop_requested) const -> bool = 0;
-> bool = 0;
[[nodiscard]] virtual auto make_request(const curl::requests::http_head &head, [[nodiscard]] virtual auto
long &response_code, make_request(const curl::requests::http_head &head, long &response_code,
stop_type &stop_requested) const stop_type &stop_requested) const -> bool = 0;
-> bool = 0;
[[nodiscard]] virtual auto make_request(const curl::requests::http_post &post, [[nodiscard]] virtual auto
long &response_code, make_request(const curl::requests::http_post &post, long &response_code,
stop_type &stop_requested) const stop_type &stop_requested) const -> bool = 0;
-> bool = 0;
[[nodiscard]] virtual auto [[nodiscard]] virtual auto
make_request(const curl::requests::http_put_file &put_file, make_request(const curl::requests::http_put_file &put_file,
long &response_code, stop_type &stop_requested) const long &response_code,
-> bool = 0; stop_type &stop_requested) const -> bool = 0;
}; };
} // namespace repertory } // namespace repertory

View File

@@ -1,5 +1,5 @@
/* /*
Copyright <2018-2025> <scott.e.graves@protonmail.com> Copyright <2018-2024> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@@ -23,13 +23,10 @@
#define REPERTORY_INCLUDE_COMM_PACKET_CLIENT_POOL_HPP_ #define REPERTORY_INCLUDE_COMM_PACKET_CLIENT_POOL_HPP_
#include "comm/packet/packet.hpp" #include "comm/packet/packet.hpp"
#include "types/repertory.hpp"
namespace repertory { namespace repertory {
class client_pool final { class client_pool final {
public:
static constexpr const std::uint16_t default_expired_seconds{120U};
static constexpr const std::uint16_t min_expired_seconds{5U};
public: public:
using worker_callback = std::function<packet::error_type()>; using worker_callback = std::function<packet::error_type()>;
using worker_complete_callback = using worker_complete_callback =
@@ -49,32 +46,15 @@ private:
}; };
struct work_queue final { struct work_queue final {
work_queue();
~work_queue();
work_queue(const work_queue &) = delete;
work_queue(work_queue &&) = delete;
std::deque<std::shared_ptr<work_item>> actions;
std::atomic<std::chrono::steady_clock::time_point> modified{
std::chrono::steady_clock::now(),
};
std::mutex mutex; std::mutex mutex;
std::condition_variable notify; std::condition_variable notify;
stop_type shutdown{false}; std::deque<std::shared_ptr<work_item>> queue;
std::unique_ptr<std::thread> thread;
auto operator=(const work_queue &) -> work_queue & = delete;
auto operator=(work_queue &&) -> work_queue & = delete;
private:
void work_thread();
}; };
public: public:
pool() noexcept = default; explicit pool(std::uint8_t pool_size);
~pool(); ~pool() { shutdown(); }
public: public:
pool(const pool &) = delete; pool(const pool &) = delete;
@@ -83,20 +63,21 @@ private:
auto operator=(pool &&) -> pool & = delete; auto operator=(pool &&) -> pool & = delete;
private: private:
std::mutex pool_mtx_; std::vector<std::unique_ptr<work_queue>> pool_queues_;
std::unordered_map<std::uint64_t, std::shared_ptr<work_queue>> pool_queues_; std::vector<std::thread> pool_threads_;
bool shutdown_{false};
std::atomic<std::uint8_t> thread_index_{};
public: public:
void execute(std::uint64_t thread_id, worker_callback worker, void execute(std::uint64_t thread_id, const worker_callback &worker,
worker_complete_callback worker_complete); const worker_complete_callback &worker_complete);
void remove_expired(std::uint16_t seconds);
void shutdown(); void shutdown();
}; };
public: public:
client_pool() noexcept; explicit client_pool(std::uint8_t pool_size = min_pool_size)
: pool_size_(pool_size == 0U ? min_pool_size : pool_size) {}
~client_pool() { shutdown(); } ~client_pool() { shutdown(); }
@@ -107,23 +88,20 @@ public:
auto operator=(client_pool &&) -> client_pool & = delete; auto operator=(client_pool &&) -> client_pool & = delete;
private: private:
std::unordered_map<std::string, std::unique_ptr<pool>> pool_lookup_; std::uint8_t pool_size_;
std::unordered_map<std::string, std::shared_ptr<pool>> pool_lookup_;
std::mutex pool_mutex_; std::mutex pool_mutex_;
stop_type shutdown_{false}; bool shutdown_ = false;
std::atomic<std::uint16_t> expired_seconds_{default_expired_seconds};
private:
static constexpr const auto min_pool_size = 10U;
public: public:
[[nodiscard]] auto get_expired_seconds() const -> std::uint16_t; void execute(const std::string &client_id, std::uint64_t thread_id,
const worker_callback &worker,
const worker_complete_callback &worker_complete);
void execute(std::string client_id, std::uint64_t thread_id, void remove_client(const std::string &client_id);
worker_callback worker,
worker_complete_callback worker_complete);
void remove_client(std::string client_id);
void remove_expired();
void set_expired_seconds(std::uint16_t seconds);
void shutdown(); void shutdown();
}; };

View File

@@ -1,54 +0,0 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
#ifndef REPERTORY_INCLUDE_COMM_PACKET_COMMON_HPP_
#define REPERTORY_INCLUDE_COMM_PACKET_COMMON_HPP_
namespace repertory::comm {
inline static constexpr std::uint32_t max_packet_bytes{32U * 1024U * 1024U};
inline constexpr const std::uint8_t max_read_attempts{2U};
inline constexpr const std::uint16_t packet_nonce_size{256U};
inline constexpr const std::size_t read_write_size{131072U};
inline constexpr const std::uint16_t server_handshake_timeout_ms{3000U};
struct non_blocking_guard final {
non_blocking_guard(const non_blocking_guard &) = delete;
non_blocking_guard(non_blocking_guard &&) = delete;
auto operator=(const non_blocking_guard &) -> non_blocking_guard & = delete;
auto operator=(non_blocking_guard &&) -> non_blocking_guard & = delete;
explicit non_blocking_guard(boost::asio::ip::tcp::socket &sock_);
~non_blocking_guard();
private:
bool non_blocking;
boost::asio::ip::tcp::socket &sock;
};
void apply_common_socket_properties(boost::asio::ip::tcp::socket &sock);
[[nodiscard]] auto is_socket_still_alive(boost::asio::ip::tcp::socket &sock)
-> bool;
} // namespace repertory::comm
#endif // REPERTORY_INCLUDE_COMM_PACKET_COMMON_HPP_

View File

@@ -1,5 +1,5 @@
/* /*
Copyright <2018-2025> <scott.e.graves@protonmail.com> Copyright <2018-2024> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@@ -52,23 +52,23 @@ public:
~packet() = default; ~packet() = default;
private: private:
data_buffer buffer_{}; data_buffer buffer_;
std::size_t decode_offset_{0U}; std::size_t decode_offset_ = 0U;
public: public:
[[nodiscard]] static auto decode_json(packet &response, json &json_data) [[nodiscard]] static auto decode_json(packet &response,
-> int; json &json_data) -> int;
public: public:
void clear(); void clear();
[[nodiscard]] auto current_pointer() -> unsigned char * { [[nodiscard]] auto current_pointer() -> unsigned char * {
return (decode_offset_ < buffer_.size()) ? &buffer_.at(decode_offset_) return (decode_offset_ < buffer_.size()) ? &buffer_[decode_offset_]
: nullptr; : nullptr;
} }
[[nodiscard]] auto current_pointer() const -> const unsigned char * { [[nodiscard]] auto current_pointer() const -> const unsigned char * {
return (decode_offset_ < buffer_.size()) ? &buffer_.at(decode_offset_) return (decode_offset_ < buffer_.size()) ? &buffer_[decode_offset_]
: nullptr; : nullptr;
} }
@@ -200,13 +200,13 @@ public:
void encode_top(remote::file_info val); void encode_top(remote::file_info val);
void encrypt(std::string_view token, bool include_size = true); void encrypt(std::string_view token);
[[nodiscard]] auto get_size() const -> std::uint32_t { [[nodiscard]] auto get_size() const -> std::uint32_t {
return static_cast<std::uint32_t>(buffer_.size()); return static_cast<std::uint32_t>(buffer_.size());
} }
void to_buffer(data_buffer &buffer); void transfer_into(data_buffer &buffer);
public: public:
auto operator=(const data_buffer &buffer) noexcept -> packet &; auto operator=(const data_buffer &buffer) noexcept -> packet &;
@@ -226,6 +226,8 @@ public:
return buffer_.at(index); return buffer_.at(index);
} }
}; };
using packet = packet;
} // namespace repertory } // namespace repertory
#endif // REPERTORY_INCLUDE_COMM_PACKET_PACKET_HPP_ #endif // REPERTORY_INCLUDE_COMM_PACKET_PACKET_HPP_

View File

@@ -1,13 +1,17 @@
/* /*
Copyright <2018-2025> <scott.e.graves@protonmail.com> Copyright <2018-2024> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to do so, subject to the copies of the Software, and to permit persons to whom the Software is
following conditions: The above copyright notice and this permission notice furnished to do so, subject to the following conditions:
shall be included in all copies or substantial portions of the Software. THE
SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
@@ -19,8 +23,6 @@
#define REPERTORY_INCLUDE_COMM_PACKET_PACKET_CLIENT_HPP_ #define REPERTORY_INCLUDE_COMM_PACKET_PACKET_CLIENT_HPP_
#include "comm/packet/packet.hpp" #include "comm/packet/packet.hpp"
#include "types/remote.hpp"
#include "utils/atomic.hpp"
using boost::asio::ip::tcp; using boost::asio::ip::tcp;
@@ -34,7 +36,9 @@ private:
}; };
public: public:
packet_client(remote::remote_config cfg); packet_client(std::string host_name_or_ip, std::uint8_t max_connections,
std::uint16_t port, std::uint16_t receive_timeout,
std::uint16_t send_timeout, std::string encryption_token);
~packet_client(); ~packet_client();
@@ -44,55 +48,48 @@ public:
auto operator=(packet_client &&) -> packet_client & = delete; auto operator=(packet_client &&) -> packet_client & = delete;
private: private:
remote::remote_config cfg_; boost::asio::io_context io_context_;
mutable boost::asio::io_context io_context_; std::string host_name_or_ip_;
utils::atomic<std::string> unique_id_; std::uint8_t max_connections_;
std::uint16_t port_;
std::uint16_t receive_timeout_;
std::uint16_t send_timeout_;
std::string encryption_token_;
std::string unique_id_;
private: private:
std::atomic<bool> allow_connections_{true}; bool allow_connections_{true};
utils::atomic< boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::results_type
boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::results_type>
resolve_results_; resolve_results_;
std::mutex clients_mutex_; std::mutex clients_mutex_;
std::vector<std::shared_ptr<client>> clients_; std::vector<std::shared_ptr<client>> clients_;
std::vector<std::thread> service_threads_;
private: private:
static void close(client &cli) noexcept; static void close(client &cli);
void close_all(); void close_all();
[[nodiscard]] auto connect(client &cli) -> bool; void connect(client &cli);
[[nodiscard]] auto get_client() -> std::shared_ptr<client>; [[nodiscard]] auto get_client() -> std::shared_ptr<client>;
[[nodiscard]] auto handshake(client &cli, std::uint32_t &min_version) const
-> bool;
void put_client(std::shared_ptr<client> &cli); void put_client(std::shared_ptr<client> &cli);
void read_data(client &cli, data_buffer &buffer) const; [[nodiscard]] auto read_packet(client &cli,
packet &response) -> packet::error_type;
[[nodiscard]] auto read_packet(client &cli, packet &response) const
-> packet::error_type;
void resolve(); void resolve();
void write_data(client &cli, const packet &request) const;
public: public:
[[nodiscard]] auto check_version(std::uint32_t client_version, [[nodiscard]] auto send(std::string_view method,
std::uint32_t &min_version) -> api_error; std::uint32_t &service_flags) -> packet::error_type;
[[nodiscard]] auto send(std::string_view method, std::uint32_t &service_flags)
-> packet::error_type;
[[nodiscard]] auto send(std::string_view method, packet &request, [[nodiscard]] auto send(std::string_view method, packet &request,
std::uint32_t &service_flags) -> packet::error_type; std::uint32_t &service_flags) -> packet::error_type;
[[nodiscard]] auto send(std::string_view method, packet &request, [[nodiscard]] auto send(std::string_view method, packet &request,
packet &response, std::uint32_t &service_flags) packet &response,
-> packet::error_type; std::uint32_t &service_flags) -> packet::error_type;
}; };
} // namespace repertory } // namespace repertory

View File

@@ -1,5 +1,5 @@
/* /*
Copyright <2018-2025> <scott.e.graves@protonmail.com> Copyright <2018-2024> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@@ -23,7 +23,6 @@
#define REPERTORY_INCLUDE_COMM_PACKET_PACKET_SERVER_HPP_ #define REPERTORY_INCLUDE_COMM_PACKET_PACKET_SERVER_HPP_
#include "comm/packet/client_pool.hpp" #include "comm/packet/client_pool.hpp"
#include "comm/packet/common.hpp"
#include "utils/common.hpp" #include "utils/common.hpp"
using namespace boost::asio; using namespace boost::asio;
@@ -32,10 +31,10 @@ using boost::asio::ip::tcp;
namespace repertory { namespace repertory {
class packet_server final { class packet_server final {
public: public:
using closed_callback = std::function<void(std::string)>; using closed_callback = std::function<void(const std::string &)>;
using message_complete_callback = client_pool::worker_complete_callback; using message_complete_callback = client_pool::worker_complete_callback;
using message_handler_callback = using message_handler_callback = std::function<void(
std::function<void(std::uint32_t, std::string, std::uint64_t, std::string, std::uint32_t, const std::string &, std::uint64_t, const std::string &,
packet *, packet &, message_complete_callback)>; packet *, packet &, message_complete_callback)>;
public: public:
@@ -53,8 +52,8 @@ public:
private: private:
struct connection { struct connection {
connection(io_context &ctx, tcp::acceptor &acceptor_) connection(boost::asio::io_service &io_service, tcp::acceptor &acceptor_)
: socket(ctx), acceptor(acceptor_) {} : socket(io_service), acceptor(acceptor_) {}
tcp::socket socket; tcp::socket socket;
tcp::acceptor &acceptor; tcp::acceptor &acceptor;
@@ -62,25 +61,21 @@ private:
std::string client_id; std::string client_id;
std::string nonce; std::string nonce;
void generate_nonce() { void generate_nonce() { nonce = utils::generate_random_string(256U); }
nonce = utils::generate_random_string(comm::packet_nonce_size);
}
}; };
private: private:
std::string encryption_token_; std::string encryption_token_;
closed_callback closed_; closed_callback closed_;
message_handler_callback message_handler_; message_handler_callback message_handler_;
mutable io_context io_context_; boost::asio::io_context io_context_;
std::unique_ptr<std::thread> server_thread_; std::unique_ptr<std::thread> server_thread_;
std::vector<std::thread> service_threads_; std::vector<std::thread> service_threads_;
std::recursive_mutex connection_mutex_; std::recursive_mutex connection_mutex_;
std::unordered_map<std::string, std::uint32_t> connection_lookup_; std::unordered_map<std::string, std::uint32_t> connection_lookup_;
private: private:
void add_client(connection &conn, std::string client_id); void add_client(connection &conn, const std::string &client_id);
[[nodiscard]] auto handshake(std::shared_ptr<connection> conn) const -> bool;
void initialize(const uint16_t &port, uint8_t pool_size); void initialize(const uint16_t &port, uint8_t pool_size);

View File

@@ -1,5 +1,5 @@
/* /*
Copyright <2018-2025> <scott.e.graves@protonmail.com> Copyright <2018-2024> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@@ -22,7 +22,7 @@
#ifndef REPERTORY_INCLUDE_COMMON_HPP_ #ifndef REPERTORY_INCLUDE_COMMON_HPP_
#define REPERTORY_INCLUDE_COMMON_HPP_ #define REPERTORY_INCLUDE_COMMON_HPP_
#if defined(__GNUC__) && !defined(PROJECT_IS_DARWIN) #if defined(__GNUC__)
// clang-format off // clang-format off
#define REPERTORY_IGNORE_WARNINGS_ENABLE() \ #define REPERTORY_IGNORE_WARNINGS_ENABLE() \
_Pragma("GCC diagnostic push") \ _Pragma("GCC diagnostic push") \
@@ -54,13 +54,12 @@ REPERTORY_IGNORE_WARNINGS_DISABLE()
using namespace std::chrono_literals; using namespace std::chrono_literals;
using json = nlohmann::json; using json = nlohmann::json;
inline constexpr std::string_view REPERTORY{"repertory"}; inline constexpr const std::string_view REPERTORY = "repertory";
inline constexpr std::string_view REPERTORY_DATA_NAME{"repertory2"}; inline constexpr const std::wstring_view REPERTORY_W = L"repertory";
inline constexpr std::wstring_view REPERTORY_W{L"repertory"};
inline constexpr std::uint64_t REPERTORY_CONFIG_VERSION{5ULL}; inline constexpr const std::uint64_t REPERTORY_CONFIG_VERSION = 0ULL;
inline constexpr std::string_view REPERTORY_MIN_REMOTE_VERSION{"2.1.0"}; inline constexpr const std::string_view REPERTORY_DATA_NAME = "repertory2";
inline constexpr std::string_view RENTERD_MIN_VERSION{"2.0.0"}; inline constexpr const std::string_view REPERTORY_MIN_REMOTE_VERSION = "2.0.0";
#define REPERTORY_INVALID_HANDLE INVALID_HANDLE_VALUE #define REPERTORY_INVALID_HANDLE INVALID_HANDLE_VALUE
@@ -222,11 +221,11 @@ using WCHAR = wchar_t;
#define MAX_PATH 260 #define MAX_PATH 260
#define STATUS_SUCCESS std::uint32_t{0U}
#define STATUS_ACCESS_DENIED std::uint32_t{0xC0000022L} #define STATUS_ACCESS_DENIED std::uint32_t{0xC0000022L}
#define STATUS_DEVICE_BUSY std::uint32_t{0x80000011L} #define STATUS_DEVICE_BUSY std::uint32_t{0x80000011L}
#define STATUS_DEVICE_INSUFFICIENT_RESOURCES std::uint32_t{0xC0000468L} #define STATUS_DEVICE_INSUFFICIENT_RESOURCES std::uint32_t{0xC0000468L}
#define STATUS_DIRECTORY_NOT_EMPTY std::uint32_t{0xC0000101L} #define STATUS_DIRECTORY_NOT_EMPTY std::uint32_t{0xC0000101L}
#define STATUS_END_OF_FILE std::uint32_t{0xC0000011L}
#define STATUS_FILE_IS_A_DIRECTORY std::uint32_t{0xC00000BAL} #define STATUS_FILE_IS_A_DIRECTORY std::uint32_t{0xC00000BAL}
#define STATUS_FILE_TOO_LARGE std::uint32_t{0xC0000904L} #define STATUS_FILE_TOO_LARGE std::uint32_t{0xC0000904L}
#define STATUS_INSUFFICIENT_RESOURCES std::uint32_t{0xC000009AL} #define STATUS_INSUFFICIENT_RESOURCES std::uint32_t{0xC000009AL}
@@ -235,13 +234,11 @@ using WCHAR = wchar_t;
#define STATUS_INVALID_HANDLE std::uint32_t{0xC0000006L} #define STATUS_INVALID_HANDLE std::uint32_t{0xC0000006L}
#define STATUS_INVALID_IMAGE_FORMAT std::uint32_t{0xC000007BL} #define STATUS_INVALID_IMAGE_FORMAT std::uint32_t{0xC000007BL}
#define STATUS_INVALID_PARAMETER std::uint32_t{0xC000000DL} #define STATUS_INVALID_PARAMETER std::uint32_t{0xC000000DL}
#define STATUS_NOT_IMPLEMENTED std::uint32_t{0xC0000002L}
#define STATUS_NO_MEMORY std::uint32_t{0xC0000017L} #define STATUS_NO_MEMORY std::uint32_t{0xC0000017L}
#define STATUS_OBJECT_NAME_COLLISION std::uint32_t{0xC0000035L} #define STATUS_NOT_IMPLEMENTED std::uint32_t{0xC0000002L}
#define STATUS_OBJECT_NAME_EXISTS std::uint32_t{0x40000000L} #define STATUS_OBJECT_NAME_EXISTS std::uint32_t{0x40000000L}
#define STATUS_OBJECT_NAME_NOT_FOUND std::uint32_t{0xC0000034L} #define STATUS_OBJECT_NAME_NOT_FOUND std::uint32_t{0xC0000034L}
#define STATUS_OBJECT_PATH_INVALID std::uint32_t{0xC0000039L} #define STATUS_OBJECT_PATH_INVALID std::uint32_t{0xC0000039L}
#define STATUS_SUCCESS std::uint32_t{0U}
#define STATUS_UNEXPECTED_IO_ERROR std::uint32_t{0xC00000E9L} #define STATUS_UNEXPECTED_IO_ERROR std::uint32_t{0xC00000E9L}
#define CONVERT_STATUS_NOT_IMPLEMENTED(e) \ #define CONVERT_STATUS_NOT_IMPLEMENTED(e) \

View File

@@ -1,112 +0,0 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
#ifndef REPERTORY_INCLUDE_DB_I_FILE_DB_HPP_
#define REPERTORY_INCLUDE_DB_I_FILE_DB_HPP_
#include "types/repertory.hpp"
namespace repertory {
class i_file_db {
INTERFACE_SETUP(i_file_db);
public:
struct directory_data final {
std::string api_path;
std::pair<utils::encryption::kdf_config, utils::encryption::kdf_config>
kdf_configs;
std::string source_path;
};
struct file_info final {
std::string api_path;
bool directory{};
std::string source_path;
};
struct file_data final {
std::string api_path;
std::uint64_t file_size{};
std::vector<
std::array<unsigned char, crypto_aead_xchacha20poly1305_IETF_NPUBBYTES>>
iv_list;
std::pair<utils::encryption::kdf_config, utils::encryption::kdf_config>
kdf_configs;
std::string source_path;
};
public:
[[nodiscard]] virtual auto add_or_update_directory(const directory_data &data)
-> api_error = 0;
[[nodiscard]] virtual auto add_or_update_file(const file_data &data)
-> api_error = 0;
virtual void clear() = 0;
[[nodiscard]] virtual auto count() const -> std::uint64_t = 0;
virtual void enumerate_item_list(
std::function<void(const std::vector<i_file_db::file_info> &)> callback,
stop_type_callback stop_requested_cb) const = 0;
[[nodiscard]] virtual auto get_api_path(std::string_view source_path,
std::string &api_path) const
-> api_error = 0;
[[nodiscard]] virtual auto
get_directory_api_path(std::string_view source_path,
std::string &api_path) const -> api_error = 0;
[[nodiscard]] virtual auto get_directory_data(std::string_view api_path,
directory_data &data) const
-> api_error = 0;
[[nodiscard]] virtual auto
get_directory_source_path(std::string_view api_path,
std::string &source_path) const -> api_error = 0;
[[nodiscard]] virtual auto get_file_api_path(std::string_view source_path,
std::string &api_path) const
-> api_error = 0;
[[nodiscard]] virtual auto get_file_data(std::string_view api_path,
file_data &data) const
-> api_error = 0;
[[nodiscard]] virtual auto
get_file_source_path(std::string_view api_path,
std::string &source_path) const -> api_error = 0;
[[nodiscard]] virtual auto
get_item_list(stop_type_callback stop_requested_cb) const
-> std::vector<file_info> = 0;
[[nodiscard]] virtual auto get_source_path(std::string_view api_path,
std::string &source_path) const
-> api_error = 0;
[[nodiscard]] virtual auto remove_item(std::string_view api_path)
-> api_error = 0;
};
} // namespace repertory
#endif // REPERTORY_INCLUDE_DB_I_FILE_DB_HPP_

View File

@@ -1,83 +0,0 @@
/*
Copyright <2018-2025> <scott.e.graves@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
#ifndef REPERTORY_INCLUDE_DB_I_FILE_MGR_DB_HPP_
#define REPERTORY_INCLUDE_DB_I_FILE_MGR_DB_HPP_
#include "types/repertory.hpp"
namespace repertory {
class i_file_mgr_db {
INTERFACE_SETUP(i_file_mgr_db);
public:
struct resume_entry final {
std::string api_path;
std::uint64_t chunk_size{};
boost::dynamic_bitset<> read_state;
std::string source_path;
};
struct upload_active_entry final {
std::string api_path;
std::string source_path;
};
using upload_entry = upload_active_entry;
public:
[[nodiscard]] virtual auto add_resume(const resume_entry &entry) -> bool = 0;
[[nodiscard]] virtual auto add_upload(const upload_entry &entry) -> bool = 0;
[[nodiscard]] virtual auto add_upload_active(const upload_active_entry &entry)
-> bool = 0;
virtual void clear() = 0;
[[nodiscard]] virtual auto get_next_upload() const
-> std::optional<upload_entry> = 0;
[[nodiscard]] virtual auto get_resume_list() const
-> std::vector<resume_entry> = 0;
[[nodiscard]] virtual auto get_upload(std::string_view api_path) const
-> std::optional<upload_entry> = 0;
[[nodiscard]] virtual auto get_upload_active_list() const
-> std::vector<upload_active_entry> = 0;
[[nodiscard]] virtual auto remove_resume(std::string_view api_path)
-> bool = 0;
[[nodiscard]] virtual auto remove_upload(std::string_view api_path)
-> bool = 0;
[[nodiscard]] virtual auto remove_upload_active(std::string_view api_path)
-> bool = 0;
[[nodiscard]] virtual auto rename_resume(std::string_view from_api_path,
std::string_view to_api_path)
-> bool = 0;
};
} // namespace repertory
#endif // REPERTORY_INCLUDE_DB_I_FILE_MGR_DB_HPP_

Some files were not shown because too many files have changed in this diff Show More