mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2026-09-22 15:29:03 -07:00
Compare commits
1281
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4f5dab30e8 | ||
|
|
6bf7bb67b3 | ||
|
|
f5ea9422a6 | ||
|
|
3dcbde5185 | ||
|
|
66479cd2da | ||
|
|
2e6fe413b6 | ||
|
|
ca3d17ddb0 | ||
|
|
2e7e4a58a8 | ||
|
|
b2bd72953a | ||
|
|
2f0cae4447 | ||
|
|
121ce0e8b9 | ||
|
|
53acb42f11 | ||
|
|
54b61f3927 | ||
|
|
4097f646a9 | ||
|
|
9a0f635045 | ||
|
|
50bfed682a | ||
|
|
cb65567de3 | ||
|
|
5951981622 | ||
|
|
1f6a1fd51f | ||
|
|
edcc066d25 | ||
|
|
0797626b3e | ||
|
|
4bcff9d3e3 | ||
|
|
64cc25baf6 | ||
|
|
8304ec79fe | ||
|
|
fcb016b9c1 | ||
|
|
75b51ec229 | ||
|
|
5640b82252 | ||
|
|
ab9efc722c | ||
|
|
4706ed9682 | ||
|
|
bf426497b0 | ||
|
|
afd8a828df | ||
|
|
7192b65a2c | ||
|
|
7be64c6bac | ||
|
|
4a517e2d27 | ||
|
|
6f57a77c43 | ||
|
|
8271fcadf2 | ||
|
|
111228128f | ||
|
|
fd98e0baa3 | ||
|
|
b6d5fb6fce | ||
|
|
c02c649cd3 | ||
|
|
ace5352388 | ||
|
|
deee555fbf | ||
|
|
404fa9b2f9 | ||
|
|
4988d53d0e | ||
|
|
14faaaa13e | ||
|
|
8ae153b44c | ||
|
|
f1c6a64035 | ||
|
|
0e637a1de6 | ||
|
|
e09e7b5c9b | ||
|
|
052ea55636 | ||
|
|
378dd27361 | ||
|
|
a4904c97b0 | ||
|
|
407bfdfd0b | ||
|
|
85eec45372 | ||
|
|
fede9b9afb | ||
|
|
a3a45a75a7 | ||
|
|
a001eba98f | ||
|
|
af7c882315 | ||
|
|
eec53a5866 | ||
|
|
174130c080 | ||
|
|
f76e6b916c | ||
|
|
3dffacc024 | ||
|
|
29f5464dbd | ||
|
|
346dc907a1 | ||
|
|
a3b1a346c4 | ||
|
|
9c2d5cd74c | ||
|
|
fc5c3ec220 | ||
|
|
fe29cd8888 | ||
|
|
b1427153aa | ||
|
|
2ed9b86852 | ||
|
|
f87d5477f6 | ||
|
|
544809e738 | ||
|
|
d678338b28 | ||
|
|
80f5e81d8c | ||
|
|
9a9a8c09c3 | ||
|
|
ac20c320cf | ||
|
|
1c755845f0 | ||
|
|
7b44e0a3a5 | ||
|
|
b79592c71f | ||
|
|
f0522a7cdb | ||
|
|
8c3a777108 | ||
|
|
23d395d781 | ||
|
|
7b747aff3b | ||
|
|
484d9e0d8c | ||
|
|
55aa87c372 | ||
|
|
aa586efbb5 | ||
|
|
0e8ec661c8 | ||
|
|
d2361a9a66 | ||
|
|
910334c2a5 | ||
|
|
4ca5c9b820 | ||
|
|
1f3a04f303 | ||
|
|
af7eae5d9e | ||
|
|
ea5c91b0e9 | ||
|
|
20f7311622 | ||
|
|
dd6e69f530 | ||
|
|
78b25f4ae2 | ||
|
|
895b06033d | ||
|
|
b047038ca1 | ||
|
|
7ec42461d8 | ||
|
|
e49b347a8f | ||
|
|
7faf30d0cc | ||
|
|
d9507dd895 | ||
|
|
2c57f85e25 | ||
|
|
a840b94e0d | ||
|
|
03aa33bba7 | ||
|
|
a2340bf60c | ||
|
|
e918ec44d5 | ||
|
|
34777b6bb4 | ||
|
|
97db010112 | ||
|
|
e81053aed7 | ||
|
|
91428eacae | ||
|
|
936801a51b | ||
|
|
8f1b213994 | ||
|
|
7f47b2ba8f | ||
|
|
eac140aa73 | ||
|
|
d9a7f62a5c | ||
|
|
38f4d124b0 | ||
|
|
0ad6b19705 | ||
|
|
ae7ee51b9d | ||
|
|
294af67370 | ||
|
|
0f0e6b3b16 | ||
|
|
c653e764b8 | ||
|
|
35f7bf2291 | ||
|
|
ccb9a45d21 | ||
|
|
68a96344ed | ||
|
|
67648579b5 | ||
|
|
fa601636aa | ||
|
|
d2b4b6e91d | ||
|
|
a77009e4f0 | ||
|
|
9c2bd25d86 | ||
|
|
22b47f851e | ||
|
|
2342926442 | ||
|
|
458c5c9709 | ||
|
|
4f6b9038f1 | ||
|
|
2ba50f4544 | ||
|
|
50daf9537b | ||
|
|
20007a73df | ||
|
|
7f5850a943 | ||
|
|
8e5d81728f | ||
|
|
300b05aaf0 | ||
|
|
595a70c5ed | ||
|
|
00dca6a2c0 | ||
|
|
9e53fe4b12 | ||
|
|
fb162084f5 | ||
|
|
1d9f06d4ac | ||
|
|
48311896f8 | ||
|
|
616698fa91 | ||
|
|
b8e3ca6a2c | ||
|
|
f231561276 | ||
|
|
ce5556a677 | ||
|
|
8d4cb1e05b | ||
|
|
45773f0b6e | ||
|
|
5c27068b80 | ||
|
|
30c4484731 | ||
|
|
c21ff23477 | ||
|
|
76ba89060b | ||
|
|
77aa8c7bf8 | ||
|
|
bf0fe2c09a | ||
|
|
19ccc98f91 | ||
|
|
e3f65ff359 | ||
|
|
47367673f9 | ||
|
|
46a8cd7b67 | ||
|
|
946d96f482 | ||
|
|
b92fb93f8f | ||
|
|
6b74bf289a | ||
|
|
fe221b9359 | ||
|
|
ab75985766 | ||
|
|
6df7366753 | ||
|
|
1ef7ea0fe6 | ||
|
|
18714c7785 | ||
|
|
a75d06ad64 | ||
|
|
4861b7df1e | ||
|
|
0d21250b62 | ||
|
|
3bbf194594 | ||
|
|
fb75369597 | ||
|
|
a8b5c89efa | ||
|
|
80f82132dd | ||
|
|
7faf705e10 | ||
|
|
1f557b516f | ||
|
|
aecd7fdace | ||
|
|
dad1a1eda6 | ||
|
|
f028213c7f | ||
|
|
b4f018b918 | ||
|
|
20a67ab1de | ||
|
|
02908e5202 | ||
|
|
97d20a1155 | ||
|
|
315bf240fc | ||
|
|
c6b7c263d2 | ||
|
|
e51e516f85 | ||
|
|
069d7c1862 | ||
|
|
4b9724c8fa | ||
|
|
f2d4a882d9 | ||
|
|
6196e87303 | ||
|
|
d96d3b27d2 | ||
|
|
0cf5ab9375 | ||
|
|
4f2717c244 | ||
|
|
6113bad61e | ||
|
|
895b8211e1 | ||
|
|
cb2de5aae1 | ||
|
|
ad1fc5fb3d | ||
|
|
a28a6d1bf5 | ||
|
|
6921628610 | ||
|
|
5d18a57518 | ||
|
|
b62b9e28b9 | ||
|
|
be5baa76b9 | ||
|
|
a6d2e80b08 | ||
|
|
b0ba0d7227 | ||
|
|
bc0a42651b | ||
|
|
a16d6dbc01 | ||
|
|
7b7d39becc | ||
|
|
1ce37e7770 | ||
|
|
3e6a22c3d8 | ||
|
|
493cc4fe4f | ||
|
|
7aa451bec1 | ||
|
|
012443acfa | ||
|
|
dd3dbb6f24 | ||
|
|
223fa90e6c | ||
|
|
ee87eb3101 | ||
|
|
facca364fb | ||
|
|
1d65c1e43e | ||
|
|
1ba4ccd98d | ||
|
|
934aa93ef8 | ||
|
|
88f08fa58c | ||
|
|
f51bfdb666 | ||
|
|
ffd34a3e46 | ||
|
|
190d836b42 | ||
|
|
fad7123417 | ||
|
|
006ced2900 | ||
|
|
ebf66b7920 | ||
|
|
71d68e9a60 | ||
|
|
a78ac17d10 | ||
|
|
36219c59ae | ||
|
|
69efa924e2 | ||
|
|
3d72a43a19 | ||
|
|
7ad264df92 | ||
|
|
024824c2fe | ||
|
|
5db2abab73 | ||
|
|
a4d762d404 | ||
|
|
74f0525470 | ||
|
|
ba6200fb96 | ||
|
|
282d7c7f9d | ||
|
|
48ff61b392 | ||
|
|
a061c86594 | ||
|
|
a18e370d48 | ||
|
|
e9565cf97c | ||
|
|
3b7958aec1 | ||
|
|
20746b2754 | ||
|
|
b16d9372b8 | ||
|
|
f208007226 | ||
|
|
dcd583f62b | ||
|
|
3616c4026b | ||
|
|
03a198a1b5 | ||
|
|
67526d494a | ||
|
|
a51029a503 | ||
|
|
8bd96d360f | ||
|
|
f754d716d0 | ||
|
|
70d24fc7eb | ||
|
|
40f6508717 | ||
|
|
7d5a60b44e | ||
|
|
2264452ad8 | ||
|
|
73e3287fd6 | ||
|
|
f33e706887 | ||
|
|
686653509a | ||
|
|
ce84de605d | ||
|
|
7e4e7ef753 | ||
|
|
b94fa2d95d | ||
|
|
c9c8e95d60 | ||
|
|
d216a3739f | ||
|
|
092fc268d3 | ||
|
|
1da9e24905 | ||
|
|
158d24545a | ||
|
|
96aa893df4 | ||
|
|
4516e6a340 | ||
|
|
2416c42df7 | ||
|
|
4f07599992 | ||
|
|
6ceb8eac97 | ||
|
|
3ad352c08e | ||
|
|
9d73c346b7 | ||
|
|
4abf90247d | ||
|
|
594d227f92 | ||
|
|
7fd112eb4f | ||
|
|
000f3d5a8c | ||
|
|
3f3e684811 | ||
|
|
a841e96bd2 | ||
|
|
3ff4d67d21 | ||
|
|
b09956ae59 | ||
|
|
4395574706 | ||
|
|
1dae4c4c5f | ||
|
|
d31b3a08db | ||
|
|
0f3a5148b1 | ||
|
|
d3f1ec74ba | ||
|
|
3470ceb13d | ||
|
|
648f0915e5 | ||
|
|
21e20f2104 | ||
|
|
f43bc3d10c | ||
|
|
3ad36c773d | ||
|
|
22484c708f | ||
|
|
cab33dfc89 | ||
|
|
e1db40d932 | ||
|
|
97681b589e | ||
|
|
09f1ee77e1 | ||
|
|
0f13363895 | ||
|
|
7c1bfc97c4 | ||
|
|
2a647d497a | ||
|
|
70f9fe0412 | ||
|
|
0753556aa3 | ||
|
|
a5bd262b3a | ||
|
|
4ddb1fbe58 | ||
|
|
195d5b47f0 | ||
|
|
496e69e666 | ||
|
|
0f63783592 | ||
|
|
db6e698245 | ||
|
|
b114896e7b | ||
|
|
17b48d78cb | ||
|
|
e347f895b8 | ||
|
|
d119547a95 | ||
|
|
85f23356a3 | ||
|
|
3187c2ffce | ||
|
|
9bdd564bdc | ||
|
|
7f3b15011e | ||
|
|
bbba390e97 | ||
|
|
ad044f9272 | ||
|
|
f8a4a5d6af | ||
|
|
5a62824049 | ||
|
|
bfa4bd2584 | ||
|
|
1e62d69762 | ||
|
|
bed6557a6d | ||
|
|
0d3ed4769e | ||
|
|
bee3ea79f0 | ||
|
|
ca4e35d52c | ||
|
|
6623aa3a7d | ||
|
|
67360aaeef | ||
|
|
3e21edb891 | ||
|
|
6e6fc9a704 | ||
|
|
2833d0e4f4 | ||
|
|
95224379aa | ||
|
|
86f402edb7 | ||
|
|
6bf7b4d9ba | ||
|
|
2f2f864aa8 | ||
|
|
ebe8fdb08e | ||
|
|
c479cba71a | ||
|
|
650fc0c74b | ||
|
|
b90ad51723 | ||
|
|
4237830a97 | ||
|
|
4fab227c23 | ||
|
|
e4147f7b80 | ||
|
|
d4ee95e445 | ||
|
|
a842ad8b61 | ||
|
|
3a209e2930 | ||
|
|
ccb0fa748f | ||
|
|
bf8c9d0124 | ||
|
|
0e94891e5b | ||
|
|
564d29e445 | ||
|
|
06b2ce9f30 | ||
|
|
ab208bb8f9 | ||
|
|
eb422ddf08 | ||
|
|
c668990b4d | ||
|
|
f079f8bc82 | ||
|
|
c21636b295 | ||
|
|
3cd413ed1f | ||
|
|
8518d28dc4 | ||
|
|
52de8ff62d | ||
|
|
d3d738f93b | ||
|
|
837f15d01b | ||
|
|
f6d52dd96c | ||
|
|
9aff094b6f | ||
|
|
4b3b847c7f | ||
|
|
a55216310a | ||
|
|
44d0e81572 | ||
|
|
f9500ca5ff | ||
|
|
e822811f29 | ||
|
|
02a3929472 | ||
|
|
41c4642a21 | ||
|
|
f319078694 | ||
|
|
a548c7ea71 | ||
|
|
6e34b192e3 | ||
|
|
969e8ff0ec | ||
|
|
66a8c01d0e | ||
|
|
21986038be | ||
|
|
3eb7ed2892 | ||
|
|
2410389912 | ||
|
|
a8ead37312 | ||
|
|
ecec45697b | ||
|
|
2c5ded78e3 | ||
|
|
d51b82d0e6 | ||
|
|
815c20c822 | ||
|
|
92838fa1b2 | ||
|
|
307c4ed4b6 | ||
|
|
14c0ccc94c | ||
|
|
4aea588eef | ||
|
|
4c4a360469 | ||
|
|
a0253a0970 | ||
|
|
7662ffb64a | ||
|
|
9375c48e33 | ||
|
|
5494c44a30 | ||
|
|
3f19712178 | ||
|
|
4a15671e84 | ||
|
|
51b2f284f0 | ||
|
|
055be92ef0 | ||
|
|
67c2336176 | ||
|
|
6667c57e89 | ||
|
|
4edeacd1f0 | ||
|
|
01bd4373b6 | ||
|
|
2db20f0a6c | ||
|
|
7934fef84c | ||
|
|
58c80ff0ab | ||
|
|
4b6ff77fea | ||
|
|
a0cc7babdf | ||
|
|
cf77a6a805 | ||
|
|
b3da8d9aa1 | ||
|
|
d8272b7370 | ||
|
|
5329326591 | ||
|
|
06bc1e5e6b | ||
|
|
9b31fe1e98 | ||
|
|
0ae551a970 | ||
|
|
8e733ff0da | ||
|
|
52b6355a54 | ||
|
|
54fb480ade | ||
|
|
b292d4f06d | ||
|
|
076ed83b81 | ||
|
|
b12bc59b57 | ||
|
|
8e5522647a | ||
|
|
3fd42ad2a0 | ||
|
|
99cd9d174b | ||
|
|
f71a85a675 | ||
|
|
b9de551e0c | ||
|
|
0e87c21d87 | ||
|
|
2c2574e182 | ||
|
|
5c3daca2a0 | ||
|
|
5232af0a61 | ||
|
|
7f835b414a | ||
|
|
8895ad182f | ||
|
|
3784b66cdb | ||
|
|
0c7afe3d0a | ||
|
|
478cd2840b | ||
|
|
fbac205e65 | ||
|
|
697011df7b | ||
|
|
67e8f344ac | ||
|
|
5fb8d2aa37 | ||
|
|
d50ec3094f | ||
|
|
7473d1942d | ||
|
|
e22c80dce6 | ||
|
|
8affcb0e3d | ||
|
|
16dd3fd7af | ||
|
|
a46fb73260 | ||
|
|
db6045fe9c | ||
|
|
4efd206dd4 | ||
|
|
b0889e1454 | ||
|
|
69de477d0b | ||
|
|
5eb3cd2699 | ||
|
|
226bb1d4ef | ||
|
|
8753829c1b | ||
|
|
55e9320299 | ||
|
|
c4af2d79c5 | ||
|
|
ce708df877 | ||
|
|
342fa9d33f | ||
|
|
fd9a23f30f | ||
|
|
d72b98b434 | ||
|
|
813fb7a394 | ||
|
|
6d532944bd | ||
|
|
ba2a4a605c | ||
|
|
d45f280cb7 | ||
|
|
7cf0d7a5d8 | ||
|
|
8b77ef538a | ||
|
|
e366661a09 | ||
|
|
8636fe3c33 | ||
|
|
08e0da7921 | ||
|
|
27021ff425 | ||
|
|
ecedddb19b | ||
|
|
ee73ac1a74 | ||
|
|
169250d484 | ||
|
|
4fea4fc76f | ||
|
|
6fa849c956 | ||
|
|
3cef1b0842 | ||
|
|
08b1ceb9a1 | ||
|
|
af0a9118c1 | ||
|
|
568da750bb | ||
|
|
d5f6f6b98e | ||
|
|
10ac0c2e1a | ||
|
|
1ffadf31de | ||
|
|
224ee88b91 | ||
|
|
b42067e654 | ||
|
|
c9e08c951a | ||
|
|
42f760d72f | ||
|
|
c68acebe31 | ||
|
|
4b7c5159a3 | ||
|
|
4a8daf43e4 | ||
|
|
182148a26c | ||
|
|
af715ca0ff | ||
|
|
990ecb5eb1 | ||
|
|
7c88b3f124 | ||
|
|
f4053c8af3 | ||
|
|
af3f8b00a4 | ||
|
|
db06c98608 | ||
|
|
332a7d1488 | ||
|
|
48f9f7de14 | ||
|
|
35d37559c8 | ||
|
|
1a6c0a5f12 | ||
|
|
2c8f032a76 | ||
|
|
bcc766f70d | ||
|
|
dcadc2c4d4 | ||
|
|
55ed5d61e0 | ||
|
|
86f424130d | ||
|
|
4e9b69f0a7 | ||
|
|
0a17738f39 | ||
|
|
fb7b07fc42 | ||
|
|
1d2130610c | ||
|
|
0b04f772ef | ||
|
|
5c73fe9304 | ||
|
|
2af105000f | ||
|
|
cadfa0bc4d | ||
|
|
f2521c8536 | ||
|
|
d353e0c6fa | ||
|
|
346731ea5d | ||
|
|
2ef38d84d1 | ||
|
|
5630d48a66 | ||
|
|
b44a9b8b62 | ||
|
|
f5b0fc6a8f | ||
|
|
a20bc772f2 | ||
|
|
010c4b0d64 | ||
|
|
dcb4bc5ef4 | ||
|
|
47e05d5a23 | ||
|
|
17abb58651 | ||
|
|
05b60bd818 | ||
|
|
5998f1497a | ||
|
|
269c8d415a | ||
|
|
cd191778c2 | ||
|
|
3e7aacf301 | ||
|
|
6b113c8270 | ||
|
|
a2162c01e3 | ||
|
|
870c221690 | ||
|
|
87ad848202 | ||
|
|
b736b6835d | ||
|
|
91bec01da8 | ||
|
|
a0c3f432c4 | ||
|
|
b5c51796b9 | ||
|
|
724002f142 | ||
|
|
377a9d6f41 | ||
|
|
003b4cf876 | ||
|
|
b12dd19d44 | ||
|
|
82c6454950 | ||
|
|
969c0ee6e3 | ||
|
|
c092b63987 | ||
|
|
47efee1df4 | ||
|
|
18a5452de8 | ||
|
|
c3794ba8d4 | ||
|
|
75a5b4438b | ||
|
|
185a3a2c76 | ||
|
|
3fcef51137 | ||
|
|
f959c2f4ca | ||
|
|
b7a6e106fd | ||
|
|
7dca7fac11 | ||
|
|
4ef2d4cc8e | ||
|
|
55bbd2aec6 | ||
|
|
36b4659f77 | ||
|
|
0b5666bde2 | ||
|
|
e1c72e6d51 | ||
|
|
5799d9a15b | ||
|
|
74404f56ee | ||
|
|
e53abe8bde | ||
|
|
29ef10e759 | ||
|
|
1e679cc94d | ||
|
|
96ba1079b2 | ||
|
|
f190df8621 | ||
|
|
6b078ee935 | ||
|
|
3de5cbd105 | ||
|
|
6faee38395 | ||
|
|
a44fd40889 | ||
|
|
5b7e1ceb68 | ||
|
|
d9d58c8bde | ||
|
|
d34481d830 | ||
|
|
307befa892 | ||
|
|
7647c8e8d1 | ||
|
|
b2d71f900a | ||
|
|
9e4ce68444 | ||
|
|
4920b68d2c | ||
|
|
5ce3d1e7a1 | ||
|
|
8140264cb6 | ||
|
|
a0acc82e99 | ||
|
|
98e532de20 | ||
|
|
e1ee3eb494 | ||
|
|
4a485df0c7 | ||
|
|
2522d29fdc | ||
|
|
560d6fba1b | ||
|
|
223ec0c59d | ||
|
|
6bc785e771 | ||
|
|
fb8cbb69aa | ||
|
|
861147b845 | ||
|
|
763caaebab | ||
|
|
276259394a | ||
|
|
46c0d1a732 | ||
|
|
31d2dcec17 | ||
|
|
c9234ee027 | ||
|
|
9a8d715666 | ||
|
|
8d474e1395 | ||
|
|
52e3d9b804 | ||
|
|
8f5cc4ed33 | ||
|
|
059d05f41f | ||
|
|
c86b91c5f0 | ||
|
|
e42848d37d | ||
|
|
bf7dddbd84 | ||
|
|
95983ba168 | ||
|
|
c97943d69d | ||
|
|
b813ea70a5 | ||
|
|
e734019216 | ||
|
|
b7d9290de9 | ||
|
|
b1a30ae4ff | ||
|
|
8283a6d6d4 | ||
|
|
36adae3d82 | ||
|
|
f176e2539e | ||
|
|
d6bfb8889a | ||
|
|
24fb1ced3c | ||
|
|
82b8a4f584 | ||
|
|
979bca57d5 | ||
|
|
93fd93da5c | ||
|
|
508527f7cd | ||
|
|
64634c916c | ||
|
|
34cc26176c | ||
|
|
e2840b0eb8 | ||
|
|
f4edb092b7 | ||
|
|
8caede300c | ||
|
|
f9c6ee0181 | ||
|
|
f5cc7746b6 | ||
|
|
41a4690372 | ||
|
|
9d57ccd7b1 | ||
|
|
ad60d708e1 | ||
|
|
f79af92599 | ||
|
|
f368fdbc76 | ||
|
|
2f3ea8882b | ||
|
|
e32fecd16d | ||
|
|
dca77cb0d2 | ||
|
|
9ec6c2901c | ||
|
|
e915d10953 | ||
|
|
ddb2759a52 | ||
|
|
28cf1423c9 | ||
|
|
0fb9d43998 | ||
|
|
91e7ce87f0 | ||
|
|
e59790b401 | ||
|
|
d0b8f76ecb | ||
|
|
fe05372c67 | ||
|
|
4394ab58d7 | ||
|
|
fcaf008beb | ||
|
|
1e15a510fd | ||
|
|
9de2b90528 | ||
|
|
a71e0bf551 | ||
|
|
280cc77e23 | ||
|
|
a681fbf533 | ||
|
|
448df73a35 | ||
|
|
1982071d46 | ||
|
|
4dfb15e37c | ||
|
|
154b72b4f1 | ||
|
|
de4ee08ad4 | ||
|
|
5ae862ff54 | ||
|
|
859031dcd9 | ||
|
|
39e1aabd2a | ||
|
|
9f499827af | ||
|
|
9bde5b9065 | ||
|
|
acaebbd75e | ||
|
|
3ed6379c4c | ||
|
|
b4eb39fb16 | ||
|
|
6be0e67a5c | ||
|
|
abad7d8fe1 | ||
|
|
72cf3f2315 | ||
|
|
c02ea1bf60 | ||
|
|
b9d0cf9c89 | ||
|
|
80cfc2bd26 | ||
|
|
08d85d4ae1 | ||
|
|
43b141547e | ||
|
|
d658c1187c | ||
|
|
1f4c00c7b5 | ||
|
|
bbe97dd080 | ||
|
|
9724e04e6e | ||
|
|
364ac499eb | ||
|
|
8b15fa2422 | ||
|
|
41cb6fb0d5 | ||
|
|
5d8bd674cd | ||
|
|
2e6cda38f6 | ||
|
|
6e8fcce777 | ||
|
|
559e8a907b | ||
|
|
024649c175 | ||
|
|
7fb3711ed6 | ||
|
|
1dff0c6b5f | ||
|
|
768c6242cd | ||
|
|
bca650e1fc | ||
|
|
0bf67bf67c | ||
|
|
99ef1e2696 | ||
|
|
57b6b790c1 | ||
|
|
3593a2d49f | ||
|
|
dad33c9bde | ||
|
|
683d332abc | ||
|
|
ac6d532651 | ||
|
|
d1a306a021 | ||
|
|
4cd1dcfee1 | ||
|
|
3ab31545f4 | ||
|
|
197bbbb267 | ||
|
|
58adecc3a1 | ||
|
|
830d96d2ed | ||
|
|
f027d8f519 | ||
|
|
8b44ac984c | ||
|
|
5542dbcc0b | ||
|
|
0ca8ae7970 | ||
|
|
0b83f850e4 | ||
|
|
06399c86f6 | ||
|
|
663ed73768 | ||
|
|
d37dce508a | ||
|
|
2e882b4af2 | ||
|
|
1aa31e0414 | ||
|
|
a477688e51 | ||
|
|
5533b82450 | ||
|
|
1bd2fecbf6 | ||
|
|
8b5ac93388 | ||
|
|
2fd50b104c | ||
|
|
0088cef2fc | ||
|
|
85cab3d0f1 | ||
|
|
f89cde8186 | ||
|
|
e171384c19 | ||
|
|
c89683fb0f | ||
|
|
e7ed1e4f93 | ||
|
|
c6d5dc1534 | ||
|
|
9ae8b0b3b6 | ||
|
|
327eb9013b | ||
|
|
42f290b037 | ||
|
|
b7fb4eeda5 | ||
|
|
f03aae7a34 | ||
|
|
78eb35010f | ||
|
|
fd9afdce34 | ||
|
|
21e4e2924e | ||
|
|
e3d1565261 | ||
|
|
557b92a167 | ||
|
|
e299eea2b1 | ||
|
|
e1f1d05e08 | ||
|
|
125257f264 | ||
|
|
2d49931300 | ||
|
|
8426677c55 | ||
|
|
d322f332e8 | ||
|
|
f8359f554b | ||
|
|
60fb8c941a | ||
|
|
cb6a99408c | ||
|
|
d865c42ef8 | ||
|
|
69c590ff81 | ||
|
|
72533cbd13 | ||
|
|
c974a159af | ||
|
+6 |
54efb62731 | ||
|
|
464bca5d20 | ||
|
|
7637ef10d7 | ||
|
+6 |
0e5651f353 | ||
|
|
ffb63f3ee5 | ||
|
|
0859a0d1e5 | ||
|
|
e41a6f2ec4 | ||
|
|
c53c6bd9c3 | ||
|
|
707d7deed2 | ||
|
|
ed0a388bcd | ||
|
|
826a1ee346 | ||
|
|
d4e63fcdfe | ||
|
|
0806b881ea | ||
|
|
5becb41bd4 | ||
|
|
ead68038a3 | ||
|
|
b8b5d0bff8 | ||
|
|
e18172d434 | ||
|
|
a15883d49b | ||
|
|
714ef59814 | ||
|
|
1d095e81d9 | ||
|
|
d976a9f5a0 | ||
|
|
f2060e0c76 | ||
|
|
b81ad9a84d | ||
|
|
53bc05fe89 | ||
|
|
a6d5c452d5 | ||
|
|
515fdc22a5 | ||
|
|
424e276150 | ||
|
|
b071d6bbec | ||
|
|
27a9cc6254 | ||
|
|
bb9ad5e41a | ||
|
|
d91f80464d | ||
|
|
d826ddb294 | ||
|
|
a7600c8072 | ||
|
|
82a9122fc3 | ||
|
|
0e9e7f2ebc | ||
|
|
14671009f8 | ||
|
|
802c9907a1 | ||
|
|
88b96265d7 | ||
|
|
0bc10923a1 | ||
|
|
0dc92c2d7b | ||
|
|
04a3206e53 | ||
|
|
98360d94a5 | ||
|
|
a9c8307d97 | ||
|
|
581489f67b | ||
|
|
5e89d5a03f | ||
|
|
d71d051c53 | ||
|
|
d2aeff6752 | ||
|
|
36be14de06 | ||
|
|
f9af9a15f2 | ||
|
|
4674bb5c8b | ||
|
|
a6b764bf7c | ||
|
|
c6f07ee19f | ||
|
|
e36127283c | ||
|
|
230ae6bd16 | ||
|
|
5b5ef07350 | ||
|
|
fb6af1971b | ||
|
|
41f9bdc5db | ||
|
|
12e64aa191 | ||
|
|
22ab673480 | ||
|
|
03841dcb81 | ||
|
|
64c2634b71 | ||
|
|
f1019dc4ee | ||
|
|
50ede37a58 | ||
|
|
60ddca1354 | ||
|
|
19f1f02d91 | ||
|
|
5a36b315a3 | ||
|
|
b67cd2cf7a | ||
|
|
97492eec7c | ||
|
|
fdc2e0f692 | ||
|
|
2672d037a8 | ||
|
|
ee663d61cd | ||
|
|
008a768f15 | ||
|
|
33b2e6a856 | ||
|
|
6540107ccb | ||
|
|
1ce08a62a9 | ||
|
|
b82bdc7782 | ||
|
|
e0e21dfdda | ||
|
|
981d09cc28 | ||
|
|
2fbd5dc828 | ||
|
|
931b02dbb1 | ||
|
|
0962af5e72 | ||
|
|
9b7d13476f | ||
|
|
3efb731b40 | ||
|
|
ce989d0d67 | ||
|
|
405f96c4b7 | ||
|
|
5ad0212b93 | ||
|
|
30799dd73f | ||
|
|
8ebe2c563a | ||
|
|
57588dec7a | ||
|
|
9a8b74d744 | ||
|
|
e11d70e408 | ||
|
|
60d2138f30 | ||
|
|
259ee610a6 | ||
|
|
4192f6a6d9 | ||
|
|
54decda7a4 | ||
|
|
f42841a6ab | ||
|
|
524363dcf7 | ||
|
|
17f6b3a10b | ||
|
|
da71e2524c | ||
|
|
f3da2b4031 | ||
|
|
e2dad367b4 | ||
|
|
9b7ff43118 | ||
|
|
adfbbc3fb0 | ||
|
|
f621261ff9 | ||
|
|
00d55fc4b4 | ||
|
|
74dc41c7c7 | ||
|
|
925599cab0 | ||
|
|
a43048a1ad | ||
|
|
d6c5a6cd59 | ||
|
|
54f339f0c0 | ||
|
|
115b9147b9 | ||
|
|
6b5c9b1b8e | ||
|
|
06b487119d | ||
|
|
4ca3f27293 | ||
|
|
785a121825 | ||
|
|
f73e51e94c | ||
|
|
e6802690b8 | ||
|
|
595e033776 | ||
|
|
e5fc89821f | ||
|
|
411e54023a | ||
|
|
8f05c85838 | ||
|
|
e4cb74896b | ||
|
|
8e6e4ede6d | ||
|
|
0b03ad9a21 | ||
|
|
0e6a314d86 | ||
|
|
1b59712c48 | ||
|
|
7c8d5b0afd | ||
|
|
7f63d896f9 | ||
|
|
2115b18ae3 | ||
|
|
4ac3e7b864 | ||
|
|
03bd96d1d1 | ||
|
|
4a85cf5e74 | ||
|
|
a8fde9e530 | ||
|
|
1f9a15dd18 | ||
|
|
a872cc3418 | ||
|
|
646147c275 | ||
|
|
314099a267 | ||
|
|
ce9330e9bb | ||
|
|
b2a981f353 | ||
|
|
a372619fee | ||
|
|
12cdf39165 | ||
|
|
19c5343a0a | ||
|
|
4a4c8f84d5 | ||
|
|
f94208f493 | ||
|
|
f2cb9b36b2 | ||
|
|
1c5897895b | ||
|
|
64423f3a09 | ||
|
|
9fb3f04385 | ||
|
|
dd627cd7f4 | ||
|
|
eedf270127 | ||
|
|
a1af94f4e9 | ||
|
|
9f5bf06f95 | ||
|
|
40705caf7e | ||
|
|
9d5b9efc2f | ||
|
|
cc4251c5b7 | ||
|
|
8d74d34f2a | ||
|
|
7f996ea6d5 | ||
|
|
0aa4a4ba7a | ||
|
|
1ab36d891c | ||
|
|
5b5625a6f0 | ||
|
|
33a9cd02ba | ||
|
|
ca73651e12 | ||
|
|
fbd834716f | ||
|
|
914b4fae7b | ||
|
|
a1bf139188 | ||
|
|
a2f753986b | ||
|
|
d28f44335a | ||
|
|
0a925a6f21 | ||
|
|
132bff25df | ||
|
|
e1c16a8e68 | ||
|
|
4ee73fa272 | ||
|
|
30cfe65b39 | ||
|
|
40d5f9b5d2 | ||
|
|
809022b273 | ||
|
|
d0c0585553 | ||
|
|
d60929514b | ||
|
|
920e1f56c2 | ||
|
|
86122e1646 | ||
|
|
f9a27d6778 | ||
|
|
8b0be5c1fc | ||
|
|
686561dc5b | ||
|
|
b8b8e58586 | ||
|
|
54fd7c7e9a | ||
|
|
e060ae3176 | ||
|
|
7392a32cd8 | ||
|
|
8b724493cc | ||
|
|
9cb16accfd | ||
|
|
d5944ae69c | ||
|
|
6102c70855 | ||
|
|
6cc055dbba | ||
|
|
f51ce077a3 | ||
|
|
2de4c95446 | ||
|
|
63f70ba465 | ||
|
|
7ef68a9d6a | ||
|
|
90bf300bd8 | ||
|
|
f9528f1248 | ||
|
|
4861ec5a40 | ||
|
|
acf5b3579b | ||
|
|
d1460ab65b | ||
|
|
85bd773c55 | ||
|
|
ed3918b508 | ||
|
|
7c2766096c | ||
|
|
acd8b95114 | ||
|
|
34ff813e2a | ||
|
|
056cef7292 | ||
|
|
7c5f256d4a | ||
|
|
82749e4442 | ||
|
|
7890185e81 | ||
|
|
71fc0dd097 | ||
|
|
8373a0fa60 | ||
|
|
21264baaae | ||
|
|
703f9290c9 | ||
|
|
dd1b52c7d9 | ||
|
|
01003617cd | ||
|
|
bfe4bc2894 | ||
|
|
1c88037ea0 | ||
|
|
0027e6bdab | ||
|
|
87edbb2d3a | ||
|
|
5be92a96df | ||
|
|
0733af5239 | ||
|
|
216ed8c8ea | ||
|
|
58e3b8c5ad | ||
|
|
c6adfd9d67 | ||
|
|
672c58be01 | ||
|
|
6cf3b65953 | ||
|
|
936dda4773 | ||
|
|
047e327f01 | ||
|
|
032dc5c108 | ||
|
|
dc54e0e1c4 | ||
|
|
9124b0a7a3 | ||
|
|
dea47f601d | ||
|
|
67cf4c42d5 | ||
|
|
dc762196dc | ||
|
|
0a900dc275 | ||
|
|
6f58510431 | ||
|
|
666fb7ea2d | ||
|
|
f0778860e5 | ||
|
|
6aea546d6f | ||
|
|
e0a3291235 | ||
|
|
b88d7091c8 | ||
|
|
15cfa3bf62 | ||
|
|
9c9d1650d1 | ||
|
|
0ae09577f6 | ||
|
|
a59f82093a | ||
|
|
be95b56c10 | ||
|
|
ea0f7dde95 | ||
|
|
a59626c971 | ||
|
|
67a7534c21 | ||
|
|
39f3f5b2d9 | ||
|
|
eccc31a4b9 | ||
|
|
d31f238be0 | ||
|
|
27c26a77a2 | ||
|
|
ab503902c8 | ||
|
|
ed53b62f1b | ||
|
|
ad5ba54cd4 | ||
|
|
a6742b7f82 | ||
|
|
91bae4b1a8 | ||
|
|
4959d8079b | ||
|
|
a558bd9312 | ||
|
|
3e41163bbe | ||
|
|
10170b41c3 | ||
|
|
e0e91e8397 | ||
|
|
d2de0292cc | ||
|
|
0210ba9c13 | ||
|
|
117d7194af | ||
|
|
7587ef5136 | ||
|
|
087a797257 | ||
|
|
a02f42188c | ||
|
|
98e0bf22d3 | ||
|
|
1e2ff042b4 | ||
|
|
b8eb9196e8 | ||
|
|
db1df58955 | ||
|
|
2f5dc10399 | ||
|
|
4100615cd6 | ||
|
|
e27c3edaba | ||
|
|
3c9ea2b667 | ||
|
|
065f42af1d | ||
|
|
1d503f45ad | ||
|
|
5b5f9a069a | ||
|
|
77c7f9133f | ||
|
|
475281935e | ||
|
|
cdf248b1e2 | ||
|
|
85c0322313 | ||
|
|
ebc1ed4015 | ||
|
|
a25da7f771 | ||
|
|
c78f103ca6 | ||
|
|
4d50ed0b9d | ||
|
|
9ac2cfe611 | ||
|
|
85da0b419c | ||
|
|
3ddaa60de9 | ||
|
|
25641d956e | ||
|
|
3b8c33d49a | ||
|
|
f74a594e98 | ||
|
|
668ab8b85c | ||
|
|
98b190c626 | ||
|
|
9568a4f2b4 | ||
|
|
b41e0910b0 | ||
|
|
6448189d20 | ||
|
|
1694d510ec | ||
|
|
af7ccff846 | ||
|
|
381460fd97 | ||
|
|
b02a41751c | ||
|
|
e0acccc3c9 | ||
|
|
bcf27d78e5 | ||
|
|
ad54d0ed52 | ||
|
|
880a99adf8 | ||
|
|
3b11915eab | ||
|
|
82c799b9d1 | ||
|
|
99c0ca621b | ||
|
|
e1f60e3f83 | ||
|
|
5a6c229b27 | ||
|
|
86a436e9bf | ||
|
|
7516fd03a3 | ||
|
|
9826c20d1a | ||
|
|
12392b5190 | ||
|
|
4e57abb159 | ||
|
|
2b1ba60f24 | ||
|
|
638c868a07 | ||
|
|
b909330518 | ||
|
|
802072ec17 | ||
|
|
3c343eb775 | ||
|
|
8b67d06272 | ||
|
|
bc521504ca | ||
|
|
0797adf223 | ||
|
|
718039561e | ||
|
|
85698860ae | ||
|
|
50e131a4ff | ||
|
|
b733bb8ead | ||
|
|
e18d206248 | ||
|
|
2248b1f846 | ||
|
|
58e19e86f4 | ||
|
|
04d1862e3a | ||
|
|
7ecfc37854 | ||
|
|
21d7806064 | ||
|
|
c5b2d6cbc8 | ||
|
|
75c7e501ef | ||
|
|
dba0931b58 | ||
|
|
e0a7d6bfb9 | ||
|
|
add854d31b | ||
|
|
66b70a8043 | ||
|
|
1d1843bf3b | ||
|
|
0e23ba8f1a | ||
|
|
b6074da498 | ||
|
|
7e92d478a1 | ||
|
|
a9ec057b91 | ||
|
|
64a5e0d93f | ||
|
|
378e4ea34e | ||
|
|
ff670d044a | ||
|
|
fac212fafa | ||
|
|
e83c7e6691 | ||
|
|
e0c4877d76 | ||
|
|
457b5d2fe8 | ||
|
|
9cf8dacfbb | ||
|
|
b5d7d71e1e | ||
|
|
6fdc7be502 | ||
|
|
8fe858c5c6 | ||
|
|
0d7197381a | ||
|
|
651f45fe29 | ||
|
|
02270e0e3d | ||
|
|
cb692d73c8 | ||
|
|
1300cf23c5 | ||
|
|
3cb24410a8 | ||
|
|
be7ce4110e | ||
|
|
c07e4a8c01 | ||
|
|
ff8da9d246 | ||
|
|
b1faebae4a | ||
|
|
e96515433d | ||
|
|
5a8d2c3cb4 | ||
|
|
183a9d7088 | ||
|
|
c1384422c3 | ||
|
|
ccc0ebd0f9 | ||
|
|
9d4336d296 | ||
|
|
17bc9d3085 | ||
|
|
436f481a34 | ||
|
|
9e8215b213 | ||
|
|
e958a83dd4 | ||
|
|
f44b122262 | ||
|
|
26d1cf9186 | ||
|
|
895ee77c38 | ||
|
|
caf8b15f6d | ||
|
|
bc7f18064f | ||
|
|
355d3f44fb | ||
|
|
9de863e68b | ||
|
|
64b7f8e445 | ||
|
|
626f488cb4 | ||
|
|
10212e376a | ||
|
|
81462cd530 | ||
|
|
7d4e4ac646 | ||
|
|
0ed339f19d | ||
|
|
c6fc3560f2 | ||
|
|
b4cec0b4a8 | ||
|
|
d7030b6e9c | ||
|
|
7ed5bde426 | ||
|
|
75652ce667 | ||
|
|
91f801ee72 | ||
|
|
c6f567ae4a | ||
|
|
e1ca3c995d | ||
|
|
addc327f17 | ||
|
|
f2c12d548d | ||
|
|
ef36acb970 | ||
|
|
d5ca4e5f52 | ||
|
|
373ca30269 | ||
|
|
0d9d3a90de | ||
|
|
363481b0f1 | ||
|
|
38058450ce | ||
|
|
e672dc8094 | ||
|
|
c6682f2a3f | ||
|
|
4508a6687e | ||
|
|
a47c3cb16f | ||
|
|
9b42ced27f | ||
|
|
1a400d33fd | ||
|
|
96ee7252c2 | ||
|
|
b0624d3fd1 | ||
|
|
c329fab966 | ||
|
|
127c19fecd | ||
|
|
4c22793850 | ||
|
|
da74b9651c | ||
|
|
ce23a8dd32 | ||
|
|
30d106766a | ||
|
|
c4df88354b | ||
|
|
b65c1ed3a0 | ||
|
|
b329fb68a9 | ||
|
|
da179d9930 | ||
|
|
e7fee4c6ce | ||
|
|
4151749dc9 | ||
|
|
aee9521c91 | ||
|
|
7e46c83592 | ||
|
|
ba74abb753 | ||
|
|
9ddc0327d4 | ||
|
|
c34325fee7 | ||
|
|
db8443ef7d | ||
|
|
6c85f8c7a7 | ||
|
|
eea93d2607 | ||
|
|
e9f8ecbf7e | ||
|
|
48852e8cb4 | ||
|
|
55ec325961 | ||
|
|
59151fbf86 | ||
|
|
1c700b7b41 | ||
|
|
ff18bacd94 | ||
|
|
caf1de3bcf | ||
|
|
a9ad2924ac | ||
|
|
7ea2354540 | ||
|
|
760bba67e7 | ||
|
|
1fe3a4402d | ||
|
|
166c7978ee | ||
|
|
4f80e79886 | ||
|
|
b47a2c9ac5 | ||
|
|
1a5274b86b | ||
|
|
66236e91a2 | ||
|
|
36475aebc7 | ||
|
|
acd1f24a3f | ||
|
|
a74532fa0b | ||
|
|
59d4aef7c2 | ||
|
|
dfb291090d | ||
|
|
dac32f863e | ||
|
|
f3b56d3d94 | ||
|
|
eb95a427fa | ||
|
|
f16299b10b | ||
|
|
76bce44280 | ||
|
|
ee0a194b25 | ||
|
|
ef08346a74 | ||
|
|
fe0068da52 | ||
|
|
cd70fefc5e | ||
|
|
877f86a896 | ||
|
|
912036b260 | ||
|
|
a4e8847664 | ||
|
|
c492bf7eea | ||
|
|
cb086ff97f | ||
|
|
7e4da53c0b | ||
|
|
fe376f6a1e | ||
|
|
55a99f34d0 | ||
|
|
99df637aae | ||
|
|
d0c68096df | ||
|
|
1c464c2da1 | ||
|
|
5b15da98b4 | ||
|
|
d5a95f9224 | ||
|
|
a7dcfa18a2 | ||
|
|
4389b9feff | ||
|
|
cf03996bf2 | ||
|
|
e1a3bd3a92 | ||
|
|
58119598ae | ||
|
|
42a2afaef9 | ||
|
|
c2cfb4d1dc | ||
|
|
f0b0172434 | ||
|
|
8217cadc08 | ||
|
|
6ad047a8fc | ||
|
|
23ef742e08 | ||
|
|
1294767b44 | ||
|
|
eca645fc52 | ||
|
|
8598f34ebf | ||
|
|
cade483a00 | ||
|
|
df46248a0c | ||
|
|
6cddb94509 | ||
|
|
0e658828fb | ||
|
|
de04240ca6 | ||
|
|
40681328ec | ||
|
|
4dbdfb6972 | ||
|
|
d6f32516d8 | ||
|
|
29566bfe7d | ||
|
|
8ee8870c27 | ||
|
|
3c59de7c00 | ||
|
|
e87bf87046 | ||
|
|
b4f7a9a4f4 | ||
|
|
a360416655 | ||
|
|
26dbebbba7 | ||
|
|
04b77773c4 | ||
|
|
6f4a69703b | ||
|
|
d67f59f5b5 | ||
|
|
00d9abb612 | ||
|
|
c8920cff19 | ||
|
|
7293ba7d71 | ||
|
|
3670b8cefd | ||
|
|
425f5201a2 | ||
|
|
df3b29e6ff | ||
|
|
96a49bf476 | ||
|
|
2d975f275c | ||
|
|
0547fd3593 | ||
|
|
32f49b44b0 | ||
|
|
3f19e7d73c | ||
|
|
93076dde56 | ||
|
|
3e78785dea | ||
|
|
68c9398f71 | ||
|
|
59b392af10 | ||
|
|
ecde26c823 | ||
|
|
544a4de1e0 | ||
|
|
297869163e | ||
|
|
3ead6b67cd | ||
|
|
3cbea6c898 | ||
|
|
8148c658cf | ||
|
|
f8e24f4629 | ||
|
|
1cf8a1f493 | ||
|
|
bc2c4cf80a | ||
|
|
9933d83cf8 | ||
|
|
1918c29fd7 | ||
|
|
84705aafc7 | ||
|
|
618202d426 | ||
|
|
d1335dca11 | ||
|
|
5e13b42abc | ||
|
|
96aa1c30a6 |
No files matched your search
+46
-47
@@ -4,72 +4,71 @@ BreakBeforeBraces: Stroustrup
|
||||
IndentWidth: 4
|
||||
TabWidth: 4
|
||||
AlignAfterOpenBracket: AlwaysBreak
|
||||
AlignConsecutiveMacros: 'true'
|
||||
AlignConsecutiveAssignments: 'false'
|
||||
AlignConsecutiveDeclarations: 'false'
|
||||
AlignConsecutiveMacros: "true"
|
||||
AlignConsecutiveAssignments: "false"
|
||||
AlignConsecutiveDeclarations: "false"
|
||||
AlignEscapedNewlines: Right
|
||||
AlignOperands: 'true'
|
||||
AlignTrailingComments: 'true'
|
||||
AllowAllArgumentsOnNextLine: 'false'
|
||||
AllowAllConstructorInitializersOnNextLine: 'false'
|
||||
AllowAllParametersOfDeclarationOnNextLine: 'false'
|
||||
AllowShortBlocksOnASingleLine: 'true'
|
||||
AllowShortCaseLabelsOnASingleLine: 'false'
|
||||
AlignOperands: "true"
|
||||
AlignTrailingComments: "true"
|
||||
AllowAllArgumentsOnNextLine: "false"
|
||||
AllowAllConstructorInitializersOnNextLine: "false"
|
||||
AllowAllParametersOfDeclarationOnNextLine: "false"
|
||||
AllowShortBlocksOnASingleLine: "true"
|
||||
AllowShortCaseLabelsOnASingleLine: "false"
|
||||
AllowShortFunctionsOnASingleLine: None
|
||||
AllowShortIfStatementsOnASingleLine: Never
|
||||
AlwaysBreakAfterReturnType: None
|
||||
BinPackArguments: 'false'
|
||||
BinPackParameters: 'false'
|
||||
BinPackArguments: "true"
|
||||
BinPackParameters: OnePerLine
|
||||
BreakBeforeBinaryOperators: NonAssignment
|
||||
BreakBeforeTernaryOperators: 'true'
|
||||
BreakBeforeTernaryOperators: "true"
|
||||
BreakConstructorInitializers: BeforeComma
|
||||
BreakInheritanceList: BeforeComma
|
||||
CompactNamespaces: 'false'
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: 'true'
|
||||
ConstructorInitializerIndentWidth: '4'
|
||||
ContinuationIndentWidth: '4'
|
||||
Cpp11BracedListStyle: 'false'
|
||||
FixNamespaceComments: 'true'
|
||||
CompactNamespaces: "false"
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: "true"
|
||||
ConstructorInitializerIndentWidth: "4"
|
||||
ContinuationIndentWidth: "4"
|
||||
Cpp11BracedListStyle: "false"
|
||||
FixNamespaceComments: "true"
|
||||
IncludeBlocks: Regroup
|
||||
IndentCaseLabels: 'true'
|
||||
IndentCaseLabels: "true"
|
||||
IndentPPDirectives: None
|
||||
IndentWrappedFunctionNames: 'false'
|
||||
KeepEmptyLinesAtTheStartOfBlocks: 'false'
|
||||
MaxEmptyLinesToKeep: '1'
|
||||
IndentWrappedFunctionNames: "false"
|
||||
KeepEmptyLinesAtTheStartOfBlocks: "false"
|
||||
MaxEmptyLinesToKeep: "1"
|
||||
NamespaceIndentation: None
|
||||
PointerAlignment: Left
|
||||
ReflowComments: 'true'
|
||||
SortIncludes: 'true'
|
||||
SortUsingDeclarations: 'true'
|
||||
SpaceAfterCStyleCast: 'false'
|
||||
SpaceAfterLogicalNot: 'true'
|
||||
SpaceAfterTemplateKeyword: 'true'
|
||||
SpaceBeforeAssignmentOperators: 'true'
|
||||
SpaceBeforeCpp11BracedList: 'true'
|
||||
SpaceBeforeCtorInitializerColon: 'true'
|
||||
SpaceBeforeInheritanceColon: 'true'
|
||||
ReflowComments: "true"
|
||||
SortIncludes: "true"
|
||||
SortUsingDeclarations: "true"
|
||||
SpaceAfterCStyleCast: "false"
|
||||
SpaceAfterLogicalNot: "true"
|
||||
SpaceAfterTemplateKeyword: "true"
|
||||
SpaceBeforeAssignmentOperators: "true"
|
||||
SpaceBeforeCpp11BracedList: "true"
|
||||
SpaceBeforeCtorInitializerColon: "true"
|
||||
SpaceBeforeInheritanceColon: "true"
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceBeforeRangeBasedForLoopColon: 'true'
|
||||
SpaceInEmptyParentheses: 'false'
|
||||
SpacesBeforeTrailingComments: '3'
|
||||
SpacesInAngles: 'false'
|
||||
SpacesInCStyleCastParentheses: 'false'
|
||||
SpacesInContainerLiterals: 'true'
|
||||
SpacesInParentheses: 'false'
|
||||
SpacesInSquareBrackets: 'false'
|
||||
UseTab: 'Always'
|
||||
SpaceBeforeRangeBasedForLoopColon: "true"
|
||||
SpaceInEmptyParentheses: "false"
|
||||
SpacesBeforeTrailingComments: "3"
|
||||
SpacesInAngles: "false"
|
||||
SpacesInCStyleCastParentheses: "false"
|
||||
SpacesInContainerLiterals: "true"
|
||||
SpacesInParentheses: "false"
|
||||
SpacesInSquareBrackets: "false"
|
||||
UseTab: "Always"
|
||||
|
||||
---
|
||||
Language: Cpp
|
||||
Standard: Cpp03
|
||||
ColumnLimit: '240'
|
||||
ColumnLimit: "120"
|
||||
---
|
||||
Language: ObjC
|
||||
ColumnLimit: '240'
|
||||
ColumnLimit: "120"
|
||||
---
|
||||
Language: Java
|
||||
ColumnLimit: '240'
|
||||
ColumnLimit: "120"
|
||||
---
|
||||
Language: CSharp
|
||||
ColumnLimit: '240'
|
||||
...
|
||||
ColumnLimit: "120"
|
||||
@@ -0,0 +1,11 @@
|
||||
CompileFlags:
|
||||
Add:
|
||||
- "-std=c++17"
|
||||
- "-I../ext"
|
||||
- "-I../ext/prometheus-cpp-lite-1.0/core/include"
|
||||
- "-I../ext/prometheus-cpp-lite-1.0/simpleapi/include"
|
||||
- "-I../ext/opentelemetry-cpp-1.21.0/api/include"
|
||||
- "-I./ext"
|
||||
- "-I./ext/prometheus-cpp-lite-1.0/core/include"
|
||||
- "-I./ext/prometheus-cpp-lite-1.0/simpleapi/include"
|
||||
- "-I./ext/opentelemetry-cpp-1.21.0/api/include"
|
||||
@@ -1,2 +1,12 @@
|
||||
.git/
|
||||
workspace/
|
||||
# Local from-source dependency builds (scripts/bootstrap-deps.sh) and CMake output;
|
||||
# never ship these into an image -- they are host-specific and large.
|
||||
.deps/
|
||||
.deps-build/
|
||||
build/
|
||||
build-*/
|
||||
out/
|
||||
# Dockerfiles are supplied via -f; keeping them out of the context means editing
|
||||
# them does not invalidate the COPY layers (and the heavy build cache).
|
||||
ext/central-controller-docker/Dockerfile*
|
||||
-267
@@ -1,267 +0,0 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: build 386
|
||||
|
||||
clone:
|
||||
depth: 1
|
||||
|
||||
steps:
|
||||
- name: build 386
|
||||
image: registry.sean.farm/honda-builder
|
||||
commands:
|
||||
- ./ci/scripts/build.sh linux 386 $${DRONE_COMMIT_SHA}
|
||||
- name: notify-mattermost
|
||||
pull: always
|
||||
image: registry.sean.farm/mattermost-notify
|
||||
environment:
|
||||
token:
|
||||
from_secret: mattermost-token
|
||||
host:
|
||||
from_secret: mattermost-host
|
||||
channel:
|
||||
from_secret: mattermost-channel
|
||||
maxRetry: 3
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
- success
|
||||
|
||||
image_pull_secrets:
|
||||
- dockerconfigjson
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: build amd64
|
||||
|
||||
clone:
|
||||
depth: 1
|
||||
|
||||
steps:
|
||||
- name: build amd64
|
||||
image: registry.sean.farm/honda-builder
|
||||
commands:
|
||||
- ./ci/scripts/build.sh linux amd64 $${DRONE_COMMIT_SHA}
|
||||
- name: notify-mattermost
|
||||
pull: always
|
||||
image: registry.sean.farm/mattermost-notify
|
||||
environment:
|
||||
token:
|
||||
from_secret: mattermost-token
|
||||
host:
|
||||
from_secret: mattermost-host
|
||||
channel:
|
||||
from_secret: mattermost-channel
|
||||
maxRetry: 3
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
- success
|
||||
|
||||
image_pull_secrets:
|
||||
- dockerconfigjson
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: build arm64
|
||||
|
||||
clone:
|
||||
depth: 1
|
||||
|
||||
steps:
|
||||
- name: build arm64
|
||||
image: registry.sean.farm/honda-builder
|
||||
commands:
|
||||
- ./ci/scripts/build.sh linux arm64 $${DRONE_COMMIT_SHA}
|
||||
- name: notify-mattermost
|
||||
pull: always
|
||||
image: registry.sean.farm/mattermost-notify
|
||||
environment:
|
||||
token:
|
||||
from_secret: mattermost-token
|
||||
host:
|
||||
from_secret: mattermost-host
|
||||
channel:
|
||||
from_secret: mattermost-channel
|
||||
maxRetry: 3
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
- success
|
||||
|
||||
platform:
|
||||
os: linux
|
||||
arch: arm64
|
||||
|
||||
image_pull_secrets:
|
||||
- dockerconfigjson
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: build armv7
|
||||
|
||||
platform:
|
||||
os: linux
|
||||
arch: arm64
|
||||
|
||||
clone:
|
||||
depth: 1
|
||||
|
||||
steps:
|
||||
- name: build armv7
|
||||
image: registry.sean.farm/honda-builder
|
||||
commands:
|
||||
- ./ci/scripts/build.sh linux armv7 $${DRONE_COMMIT_SHA}
|
||||
- name: notify-mattermost
|
||||
pull: always
|
||||
image: registry.sean.farm/mattermost-notify
|
||||
environment:
|
||||
token:
|
||||
from_secret: mattermost-token
|
||||
host:
|
||||
from_secret: mattermost-host
|
||||
channel:
|
||||
from_secret: mattermost-channel
|
||||
maxRetry: 3
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
- success
|
||||
|
||||
platform:
|
||||
os: linux
|
||||
arch: arm64
|
||||
|
||||
image_pull_secrets:
|
||||
- dockerconfigjson
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: build riscv64
|
||||
|
||||
clone:
|
||||
depth: 1
|
||||
|
||||
steps:
|
||||
- name: build riscv64
|
||||
image: registry.sean.farm/honda-builder
|
||||
commands:
|
||||
- ./ci/scripts/build.sh linux riscv64 $${DRONE_COMMIT_SHA}
|
||||
- name: notify-mattermost
|
||||
pull: always
|
||||
image: registry.sean.farm/mattermost-notify
|
||||
environment:
|
||||
token:
|
||||
from_secret: mattermost-token
|
||||
host:
|
||||
from_secret: mattermost-host
|
||||
channel:
|
||||
from_secret: mattermost-channel
|
||||
maxRetry: 3
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
- success
|
||||
|
||||
image_pull_secrets:
|
||||
- dockerconfigjson
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: build mips64le
|
||||
|
||||
clone:
|
||||
depth: 1
|
||||
|
||||
steps:
|
||||
- name: build mips64le
|
||||
image: registry.sean.farm/honda-builder
|
||||
commands:
|
||||
- ./ci/scripts/build.sh linux mips64le $${DRONE_COMMIT_SHA}
|
||||
- name: notify-mattermost
|
||||
pull: always
|
||||
image: registry.sean.farm/mattermost-notify
|
||||
environment:
|
||||
token:
|
||||
from_secret: mattermost-token
|
||||
host:
|
||||
from_secret: mattermost-host
|
||||
channel:
|
||||
from_secret: mattermost-channel
|
||||
maxRetry: 3
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
- success
|
||||
|
||||
image_pull_secrets:
|
||||
- dockerconfigjson
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: build ppc64le
|
||||
|
||||
clone:
|
||||
depth: 1
|
||||
|
||||
steps:
|
||||
- name: build ppc64le
|
||||
image: registry.sean.farm/honda-builder
|
||||
commands:
|
||||
- ./ci/scripts/build.sh linux ppc64le $${DRONE_COMMIT_SHA}
|
||||
- name: notify-mattermost
|
||||
pull: always
|
||||
image: registry.sean.farm/mattermost-notify
|
||||
environment:
|
||||
token:
|
||||
from_secret: mattermost-token
|
||||
host:
|
||||
from_secret: mattermost-host
|
||||
channel:
|
||||
from_secret: mattermost-channel
|
||||
maxRetry: 3
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
- success
|
||||
|
||||
image_pull_secrets:
|
||||
- dockerconfigjson
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: build s390x
|
||||
|
||||
clone:
|
||||
depth: 1
|
||||
|
||||
steps:
|
||||
- name: build s390x
|
||||
image: registry.sean.farm/honda-builder
|
||||
commands:
|
||||
- ./ci/scripts/build.sh linux s390x $${DRONE_COMMIT_SHA}
|
||||
- name: notify-mattermost
|
||||
pull: always
|
||||
image: registry.sean.farm/mattermost-notify
|
||||
environment:
|
||||
token:
|
||||
from_secret: mattermost-token
|
||||
host:
|
||||
from_secret: mattermost-host
|
||||
channel:
|
||||
from_secret: mattermost-channel
|
||||
maxRetry: 3
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
- success
|
||||
|
||||
image_pull_secrets:
|
||||
- dockerconfigjson
|
||||
@@ -0,0 +1,126 @@
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build_ubuntu:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: gitconfig
|
||||
run: |
|
||||
git config --global core.autocrlf input
|
||||
# git config --global core.eol lf
|
||||
- name: checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
toolchain: stable
|
||||
targets: x86_64-unknown-linux-gnu
|
||||
components: rustfmt, clippy
|
||||
|
||||
- name: Set up cargo cache
|
||||
uses: Swatinem/rust-cache@v2
|
||||
continue-on-error: false
|
||||
with:
|
||||
key: ${{ runner.os }}-cargo-${{ hashFiles('rustybits//Cargo.lock') }}
|
||||
shared-key: ${{ runner.os }}-cargo-
|
||||
workspaces: |
|
||||
rustybits/
|
||||
|
||||
- name: make
|
||||
run: make
|
||||
- name: selftest
|
||||
run: |
|
||||
make selftest
|
||||
./zerotier-selftest
|
||||
- name: 'Tar files' # keeps permissions (execute)
|
||||
run: tar -cvf zerotier-one.tar zerotier-one
|
||||
- name: Archive production artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: zerotier-one-ubuntu-x64
|
||||
path: zerotier-one.tar
|
||||
retention-days: 7
|
||||
|
||||
build_macos:
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- name: gitconfig
|
||||
run: |
|
||||
git config --global core.autocrlf input
|
||||
# git config --global core.eol lf
|
||||
- name: checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Rust aarch64
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
toolchain: stable
|
||||
target: aarch64-apple-darwin
|
||||
components: rustfmt, clippy
|
||||
- name: Install Rust x86_64
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
toolchain: stable
|
||||
target: x86_64-apple-darwin
|
||||
components: rustfmt, clippy
|
||||
- name: Set up cargo cache
|
||||
uses: Swatinem/rust-cache@v2
|
||||
continue-on-error: false
|
||||
with:
|
||||
key: ${{ runner.os }}-cargo-${{ hashFiles('rustybits//Cargo.lock') }}
|
||||
shared-key: ${{ runner.os }}-cargo-
|
||||
workspaces: |
|
||||
rustybits/
|
||||
- name: make
|
||||
run: make
|
||||
- name: selftest
|
||||
run: |
|
||||
make selftest
|
||||
./zerotier-selftest
|
||||
- name: 'Tar files' # keeps permissions (execute)
|
||||
run: tar -cvf zerotier-one.tar zerotier-one
|
||||
- name: Archive production artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: zerotier-one-mac
|
||||
path: zerotier-one.tar
|
||||
retention-days: 7
|
||||
|
||||
|
||||
build_windows:
|
||||
runs-on: windows-2022
|
||||
steps:
|
||||
- name: gitconfig
|
||||
run: |
|
||||
git config --global core.autocrlf true
|
||||
# git config --global core.eol lf
|
||||
- name: checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
toolchain: stable
|
||||
targets: x86_64-pc-windows-msvc
|
||||
components: rustfmt, clippy
|
||||
- name: Set up cargo cache
|
||||
uses: Swatinem/rust-cache@v2
|
||||
continue-on-error: false
|
||||
with:
|
||||
key: ${{ runner.os }}-cargo-${{ hashFiles('rustybits//Cargo.lock') }}
|
||||
shared-key: ${{ runner.os }}-cargo-
|
||||
workspaces: |
|
||||
rustybits/
|
||||
|
||||
- name: setup msbuild
|
||||
uses: microsoft/setup-msbuild@v2
|
||||
- name: msbuild
|
||||
run: |
|
||||
msbuild windows\ZeroTierOne.sln /m /p:Configuration=Release /property:Platform=x64 /t:ZeroTierOne
|
||||
- name: Archive production artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: zerotier-one-windows
|
||||
path: windows/Build
|
||||
retention-days: 7
|
||||
@@ -0,0 +1,104 @@
|
||||
# on:
|
||||
# workflow_dispatch:
|
||||
on:
|
||||
push:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
central_controller:
|
||||
name: Central Controller Build
|
||||
strategy:
|
||||
matrix:
|
||||
runner: [gha-runner-x64, gha-runner-arm64]
|
||||
runs-on: ${{ matrix.runner }}
|
||||
steps:
|
||||
- name: checkout
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: GCP Auth
|
||||
uses: google-github-actions/auth@v3
|
||||
with:
|
||||
credentials_json: ${{ secrets.DOCKER_REGISTRY_WRITER}}
|
||||
|
||||
- name: Set up GCloud CLI
|
||||
uses: google-github-actions/setup-gcloud@v3
|
||||
with:
|
||||
# v3 no longer uses the tool cache by default; restore the prior caching
|
||||
# behavior on these self-hosted runners (perf: avoids re-fetching the SDK).
|
||||
cache: true
|
||||
|
||||
- name: Docker Auth
|
||||
run: gcloud auth configure-docker us-central1-docker.pkg.dev --quiet
|
||||
|
||||
- name: Get branch name and sanitize
|
||||
id: branch
|
||||
run: |
|
||||
BRANCH_NAME="${GITHUB_REF##*/}"
|
||||
SANITIZED_BRANCH="${BRANCH_NAME//\//-}"
|
||||
echo "branch_name=$SANITIZED_BRANCH" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Get short git commit SHA
|
||||
id: sha
|
||||
run: |
|
||||
calculatedSha=$(git rev-parse --short ${{ github.sha }})
|
||||
echo "COMMIT_SHORT_SHA=$calculatedSha" >> $GITHUB_ENV
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
|
||||
- name: Build & Push Docker Image
|
||||
# Registry layer cache (mode=max) so the expensive builder stage -- which
|
||||
# builds opentelemetry-cpp + google-cloud-cpp from source -- is reused across
|
||||
# runs and fresh runners. The cache invalidates automatically when the
|
||||
# bootstrap inputs change. Cache is per-arch (the deps layer is arch-specific).
|
||||
run: |
|
||||
CACHE=us-central1-docker.pkg.dev/zerotier-421eb9/docker-images/ztcentral-controller-buildcache:${{ runner.arch }}
|
||||
docker buildx build \
|
||||
-t us-central1-docker.pkg.dev/zerotier-421eb9/docker-images/ztcentral-controller:${{ env.COMMIT_SHORT_SHA }}-${{ steps.branch.outputs.branch_name }}-${{ runner.arch }} \
|
||||
-f ext/central-controller-docker/Dockerfile \
|
||||
--cache-from type=registry,ref=$CACHE \
|
||||
--cache-to type=registry,ref=$CACHE,mode=max \
|
||||
--provenance false \
|
||||
--push .
|
||||
|
||||
multi-arch-docker:
|
||||
runs-on: gha-runner-x64
|
||||
needs: central_controller
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: GCP Auth
|
||||
uses: google-github-actions/auth@v3
|
||||
with:
|
||||
credentials_json: ${{ secrets.DOCKER_REGISTRY_WRITER}}
|
||||
|
||||
- name: Set up GCloud CLI
|
||||
uses: google-github-actions/setup-gcloud@v3
|
||||
with:
|
||||
# v3 no longer uses the tool cache by default; restore the prior caching
|
||||
# behavior on these self-hosted runners (perf: avoids re-fetching the SDK).
|
||||
cache: true
|
||||
|
||||
- name: Docker Auth
|
||||
run: gcloud auth configure-docker us-central1-docker.pkg.dev --quiet
|
||||
|
||||
- name: Get branch name and sanitize
|
||||
id: branch
|
||||
run: |
|
||||
BRANCH_NAME="${GITHUB_REF##*/}"
|
||||
SANITIZED_BRANCH="${BRANCH_NAME//\//-}"
|
||||
echo "branch_name=$SANITIZED_BRANCH" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Get short git commit SHA
|
||||
id: sha
|
||||
run: |
|
||||
calculatedSha=$(git rev-parse --short ${{ github.sha }})
|
||||
echo "COMMIT_SHORT_SHA=$calculatedSha" >> $GITHUB_ENV
|
||||
|
||||
- name: Create and push multi-arch manifest
|
||||
run: |
|
||||
docker manifest create us-central1-docker.pkg.dev/zerotier-421eb9/docker-images/ztcentral-controller:${{ env.COMMIT_SHORT_SHA }}-${{ steps.branch.outputs.branch_name }} \
|
||||
--amend us-central1-docker.pkg.dev/zerotier-421eb9/docker-images/ztcentral-controller:${{ env.COMMIT_SHORT_SHA }}-${{ steps.branch.outputs.branch_name }}-X64 \
|
||||
--amend us-central1-docker.pkg.dev/zerotier-421eb9/docker-images/ztcentral-controller:${{ env.COMMIT_SHORT_SHA }}-${{ steps.branch.outputs.branch_name }}-ARM64
|
||||
docker manifest push us-central1-docker.pkg.dev/zerotier-421eb9/docker-images/ztcentral-controller:${{ env.COMMIT_SHORT_SHA }}-${{ steps.branch.outputs.branch_name }}
|
||||
Executable
+497
@@ -0,0 +1,497 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This test script joins Earth and pokes some stuff
|
||||
|
||||
TEST_NETWORK=8056c2e21c000001
|
||||
RUN_LENGTH=30
|
||||
TEST_FINISHED=false
|
||||
ZTO_VER=$(git describe --tags $(git rev-list --tags --max-count=1))
|
||||
ZTO_COMMIT=$(git rev-parse HEAD)
|
||||
ZTO_COMMIT_SHORT=$(git rev-parse --short HEAD)
|
||||
TEST_DIR_PREFIX="$ZTO_VER-$ZTO_COMMIT_SHORT-test-results"
|
||||
|
||||
TEST_OK=0
|
||||
TEST_FAIL=1
|
||||
|
||||
echo "Performing test on: $ZTO_VER-$ZTO_COMMIT_SHORT"
|
||||
TEST_FILEPATH_PREFIX="$TEST_DIR_PREFIX/$ZTO_COMMIT_SHORT"
|
||||
mkdir $TEST_DIR_PREFIX
|
||||
|
||||
# How long we will wait for ZT to come online before considering it a failure
|
||||
MAX_WAIT_SECS=30
|
||||
|
||||
ZT_PORT_NODE_1=9996
|
||||
ZT_PORT_NODE_2=9997
|
||||
|
||||
################################################################################
|
||||
# Multi-node connectivity and performance test #
|
||||
################################################################################
|
||||
|
||||
test() {
|
||||
|
||||
echo -e "\nPerforming pre-flight checks"
|
||||
|
||||
check_exit_on_invalid_identity
|
||||
|
||||
echo -e "\nRunning test for $RUN_LENGTH seconds"
|
||||
|
||||
export NS1="ip netns exec ns1"
|
||||
export NS2="ip netns exec ns2"
|
||||
|
||||
export ZT1="$NS1 ./zerotier-cli -p9996 -D$(pwd)/node1"
|
||||
# Specify custom port on one node to ensure that feature works
|
||||
export ZT2="$NS2 ./zerotier-cli -p9997 -D$(pwd)/node2"
|
||||
|
||||
echo -e "\nSetting up network namespaces..."
|
||||
echo "Setting up ns1"
|
||||
|
||||
ip netns add ns1
|
||||
$NS1 ip link set dev lo up
|
||||
ip link add veth0 type veth peer name veth1
|
||||
ip link set veth1 netns ns1
|
||||
ip addr add 192.168.0.1/24 dev veth0
|
||||
ip link set dev veth0 up
|
||||
|
||||
$NS1 ip addr add 192.168.0.2/24 dev veth1
|
||||
$NS1 ip link set dev veth1 up
|
||||
|
||||
# Add default route
|
||||
$NS1 ip route add default via 192.168.0.1
|
||||
|
||||
iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 \
|
||||
-o eth0 -j MASQUERADE
|
||||
iptables -A FORWARD -i eth0 -o veth0 -j ACCEPT
|
||||
iptables -A FORWARD -o eth0 -i veth0 -j ACCEPT
|
||||
|
||||
echo "Setting up ns2"
|
||||
ip netns add ns2
|
||||
$NS2 ip link set dev lo up
|
||||
ip link add veth2 type veth peer name veth3
|
||||
ip link set veth3 netns ns2
|
||||
ip addr add 192.168.1.1/24 dev veth2
|
||||
ip link set dev veth2 up
|
||||
|
||||
$NS2 ip addr add 192.168.1.2/24 dev veth3
|
||||
$NS2 ip link set dev veth3 up
|
||||
$NS2 ip route add default via 192.168.1.1
|
||||
|
||||
iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 \
|
||||
-o eth0 -j MASQUERADE
|
||||
iptables -A FORWARD -i eth0 -o veth2 -j ACCEPT
|
||||
iptables -A FORWARD -o eth0 -i veth2 -j ACCEPT
|
||||
|
||||
# Allow forwarding
|
||||
sysctl -w net.ipv4.ip_forward=1
|
||||
|
||||
################################################################################
|
||||
# Memory Leak Check #
|
||||
################################################################################
|
||||
|
||||
export FILENAME_MEMORY_LOG="$TEST_FILEPATH_PREFIX-memory.log"
|
||||
|
||||
echo -e "\nStarting a ZeroTier instance in each namespace..."
|
||||
|
||||
export time_test_start=$(date +%s)
|
||||
|
||||
# Spam the CLI as ZeroTier is starting
|
||||
spam_cli 100
|
||||
|
||||
echo "Starting memory leak check"
|
||||
$NS1 sudo valgrind --demangle=yes --exit-on-first-error=yes \
|
||||
--error-exitcode=1 \
|
||||
--xml=yes \
|
||||
--xml-file=$FILENAME_MEMORY_LOG \
|
||||
--leak-check=full \
|
||||
./zerotier-one node1 -p$ZT_PORT_NODE_1 -U >>node_1.log 2>&1 &
|
||||
|
||||
# Second instance, not run in memory profiler
|
||||
# Don't set up internet access until _after_ zerotier is running
|
||||
# This has been a source of stuckness in the past.
|
||||
$NS2 ip addr del 192.168.1.2/24 dev veth3
|
||||
$NS2 sudo ./zerotier-one node2 -U -p$ZT_PORT_NODE_2 >>node_2.log 2>&1 &
|
||||
|
||||
sleep 10; # New HTTP control plane is a bit sluggish, so we delay here
|
||||
|
||||
check_bind_to_correct_ports $ZT_PORT_NODE_1
|
||||
check_bind_to_correct_ports $ZT_PORT_NODE_2
|
||||
|
||||
$NS2 ip addr add 192.168.1.2/24 dev veth3
|
||||
$NS2 ip route add default via 192.168.1.1
|
||||
|
||||
echo -e "\nPing from host to namespaces"
|
||||
|
||||
ping -c 3 192.168.0.1
|
||||
ping -c 3 192.168.1.1
|
||||
|
||||
echo -e "\nPing from namespace to host"
|
||||
|
||||
$NS1 ping -c 3 192.168.0.1
|
||||
$NS1 ping -c 3 192.168.0.1
|
||||
$NS2 ping -c 3 192.168.0.2
|
||||
$NS2 ping -c 3 192.168.0.2
|
||||
|
||||
echo -e "\nPing from ns1 to ns2"
|
||||
|
||||
$NS1 ping -c 3 192.168.0.1
|
||||
|
||||
echo -e "\nPing from ns2 to ns1"
|
||||
|
||||
$NS2 ping -c 3 192.168.0.1
|
||||
|
||||
################################################################################
|
||||
# Online Check #
|
||||
################################################################################
|
||||
|
||||
echo "Waiting for ZeroTier to come online before attempting test..."
|
||||
node1_online=false
|
||||
node2_online=false
|
||||
both_instances_online=false
|
||||
time_zt_node1_start=$(date +%s)
|
||||
time_zt_node2_start=$(date +%s)
|
||||
|
||||
for ((s = 0; s <= $MAX_WAIT_SECS; s++)); do
|
||||
node1_online="$($ZT1 -j info | jq '.online' 2>/dev/null)"
|
||||
node2_online="$($ZT2 -j info | jq '.online' 2>/dev/null)"
|
||||
echo "Checking for online status: try #$s, node1:$node1_online, node2:$node2_online"
|
||||
if [[ "$node2_online" == "true" && "$node1_online" == "true" ]]; then
|
||||
export both_instances_online=true
|
||||
export time_to_both_nodes_online=$(date +%s)
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
echo -e "\n\nContents of ZeroTier home paths:"
|
||||
|
||||
ls -lga node1
|
||||
tree node1
|
||||
ls -lga node2
|
||||
tree node2
|
||||
|
||||
echo -e "\n\nRunning ZeroTier processes:"
|
||||
echo -e "\nNode 1:\n"
|
||||
$NS1 ps aux | grep zerotier-one
|
||||
echo -e "\nNode 2:\n"
|
||||
$NS2 ps aux | grep zerotier-one
|
||||
|
||||
echo -e "\n\nStatus of each instance:"
|
||||
|
||||
echo -e "\n\nNode 1:\n"
|
||||
$ZT1 status
|
||||
echo -e "\n\nNode 2:\n"
|
||||
$ZT2 status
|
||||
|
||||
if [[ "$both_instances_online" != "true" ]]; then
|
||||
exit_test_and_generate_report $TEST_FAIL "one or more nodes failed to come online"
|
||||
fi
|
||||
|
||||
echo -e "\nJoining networks"
|
||||
|
||||
$ZT1 join $TEST_NETWORK
|
||||
$ZT2 join $TEST_NETWORK
|
||||
|
||||
sleep 10
|
||||
|
||||
node1_ip4=$($ZT1 get $TEST_NETWORK ip4)
|
||||
node2_ip4=$($ZT2 get $TEST_NETWORK ip4)
|
||||
|
||||
echo "node1_ip4=$node1_ip4"
|
||||
echo "node2_ip4=$node2_ip4"
|
||||
|
||||
echo -e "\nPinging each node"
|
||||
|
||||
PING12_FILENAME="$TEST_FILEPATH_PREFIX-ping-1-to-2.txt"
|
||||
PING21_FILENAME="$TEST_FILEPATH_PREFIX-ping-2-to-1.txt"
|
||||
|
||||
$NS1 ping -c 16 $node2_ip4 >$PING12_FILENAME
|
||||
$NS2 ping -c 16 $node1_ip4 >$PING21_FILENAME
|
||||
|
||||
ping_loss_percent_1_to_2=$(cat $PING12_FILENAME |
|
||||
grep "packet loss" | awk '{print $6}' | sed 's/%//')
|
||||
ping_loss_percent_2_to_1=$(cat $PING21_FILENAME |
|
||||
grep "packet loss" | awk '{print $6}' | sed 's/%//')
|
||||
|
||||
# Normalize loss value
|
||||
export ping_loss_percent_1_to_2=$(echo "scale=2; $ping_loss_percent_1_to_2/100.0" | bc)
|
||||
export ping_loss_percent_2_to_1=$(echo "scale=2; $ping_loss_percent_2_to_1/100.0" | bc)
|
||||
|
||||
################################################################################
|
||||
# CLI Check #
|
||||
################################################################################
|
||||
|
||||
echo "Testing basic CLI functionality..."
|
||||
|
||||
spam_cli 10
|
||||
|
||||
$ZT1 join $TEST_NETWORK
|
||||
|
||||
$ZT1 -h
|
||||
$ZT1 -v
|
||||
$ZT1 status
|
||||
$ZT1 info
|
||||
$ZT1 listnetworks
|
||||
$ZT1 peers
|
||||
$ZT1 listpeers
|
||||
|
||||
$ZT1 -j status
|
||||
$ZT1 -j info
|
||||
$ZT1 -j listnetworks
|
||||
$ZT1 -j peers
|
||||
$ZT1 -j listpeers
|
||||
|
||||
$ZT1 dump
|
||||
|
||||
$ZT1 get $TEST_NETWORK allowDNS
|
||||
$ZT1 get $TEST_NETWORK allowDefault
|
||||
$ZT1 get $TEST_NETWORK allowGlobal
|
||||
$ZT1 get $TEST_NETWORK allowManaged
|
||||
$ZT1 get $TEST_NETWORK bridge
|
||||
$ZT1 get $TEST_NETWORK broadcastEnabled
|
||||
$ZT1 get $TEST_NETWORK dhcp
|
||||
$ZT1 get $TEST_NETWORK id
|
||||
$ZT1 get $TEST_NETWORK mac
|
||||
$ZT1 get $TEST_NETWORK mtu
|
||||
$ZT1 get $TEST_NETWORK name
|
||||
$ZT1 get $TEST_NETWORK netconfRevision
|
||||
$ZT1 get $TEST_NETWORK nwid
|
||||
$ZT1 get $TEST_NETWORK portDeviceName
|
||||
$ZT1 get $TEST_NETWORK portError
|
||||
$ZT1 get $TEST_NETWORK status
|
||||
$ZT1 get $TEST_NETWORK type
|
||||
|
||||
# Test an invalid command
|
||||
$ZT1 get $TEST_NETWORK derpderp
|
||||
|
||||
# TODO: Validate JSON
|
||||
|
||||
# Performance Test
|
||||
|
||||
export FILENAME_PERF_JSON="$TEST_FILEPATH_PREFIX-iperf.json"
|
||||
|
||||
echo -e "\nBeginning performance test:"
|
||||
|
||||
echo -e "\nStarting server:"
|
||||
|
||||
echo "$NS1 iperf3 -s &"
|
||||
sleep 1
|
||||
|
||||
echo -e "\nStarting client:"
|
||||
sleep 1
|
||||
|
||||
echo "$NS2 iperf3 --json -c $node1_ip4 > $FILENAME_PERF_JSON"
|
||||
|
||||
cat $FILENAME_PERF_JSON
|
||||
|
||||
# Let ZeroTier idle long enough for various timers
|
||||
|
||||
echo -e "\nIdling ZeroTier for $RUN_LENGTH seconds..."
|
||||
sleep $RUN_LENGTH
|
||||
|
||||
echo -e "\nLeaving networks"
|
||||
|
||||
$ZT1 leave $TEST_NETWORK
|
||||
$ZT2 leave $TEST_NETWORK
|
||||
|
||||
sleep 5
|
||||
|
||||
exit_test_and_generate_report $TEST_OK "completed test"
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# Generate report #
|
||||
################################################################################
|
||||
|
||||
exit_test_and_generate_report() {
|
||||
|
||||
echo -e "\nStopping memory check..."
|
||||
sudo pkill -15 -f valgrind
|
||||
sleep 10
|
||||
|
||||
time_test_end=$(date +%s)
|
||||
|
||||
echo "Exiting test with reason: $2 ($1)"
|
||||
|
||||
# Collect ZeroTier dump files
|
||||
|
||||
echo -e "\nCollecting ZeroTier dump files"
|
||||
|
||||
node1_id=$($ZT1 -j status | jq -r .address)
|
||||
node2_id=$($ZT2 -j status | jq -r .address)
|
||||
|
||||
$ZT1 dump
|
||||
mv zerotier_dump.txt "$TEST_FILEPATH_PREFIX-node-dump-$node1_id.txt"
|
||||
|
||||
$ZT2 dump
|
||||
mv zerotier_dump.txt "$TEST_FILEPATH_PREFIX-node-dump-$node2_id.txt"
|
||||
|
||||
# Copy ZeroTier stdout/stderr logs
|
||||
|
||||
cp node_1.log "$TEST_FILEPATH_PREFIX-node-log-$node1_id.txt"
|
||||
cp node_2.log "$TEST_FILEPATH_PREFIX-node-log-$node2_id.txt"
|
||||
|
||||
# Generate report
|
||||
|
||||
cat $FILENAME_MEMORY_LOG
|
||||
|
||||
DEFINITELY_LOST=$(xmlstarlet sel -t -v '/valgrindoutput/error/xwhat' \
|
||||
$FILENAME_MEMORY_LOG | grep "definitely" | awk '{print $1;}')
|
||||
POSSIBLY_LOST=$(xmlstarlet sel -t -v '/valgrindoutput/error/xwhat' \
|
||||
$FILENAME_MEMORY_LOG | grep "possibly" | awk '{print $1;}')
|
||||
|
||||
# Generate coverage report artifact and summary
|
||||
|
||||
FILENAME_COVERAGE_JSON="$TEST_FILEPATH_PREFIX-coverage.json"
|
||||
FILENAME_COVERAGE_HTML="$TEST_FILEPATH_PREFIX-coverage.html"
|
||||
|
||||
echo -e "\nGenerating coverage test report..."
|
||||
|
||||
gcovr -r . --exclude ext --json-summary $FILENAME_COVERAGE_JSON \
|
||||
--html >$FILENAME_COVERAGE_HTML
|
||||
|
||||
cat $FILENAME_COVERAGE_JSON
|
||||
|
||||
COVERAGE_LINE_COVERED=$(cat $FILENAME_COVERAGE_JSON | jq .line_covered)
|
||||
COVERAGE_LINE_TOTAL=$(cat $FILENAME_COVERAGE_JSON | jq .line_total)
|
||||
COVERAGE_LINE_PERCENT=$(cat $FILENAME_COVERAGE_JSON | jq .line_percent)
|
||||
|
||||
COVERAGE_LINE_COVERED="${COVERAGE_LINE_COVERED:-0}"
|
||||
COVERAGE_LINE_TOTAL="${COVERAGE_LINE_TOTAL:-0}"
|
||||
COVERAGE_LINE_PERCENT="${COVERAGE_LINE_PERCENT:-0}"
|
||||
|
||||
# Default values
|
||||
|
||||
DEFINITELY_LOST="${DEFINITELY_LOST:-0}"
|
||||
POSSIBLY_LOST="${POSSIBLY_LOST:-0}"
|
||||
ping_loss_percent_1_to_2="${ping_loss_percent_1_to_2:-100.0}"
|
||||
ping_loss_percent_2_to_1="${ping_loss_percent_2_to_1:-100.0}"
|
||||
time_to_both_nodes_online="${time_to_both_nodes_online:--1}"
|
||||
|
||||
# Summarize and emit json for trend reporting
|
||||
|
||||
FILENAME_SUMMARY="$TEST_FILEPATH_PREFIX-summary.json"
|
||||
|
||||
time_length_test=$((time_test_end - time_test_start))
|
||||
if [[ $time_to_both_nodes_online != -1 ]];
|
||||
then
|
||||
time_to_both_nodes_online=$((time_to_both_nodes_online - time_test_start))
|
||||
fi
|
||||
#time_length_zt_join=$((time_zt_join_end-time_zt_join_start))
|
||||
#time_length_zt_leave=$((time_zt_leave_end-time_zt_leave_start))
|
||||
#time_length_zt_can_still_ping=$((time_zt_can_still_ping-time_zt_leave_start))
|
||||
|
||||
summary=$(
|
||||
cat <<EOF
|
||||
{
|
||||
"version":"$ZTO_VER",
|
||||
"commit":"$ZTO_COMMIT",
|
||||
"arch_m":"$(uname -m)",
|
||||
"arch_a":"$(uname -a)",
|
||||
"binary_size":"$(stat -c %s zerotier-one)",
|
||||
"time_length_test":$time_length_test,
|
||||
"time_to_both_nodes_online":$time_to_both_nodes_online,
|
||||
"num_possible_bytes_lost": $POSSIBLY_LOST,
|
||||
"num_definite_bytes_lost": $DEFINITELY_LOST,
|
||||
"num_bad_formattings": $POSSIBLY_LOST,
|
||||
"coverage_lines_covered": $COVERAGE_LINE_COVERED,
|
||||
"coverage_lines_total": $COVERAGE_LINE_TOTAL,
|
||||
"coverage_lines_percent": $COVERAGE_LINE_PERCENT,
|
||||
"ping_loss_percent_1_to_2": $ping_loss_percent_1_to_2,
|
||||
"ping_loss_percent_2_to_1": $ping_loss_percent_2_to_1,
|
||||
"test_exit_code": $1,
|
||||
"test_exit_reason":"$2"
|
||||
}
|
||||
EOF
|
||||
)
|
||||
|
||||
echo $summary >$FILENAME_SUMMARY
|
||||
cat $FILENAME_SUMMARY
|
||||
|
||||
exit 0
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# CLI Check #
|
||||
################################################################################
|
||||
|
||||
spam_cli() {
|
||||
echo "Spamming CLI..."
|
||||
# Rapidly spam the CLI with joins/leaves
|
||||
|
||||
MAX_TRIES="${1:-10}"
|
||||
|
||||
for ((s = 0; s <= MAX_TRIES; s++)); do
|
||||
$ZT1 status
|
||||
$ZT2 status
|
||||
sleep 0.1
|
||||
done
|
||||
|
||||
SPAM_TRIES=128
|
||||
|
||||
for ((s = 0; s <= SPAM_TRIES; s++)); do
|
||||
$ZT1 join $TEST_NETWORK
|
||||
done
|
||||
|
||||
for ((s = 0; s <= SPAM_TRIES; s++)); do
|
||||
$ZT1 leave $TEST_NETWORK
|
||||
done
|
||||
|
||||
for ((s = 0; s <= SPAM_TRIES; s++)); do
|
||||
$ZT1 leave $TEST_NETWORK
|
||||
$ZT1 join $TEST_NETWORK
|
||||
done
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# Check for proper exit on load of invalid identity #
|
||||
################################################################################
|
||||
|
||||
check_exit_on_invalid_identity() {
|
||||
echo "Checking ZeroTier exits on invalid identity..."
|
||||
mkdir -p $(pwd)/exit_test
|
||||
ZT1="sudo ./zerotier-one -p9999 $(pwd)/exit_test"
|
||||
echo "asdfasdfasdfasdf" > $(pwd)/exit_test/identity.secret
|
||||
echo "asdfasdfasdfasdf" > $(pwd)/exit_test/authtoken.secret
|
||||
|
||||
echo "Launch ZeroTier with an invalid identity"
|
||||
$ZT1 &
|
||||
my_pid=$!
|
||||
|
||||
echo "Waiting 5 seconds"
|
||||
sleep 5
|
||||
|
||||
# check if process is running
|
||||
kill -0 $my_pid
|
||||
if [ $? -eq 0 ]; then
|
||||
exit_test_and_generate_report $TEST_FAIL "Exit test FAILED: Process still running after being fed an invalid identity"
|
||||
fi
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# Check that we're binding to the primary port for TCP/TCP6/UDP #
|
||||
################################################################################
|
||||
|
||||
check_bind_to_correct_ports() {
|
||||
PORT_NUMBER=$1
|
||||
echo "Checking bound ports:"
|
||||
sudo netstat -anp | grep "$PORT_NUMBER" | grep "zerotier"
|
||||
if [[ $(sudo netstat -anp | grep "$PORT_NUMBER" | grep "zerotier" | grep "tcp") ]];
|
||||
then
|
||||
:
|
||||
else
|
||||
exit_test_and_generate_report $TEST_FAIL "ZeroTier did not bind to tcp/$1"
|
||||
fi
|
||||
if [[ $(sudo netstat -anp | grep "$PORT_NUMBER" | grep "zerotier" | grep "tcp6") ]];
|
||||
then
|
||||
:
|
||||
else
|
||||
exit_test_and_generate_report $TEST_FAIL "ZeroTier did not bind to tcp6/$1"
|
||||
fi
|
||||
if [[ $(sudo netstat -anp | grep "$PORT_NUMBER" | grep "zerotier" | grep "udp") ]];
|
||||
then
|
||||
:
|
||||
else
|
||||
exit_test_and_generate_report $TEST_FAIL "ZeroTier did not bind to udp/$1"
|
||||
fi
|
||||
}
|
||||
|
||||
test "$@"
|
||||
Executable
+24
@@ -0,0 +1,24 @@
|
||||
#!/bin/bash
|
||||
|
||||
################################################################################
|
||||
# Set exit code depending on tool reports #
|
||||
################################################################################
|
||||
|
||||
DEFINITELY_LOST=$(cat *test-results/*summary.json | jq .num_definite_bytes_lost)
|
||||
EXIT_CODE=$(cat *test-results/*summary.json | jq .exit_code)
|
||||
EXIT_REASON=$(cat *test-results/*summary.json | jq .exit_reason)
|
||||
|
||||
cat *test-results/*summary.json
|
||||
|
||||
echo -e "\nBytes of memory definitely lost: $DEFINITELY_LOST"
|
||||
|
||||
if [[ "$DEFINITELY_LOST" -gt 0 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Catch-all for other non-zero exit codes
|
||||
|
||||
if [[ "$EXIT_CODE" -gt 0 ]]; then
|
||||
echo "Test failed: $EXIT_REASON"
|
||||
exit 1
|
||||
fi
|
||||
@@ -0,0 +1,56 @@
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build_ubuntu:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: gitconfig
|
||||
run: |
|
||||
git config --global core.autocrlf input
|
||||
|
||||
- name: checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
toolchain: stable
|
||||
targets: x86_64-unknown-linux-gnu
|
||||
components: rustfmt, clippy
|
||||
|
||||
- name: Set up cargo cache
|
||||
uses: Swatinem/rust-cache@v2
|
||||
continue-on-error: false
|
||||
with:
|
||||
key: ${{ runner.os }}-cargo-${{ hashFiles('rustybits//Cargo.lock') }}
|
||||
shared-key: ${{ runner.os }}-cargo-
|
||||
workspaces: |
|
||||
rustybits/
|
||||
|
||||
- name: validate-1m-linux
|
||||
env:
|
||||
CC: 'gcc'
|
||||
CXX: 'g++'
|
||||
BRANCH: ${{ github.ref_name }}
|
||||
run: |
|
||||
sudo apt update && sudo apt install -y valgrind xmlstarlet gcovr iperf3 tree
|
||||
make one ZT_COVERAGE=1 ZT_TRACE=1
|
||||
sudo chmod +x ./.github/workflows/validate-linux.sh
|
||||
sudo ./.github/workflows/validate-linux.sh
|
||||
|
||||
- name: Archive test results
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{github.sha}}-test-results
|
||||
path: "*test-results*"
|
||||
|
||||
- name: final-report
|
||||
run: |
|
||||
sudo chmod +x ./.github/workflows/validate-report.sh
|
||||
sudo ./.github/workflows/validate-report.sh
|
||||
|
||||
+24
-9
@@ -6,11 +6,19 @@
|
||||
/zerotier
|
||||
/nltest
|
||||
|
||||
# IDE and dev tool stuff
|
||||
/.idea
|
||||
/.nova
|
||||
/compile_commands.json
|
||||
/.claude
|
||||
/.aider
|
||||
|
||||
# OS-created garbage files from various platforms
|
||||
.DS_Store
|
||||
.Apple*
|
||||
Thumbs.db
|
||||
@eaDir
|
||||
lost+found
|
||||
._*
|
||||
|
||||
# Windows build droppings
|
||||
@@ -53,11 +61,13 @@ zt1-src.tar.gz
|
||||
/MacEthernetTapAgent
|
||||
|
||||
# Miscellaneous temporaries, build files, etc.
|
||||
ext/installfiles/windows/*.back*.aip
|
||||
tcp-proxy/tcp-proxy
|
||||
rustybits/target
|
||||
*.log
|
||||
*.opensdf
|
||||
*.user
|
||||
*.cache
|
||||
*.obj
|
||||
*.tlog
|
||||
*.pid
|
||||
*.pkg
|
||||
@@ -81,6 +91,7 @@ debian/zerotier-one*.debhelper
|
||||
debian/*.log
|
||||
debian/zerotier-one.substvars
|
||||
root-watcher/config.json
|
||||
build/
|
||||
|
||||
# Java/Android/JNI build droppings
|
||||
java/obj/
|
||||
@@ -96,13 +107,12 @@ windows/WinUI/bin/
|
||||
windows/ZeroTierOne/Debug/
|
||||
/ext/installfiles/windows/chocolatey/zerotier-one/*.nupkg
|
||||
|
||||
|
||||
# Miscellaneous mac/Xcode droppings
|
||||
.DS_Store
|
||||
.Trashes
|
||||
*.swp
|
||||
*~.nib
|
||||
DerivedData/
|
||||
build/
|
||||
*.pbxuser
|
||||
*.mode1v3
|
||||
*.mode2v3
|
||||
@@ -113,7 +123,6 @@ build/
|
||||
!default.perspectivev3
|
||||
*.xccheckout
|
||||
xcuserdata/
|
||||
ext/librethinkdbxx/build
|
||||
.vscode
|
||||
__pycache__
|
||||
*~
|
||||
@@ -122,17 +131,23 @@ attic/world/mkworld
|
||||
workspace/
|
||||
workspace2/
|
||||
zeroidc/target/
|
||||
tmp/
|
||||
tcp-proxy/target
|
||||
|
||||
#snapcraft specifics
|
||||
# Snapcraft Linux build stuff
|
||||
/parts/
|
||||
/stage/
|
||||
/prime/
|
||||
|
||||
*.snap
|
||||
|
||||
.snapcraft
|
||||
__pycache__
|
||||
*.pyc
|
||||
*_source.tar.bz2
|
||||
snap/.snapcraft
|
||||
snap/.snapcraft
|
||||
build/
|
||||
|
||||
# Local dependency bootstrap output (scripts/bootstrap-deps.sh): the install
|
||||
# prefix and the build/clone scratch dir. Large + host-specific; never commit.
|
||||
.deps/
|
||||
.deps-build/
|
||||
|
||||
.claude/*.local.*
|
||||
-75
@@ -1,75 +0,0 @@
|
||||
# Authors and Third Party Code Licensing Information
|
||||
|
||||
## Primary Authors
|
||||
|
||||
* ZeroTier Core and ZeroTier One virtual networking service<br>
|
||||
Adam Ierymenko / adam.ierymenko@zerotier.com
|
||||
Joseph Henry / joseph.henry@zerotier.com (QoS and multipath)
|
||||
|
||||
* Java JNI Interface to enable Android application development, and Android app itself (code for that is elsewhere)<br>
|
||||
Grant Limberg / glimberg@gmail.com
|
||||
|
||||
* ZeroTier SDK (formerly known as Network Containers)<br>
|
||||
Joseph Henry / joseph.henry@zerotier.com
|
||||
|
||||
## Third Party Contributors
|
||||
|
||||
* A number of fixes and improvements to the new controller, other stuff.<br>
|
||||
Kees Bos / https://github.com/keesbos/
|
||||
|
||||
* Debugging and testing, OpenWRT support fixes.<br>
|
||||
Moritz Warning / moritzwarning@web.de
|
||||
|
||||
* Debian GNU/Linux packaging, manual pages, and license compliance edits.<br>
|
||||
Ben Finney <ben+zerotier@benfinney.id.au>
|
||||
|
||||
* Several others made smaller contributions, which GitHub tracks here:<br>
|
||||
https://github.com/zerotier/ZeroTierOne/graphs/contributors/
|
||||
|
||||
## Third-Party Code
|
||||
|
||||
ZeroTier includes the following third party code, either in ext/ or incorporated into the ZeroTier core. This third party code remains licensed under its original license and is not subject to ZeroTier's BSL license.
|
||||
|
||||
* LZ4 compression algorithm by Yann Collet
|
||||
|
||||
* Files: node/Packet.cpp (bundled within anonymous namespace)
|
||||
* Home page: http://code.google.com/p/lz4/
|
||||
* License grant: BSD 2-clause
|
||||
|
||||
* http-parser by Joyent, Inc. (many authors)
|
||||
|
||||
* Files: ext/http-parser/*
|
||||
* Home page: https://github.com/joyent/http-parser/
|
||||
* License grant: MIT/Expat
|
||||
|
||||
* C++11 json (nlohmann/json) by Niels Lohmann
|
||||
|
||||
* Files: ext/json/*
|
||||
* Home page: https://github.com/nlohmann/json
|
||||
* License grant: MIT
|
||||
|
||||
* tap-windows6 by the OpenVPN project
|
||||
|
||||
* Files: windows/TapDriver6/*
|
||||
* Home page: https://github.com/OpenVPN/tap-windows6/
|
||||
* License grant: GNU GPL v2
|
||||
* ZeroTier Modifications: change name of driver to ZeroTier, add ioctl() to get L2 multicast memberships (source is in ext/ and modifications inherit GPL)
|
||||
|
||||
* Salsa20 stream cipher, Curve25519 elliptic curve cipher, Ed25519 digital signature algorithm, and Poly1305 MAC algorithm, all by Daniel J. Bernstein
|
||||
|
||||
* Files: node/Salsa20.* node/C25519.* node/Poly1305.*
|
||||
* Home page: http://cr.yp.to/
|
||||
* License grant: public domain
|
||||
* ZeroTier Modifications: slight cryptographically-irrelevant modifications for inclusion into ZeroTier core
|
||||
|
||||
* MiniUPNPC and libnatpmp by Thomas Bernard
|
||||
|
||||
* Files: ext/libnatpmp/* ext/miniupnpc/*
|
||||
* Home page: http://miniupnp.free.fr/
|
||||
* License grant: BSD attribution no-endorsement
|
||||
|
||||
* cpp-httplib by yhirose
|
||||
|
||||
* Files: ext/cpp-httplib/*
|
||||
* Home page: https://github.com/yhirose/cpp-httplib
|
||||
* License grant: MIT
|
||||
@@ -0,0 +1,28 @@
|
||||
# Central Controller build dependencies for macOS development.
|
||||
#
|
||||
# brew bundle # install the deps below
|
||||
# ZT_CONTROLLER_DEPS=1 scripts/bootstrap-deps.sh # build the two pinned controller deps (full OTel + google-cloud-cpp)
|
||||
#
|
||||
# The two version-sensitive C++ libraries (opentelemetry-cpp, google-cloud-cpp)
|
||||
# are NOT taken from Homebrew -- they are pinned and built from source by
|
||||
# scripts/bootstrap-deps.sh so every dev/CI machine uses the same versions
|
||||
# (the role conda previously filled). Everything below is stable enough to take
|
||||
# from Homebrew.
|
||||
|
||||
brew "cmake"
|
||||
brew "ninja"
|
||||
brew "pkg-config"
|
||||
brew "rustup-init" # then: rustup-init -y && rustup default stable
|
||||
|
||||
brew "libpqxx"
|
||||
brew "libpq" # keg-only; add $(brew --prefix libpq) to CMAKE_PREFIX_PATH so find_package(PostgreSQL) resolves
|
||||
brew "hiredis"
|
||||
brew "jemalloc"
|
||||
brew "nlohmann-json"
|
||||
brew "openssl@3"
|
||||
brew "abseil"
|
||||
brew "protobuf"
|
||||
brew "grpc"
|
||||
brew "googletest" # google-cloud-cpp requires GTest/GMock at configure (builds its *_mocks libs)
|
||||
brew "curl"
|
||||
brew "inja"
|
||||
+676
-7
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,167 @@
|
||||
{
|
||||
"version": 3,
|
||||
"cmakeMinimumRequired": { "major": 3, "minor": 21, "patch": 0 },
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "unix-base",
|
||||
"hidden": true,
|
||||
"generator": "Unix Makefiles",
|
||||
"binaryDir": "${sourceDir}/build-${presetName}",
|
||||
"cacheVariables": {
|
||||
"CMAKE_PREFIX_PATH": "${sourceDir}/.deps",
|
||||
"CMAKE_BUILD_TYPE": "Release"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linux-base",
|
||||
"hidden": true,
|
||||
"inherits": "unix-base",
|
||||
"condition": { "type": "equals", "lhs": "${hostSystemName}", "rhs": "Linux" }
|
||||
},
|
||||
{
|
||||
"name": "macos-base",
|
||||
"hidden": true,
|
||||
"inherits": "unix-base",
|
||||
"condition": { "type": "equals", "lhs": "${hostSystemName}", "rhs": "Darwin" },
|
||||
"cacheVariables": {
|
||||
"CMAKE_PREFIX_PATH": "${sourceDir}/.deps;$env{HOMEBREW_PREFIX};$env{HOMEBREW_PREFIX}/opt/openssl@3;$env{HOMEBREW_PREFIX}/opt/libpq"
|
||||
}
|
||||
},
|
||||
|
||||
{ "name": "linux-release", "inherits": "linux-base", "displayName": "Linux daemon (Release)" },
|
||||
{ "name": "linux-debug", "inherits": "linux-base", "displayName": "Linux daemon (Debug)", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug" } },
|
||||
{ "name": "linux-controller-release", "inherits": "linux-base", "displayName": "Linux Central Controller (Release)", "cacheVariables": { "ZT1_CENTRAL_CONTROLLER": "ON" } },
|
||||
{ "name": "linux-controller-debug", "inherits": "linux-base", "displayName": "Linux Central Controller (Debug)", "cacheVariables": { "ZT1_CENTRAL_CONTROLLER": "ON", "CMAKE_BUILD_TYPE": "Debug" } },
|
||||
{ "name": "linux-free-release", "inherits": "linux-base", "displayName": "Linux daemon, free / no controller (Release)", "cacheVariables": { "ZT_NONFREE": "OFF" } },
|
||||
{ "name": "linux-free-debug", "inherits": "linux-base", "displayName": "Linux daemon, free / no controller (Debug)", "cacheVariables": { "ZT_NONFREE": "OFF", "CMAKE_BUILD_TYPE": "Debug" } },
|
||||
|
||||
{ "name": "macos-release", "inherits": "macos-base", "displayName": "macOS daemon (Release)" },
|
||||
{ "name": "macos-debug", "inherits": "macos-base", "displayName": "macOS daemon (Debug)", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug" } },
|
||||
{ "name": "macos-controller-release", "inherits": "macos-base", "displayName": "macOS Central Controller (Release)", "cacheVariables": { "ZT1_CENTRAL_CONTROLLER": "ON" } },
|
||||
{ "name": "macos-controller-debug", "inherits": "macos-base", "displayName": "macOS Central Controller (Debug)", "cacheVariables": { "ZT1_CENTRAL_CONTROLLER": "ON", "CMAKE_BUILD_TYPE": "Debug" } },
|
||||
{ "name": "macos-free-release", "inherits": "macos-base", "displayName": "macOS daemon, free / no controller (Release)", "cacheVariables": { "ZT_NONFREE": "OFF" } },
|
||||
{ "name": "macos-free-debug", "inherits": "macos-base", "displayName": "macOS daemon, free / no controller (Debug)", "cacheVariables": { "ZT_NONFREE": "OFF", "CMAKE_BUILD_TYPE": "Debug" } },
|
||||
{ "name": "macos-universal-release", "inherits": "macos-base", "displayName": "macOS universal daemon (arm64 + x86_64, Release)", "cacheVariables": { "CMAKE_OSX_ARCHITECTURES": "arm64;x86_64" } },
|
||||
{ "name": "macos-universal-debug", "inherits": "macos-base", "displayName": "macOS universal daemon (arm64 + x86_64, Debug)", "cacheVariables": { "CMAKE_OSX_ARCHITECTURES": "arm64;x86_64", "CMAKE_BUILD_TYPE": "Debug" } },
|
||||
|
||||
{
|
||||
"name": "freebsd-base",
|
||||
"hidden": true,
|
||||
"inherits": "unix-base",
|
||||
"condition": { "type": "equals", "lhs": "${hostSystemName}", "rhs": "FreeBSD" }
|
||||
},
|
||||
{
|
||||
"name": "openbsd-base",
|
||||
"hidden": true,
|
||||
"inherits": "unix-base",
|
||||
"condition": { "type": "equals", "lhs": "${hostSystemName}", "rhs": "OpenBSD" }
|
||||
},
|
||||
{
|
||||
"name": "netbsd-base",
|
||||
"hidden": true,
|
||||
"inherits": "unix-base",
|
||||
"condition": { "type": "equals", "lhs": "${hostSystemName}", "rhs": "NetBSD" }
|
||||
},
|
||||
|
||||
{ "name": "freebsd-release", "inherits": "freebsd-base", "displayName": "FreeBSD daemon (Release)" },
|
||||
{ "name": "freebsd-debug", "inherits": "freebsd-base", "displayName": "FreeBSD daemon (Debug)", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug" } },
|
||||
{ "name": "freebsd-free-release", "inherits": "freebsd-base", "displayName": "FreeBSD daemon, free / no controller (Release)", "cacheVariables": { "ZT_NONFREE": "OFF" } },
|
||||
{ "name": "freebsd-free-debug", "inherits": "freebsd-base", "displayName": "FreeBSD daemon, free / no controller (Debug)", "cacheVariables": { "ZT_NONFREE": "OFF", "CMAKE_BUILD_TYPE": "Debug" } },
|
||||
|
||||
{ "name": "openbsd-release", "inherits": "openbsd-base", "displayName": "OpenBSD daemon (Release)" },
|
||||
{ "name": "openbsd-debug", "inherits": "openbsd-base", "displayName": "OpenBSD daemon (Debug)", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug" } },
|
||||
{ "name": "openbsd-free-release", "inherits": "openbsd-base", "displayName": "OpenBSD daemon, free / no controller (Release)", "cacheVariables": { "ZT_NONFREE": "OFF" } },
|
||||
{ "name": "openbsd-free-debug", "inherits": "openbsd-base", "displayName": "OpenBSD daemon, free / no controller (Debug)", "cacheVariables": { "ZT_NONFREE": "OFF", "CMAKE_BUILD_TYPE": "Debug" } },
|
||||
|
||||
{ "name": "netbsd-release", "inherits": "netbsd-base", "displayName": "NetBSD daemon (Release)" },
|
||||
{ "name": "netbsd-debug", "inherits": "netbsd-base", "displayName": "NetBSD daemon (Debug)", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug" } },
|
||||
{ "name": "netbsd-free-release", "inherits": "netbsd-base", "displayName": "NetBSD daemon, free / no controller (Release)", "cacheVariables": { "ZT_NONFREE": "OFF" } },
|
||||
{ "name": "netbsd-free-debug", "inherits": "netbsd-base", "displayName": "NetBSD daemon, free / no controller (Debug)", "cacheVariables": { "ZT_NONFREE": "OFF", "CMAKE_BUILD_TYPE": "Debug" } },
|
||||
|
||||
{
|
||||
"name": "windows-x64",
|
||||
"displayName": "Windows x64 daemon (MSVC + vcpkg)",
|
||||
"generator": "Visual Studio 17 2022",
|
||||
"architecture": "x64",
|
||||
"binaryDir": "${sourceDir}/build-${presetName}",
|
||||
"condition": { "type": "equals", "lhs": "${hostSystemName}", "rhs": "Windows" },
|
||||
"cacheVariables": {
|
||||
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
|
||||
"VCPKG_TARGET_TRIPLET": "x64-windows-static",
|
||||
"CMAKE_PREFIX_PATH": "${sourceDir}/.deps/x64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "windows-arm64",
|
||||
"inherits": "windows-x64",
|
||||
"displayName": "Windows ARM64 daemon (MSVC + vcpkg)",
|
||||
"architecture": "ARM64",
|
||||
"cacheVariables": { "VCPKG_TARGET_TRIPLET": "arm64-windows-static", "CMAKE_PREFIX_PATH": "${sourceDir}/.deps/ARM64" }
|
||||
},
|
||||
{
|
||||
"name": "windows-x86",
|
||||
"inherits": "windows-x64",
|
||||
"displayName": "Windows x86 daemon (MSVC + vcpkg)",
|
||||
"architecture": "Win32",
|
||||
"cacheVariables": { "VCPKG_TARGET_TRIPLET": "x86-windows-static", "CMAKE_PREFIX_PATH": "${sourceDir}/.deps/Win32" }
|
||||
},
|
||||
{
|
||||
"name": "windows-x64-free",
|
||||
"inherits": "windows-x64",
|
||||
"displayName": "Windows x64 daemon (free / ZT_NONFREE=OFF, no bundled controller)",
|
||||
"cacheVariables": { "ZT_NONFREE": "OFF" }
|
||||
},
|
||||
{
|
||||
"name": "windows-arm64-free",
|
||||
"inherits": "windows-arm64",
|
||||
"displayName": "Windows ARM64 daemon (free / ZT_NONFREE=OFF, no bundled controller)",
|
||||
"cacheVariables": { "ZT_NONFREE": "OFF" }
|
||||
},
|
||||
{
|
||||
"name": "windows-x86-free",
|
||||
"inherits": "windows-x86",
|
||||
"displayName": "Windows x86 daemon (free / ZT_NONFREE=OFF, no bundled controller)",
|
||||
"cacheVariables": { "ZT_NONFREE": "OFF" }
|
||||
}
|
||||
],
|
||||
"buildPresets": [
|
||||
{ "name": "linux-release", "configurePreset": "linux-release" },
|
||||
{ "name": "linux-debug", "configurePreset": "linux-debug" },
|
||||
{ "name": "linux-controller-release", "configurePreset": "linux-controller-release" },
|
||||
{ "name": "linux-controller-debug", "configurePreset": "linux-controller-debug" },
|
||||
{ "name": "linux-free-release", "configurePreset": "linux-free-release" },
|
||||
{ "name": "linux-free-debug", "configurePreset": "linux-free-debug" },
|
||||
{ "name": "macos-release", "configurePreset": "macos-release" },
|
||||
{ "name": "macos-debug", "configurePreset": "macos-debug" },
|
||||
{ "name": "macos-controller-release", "configurePreset": "macos-controller-release" },
|
||||
{ "name": "macos-controller-debug", "configurePreset": "macos-controller-debug" },
|
||||
{ "name": "macos-free-release", "configurePreset": "macos-free-release" },
|
||||
{ "name": "macos-free-debug", "configurePreset": "macos-free-debug" },
|
||||
{ "name": "macos-universal-release", "configurePreset": "macos-universal-release" },
|
||||
{ "name": "macos-universal-debug", "configurePreset": "macos-universal-debug" },
|
||||
{ "name": "freebsd-release", "configurePreset": "freebsd-release" },
|
||||
{ "name": "freebsd-debug", "configurePreset": "freebsd-debug" },
|
||||
{ "name": "freebsd-free-release", "configurePreset": "freebsd-free-release" },
|
||||
{ "name": "freebsd-free-debug", "configurePreset": "freebsd-free-debug" },
|
||||
{ "name": "openbsd-release", "configurePreset": "openbsd-release" },
|
||||
{ "name": "openbsd-debug", "configurePreset": "openbsd-debug" },
|
||||
{ "name": "openbsd-free-release", "configurePreset": "openbsd-free-release" },
|
||||
{ "name": "openbsd-free-debug", "configurePreset": "openbsd-free-debug" },
|
||||
{ "name": "netbsd-release", "configurePreset": "netbsd-release" },
|
||||
{ "name": "netbsd-debug", "configurePreset": "netbsd-debug" },
|
||||
{ "name": "netbsd-free-release", "configurePreset": "netbsd-free-release" },
|
||||
{ "name": "netbsd-free-debug", "configurePreset": "netbsd-free-debug" },
|
||||
{ "name": "windows-x64-release", "configurePreset": "windows-x64", "configuration": "Release" },
|
||||
{ "name": "windows-x64-debug", "configurePreset": "windows-x64", "configuration": "Debug" },
|
||||
{ "name": "windows-arm64-release", "configurePreset": "windows-arm64", "configuration": "Release" },
|
||||
{ "name": "windows-arm64-debug", "configurePreset": "windows-arm64", "configuration": "Debug" },
|
||||
{ "name": "windows-x86-release", "configurePreset": "windows-x86", "configuration": "Release" },
|
||||
{ "name": "windows-x86-debug", "configurePreset": "windows-x86", "configuration": "Debug" },
|
||||
{ "name": "windows-x64-free-release", "configurePreset": "windows-x64-free", "configuration": "Release" },
|
||||
{ "name": "windows-x64-free-debug", "configurePreset": "windows-x64-free", "configuration": "Debug" },
|
||||
{ "name": "windows-arm64-free-release", "configurePreset": "windows-arm64-free", "configuration": "Release" },
|
||||
{ "name": "windows-arm64-free-debug", "configurePreset": "windows-arm64-free", "configuration": "Debug" },
|
||||
{ "name": "windows-x86-free-release", "configurePreset": "windows-x86-free", "configuration": "Release" },
|
||||
{ "name": "windows-x86-free-debug", "configurePreset": "windows-x86-free", "configuration": "Debug" }
|
||||
]
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
ZeroTier One, an endpoint server for the ZeroTier virtual network layer.
|
||||
Copyright © 2011–2019 ZeroTier, Inc.
|
||||
|
||||
ZeroTier is released under the terms of the BSL version 1.1. See the
|
||||
file LICENSE.txt for details.
|
||||
|
||||
..
|
||||
Local variables:
|
||||
coding: utf-8
|
||||
mode: text
|
||||
End:
|
||||
vim: fileencoding=utf-8 filetype=text :
|
||||
+8
-13
@@ -1,22 +1,17 @@
|
||||
# vim: ft=dockerfile
|
||||
|
||||
FROM debian:buster as stage
|
||||
FROM debian:bookworm
|
||||
|
||||
ARG PACKAGE_BASEURL=https://download.zerotier.com/debian/buster/pool/main/z/zerotier-one/
|
||||
ARG ARCH=amd64
|
||||
ARG VERSION
|
||||
|
||||
RUN apt-get update -qq && apt-get install curl -y
|
||||
RUN curl -sSL -o zerotier-one.deb "${PACKAGE_BASEURL}/zerotier-one_${VERSION}_${ARCH}.deb"
|
||||
RUN apt-get update -qq && apt-get install curl gpg -y
|
||||
RUN mkdir -p /usr/share/zerotier && \
|
||||
curl -o /usr/share/zerotier/tmp.asc "https://download.zerotier.com/contact%40zerotier.com.gpg" && \
|
||||
gpg --no-default-keyring --keyring /usr/share/zerotier/zerotier.gpg --import /usr/share/zerotier/tmp.asc && \
|
||||
rm -f /usr/share/zerotier/tmp.asc && \
|
||||
echo "deb [signed-by=/usr/share/zerotier/zerotier.gpg] http://download.zerotier.com/debian/bookworm bookworm main" > /etc/apt/sources.list.d/zerotier.list
|
||||
|
||||
FROM debian:buster
|
||||
|
||||
RUN apt-get update -qq && apt-get install openssl libssl1.1 -y
|
||||
|
||||
COPY --from=stage zerotier-one.deb .
|
||||
|
||||
RUN dpkg -i zerotier-one.deb && rm -f zerotier-one.deb
|
||||
RUN echo "${VERSION}" >/etc/zerotier-version
|
||||
RUN apt-get update -qq && apt-get install zerotier-one=${VERSION} curl iproute2 net-tools iputils-ping openssl libssl3 -y
|
||||
RUN rm -rf /var/lib/zerotier-one
|
||||
|
||||
COPY entrypoint.sh.release /entrypoint.sh
|
||||
|
||||
Vendored
-365
@@ -1,365 +0,0 @@
|
||||
pipeline {
|
||||
options {
|
||||
disableConcurrentBuilds()
|
||||
preserveStashes(buildCount: 10)
|
||||
timestamps()
|
||||
}
|
||||
parameters {
|
||||
booleanParam(name: "BUILD_ALL", defaultValue: false, description: "Build all supported platform/architecture combos. Defaults to x86/x64 only")
|
||||
}
|
||||
|
||||
agent none
|
||||
|
||||
stages {
|
||||
stage ("Build") {
|
||||
steps {
|
||||
script {
|
||||
def tasks = [:]
|
||||
tasks << buildStaticBinaries()
|
||||
tasks << buildDebianNative()
|
||||
tasks << buildCentosNative()
|
||||
|
||||
parallel tasks
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("Package Static") {
|
||||
steps {
|
||||
script {
|
||||
parallel packageStatic()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def buildStaticBinaries() {
|
||||
def tasks = [:]
|
||||
def dist = ["alpine"]
|
||||
def archs = []
|
||||
if (params.BUILD_ALL == true) {
|
||||
archs = ["arm64", "amd64", "i386", "armhf", "armel", "ppc64le", "s390x"]
|
||||
} else {
|
||||
archs = ["amd64", "i386"]
|
||||
}
|
||||
|
||||
tasks << getTasks(dist, archs, { distro, platform ->
|
||||
def myNode = {
|
||||
node ('linux-build') {
|
||||
dir ("build") {
|
||||
checkout scm
|
||||
}
|
||||
sh "echo ${distro}-${platform}"
|
||||
def runtime = docker.image("ztbuild/${distro}-${platform}:latest")
|
||||
runtime.inside {
|
||||
dir("build") {
|
||||
sh 'make -j8 ZT_STATIC=1 all'
|
||||
sh "file ./zerotier-one"
|
||||
sh "mv zerotier-one zerotier-one-static-${platform}"
|
||||
stash includes: 'zerotier-one-static-*', name: "static-${platform}"
|
||||
}
|
||||
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
|
||||
}
|
||||
}
|
||||
}
|
||||
return myNode
|
||||
})
|
||||
|
||||
return tasks
|
||||
}
|
||||
|
||||
def getTasks(axisDistro, axisPlatform, task) {
|
||||
def tasks = [:]
|
||||
for(int i=0; i< axisDistro.size(); i++) {
|
||||
def axisDistroValue = axisDistro[i]
|
||||
for(int j=0; j< axisPlatform.size(); j++) {
|
||||
def axisPlatformValue = axisPlatform[j]
|
||||
tasks["${axisDistroValue}/${axisPlatformValue}"] = task(axisDistroValue, axisPlatformValue)
|
||||
}
|
||||
}
|
||||
return tasks
|
||||
}
|
||||
|
||||
def packageStatic() {
|
||||
def tasks = [:]
|
||||
|
||||
def centos6 = ["centos6"]
|
||||
def centos6Arch = ["i386", "amd64"]
|
||||
tasks << getTasks(centos6, centos6Arch, { distro, arch ->
|
||||
def myNode = {
|
||||
node ('linux-build') {
|
||||
dir ("build") {
|
||||
checkout scm
|
||||
}
|
||||
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
|
||||
runtime.inside {
|
||||
dir("build") {
|
||||
unstash "static-${arch}"
|
||||
sh "mv zerotier-one-static-${arch} zerotier-one && chmod +x zerotier-one"
|
||||
sh "make redhat"
|
||||
sh "mkdir -p ${distro}"
|
||||
sh "cp -av `find ~/rpmbuild/ -type f -name \"*.rpm\"` ${distro}/"
|
||||
archiveArtifacts artifacts: "${distro}/*.rpm", onlyIfSuccessful: true
|
||||
}
|
||||
}
|
||||
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
|
||||
}
|
||||
}
|
||||
return myNode
|
||||
})
|
||||
|
||||
def centos7 = ["centos7"]
|
||||
def centos7Arch = ["i386"]
|
||||
tasks << getTasks(centos7, centos7Arch, { distro, arch ->
|
||||
def myNode = {
|
||||
node ('linux-build') {
|
||||
dir ("build") {
|
||||
checkout scm
|
||||
}
|
||||
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
|
||||
runtime.inside {
|
||||
dir("build") {
|
||||
unstash "static-${arch}"
|
||||
sh "mv zerotier-one-static-${arch} zerotier-one && chmod +x zerotier-one"
|
||||
sh "make redhat"
|
||||
sh "mkdir -p ${distro}"
|
||||
sh "cp -av `find ~/rpmbuild/ -type f -name \"*.rpm\"` ${distro}/"
|
||||
archiveArtifacts artifacts: "${distro}/*.rpm", onlyIfSuccessful: true
|
||||
}
|
||||
}
|
||||
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
|
||||
}
|
||||
}
|
||||
return myNode
|
||||
})
|
||||
|
||||
if (params.BUILD_ALL == true) {
|
||||
def clefos7 = ["clefos"]
|
||||
def clefos7Arch = ["s390x"]
|
||||
tasks << getTasks(clefos7, clefos7Arch, { distro, arch ->
|
||||
def myNode = {
|
||||
node ('linux-build') {
|
||||
dir ("build") {
|
||||
checkout scm
|
||||
}
|
||||
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
|
||||
runtime.inside {
|
||||
dir("build/") {
|
||||
unstash "static-${arch}"
|
||||
sh "mv zerotier-one-static-${arch} zerotier-one && chmod +x zerotier-one"
|
||||
sh "make redhat"
|
||||
sh "mkdir -p ${distro}"
|
||||
sh "cp -av `find ~/rpmbuild/ -type f -name \"*.rpm\"` ${distro}/"
|
||||
archiveArtifacts artifacts: "${distro}/*.rpm", onlyIfSuccessful: true
|
||||
}
|
||||
}
|
||||
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
|
||||
}
|
||||
}
|
||||
return myNode
|
||||
})
|
||||
}
|
||||
|
||||
def debianJessie = ["debian-jessie"]
|
||||
def debianJessieArchs = []
|
||||
if (params.BUILD_ALL == true) {
|
||||
debianJessieArch = ["armhf", "armel", "amd64", "i386"]
|
||||
} else {
|
||||
debianJessieArch = ["amd64", "i386"]
|
||||
}
|
||||
tasks << getTasks(debianJessie, debianJessieArch, { distro, arch ->
|
||||
def myNode = {
|
||||
node ('linux-build') {
|
||||
dir ("build") {
|
||||
checkout scm
|
||||
}
|
||||
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
|
||||
runtime.inside {
|
||||
sh "ls -la ."
|
||||
dir('build/') {
|
||||
sh "ls -la ."
|
||||
unstash "static-${arch}"
|
||||
sh "pwd"
|
||||
sh "mv zerotier-one-static-${arch} zerotier-one && chmod +x zerotier-one && file ./zerotier-one"
|
||||
sh "mv -f debian/rules.static debian/rules"
|
||||
sh "make debian"
|
||||
}
|
||||
sh "mkdir -p ${distro}"
|
||||
sh "mv *.deb ${distro}"
|
||||
archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true
|
||||
}
|
||||
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
|
||||
}
|
||||
}
|
||||
return myNode
|
||||
})
|
||||
|
||||
def ubuntuTrusty = ["ubuntu-trusty"]
|
||||
def ubuntuTrustyArch = []
|
||||
if (params.BUILD_ALL == true) {
|
||||
ubuntuTrustyArch = ["i386", "amd64", "armhf", "arm64", "ppc64le"]
|
||||
} else {
|
||||
ubuntuTrustyArch = ["i386", "amd64"]
|
||||
}
|
||||
tasks << getTasks(ubuntuTrusty, ubuntuTrustyArch, { distro, arch ->
|
||||
def myNode = {
|
||||
node ('linux-build') {
|
||||
dir ("build") {
|
||||
checkout scm
|
||||
}
|
||||
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
|
||||
runtime.inside {
|
||||
sh "ls -la ."
|
||||
dir('build/') {
|
||||
sh "ls -la ."
|
||||
unstash "static-${arch}"
|
||||
sh "pwd"
|
||||
sh "mv zerotier-one-static-${arch} zerotier-one && chmod +x zerotier-one && file ./zerotier-one"
|
||||
sh "mv -f debian/rules.static debian/rules"
|
||||
sh "make debian"
|
||||
}
|
||||
sh "mkdir -p ${distro}"
|
||||
sh "mv *.deb ${distro}"
|
||||
archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true
|
||||
}
|
||||
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
|
||||
}
|
||||
}
|
||||
return myNode
|
||||
})
|
||||
|
||||
def debianWheezy = ["debian-wheezy"]
|
||||
def debianWheezyArchs = []
|
||||
if (params.BUILD_ALL == true) {
|
||||
debianWheezyArchs = ["armhf", "armel", "amd64", "i386"]
|
||||
} else {
|
||||
debianWheezyArchs = ["amd64", "i386"]
|
||||
}
|
||||
tasks << getTasks(debianJessie, debianJessieArch, { distro, arch ->
|
||||
def myNode = {
|
||||
node ('linux-build') {
|
||||
dir ("build") {
|
||||
checkout scm
|
||||
}
|
||||
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
|
||||
runtime.inside {
|
||||
dir('build/') {
|
||||
unstash "static-${arch}"
|
||||
sh "mv zerotier-one-static-${arch} zerotier-one && chmod +x zerotier-one && file ./zerotier-one"
|
||||
sh "mv -f debian/rules.wheezy.static debian/rules"
|
||||
sh "mv -f debian/control.wheezy debian/control"
|
||||
sh "make debian"
|
||||
}
|
||||
sh "mkdir -p ${distro}"
|
||||
sh "mv *.deb ${distro}"
|
||||
archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true
|
||||
}
|
||||
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
|
||||
}
|
||||
}
|
||||
return myNode
|
||||
})
|
||||
|
||||
return tasks
|
||||
}
|
||||
|
||||
def buildDebianNative() {
|
||||
def tasks = [:]
|
||||
def buster = ["debian-buster", "debian-stretch", "debian-bullseye", "debian-sid"]
|
||||
def busterArchs = []
|
||||
if (params.BUILD_ALL) {
|
||||
busterArchs = ["s390x", "ppc64le", "i386", "armhf", "armel", "arm64", "amd64"]
|
||||
} else {
|
||||
busterArchs = ["amd64", "i386"]
|
||||
}
|
||||
|
||||
def build = { distro, arch ->
|
||||
def myNode = {
|
||||
node ('linux-build') {
|
||||
dir ("build") {
|
||||
checkout scm
|
||||
}
|
||||
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
|
||||
runtime.inside {
|
||||
dir("build") {
|
||||
sh 'make debian'
|
||||
}
|
||||
sh "mkdir -p ${distro}"
|
||||
sh "mv *.deb ${distro}"
|
||||
archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true
|
||||
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
|
||||
}
|
||||
}
|
||||
}
|
||||
return myNode
|
||||
}
|
||||
|
||||
tasks << getTasks(buster, busterArchs, build)
|
||||
|
||||
// bash is broken when running under QEMU-s390x on Xenial
|
||||
def xenial = ["ubuntu-xenial"]
|
||||
def xenialArchs = []
|
||||
if (params.BUILD_ALL == true) {
|
||||
xenialArchs = ["i386", "amd64", "armhf", "arm64", "ppc64le"]
|
||||
} else {
|
||||
xenialArchs = ["i386", "amd64"]
|
||||
}
|
||||
tasks << getTasks(xenial, xenialArchs, build)
|
||||
|
||||
def ubuntu = ["ubuntu-bionic", "ubuntu-eoan"]
|
||||
def ubuntuArchs = []
|
||||
if (params.BUILD_ALL == true) {
|
||||
ubuntuArchs = ["i386", "amd64", "armhf", "arm64", "ppc64le", "s390x"]
|
||||
} else {
|
||||
ubuntuArchs = ["i386", "amd64"]
|
||||
}
|
||||
tasks << getTasks(ubuntu, ubuntuArchs, build)
|
||||
|
||||
def kali = ["kali-rolling"]
|
||||
def kaliArchs = ["amd64"]
|
||||
tasks << getTasks(kali, kaliArchs, build)
|
||||
|
||||
return tasks
|
||||
}
|
||||
|
||||
def buildCentosNative() {
|
||||
def tasks = [:]
|
||||
|
||||
def build = { distro, arch ->
|
||||
def myNode = {
|
||||
node ('linux-build') {
|
||||
dir ("build") {
|
||||
checkout scm
|
||||
}
|
||||
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
|
||||
runtime.inside {
|
||||
dir("build") {
|
||||
sh 'make -j4'
|
||||
sh 'make redhat'
|
||||
sh "mkdir -p ${distro}"
|
||||
sh "cp -av `find ~/rpmbuild/ -type f -name \"*.rpm\"` ${distro}/"
|
||||
archiveArtifacts artifacts: "${distro}/*.rpm", onlyIfSuccessful: true
|
||||
}
|
||||
|
||||
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
|
||||
}
|
||||
}
|
||||
}
|
||||
return myNode
|
||||
}
|
||||
|
||||
def centos8 = ["centos8"]
|
||||
def centos8Archs = []
|
||||
if (params.BUILD_ALL == true) {
|
||||
centos8Archs = ["amd64", "arm64", "ppc64le"]
|
||||
} else {
|
||||
centos8Archs = ["amd64"]
|
||||
}
|
||||
tasks << getTasks(centos8, centos8Archs, build)
|
||||
|
||||
def centos7 = ["centos7"]
|
||||
def centos7Archs = ["amd64"]
|
||||
tasks << getTasks(centos7, centos7Archs, build)
|
||||
|
||||
return tasks
|
||||
}
|
||||
+373
@@ -0,0 +1,373 @@
|
||||
Mozilla Public License Version 2.0
|
||||
==================================
|
||||
|
||||
1. Definitions
|
||||
--------------
|
||||
|
||||
1.1. "Contributor"
|
||||
means each individual or legal entity that creates, contributes to
|
||||
the creation of, or owns Covered Software.
|
||||
|
||||
1.2. "Contributor Version"
|
||||
means the combination of the Contributions of others (if any) used
|
||||
by a Contributor and that particular Contributor's Contribution.
|
||||
|
||||
1.3. "Contribution"
|
||||
means Covered Software of a particular Contributor.
|
||||
|
||||
1.4. "Covered Software"
|
||||
means Source Code Form to which the initial Contributor has attached
|
||||
the notice in Exhibit A, the Executable Form of such Source Code
|
||||
Form, and Modifications of such Source Code Form, in each case
|
||||
including portions thereof.
|
||||
|
||||
1.5. "Incompatible With Secondary Licenses"
|
||||
means
|
||||
|
||||
(a) that the initial Contributor has attached the notice described
|
||||
in Exhibit B to the Covered Software; or
|
||||
|
||||
(b) that the Covered Software was made available under the terms of
|
||||
version 1.1 or earlier of the License, but not also under the
|
||||
terms of a Secondary License.
|
||||
|
||||
1.6. "Executable Form"
|
||||
means any form of the work other than Source Code Form.
|
||||
|
||||
1.7. "Larger Work"
|
||||
means a work that combines Covered Software with other material, in
|
||||
a separate file or files, that is not Covered Software.
|
||||
|
||||
1.8. "License"
|
||||
means this document.
|
||||
|
||||
1.9. "Licensable"
|
||||
means having the right to grant, to the maximum extent possible,
|
||||
whether at the time of the initial grant or subsequently, any and
|
||||
all of the rights conveyed by this License.
|
||||
|
||||
1.10. "Modifications"
|
||||
means any of the following:
|
||||
|
||||
(a) any file in Source Code Form that results from an addition to,
|
||||
deletion from, or modification of the contents of Covered
|
||||
Software; or
|
||||
|
||||
(b) any new file in Source Code Form that contains any Covered
|
||||
Software.
|
||||
|
||||
1.11. "Patent Claims" of a Contributor
|
||||
means any patent claim(s), including without limitation, method,
|
||||
process, and apparatus claims, in any patent Licensable by such
|
||||
Contributor that would be infringed, but for the grant of the
|
||||
License, by the making, using, selling, offering for sale, having
|
||||
made, import, or transfer of either its Contributions or its
|
||||
Contributor Version.
|
||||
|
||||
1.12. "Secondary License"
|
||||
means either the GNU General Public License, Version 2.0, the GNU
|
||||
Lesser General Public License, Version 2.1, the GNU Affero General
|
||||
Public License, Version 3.0, or any later versions of those
|
||||
licenses.
|
||||
|
||||
1.13. "Source Code Form"
|
||||
means the form of the work preferred for making modifications.
|
||||
|
||||
1.14. "You" (or "Your")
|
||||
means an individual or a legal entity exercising rights under this
|
||||
License. For legal entities, "You" includes any entity that
|
||||
controls, is controlled by, or is under common control with You. For
|
||||
purposes of this definition, "control" means (a) the power, direct
|
||||
or indirect, to cause the direction or management of such entity,
|
||||
whether by contract or otherwise, or (b) ownership of more than
|
||||
fifty percent (50%) of the outstanding shares or beneficial
|
||||
ownership of such entity.
|
||||
|
||||
2. License Grants and Conditions
|
||||
--------------------------------
|
||||
|
||||
2.1. Grants
|
||||
|
||||
Each Contributor hereby grants You a world-wide, royalty-free,
|
||||
non-exclusive license:
|
||||
|
||||
(a) under intellectual property rights (other than patent or trademark)
|
||||
Licensable by such Contributor to use, reproduce, make available,
|
||||
modify, display, perform, distribute, and otherwise exploit its
|
||||
Contributions, either on an unmodified basis, with Modifications, or
|
||||
as part of a Larger Work; and
|
||||
|
||||
(b) under Patent Claims of such Contributor to make, use, sell, offer
|
||||
for sale, have made, import, and otherwise transfer either its
|
||||
Contributions or its Contributor Version.
|
||||
|
||||
2.2. Effective Date
|
||||
|
||||
The licenses granted in Section 2.1 with respect to any Contribution
|
||||
become effective for each Contribution on the date the Contributor first
|
||||
distributes such Contribution.
|
||||
|
||||
2.3. Limitations on Grant Scope
|
||||
|
||||
The licenses granted in this Section 2 are the only rights granted under
|
||||
this License. No additional rights or licenses will be implied from the
|
||||
distribution or licensing of Covered Software under this License.
|
||||
Notwithstanding Section 2.1(b) above, no patent license is granted by a
|
||||
Contributor:
|
||||
|
||||
(a) for any code that a Contributor has removed from Covered Software;
|
||||
or
|
||||
|
||||
(b) for infringements caused by: (i) Your and any other third party's
|
||||
modifications of Covered Software, or (ii) the combination of its
|
||||
Contributions with other software (except as part of its Contributor
|
||||
Version); or
|
||||
|
||||
(c) under Patent Claims infringed by Covered Software in the absence of
|
||||
its Contributions.
|
||||
|
||||
This License does not grant any rights in the trademarks, service marks,
|
||||
or logos of any Contributor (except as may be necessary to comply with
|
||||
the notice requirements in Section 3.4).
|
||||
|
||||
2.4. Subsequent Licenses
|
||||
|
||||
No Contributor makes additional grants as a result of Your choice to
|
||||
distribute the Covered Software under a subsequent version of this
|
||||
License (see Section 10.2) or under the terms of a Secondary License (if
|
||||
permitted under the terms of Section 3.3).
|
||||
|
||||
2.5. Representation
|
||||
|
||||
Each Contributor represents that the Contributor believes its
|
||||
Contributions are its original creation(s) or it has sufficient rights
|
||||
to grant the rights to its Contributions conveyed by this License.
|
||||
|
||||
2.6. Fair Use
|
||||
|
||||
This License is not intended to limit any rights You have under
|
||||
applicable copyright doctrines of fair use, fair dealing, or other
|
||||
equivalents.
|
||||
|
||||
2.7. Conditions
|
||||
|
||||
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
|
||||
in Section 2.1.
|
||||
|
||||
3. Responsibilities
|
||||
-------------------
|
||||
|
||||
3.1. Distribution of Source Form
|
||||
|
||||
All distribution of Covered Software in Source Code Form, including any
|
||||
Modifications that You create or to which You contribute, must be under
|
||||
the terms of this License. You must inform recipients that the Source
|
||||
Code Form of the Covered Software is governed by the terms of this
|
||||
License, and how they can obtain a copy of this License. You may not
|
||||
attempt to alter or restrict the recipients' rights in the Source Code
|
||||
Form.
|
||||
|
||||
3.2. Distribution of Executable Form
|
||||
|
||||
If You distribute Covered Software in Executable Form then:
|
||||
|
||||
(a) such Covered Software must also be made available in Source Code
|
||||
Form, as described in Section 3.1, and You must inform recipients of
|
||||
the Executable Form how they can obtain a copy of such Source Code
|
||||
Form by reasonable means in a timely manner, at a charge no more
|
||||
than the cost of distribution to the recipient; and
|
||||
|
||||
(b) You may distribute such Executable Form under the terms of this
|
||||
License, or sublicense it under different terms, provided that the
|
||||
license for the Executable Form does not attempt to limit or alter
|
||||
the recipients' rights in the Source Code Form under this License.
|
||||
|
||||
3.3. Distribution of a Larger Work
|
||||
|
||||
You may create and distribute a Larger Work under terms of Your choice,
|
||||
provided that You also comply with the requirements of this License for
|
||||
the Covered Software. If the Larger Work is a combination of Covered
|
||||
Software with a work governed by one or more Secondary Licenses, and the
|
||||
Covered Software is not Incompatible With Secondary Licenses, this
|
||||
License permits You to additionally distribute such Covered Software
|
||||
under the terms of such Secondary License(s), so that the recipient of
|
||||
the Larger Work may, at their option, further distribute the Covered
|
||||
Software under the terms of either this License or such Secondary
|
||||
License(s).
|
||||
|
||||
3.4. Notices
|
||||
|
||||
You may not remove or alter the substance of any license notices
|
||||
(including copyright notices, patent notices, disclaimers of warranty,
|
||||
or limitations of liability) contained within the Source Code Form of
|
||||
the Covered Software, except that You may alter any license notices to
|
||||
the extent required to remedy known factual inaccuracies.
|
||||
|
||||
3.5. Application of Additional Terms
|
||||
|
||||
You may choose to offer, and to charge a fee for, warranty, support,
|
||||
indemnity or liability obligations to one or more recipients of Covered
|
||||
Software. However, You may do so only on Your own behalf, and not on
|
||||
behalf of any Contributor. You must make it absolutely clear that any
|
||||
such warranty, support, indemnity, or liability obligation is offered by
|
||||
You alone, and You hereby agree to indemnify every Contributor for any
|
||||
liability incurred by such Contributor as a result of warranty, support,
|
||||
indemnity or liability terms You offer. You may include additional
|
||||
disclaimers of warranty and limitations of liability specific to any
|
||||
jurisdiction.
|
||||
|
||||
4. Inability to Comply Due to Statute or Regulation
|
||||
---------------------------------------------------
|
||||
|
||||
If it is impossible for You to comply with any of the terms of this
|
||||
License with respect to some or all of the Covered Software due to
|
||||
statute, judicial order, or regulation then You must: (a) comply with
|
||||
the terms of this License to the maximum extent possible; and (b)
|
||||
describe the limitations and the code they affect. Such description must
|
||||
be placed in a text file included with all distributions of the Covered
|
||||
Software under this License. Except to the extent prohibited by statute
|
||||
or regulation, such description must be sufficiently detailed for a
|
||||
recipient of ordinary skill to be able to understand it.
|
||||
|
||||
5. Termination
|
||||
--------------
|
||||
|
||||
5.1. The rights granted under this License will terminate automatically
|
||||
if You fail to comply with any of its terms. However, if You become
|
||||
compliant, then the rights granted under this License from a particular
|
||||
Contributor are reinstated (a) provisionally, unless and until such
|
||||
Contributor explicitly and finally terminates Your grants, and (b) on an
|
||||
ongoing basis, if such Contributor fails to notify You of the
|
||||
non-compliance by some reasonable means prior to 60 days after You have
|
||||
come back into compliance. Moreover, Your grants from a particular
|
||||
Contributor are reinstated on an ongoing basis if such Contributor
|
||||
notifies You of the non-compliance by some reasonable means, this is the
|
||||
first time You have received notice of non-compliance with this License
|
||||
from such Contributor, and You become compliant prior to 30 days after
|
||||
Your receipt of the notice.
|
||||
|
||||
5.2. If You initiate litigation against any entity by asserting a patent
|
||||
infringement claim (excluding declaratory judgment actions,
|
||||
counter-claims, and cross-claims) alleging that a Contributor Version
|
||||
directly or indirectly infringes any patent, then the rights granted to
|
||||
You by any and all Contributors for the Covered Software under Section
|
||||
2.1 of this License shall terminate.
|
||||
|
||||
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
|
||||
end user license agreements (excluding distributors and resellers) which
|
||||
have been validly granted by You or Your distributors under this License
|
||||
prior to termination shall survive termination.
|
||||
|
||||
************************************************************************
|
||||
* *
|
||||
* 6. Disclaimer of Warranty *
|
||||
* ------------------------- *
|
||||
* *
|
||||
* Covered Software is provided under this License on an "as is" *
|
||||
* basis, without warranty of any kind, either expressed, implied, or *
|
||||
* statutory, including, without limitation, warranties that the *
|
||||
* Covered Software is free of defects, merchantable, fit for a *
|
||||
* particular purpose or non-infringing. The entire risk as to the *
|
||||
* quality and performance of the Covered Software is with You. *
|
||||
* Should any Covered Software prove defective in any respect, You *
|
||||
* (not any Contributor) assume the cost of any necessary servicing, *
|
||||
* repair, or correction. This disclaimer of warranty constitutes an *
|
||||
* essential part of this License. No use of any Covered Software is *
|
||||
* authorized under this License except under this disclaimer. *
|
||||
* *
|
||||
************************************************************************
|
||||
|
||||
************************************************************************
|
||||
* *
|
||||
* 7. Limitation of Liability *
|
||||
* -------------------------- *
|
||||
* *
|
||||
* Under no circumstances and under no legal theory, whether tort *
|
||||
* (including negligence), contract, or otherwise, shall any *
|
||||
* Contributor, or anyone who distributes Covered Software as *
|
||||
* permitted above, be liable to You for any direct, indirect, *
|
||||
* special, incidental, or consequential damages of any character *
|
||||
* including, without limitation, damages for lost profits, loss of *
|
||||
* goodwill, work stoppage, computer failure or malfunction, or any *
|
||||
* and all other commercial damages or losses, even if such party *
|
||||
* shall have been informed of the possibility of such damages. This *
|
||||
* limitation of liability shall not apply to liability for death or *
|
||||
* personal injury resulting from such party's negligence to the *
|
||||
* extent applicable law prohibits such limitation. Some *
|
||||
* jurisdictions do not allow the exclusion or limitation of *
|
||||
* incidental or consequential damages, so this exclusion and *
|
||||
* limitation may not apply to You. *
|
||||
* *
|
||||
************************************************************************
|
||||
|
||||
8. Litigation
|
||||
-------------
|
||||
|
||||
Any litigation relating to this License may be brought only in the
|
||||
courts of a jurisdiction where the defendant maintains its principal
|
||||
place of business and such litigation shall be governed by laws of that
|
||||
jurisdiction, without reference to its conflict-of-law provisions.
|
||||
Nothing in this Section shall prevent a party's ability to bring
|
||||
cross-claims or counter-claims.
|
||||
|
||||
9. Miscellaneous
|
||||
----------------
|
||||
|
||||
This License represents the complete agreement concerning the subject
|
||||
matter hereof. If any provision of this License is held to be
|
||||
unenforceable, such provision shall be reformed only to the extent
|
||||
necessary to make it enforceable. Any law or regulation which provides
|
||||
that the language of a contract shall be construed against the drafter
|
||||
shall not be used to construe this License against a Contributor.
|
||||
|
||||
10. Versions of the License
|
||||
---------------------------
|
||||
|
||||
10.1. New Versions
|
||||
|
||||
Mozilla Foundation is the license steward. Except as provided in Section
|
||||
10.3, no one other than the license steward has the right to modify or
|
||||
publish new versions of this License. Each version will be given a
|
||||
distinguishing version number.
|
||||
|
||||
10.2. Effect of New Versions
|
||||
|
||||
You may distribute the Covered Software under the terms of the version
|
||||
of the License under which You originally received the Covered Software,
|
||||
or under the terms of any subsequent version published by the license
|
||||
steward.
|
||||
|
||||
10.3. Modified Versions
|
||||
|
||||
If you create software not governed by this License, and you want to
|
||||
create a new license for such software, you may create and use a
|
||||
modified version of this License if you rename the license and remove
|
||||
any references to the name of the license steward (except to note that
|
||||
such modified license differs from this License).
|
||||
|
||||
10.4. Distributing Source Code Form that is Incompatible With Secondary
|
||||
Licenses
|
||||
|
||||
If You choose to distribute Source Code Form that is Incompatible With
|
||||
Secondary Licenses under the terms of this version of the License, the
|
||||
notice described in Exhibit B of this License must be attached.
|
||||
|
||||
Exhibit A - Source Code Form License Notice
|
||||
-------------------------------------------
|
||||
|
||||
This Source Code Form is subject to the terms of the Mozilla Public
|
||||
License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
If it is not possible or desirable to put the notice in a particular
|
||||
file, then You may include the notice in a location (such as a LICENSE
|
||||
file in a relevant directory) where a recipient would be likely to look
|
||||
for such a notice.
|
||||
|
||||
You may add additional accurate notices of copyright ownership.
|
||||
|
||||
Exhibit B - "Incompatible With Secondary Licenses" Notice
|
||||
---------------------------------------------------------
|
||||
|
||||
This Source Code Form is "Incompatible With Secondary Licenses", as
|
||||
defined by the Mozilla Public License, v. 2.0.
|
||||
+3
-147
@@ -1,149 +1,5 @@
|
||||
-----------------------------------------------------------------------------
|
||||
See LICENSE-MPL.txt for all code in node/, osdep/. service/, and everywhere else except ext/ and nonfree/.
|
||||
|
||||
Business Source License 1.1
|
||||
See nonfree/LICENSE.md for all non-free ("source available") portions of this repository.
|
||||
|
||||
License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.
|
||||
"Business Source License" is a trademark of MariaDB Corporation Ab.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Parameters
|
||||
|
||||
Licensor: ZeroTier, Inc.
|
||||
Licensed Work: ZeroTier Network Virtualization Engine 1.4.4
|
||||
The Licensed Work is (c)2019 ZeroTier, Inc.
|
||||
Additional Use Grant: You may make use of the Licensed Work, provided you
|
||||
do not use it in any of the following ways:
|
||||
|
||||
* Sell hosted ZeroTier services as a "SaaS" Product
|
||||
|
||||
(1) Operate or sell access to ZeroTier root servers,
|
||||
network controllers, or authorization key or certificate
|
||||
generation components of the Licensed Work as a
|
||||
for-profit service, regardless of whether the use of
|
||||
these components is sold alone or is bundled with other
|
||||
services. Note that this does not apply to the use of
|
||||
ZeroTier behind the scenes to operate a service not
|
||||
related to ZeroTier network administration.
|
||||
|
||||
* Create Non-Open-Source Commercial Derviative Works
|
||||
|
||||
(2) Link or directly include the Licensed Work in a
|
||||
commercial or for-profit application or other product
|
||||
not distributed under an Open Source Initiative (OSI)
|
||||
compliant license. See: https://opensource.org/licenses
|
||||
|
||||
(3) Remove the name, logo, copyright, or other branding
|
||||
material from the Licensed Work to create a "rebranded"
|
||||
or "white labeled" version to distribute as part of
|
||||
any commercial or for-profit product or service.
|
||||
|
||||
* Certain Government Uses
|
||||
|
||||
(4) Use or deploy the Licensed Work in a government
|
||||
setting in support of any active government function
|
||||
or operation with the exception of the following:
|
||||
physical or mental health care, family and social
|
||||
services, social welfare, senior care, child care, and
|
||||
the care of persons with disabilities.
|
||||
|
||||
Change Date: 2025-01-01
|
||||
|
||||
Change License: Apache License version 2.0 as published by the Apache
|
||||
Software Foundation
|
||||
https://www.apache.org/licenses/
|
||||
|
||||
Alternative Licensing
|
||||
|
||||
If you would like to use the Licensed Work in any way that conflicts with
|
||||
the stipulations of the Additional Use Grant, contact ZeroTier, Inc. to
|
||||
obtain an alternative commercial license.
|
||||
|
||||
Visit us on the web at: https://www.zerotier.com/
|
||||
|
||||
Notice
|
||||
|
||||
The Business Source License (this document, or the "License") is not an Open
|
||||
Source license. However, the Licensed Work will eventually be made available
|
||||
under an Open Source License, as stated in this License.
|
||||
|
||||
For more information on the use of the Business Source License for ZeroTier
|
||||
products, please visit our pricing page which contains license details and
|
||||
and license FAQ: https://zerotier.com/pricing
|
||||
|
||||
For more information on the use of the Business Source License generally,
|
||||
please visit the Adopting and Developing Business Source License FAQ at
|
||||
https://mariadb.com/bsl-faq-adopting.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Business Source License 1.1
|
||||
|
||||
Terms
|
||||
|
||||
The Licensor hereby grants you the right to copy, modify, create derivative
|
||||
works, redistribute, and make non-production use of the Licensed Work. The
|
||||
Licensor may make an Additional Use Grant, above, permitting limited
|
||||
production use.
|
||||
|
||||
Effective on the Change Date, or the fourth anniversary of the first publicly
|
||||
available distribution of a specific version of the Licensed Work under this
|
||||
License, whichever comes first, the Licensor hereby grants you rights under
|
||||
the terms of the Change License, and the rights granted in the paragraph
|
||||
above terminate.
|
||||
|
||||
If your use of the Licensed Work does not comply with the requirements
|
||||
currently in effect as described in this License, you must purchase a
|
||||
commercial license from the Licensor, its affiliated entities, or authorized
|
||||
resellers, or you must refrain from using the Licensed Work.
|
||||
|
||||
All copies of the original and modified Licensed Work, and derivative works
|
||||
of the Licensed Work, are subject to this License. This License applies
|
||||
separately for each version of the Licensed Work and the Change Date may vary
|
||||
for each version of the Licensed Work released by Licensor.
|
||||
|
||||
You must conspicuously display this License on each original or modified copy
|
||||
of the Licensed Work. If you receive the Licensed Work in original or
|
||||
modified form from a third party, the terms and conditions set forth in this
|
||||
License apply to your use of that work.
|
||||
|
||||
Any use of the Licensed Work in violation of this License will automatically
|
||||
terminate your rights under this License for the current and all other
|
||||
versions of the Licensed Work.
|
||||
|
||||
This License does not grant you any right in any trademark or logo of
|
||||
Licensor or its affiliates (provided that you may use a trademark or logo of
|
||||
Licensor as expressly required by this License).
|
||||
|
||||
TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON
|
||||
AN "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,
|
||||
EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND
|
||||
TITLE.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
MariaDB hereby grants you permission to use this License’s text to license
|
||||
your works, and to refer to it using the trademark "Business Source License",
|
||||
as long as you comply with the Covenants of Licensor below.
|
||||
|
||||
Covenants of Licensor
|
||||
|
||||
In consideration of the right to use this License’s text and the "Business
|
||||
Source License" name and trademark, Licensor covenants to MariaDB, and to all
|
||||
other recipients of the licensed work to be provided by Licensor:
|
||||
|
||||
1. To specify as the Change License the GPL Version 2.0 or any later version,
|
||||
or a license that is compatible with GPL Version 2.0 or a later version,
|
||||
where "compatible" means that software provided under the Change License can
|
||||
be included in a program with software provided under GPL Version 2.0 or a
|
||||
later version. Licensor may specify additional Change Licenses without
|
||||
limitation.
|
||||
|
||||
2. To either: (a) specify an additional grant of rights to use that does not
|
||||
impose any additional restriction on the right granted in this License, as
|
||||
the Additional Use Grant; or (b) insert the text "None".
|
||||
|
||||
3. To specify a Change Date.
|
||||
|
||||
4. Not to modify this License in any other way.
|
||||
Code in ext/ is external code included for build convenience or backward compatibility and retains its original license.
|
||||
@@ -26,3 +26,11 @@ endif
|
||||
ifeq ($(OSTYPE),NetBSD)
|
||||
include make-netbsd.mk
|
||||
endif
|
||||
|
||||
drone:
|
||||
@echo "rendering .drone.yaml from .drone.jsonnet"
|
||||
drone jsonnet --format --stream
|
||||
drone sign zerotier/ZeroTierOne --save
|
||||
|
||||
clang-format:
|
||||
find node osdep service tcp-proxy nonfree/controller -iname '*.cpp' -o -iname '*.hpp' | xargs clang-format -i
|
||||
Loaded 20 of 1678 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user