Compare commits

...

4999 Commits

Author SHA1 Message Date
7d951783ca A bunch of little warning removal and format fix things. 2020-12-04 15:52:30 -05:00
ec76f6e1d2 Mirror over a few more AES fixes. 2020-12-03 22:29:38 -05:00
c943d0e807 InetAddress fix ported from 1.6 2020-12-03 22:28:40 -05:00
a1ceccaf6e Port back over some improvements from 1.6 2020-11-18 21:56:16 -05:00
326a871fac Mirror over Mac fixes. 2020-11-02 19:57:57 -05:00
e462750bdd Remove unnecessary includes that are not needed. 2020-10-30 16:14:44 -04:00
7c599fe83e Typo / thinko 2020-10-27 10:41:46 -04:00
d7e4404c17 A little more clarity to locator display. 2020-10-26 22:41:49 -04:00
441f4986ac Locator CLI plumbing. 2020-10-26 22:33:01 -04:00
d70cfe6850 typo 2020-10-26 20:32:27 -04:00
4ed77e0c0f Upgrade Go modules. 2020-10-26 19:41:55 -04:00
f8e3251efe Locator CGo API fixes. 2020-10-26 19:35:10 -04:00
1bb43476e8 Build fix, add Go unit tests for CGo Locator interface. 2020-10-26 18:44:45 -04:00
387d293793 Use Base32 everywhere for blobs to be consistent with core. 2020-10-23 18:10:25 -04:00
bd96e53bcc Remove redundant includes. 2020-10-22 16:18:18 -04:00
bab9a7f508 Fix and modernize API peer list function. 2020-10-22 15:53:35 -04:00
31eb950750 Missing flag. 2020-10-20 18:53:11 -04:00
31ef205828 ARM build fixes. 2020-10-16 18:29:16 -04:00
a7350bc312 Bust out ARM crypto extensions AES into a separate file too. 2020-10-16 17:41:03 -04:00
0e396526e4 Some small Go stuff, and break out AES-NI into its own .cpp file for easier management. 2020-10-16 15:04:22 -04:00
8e5f8140a2 One more thing to move to CAPI.cpp. 2020-10-14 19:02:32 -04:00
8f746f5099 Move C API into its own source file, and fix some build flags to mirror fix in 1.6.0 to run on old Atom processors. 2020-10-14 18:10:59 -04:00
bc8aa6c359 Mirror over some AES function attribute changes. 2020-10-13 16:10:53 -04:00
00714f5f2e cleanup 2020-10-08 19:03:46 -04:00
d20470d30f cleanup 2020-09-18 19:54:27 -04:00
c2d14599c5 Make protocol versions same as 1.x series. 2020-08-25 08:06:59 -07:00
896656115f Build fix for Go 1.15 2020-08-17 14:53:34 -07:00
72114e4cf8 Remove HTTP stuff from core API. This will be handled entirely in the service. 2020-08-13 17:46:58 -07:00
2abf2c5695 More certificate stuff... 2020-08-12 21:28:06 -07:00
fe01352412 Cert CLI stuff, module bump. 2020-08-12 16:40:17 -07:00
782f15f8c9 Small software GMAC optimization. 2020-08-11 20:50:36 +00:00
e0492a7e69 More Go CLI work, and some cleanup. 2020-08-11 13:24:27 -07:00
cb147a3e8a Documentation in CLI, indicate what commands require a running node. 2020-08-10 16:04:05 -07:00
f97e9e1f5d Warning removal, Go work... 2020-08-10 12:35:26 -07:00
f1b6cb2ace GMAC is faster in software now. 2020-08-07 17:33:27 +00:00
27939a5233 AES performance on rpi4 is now at least acceptable. 2020-08-06 23:09:34 +00:00
7d5ba6f739 AES on pi4 2020-08-06 14:34:34 -07:00
37360d5e2e More test timing fixes. 2020-08-06 09:53:33 -07:00
ae13983b10 Fix benchmarks to not take forever on slower chips. 2020-08-06 09:48:07 -07:00
78670aea58 AES software optimizations to make rpi4 faster. 2020-08-06 09:34:37 -07:00
d0cc3ac333 Small AES optimizations on ARM64. 2020-08-03 23:14:02 +00:00
4273d89373 Linux/GCC fixes. 2020-07-31 16:18:06 -07:00
9ef780e05c Build fix-- these are not needed. 2020-07-31 15:48:18 -07:00
9da0b43d2d Fix some JSON names, regularize use of IP/port info in service code. 2020-07-31 15:32:09 -07:00
7c929099b3 Change date bump for v2.0 2020-07-31 14:26:55 -07:00
ea2f95ed70 Optimizations, make Locator deserialize the same regardless of serialized field order. 2020-07-31 14:05:54 -07:00
fc39894541 Small fix to reduce memory use a little bit more. 2020-07-31 13:53:11 -07:00
1fc4dce835 A bunch of cleanup, make Location serialization format saner, reduce core memory use. 2020-07-31 13:27:27 -07:00
0c56d7c769 Don't kick in AVX2/AVX512 VTEC unless the packet is larger than 256 bytes. 2020-07-30 10:02:37 -07:00
1f2a107d1d Some formatting. 2020-07-29 22:10:54 -07:00
4474303b01 Indent fix. 2020-07-29 21:59:53 -07:00
3b773da8bc Add separate accelerated() function for AES::GMAC. 2020-07-29 21:52:07 -07:00
7efaab2af1 Add 4X parallel ARM AES so VTEC will kick in, yo. Seems to help on Graviton, not much on small chips but thats okay. 2020-07-30 04:17:01 +00:00
064cb6dad7 AES-GMAC for ARM crypto extensions (pmull) 2020-07-30 03:45:40 +00:00
d5afba2610 ARM auto-detection (unfinished) 2020-07-29 21:17:17 +00:00
b4d0307d9e Some AES NEON reorg. 2020-07-29 13:37:32 -07:00
71b72a1ef2 AES (but not yet GMAC) for ARM64 native AES intrinsics, performs really well! 2020-07-29 20:10:27 +00:00
b0e8bac310 Add CMake options to automatically add AArch64 flags for crypto enable, etc. 2020-07-29 09:13:55 -07:00
9a501a76d1 Starting on AES ARM intrinsics work. 2020-07-28 20:44:19 -07:00
becc4aa8ea More certificate plumbing. 2020-07-28 14:38:41 -07:00
95d7970f34 Compiler flags, docs. 2020-07-28 09:41:43 -07:00
81530e5990 Certificate plumbing in Go. 2020-07-27 16:45:43 -07:00
825b19aedc Code readability improvement. 2020-07-23 15:13:42 -07:00
0f04b5afc7 Add CRL fields to Go shadow of Certificate. 2020-07-23 15:05:12 -07:00
189dea7c96 Certificate work, and add an Endpoint attributes field to Locator for future use. 2020-07-22 20:38:57 -07:00
85ef9535d5 So that's where those NULLs came from... 2020-07-17 21:12:28 -07:00
71a2206c5d Move a few things. 2020-07-17 10:57:01 -07:00
641d1a52c8 Warning removal. 2020-07-17 10:49:53 -07:00
407f737212 A bunch of Topology simplification, integrate some cert and root changes. 2020-07-16 20:04:05 -07:00
0d58865061 Fix certificte self-test. 2020-07-16 12:30:09 -07:00
cfb0bc4f8e Better CRL implementation, AES fix. 2020-07-16 12:01:24 -07:00
dfe230be8b CRL support 2020-07-16 10:51:54 -07:00
75ecfffd52 More tweaks. 2020-07-15 16:51:39 -07:00
883cbd182d Some optimization work on crypto code. 2020-07-15 14:33:02 -07:00
866a20e85b More small stuff. 2020-07-14 16:34:46 -07:00
a19bc1e826 Cleanup, remove legacy accessors, formatting. 2020-07-14 16:23:53 -07:00
a117c92a1e Module update for Go code. 2020-07-13 15:53:49 -07:00
65ef40b091 Some Go reorg. 2020-07-13 15:44:54 -07:00
15f5125c8c Hide some low-level stuff from public certificate API in Go. 2020-07-13 14:54:53 -07:00
e5f2314055 Fix another not-fun bug. Also exterminate a memory leak and do a few optimizations. 2020-07-10 16:38:32 -07:00
f018fefeb4 Even less bugs! 2020-07-09 20:08:08 -07:00
04d8c3dd79 Now with less bugs! 2020-07-09 14:57:44 -07:00
7994e3aa78 Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-07-09 10:12:31 -07:00
1eacbdf374 Some cleanup, and fix a really obscure bug in Certificate. 2020-07-09 10:12:24 -07:00
492e78e2cf back to not building all archs by default 2020-07-08 10:27:41 -07:00
8b1c691a5e Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-07-07 10:12:49 -07:00
b02fc1f28b CGo hell, fix a thinko in CMakeFile. 2020-07-07 10:12:38 -07:00
ecf1fe9aa5 had these transposed 2020-07-07 08:57:53 -07:00
7e341ed397 More certificate plumbing. 2020-07-06 19:28:43 -07:00
e5e6f82a8e Windows build fix. 2020-07-06 15:28:25 -07:00
eca929faef Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-07-06 15:16:05 -07:00
b027a83789 Minor stuff... 2020-07-06 15:15:21 -07:00
1ad0fbdb76 Revert "fix compilation of zt_service_tests on Windows"
This reverts commit 8f1e6a2fde.
2020-07-06 15:04:46 -07:00
8f1e6a2fde fix compilation of zt_service_tests on Windows 2020-07-06 12:45:06 -07:00
451e6be180 Evil not very fun CGO glue for Certificate works! Also added a self-test project for Go code. Not using "go test" because of CMake build and CGO linking requirements that make it a pain in the derriere. 2020-07-03 16:05:43 -07:00
7b869684c6 More cert Go plumbing. 2020-07-03 14:42:29 -07:00
0d764f5a3d CGO glue for certificates, and Go formatting and other boring stuff. 2020-07-03 13:08:40 -07:00
899f0c9749 Certificate API 2020-07-02 22:22:31 -07:00
727aa8e71f Warning removal. 2020-07-02 15:03:12 -07:00
404b7a5493 Even more clever... and would crash if something weird happened, which is desirable. 2020-07-02 13:58:31 -07:00
befc50ac3a Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-07-02 13:57:32 -07:00
94c35d395e A bit more optimization/cleanup. 2020-07-02 13:57:19 -07:00
7883e5d8ad Fix cast order of operations 2020-07-02 13:28:58 -07:00
97cd184211 cleanup 2020-07-02 13:09:59 -07:00
c17ac16728 Windows fix. 2020-07-02 11:53:47 -07:00
b696ab12b8 Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-07-02 11:52:34 -07:00
e7ccd74a9e Disable functions missing in MinGW 2020-07-02 11:52:20 -07:00
676a3444cd fix s390x static section of jenkinsfile 2020-07-02 11:19:35 -07:00
bd0299f392 Some cleanup and optimization. 2020-07-02 10:33:34 -07:00
e213317532 -lm is needed on some platforms, harmless on others 2020-07-01 12:38:22 -07:00
206524b9e6 BSD fixes. 2020-07-01 12:30:41 -07:00
7a458e0138 BSD fixes. 2020-07-01 12:28:44 -07:00
9db9211ed3 Fix method name problem. 2020-07-01 11:14:01 -07:00
2ee550bbfd Some optimization. 2020-06-30 23:44:24 -07:00
9029570452 Test certificate copy/construct. 2020-06-30 23:20:50 -07:00
6af39da61a Some formatting and optimization. 2020-06-30 22:23:57 -07:00
ad692b07c3 Add CPUID output to self-test. 2020-06-30 20:51:14 -07:00
3f4809457f A bunch of compile fixes, and an edge case fix in Dictionary. 2020-06-30 20:31:41 -07:00
53b85a2bbb Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-06-30 11:20:50 -07:00
92d2bbc63c Some symbol renaming, performance improvements, a bug fix for compiling on some platforms, and some Topology work. 2020-06-30 11:20:44 -07:00
536be73006 s390x all static 2020-06-30 11:06:33 -07:00
115187204f remove debug output 2020-06-30 10:04:19 -07:00
b482064a55 reenable some temporarily disabled stuff 2020-06-30 09:59:18 -07:00
722a50f7be armel image build shortcut 2020-06-29 17:15:18 -07:00
623213ea0b fix wheezy symlink 2020-06-29 17:13:56 -07:00
0589c4ab6a fix stretch symlink 2020-06-29 17:12:52 -07:00
46c4a11a7a fix jessie symlink 2020-06-29 17:11:55 -07:00
16d27dfddb fix buster ld symlink 2020-06-29 17:09:15 -07:00
aee344fe47 kill a couple docker images 2020-06-29 15:18:01 -07:00
696c77f5c8 no static builds for armel
no support in Alpine, can't build it
2020-06-29 14:50:52 -07:00
8921914098 force use of vendored modules 2020-06-29 14:24:06 -07:00
f33574dfbc needed on Jessie, too 2020-06-29 13:29:33 -07:00
e2bc081740 hack to run go on armel containers 2020-06-29 13:17:20 -07:00
a6d7f7cac2 -latomic for armel 2020-06-29 12:19:25 -07:00
c714112e00 fix building cmake on arm32 2020-06-29 09:23:48 -07:00
bae91724a1 Certificate passes all tests. 2020-06-27 14:52:55 -07:00
daef6a24d1 Now with less bugs, and less limits that could pose an issue later. 2020-06-27 13:52:12 -07:00
661ebfee94 Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-06-26 13:09:35 -07:00
73d0e2e7e0 Interim commit of some cert and cert testing work, also other cleanup in Utils. 2020-06-26 13:09:24 -07:00
917cc58560 Only build problems left are the compiler errors adam has tickets for 2020-06-25 18:01:27 -07:00
1eea80194b apparently not in backports as advertised 2020-06-25 15:40:10 -07:00
d569217ff5 echo, not cat 2020-06-25 15:38:21 -07:00
d823725eb6 update alpine base image 2020-06-25 15:23:09 -07:00
f08d20560b stretch has mips golang 1.11 in backports
don't know if it'll work though
2020-06-25 15:15:16 -07:00
c0385466e2 no golang packages for buster or stretch on mips64
no mips on stretch at all
2020-06-25 15:07:12 -07:00
c22b002226 Looks like we have to turn off bullseye 32-bit ARM too 2020-06-25 14:55:01 -07:00
9aac1fc47f default BUILD_ALL flag to true for now
since that's what I"m testing now
2020-06-25 14:52:08 -07:00
39d4fadf90 add mips64le to debian native build lists 2020-06-25 11:56:32 -07:00
4968afb89a no 32-bit arm on sid for the time being 2020-06-25 11:41:09 -07:00
8b45018f28 remove ldflag on windows 2020-06-25 09:39:06 -07:00
007b3bd10b openssl dev for sid 2020-06-25 08:49:23 -07:00
5e1b7f2ba6 Certificate stuff, but not plumbled through to CLI yet to actually make them. 2020-06-25 07:40:21 -07:00
40820ddea9 Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-06-24 17:08:19 -07:00
4fbc29158d A few more things to manually merge in CMakeLists.txt 2020-06-24 17:08:11 -07:00
6e1115ea03 More cert work, support certs in data store, and manually merge CMakefile. 2020-06-24 17:05:34 -07:00
d5d1f4a313 forgot the -y on apt-get 2020-06-24 14:59:38 -07:00
1e65aad95b args 2020-06-24 14:53:02 -07:00
495ac17346 debian mips64 image fixes 2020-06-24 14:51:59 -07:00
2f82db97ed blah 2020-06-24 14:46:30 -07:00
35f3d16084 bullseye base version 2020-06-24 14:23:30 -07:00
29dfe240e4 mips64le updates 2020-06-24 14:21:47 -07:00
aa9ca845e8 Merge edge, still need to resolve CMakeLists.txt 2020-06-24 10:50:16 -07:00
05a3831acb Certificates, and rename credentials to credential since they are not truly certificates (according to the common definition). 2020-06-24 10:46:59 -07:00
9a7d26cd9e fix package name 2020-06-24 10:07:08 -07:00
ab36607a48 docker & build parallelization 2020-06-24 09:57:38 -07:00
02a810b8d6 same issue on sid, apparently 2020-06-23 17:18:54 -07:00
2d1ca5f346 cmake version from debian-bullseye doesn't like ARM
so let's build the latest from src
2020-06-23 17:12:52 -07:00
65aca7d84a let's not force the build server to swap out when building releases 2020-06-23 16:48:50 -07:00
d3a9ce95bc more flag fixes 2020-06-23 16:41:55 -07:00
ee53f056ce fix flags 2020-06-23 16:29:35 -07:00
f3defdf3a6 one more 2020-06-23 14:42:18 -07:00
6d88a13407 fix variable 2020-06-23 14:28:32 -07:00
9722bdef75 fix variable name 2020-06-23 13:33:59 -07:00
f87e41abee jenkinsfile armhf/armel stuff 2020-06-23 12:56:29 -07:00
d7c6f8ae3f armel/armhf differentiation in builds 2020-06-23 11:49:43 -07:00
4d80f7c41d more go static build flags 2020-06-23 09:53:46 -07:00
de00486b80 no armhf for ubuntu focal 2020-06-23 09:41:45 -07:00
c2664033bc try to force 32-bit package for centos7 i386 2020-06-23 09:04:45 -07:00
f96a9f63ea . 2020-06-23 08:53:13 -07:00
78b18f2bdb remove centos6 from jenkinsfile 2020-06-23 08:40:24 -07:00
8bb0753f62 get cmake from yum for centos8 2020-06-22 16:23:34 -07:00
0c5d1a793c fix docker images for static targets 2020-06-22 15:58:49 -07:00
34692489cb RIP Centos 6 2020-06-22 15:18:30 -07:00
52b619b38f temporarily disable builds of Debian Stretch, FreeBSD, Ubuntu Bionic AMD64, and Ubuntu Xenial 2020-06-22 14:34:23 -07:00
9009a864ab re-enable static build packaging with updates 2020-06-22 14:03:27 -07:00
09a8b66d3b enable -DPACKAGE_STATIC=1 builds
Only configures the project for packaging of the statically built binary placed in build/
2020-06-22 13:50:35 -07:00
7c6f5e2c37 make install works on Linux 2020-06-22 11:00:48 -07:00
930bd91598 finish up rpm generation 2020-06-22 09:49:25 -07:00
050615f2d2 fix centos7 x64 2020-06-19 16:50:42 -07:00
05cc4ea36a dont use __has_include 2020-06-19 16:36:04 -07:00
4cafc1b776 extraneous ` in rpm building 2020-06-19 16:32:43 -07:00
fb559434b6 jenkins builds rpms 2020-06-19 16:24:32 -07:00
02493d473f basic RPM package
still needs systemd/init scripts
2020-06-19 16:21:47 -07:00
1abcb5adf5 parallelize make 2020-06-19 15:42:33 -07:00
1b8703db95 add cmake package args 2020-06-19 15:40:48 -07:00
517a171a6c dont split debian description over multiple lines 2020-06-19 15:35:42 -07:00
b126bf727a non-static build debian packages 2020-06-19 15:33:08 -07:00
cfc2a43f51 A whole bunch of minor refactoring, and rename a bunch of classes to be more canonical. A credential really is not a certficiate, so just call IdentificationCertificate Certificate and call the network auth stuff credentials. 2020-06-18 17:02:36 -07:00
0477e16860 freebsd doesn't like the root makefile 2020-06-18 16:31:15 -07:00
cc13bf1049 fix jenkinsfile 2020-06-18 15:35:35 -07:00
a66b4a6f5e add freebsd build target 2020-06-18 15:26:29 -07:00
f989758159 parallelize windows build 2020-06-18 13:46:57 -07:00
ade8373c0c because reasons 2020-06-18 13:44:19 -07:00
fa4ecea095 wtf 2020-06-18 13:34:01 -07:00
7ae9c6d55c . 2020-06-18 13:19:30 -07:00
b369d4b9a1 fix 32-bit windows build 2020-06-18 13:01:05 -07:00
ea5bb43cf9 windows 32bit builds 2020-06-18 11:58:00 -07:00
6ea60bc429 let's see if paths with no spaces works 2020-06-18 11:26:57 -07:00
b094278b64 explicitly set SHELL environment variable 2020-06-18 10:59:46 -07:00
f21384e499 windows fun 2020-06-18 10:54:31 -07:00
620fa9ab54 🤷‍♂️ 2020-06-17 13:26:36 -07:00
d8c83dbb08 pita 2020-06-17 13:18:01 -07:00
992d1471b8 add CMake and Go to Windows PATH 2020-06-17 12:29:03 -07:00
27b14aefcd help it find cmd.exe 2020-06-17 12:19:06 -07:00
a7fee6b02f playing with paths 2020-06-17 12:14:50 -07:00
cea297b69d enable windows builds 2020-06-17 12:04:29 -07:00
c348bfff30 Fix quote craziness. 2020-06-16 22:33:43 -07:00
224c468aa3 OMG Windows builds! 2020-06-16 22:26:47 -07:00
a472aafb3e Windows now builds at least to the point of running zt_core_tests. Go will need a revision to the command in CMake files. 2020-06-16 21:21:24 -07:00
b165b9dd4f another fix 2020-06-16 17:46:22 -07:00
7d388e0c79 fix mac jenkins 2020-06-16 17:34:58 -07:00
4036657e32 add macos build to jenkins 2020-06-16 16:13:01 -07:00
d50c6ee1ce need ssl dev 2020-06-16 15:07:31 -07:00
143f4bef9f Select the right C++ library, hopefully. 2020-06-16 15:00:59 -07:00
765dc413db Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-06-16 15:00:25 -07:00
423b0d891c need stdint.h on Windows, too 2020-06-16 14:48:27 -07:00
3db0e9d068 use correct dockerfile for Xenial x64 2020-06-16 14:07:40 -07:00
1f3f9bc341 for ptrdiff_t 2020-06-16 13:52:26 -07:00
e84bfca5a5 xenial needs newer cmake, too 2020-06-16 13:45:35 -07:00
bd488a08f8 Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-06-16 13:36:48 -07:00
3c6448a717 Move all CGO flags into CMakeLists.txt so they can inherit all our system detection and stuff. 2020-06-16 13:36:43 -07:00
0a2dfc719a fix centos 7 & debian stretch 2020-06-16 13:33:05 -07:00
f0fc4713d8 Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-06-16 13:01:20 -07:00
b2132aa975 needs libssl dev 2020-06-16 12:19:31 -07:00
7739984c56 typo 2020-06-16 12:11:48 -07:00
034188b0ee reset WORKDIR back to root once built 2020-06-16 12:07:20 -07:00
98ea27ecb0 have to build & install cmake on non-x64 versions of debian stretch 2020-06-16 11:59:08 -07:00
8d2a0f764b Some minor reorg. 2020-06-16 11:51:41 -07:00
6c43e0b946 add scl-utils 2020-06-16 11:28:42 -07:00
77342f8571 try setting scl_source on centos7 for newer compilers 2020-06-16 10:40:01 -07:00
e808b4b45f add ubuntu focal builds 2020-06-16 10:26:48 -07:00
86d91cb625 no ubuntu 20.04 for ArmV7 2020-06-16 10:10:51 -07:00
3f21e59ab4 more DEBIAN_FRONTEND=noninteractive 2020-06-16 09:53:42 -07:00
3669cac3c9 apparently apt now asks for your region interactively. Even in a docker image 2020-06-16 09:50:16 -07:00
b919f5a95b helps to load the correct dockerfile 2020-06-16 09:46:42 -07:00
5e6484ff5a add docker images for ubuntu 20.04 2020-06-16 09:08:26 -07:00
ecb09aa2e1 Fix bounds check bug. 2020-06-15 16:30:52 -07:00
346d4b572b Fix symbol issues in static build. 2020-06-15 15:02:07 -07:00
1a38dfdbde back to go main 2020-06-15 13:51:24 -07:00
69f1c8701b Define uint since that is not a standard symbol. 2020-06-15 13:13:03 -07:00
9daf4540de Certificates, and it builds again. 2020-06-15 11:17:24 -07:00
f447608d6b Certificates, etc... work in progress. 2020-06-13 21:41:39 -07:00
001fb54b15 fix go static command line 2020-06-12 16:08:34 -07:00
ffc786d796 update make call for static 2020-06-12 15:59:53 -07:00
a1649d6cda trying again for static build. also add static go flags 2020-06-12 15:58:00 -07:00
541b2cbef0 . 2020-06-12 15:49:28 -07:00
5166aa6913 added static build option 2020-06-12 15:43:12 -07:00
b88000c349 . 2020-06-12 15:39:02 -07:00
49eefe7e78 rename error for static 2020-06-12 15:31:34 -07:00
bfdac7a8f0 use alpine go package 2020-06-12 15:21:48 -07:00
d9dd77bc6e let cgo find versionl.h 2020-06-12 15:09:31 -07:00
e46a342e17 ensure version.h is in the include path 2020-06-12 14:57:41 -07:00
760607f58a static alpine builds reenabled 2020-06-12 14:46:48 -07:00
35b5780907 remove __has_include 2020-06-12 14:44:25 -07:00
51159601b0 one more time 2020-06-12 14:27:34 -07:00
4cb35a2975 yes pipe too 2020-06-12 13:58:50 -07:00
405250ce79 tell curl to follow redirects 2020-06-12 13:56:44 -07:00
81b11168c9 centos 8 update 2020-06-12 13:48:31 -07:00
066cdfe2ac alternate newer cmake install 2020-06-12 13:46:40 -07:00
062189b589 add sid 32bit 2020-06-12 11:40:34 -07:00
a11d0027ce cast to uintptr_t instead
should fix non 64-bit platforms
2020-06-12 09:22:58 -07:00
c9ae7e811f Should fix non x64 platforms
Need adam to check
2020-06-12 09:22:17 -07:00
47ec246520 try to force 32 bit with BUILD_32BIT flag. force VERBOSE=1 cmake build too 2020-06-10 16:19:39 -07:00
42104cfc4c go wrangling 2020-06-10 15:56:16 -07:00
1bab9b202f default off 2020-06-10 15:40:14 -07:00
74ce98f39b set CMAKE_SYSTEM_PROCESSOR to x86 2020-06-10 15:39:48 -07:00
3268effabf enable 32bit builds on 64-bit hosts 2020-06-10 15:31:40 -07:00
96965647bc wtf 2020-06-10 14:51:44 -07:00
808ab715d9 forgot to save a few files 2020-06-10 13:02:38 -07:00
fa1e16085b permissions in docker containers 2020-06-10 12:40:44 -07:00
dd46e56af2 add include <mmintrin.h> 2020-06-10 12:27:22 -07:00
d8d871745e add cmake 2020-06-10 10:50:01 -07:00
09c9e338bc needs /bin? 2020-06-10 09:51:57 -07:00
df9483408d CMake error if go not found 2020-06-10 09:33:48 -07:00
cb342bfb12 make GCC happy 2020-06-09 15:30:01 -07:00
04266a1180 don't build static binaries yet. Don't have the build config in there for it yet 2020-06-09 14:49:37 -07:00
86eda5fe65 use zerotier as binary name for 2.0 2020-06-09 14:31:00 -07:00
bc1fa3bf20 make it easier to update go version for docker build containers 2020-06-09 14:29:40 -07:00
e63920404c copy over dockerbuild files for releases 2020-06-09 14:16:36 -07:00
4833478eee Fix linux link ordering and add Dockerfile for central controllers
Builds but obviously won't actually do anything yet
2020-06-09 14:14:11 -07:00
c8b6850520 add central controller build target 2020-06-09 14:14:06 -07:00
938cbba449 Root set stuff, code formatting and other boring stuff. 2020-06-09 12:26:52 -07:00
c8f640f3f2 compile go code to static library & call via main.cpp
This allows CMake to manage the linkage of C/C++ libraries rather than an exponentially growing list of cgo directives based on build options
2020-06-09 12:03:16 -07:00
2272189955 macOS: link static versions of lipq and libhiredis on mac
will need to grab them via homebrew
2020-06-08 16:14:01 -07:00
736edeeed0 figure out conditional compilation & cgo based on go build tags 2020-06-08 15:54:10 -07:00
bf33368add Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-06-08 14:45:08 -07:00
40d48c969c Some cleanup, revision to Endpoint string format, stub out HTTP API callbacks. 2020-06-08 14:41:13 -07:00
17f0dc9ba2 2.0 compiles with postgres/redis controller code
Probably doesn't work yet
2020-06-08 14:11:07 -07:00
016d85b169 Code formatting and similar. 2020-06-08 11:47:28 -07:00
2bceabdfa5 add redis dependencies for central controller 2020-06-08 11:23:41 -07:00
d18c33d6df Code cleanup, Linux build fixes. 2020-06-05 22:18:58 -07:00
e2ca065f28 Cleanup, revise join command 2020-06-05 16:36:31 -07:00
fe28501126 Also clean CLion directories. 2020-06-05 14:40:04 -07:00
73795d05eb Reorg done and builds 2020-06-05 14:38:35 -07:00
af846f7e3f Fix clean 2020-06-05 13:45:43 -07:00
a0374da4f3 Reorg. 2020-06-05 13:42:34 -07:00
4e44fa009c Clean up gitignore 2020-06-05 13:31:10 -07:00
3dd2c94f4e Moar reorganization. 2020-06-05 13:26:35 -07:00
6da8f2bb05 Temporarily stash stuff in attic that needs update before beta/release. 2020-06-05 13:06:01 -07:00
e21fcb8104 Reorg. 2020-06-05 13:05:28 -07:00
3c11c13af4 More reorg, work in progress. 2020-06-05 13:04:37 -07:00
d3cf7b2202 Reorg. 2020-06-05 12:56:20 -07:00
03bcdf74a8 Some CLI help updates, some code formatting, pre-reorg. 2020-06-05 12:49:35 -07:00
45b90a0dfa Formatting and boring stuff 2020-06-05 10:41:32 -07:00
9babfcb9b6 A bunch more go plumbing. 2020-06-04 16:03:11 -07:00
1b2a4f00f2 Take like ten on the addRoot thing, making it even simpler. Explicit locator commands are still present but they will remain just for use in creating subscriptions etc. 2020-06-04 10:32:13 -07:00
90b5acfca6 Docs, simplification. 2020-06-04 07:16:15 -07:00
741f7814c2 Various build fixes. 2020-06-03 22:15:19 -07:00
a4ae4941c3 Try to ignore temporary IPv6 addresses, fix Peer serialization, add an endpoint cache to Peer, some more Go stuff. 2020-06-03 22:03:34 -07:00
8a6ef33c4a revert 2020-06-03 12:27:35 -07:00
5ac2596429 More CLI work, link go.mod and go.sum for some Go editors to work. 2020-06-03 11:59:24 -07:00
5dac2e82a7 A bunch of tweaks around CLI parameters and string formats of things. 2020-06-02 11:37:04 -07:00
8e29acd664 Causes build problems, revert. 2020-06-01 16:24:12 -07:00
1d29bc3e8e Move go.mod and go.sum into base. 2020-06-01 16:07:49 -07:00
dc1ef0c49e Code formatting and other boring stuff. 2020-06-01 15:40:00 -07:00
1003455160 Cleanup. 2020-05-31 15:30:24 -07:00
20ae12d385 Clean up some NAT traversal code, modify algorithm to eliminate the need for toggle-able options. 2020-05-31 15:11:47 -07:00
dcc686a3a7 Docs, YAGNI removal, use locator endpoints in peer contact attempts. 2020-05-31 06:47:56 -07:00
89c27c112a Flesh out tests, fix a signing bug. 2020-05-30 19:08:45 -07:00
3621fe8897 Some AES cleanup and include controller with Go build. 2020-05-30 17:03:12 -07:00
33269cd29d Some CGo fixes. 2020-05-30 12:07:52 -07:00
1970dab13d Move some toString/fromString to C++ since any ZT code base would need it, and stub out the controller commands. 2020-05-30 11:42:59 -07:00
a5390b1bc8 Plumb new locator code through to Go, fix some cgo issues, fix some compiler warnings. 2020-05-29 10:16:38 -07:00
864e33cf2d A bunch of build fixes. 2020-05-29 07:06:00 -07:00
b9bf6d1242 Simplification of addRoot/removeRoot, and some code reformatting and other cleanup across multiple files. 2020-05-29 06:30:02 -07:00
caad356b93 A bunch of go fixes, wire up root add/delete. 2020-05-25 18:05:34 -07:00
964c235ecf Golang fixes 2020-05-25 14:23:48 -07:00
c881094202 Warning removal. 2020-05-25 09:55:47 -07:00
6051c973d3 A bunch of warning removal, build fixes, and cleanup. 2020-05-25 09:48:18 -07:00
1f9717250c Update release notes, rip out trusted paths which were clunky and rarely used and of dubious value, and some other cleanup. 2020-05-21 13:04:27 -07:00
8ebbbc33cc Clean up and revise how roots are added/specced. 2020-05-21 11:21:39 -07:00
98bcff1928 Warning fix. 2020-05-19 15:03:30 -07:00
cef708c8ad Build fixes. 2020-05-19 15:01:52 -07:00
a925e2d783 Build fixes. 2020-05-19 14:02:32 -07:00
a1193f0e30 A few AES-GMAC-SIV tweaks to use a bit more IV state. 2020-05-19 12:18:50 -07:00
f209037efe Cleanup, slightly slow down V1 identity generation, faster Salsa20 (by a bit). 2020-05-19 10:13:12 -07:00
b99dd7d916 Fix code generation for AES stuff so it runs on chips that do not have AVX or VAES. 2020-05-18 16:50:05 -07:00
aad21cf395 Blazing fast VAES (256 and 512) AES-CTR, Identity fixes, test fixes. 2020-05-18 16:29:41 -07:00
d537428421 Build fixes. 2020-05-18 09:44:23 -07:00
996589894d Build fixes 2020-05-14 11:53:45 -07:00
d3777b3eb4 A bunch of boring formattings stuff, etc. 2020-05-14 10:55:41 -07:00
52e1f5502d More VL1 work after re-re-re-refactor... 2020-05-13 14:26:53 -07:00
664a128e9e Yet more work in progress... mostly cleanup and re-implementation without depending on struture padding. 2020-05-11 13:08:55 -07:00
666d44b14a More endless work in progress... 2020-05-06 10:42:09 -07:00
b533c300d8 A ton more work... almost there 2020-04-28 19:52:09 -07:00
78d223d709 A bunch more cleanup, remove a ton of reinterpret_cast cruft in favor of a simple union in InetAddress. 2020-04-16 16:01:39 -07:00
2b0127c26d Work in progress on crypto stuff, refactoring to back out of use of structs for encode/decode as it is questionably portable. 2020-04-16 12:34:51 -07:00
16a3c14c53 A bunch of cleanup and refactoring, implementation of prep for forward secrecy still in progress. 2020-04-13 12:22:08 -07:00
c65391a344 Add symmetric key container, tons of cleanup. 2020-04-06 16:54:35 -07:00
fbf4ae823b Clean up timing stuff in Peer and make it more rational, implement some more P2P stuff, rename some methods, cleanup cleanup cleanup. 2020-04-03 10:18:46 -07:00
3d6d9c5808 LINT cleanliness. 2020-03-31 14:30:02 -07:00
64c533c189 More warning removal. 2020-03-31 14:09:17 -07:00
7fd78a87d1 Use static_assert more. 2020-03-31 13:45:05 -07:00
b9f60fc3c2 A bunch of warning removal and LINT cleanliness. 2020-03-31 12:35:54 -07:00
afa01074c5 File this idea away. 2020-03-31 11:03:02 -07:00
1f85b0402e Just use unordered_map, and some other cleanup. 2020-03-31 09:01:58 -07:00
b3314cd34f Small build fixes. 2020-03-30 18:09:11 -07:00
9428fc53f6 A bunch of cleanup, bug fix, just use unordered_map, etc. 2020-03-30 17:28:23 -07:00
0d05e4bcae Remove capability chain of custody stuff which was never used and was really overly complex and a potential source of security problems. 2020-03-28 12:06:10 -07:00
87da45b3f5 Faster hash table, various other optimizations and simplification. 2020-03-28 01:06:29 -07:00
cbf174f96d Warning removal. 2020-03-27 19:35:37 -07:00
0aa78d0ecb Small fixes. 2020-03-27 19:03:09 -07:00
a87d4f1864 Build fix. 2020-03-27 17:26:49 -07:00
c0e86de6db Forgot one spot. 2020-03-27 17:25:05 -07:00
60fa07bff2 Implement fingerprint option on join in Go land 2020-03-27 17:02:44 -07:00
1df7f21f5f Add ability to fully specify controller fingerprint on join for the paranoid. 2020-03-27 16:36:38 -07:00
674edab814 docs 2020-03-27 15:09:09 -07:00
369df245e3 Some perf stuff, docs, HELLO design tweaks for ephemeral keys. 2020-03-27 13:09:37 -07:00
1f2e94a51d Some optimization and raw memory access cleanup. 2020-03-27 07:40:14 -07:00
3f32cffc40 dead code removal 2020-03-26 15:56:26 -07:00
3914964a35 AES docs 2020-03-26 15:55:31 -07:00
bedf63e257 Some minor security tightening stuff and AES fixes. 2020-03-26 13:54:15 -07:00
d151d731a6 (1) Mask bit 31 of AES-CTR nonce to disallow uint32 overflow, (2) get rid of handling of uint32/uint64 overflow in our AES-CTR code to optimize, (3) optimize AES software a bit 2020-03-26 10:28:59 -07:00
2d862f1d32 Little comments and stuff 2020-03-26 08:38:23 -07:00
f92fca03a0 Update SIV diagram, length pad AAD. 2020-03-25 15:09:49 -07:00
b5c01999b8 More tweaks to COM stuff. 2020-03-25 14:10:26 -07:00
e9da35bac3 Harden some stuff around COMs and members of networks. 2020-03-25 13:21:50 -07:00
d3a7468e83 Implement AES-GMAC-SIV and benchmark, rework COM and add a lot of comments and docs, and comments and docs elsewhere too. 2020-03-25 09:05:44 -07:00
f3540a5c7c Linux build fixes, warning removal. 2020-03-24 08:39:54 -07:00
8cf6808c50 build fix 2020-03-23 16:24:39 -07:00
274db26339 Fix accidentally removed file. 2020-03-23 16:15:36 -07:00
490b9c4d79 Moar build fixes, clock perf improvement. 2020-03-23 16:12:45 -07:00
2da096944d Everything but root builds now. Back to testing. 2020-03-18 07:20:04 -07:00
83f830618f It almost builds! 2020-03-17 16:27:31 -07:00
cdbb86b830 ARM64 stuff 2020-03-16 09:57:51 -07:00
483b47474d ARM64 stuff 2020-03-16 09:51:18 -07:00
1d314858ef ARM64 build fixes 2020-03-16 09:27:56 -07:00
37d4e83fad ARM64 build fixes 2020-03-16 09:24:57 -07:00
c7f3f3add9 Small fix, docs, warning removal. 2020-03-16 06:14:41 -07:00
1c7baa544b Reduce PoW cost just a bit. 2020-03-15 20:14:35 -07:00
3408839b33 build fix 2020-03-15 20:07:21 -07:00
a7409486bb minor stuff 2020-03-15 19:44:40 -07:00
cf24ed4108 This PoW seems decent 2020-03-15 14:08:53 -07:00
8a379ba0a1 The MIMC thing was neat but unfortunately is amenable to too much GPU acceleration. 2020-03-14 20:29:44 -07:00
4b20638568 more test fixes 2020-03-14 15:27:01 -07:00
eebe2046f0 docs 2020-03-14 12:17:30 -07:00
1e457dbd76 Fix tests, fix identity issue 2020-03-14 12:08:40 -07:00
a20aebaaf8 Some work on delay function... which is delaying us... but need to get it right because its hard as hell to change later. 2020-03-09 15:19:58 -07:00
5463c70aaf Minor stuff, and some docs 2020-03-06 12:18:20 -08:00
24e30a684b A bunch of little nit-picky header and name cleanup. 2020-03-04 08:16:44 -08:00
05e52493a4 Go module update 2020-03-03 07:41:15 -08:00
d8f1e01b77 cleanup 2020-03-03 07:40:19 -08:00
da5b11bf2d Rename version constants to something more canonical, and more cleanup. 2020-03-03 07:38:51 -08:00
b824ea7bcf Add buffer life cycle stuff to API for fewer memcpys. 2020-03-02 17:15:00 -08:00
b96ea5ae03 Fingerprint string conversion, API stuff 2020-03-02 15:13:34 -08:00
fbd3e10488 cleanup 2020-03-02 14:41:15 -08:00
51f0882849 comments 2020-03-02 14:39:42 -08:00
416068f68e Regularize use of fingerprint concept across code. 2020-03-02 12:09:38 -08:00
a8db4a8d2d Minor future proofing and cleanup in CertificateOfMembership, improve comments in a few places. 2020-03-02 10:25:15 -08:00
6b49148d4e More cross-platform build fixes and add tests for hton/ntoh/other byte order stuff because breakage there would be annoying. 2020-02-28 11:27:30 -08:00
77e59818a3 dead code removal 2020-02-27 15:59:39 -08:00
6262374205 Add tests for identity marshal/unmarshal and fix an issue found. 2020-02-27 15:40:31 -08:00
ed8271530f cleanup 2020-02-27 14:54:15 -08:00
8e4d7c56d8 Stub out a protocol field in Endpoint INETADDR types for future use. 2020-02-27 14:24:11 -08:00
0598315d68 Fix V1 sample ID 2020-02-27 12:59:00 -08:00
05e5d08959 A little more delay margin 2020-02-27 12:13:12 -08:00
ca33eaf28d FPU trick seems to always be faster 2020-02-27 12:09:26 -08:00
13e86fdb6c lalala build fixes 2020-02-27 11:57:45 -08:00
ffbd18f4ef build fix 2020-02-27 11:52:32 -08:00
fabb0f734a build fix 2020-02-27 11:47:01 -08:00
1e59d92df3 warning removal 2020-02-27 11:45:56 -08:00
ecd09946e6 warning removal 2020-02-27 11:45:06 -08:00
789b8b8454 compile fix 2020-02-27 11:43:54 -08:00
f107a71796 docs, compile fixes. 2020-02-27 11:42:00 -08:00
066b4c27a4 tweaks 2020-02-27 10:31:55 -08:00
fbfa99fac5 Speed up V1 identity verification a little, and add some comments. 2020-02-27 09:43:58 -08:00
c5bd21a23e various optimization 2020-02-26 17:00:03 -08:00
1c7e1da4d1 cleanup, docs 2020-02-26 12:40:29 -08:00
5cec5fe6b1 Make Fingerprint (a full length identity hash) a first class type 2020-02-26 11:39:18 -08:00
ea0961dfd2 docs 2020-02-26 11:32:54 -08:00
f20905b08a Throw some more mulmod52 implementations in there (but currently disabled) for future use so we do not have to hunt them down again. 2020-02-26 11:31:03 -08:00
83e79e1a1b V1 identities now use a VDF (verifiable delay function) 2020-02-26 11:08:03 -08:00
c6a7b5774c MIMC52 2020-02-26 09:58:28 -08:00
27ab88db1e little stuff 2020-02-25 16:21:51 -08:00
1b71b6d01a hash() -> fingerprint() 2020-02-25 16:15:14 -08:00
dcb3d49d35 Cleanup, Address refactoring, tweak V1 identity generation a bit. 2020-02-25 16:08:27 -08:00
5c14a072d5 rename 2020-02-25 06:03:24 -08:00
4eb491065b clean out old files 2020-02-25 06:03:04 -08:00
b87e8d8e41 readability++ 2020-02-25 06:00:52 -08:00
a58f11e601 Tweak protocol getPacketId(), unit tests for defragmenter, AES fix. 2020-02-25 05:36:48 -08:00
547f39bb49 Fixes for Buf, unit test 2020-02-24 15:40:19 -08:00
df99f5e3f3 More crypto benchmarks 2020-02-24 14:44:20 -08:00
15e88a8b7e MOAR AES V-TEC 2020-02-24 13:53:50 -08:00
61b72d42b8 More AES tweaks 2020-02-24 13:30:35 -08:00
56bf504ec2 Small AES tweak 2020-02-24 12:48:56 -08:00
1f02250dd8 Ridiculously fast AES-CTR 2020-02-24 11:56:37 -08:00
5d0c6db19c Crypto fixes and benchmarks. 2020-02-21 19:32:36 -08:00
4af3467757 AES-CTR test vectors and fixes to CTR code. 2020-02-21 17:22:26 -08:00
87890565f3 It builds, and basic stuff and crypto passes tests. 2020-02-21 16:43:12 -08:00
d603a73715 Build fixes. 2020-02-21 15:58:28 -08:00
55b0555aa0 A bunch more build fixes. 2020-02-21 14:46:01 -08:00
1a2378a3d4 More crypto unit tests. 2020-02-21 12:20:57 -08:00
c6ce6b46ce build fixes 2020-02-21 08:44:53 -08:00
f109f2e612 Identity v1 hash tweak 2020-02-21 08:10:43 -08:00
8f8e3f4960 OS/platform include cleanup 2020-02-21 08:01:58 -08:00
1d885cf810 Build fixes, put uint128_t detection in one place. 2020-02-21 07:25:43 -08:00
5275a34b0b more refactoring 2020-02-21 07:11:16 -08:00
c3b5c45fea Fix InetAddress sizing by delving into crazy C++ weeds, fix Peer compile issues. 2020-02-20 13:55:09 -08:00
565a686be7 include cleanup 2020-02-20 13:25:56 -08:00
12cfb6501d Cleanup in ECC384 including const-correctness, etc. 2020-02-20 13:11:51 -08:00
de1b54821e Starting to (re)write unit tests. 2020-02-20 12:54:46 -08:00
320c8429c2 Yet more perf, security hardening, and compile fix tweaks. 2020-02-20 09:33:11 -08:00
a4e24c8390 Build fixes 2020-02-19 11:32:16 -08:00
0589964f99 Yet more cleanup, and add meters to paths. 2020-02-19 11:06:05 -08:00
1affb6814c A little more cleanup and build fixes. 2020-02-19 10:32:02 -08:00
b70ab0d354 Include file cleanup, docs, and build fixes. 2020-02-19 10:18:52 -08:00
4a9266feef Comment out not-yet-refactored code in Network 2020-02-19 09:42:11 -08:00
1e0a930d23 Create a container for identity hashes, replace some "volatile" hacky junk with std::atomic, clean up some security checks, rename raw data in Buf to unsafeData to permit search for unsafe. 2020-02-19 09:28:18 -08:00
46d3780e89 AES stuff, port sending network credentials to new packet format. 2020-02-18 17:17:10 -08:00
311c98e24e Various other small things. 2020-02-18 14:20:49 -08:00
9ad8dd3700 Add Peer method for getting preferred cipher, various cleanup in VL1 2020-02-18 12:38:48 -08:00
0dc476518b Documentation changes, and move HMAC auth on HELLO to before object decoding since this is good cryptographic practice. 2020-02-18 10:31:31 -08:00
8c8a3c58ec Various little things... 2020-02-18 06:33:31 -08:00
a0ac4a744e Change the type 1 identity a bit to make locallyValidate() super fast, eliminating a scaling issue with v0. 2020-02-17 15:09:26 -08:00
3448e6fc76 Yet MORE refactoring, including moving expected-reply-to out of Node and into its own class for cleanliness. 2020-02-14 14:12:42 -08:00
e5c7366e71 Yet more minor refactoring and redesign Meter to be more thread-safe. 2020-02-14 11:34:47 -08:00
e236d6f743 More minor refactoring 2020-02-14 10:19:45 -08:00
5db0d9438c More built-in AES and GMAC primitive work. 2020-02-14 09:05:48 -08:00
08e06f9b8f More refactoring and a bunch of AES goodness. 2020-02-13 14:44:18 -08:00
018fe04163 More nit-picky refactoring. 2020-02-12 14:14:31 -08:00
f21ecb3762 Yet more major and very nit-picky refactoring for performance, etc. Also use std::atomic<> now with a TODO to implement a shim if we ever do need to build this on a pre-c++11 compiler. 2020-02-12 14:04:25 -08:00
60de5ed3dd It almost compiles again 2020-02-07 13:54:17 -08:00
df4b1e9b12 Yet more work on VL1/VL2 2020-02-07 00:02:29 -08:00
c3d3605f70 Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-02-06 18:07:22 -08:00
a9003d16f2 Put Switch in attic too 2020-02-06 18:07:17 -08:00
84619a7788 A bunch more refactoring including splitting Switch into VL1 and VL2 2020-02-06 18:06:50 -08:00
db127887b6 libssl-dev on trusty images 2020-02-05 10:57:29 -08:00
e0588b89b2 libssl-dev 2020-02-04 12:48:58 -08:00
7d2eceef01 no building cmake on wheezy either 2020-02-04 12:36:39 -08:00
e5e444c7ae can't even build cmake on Centos 6. Will need another method for packaging 2020-02-04 12:08:47 -08:00
4b083b8c41 more dependencies 2020-02-04 12:06:26 -08:00
245d92b40c add openssl-devel to centos images 2020-02-04 11:46:09 -08:00
931ad1aca8 Add CMake to all the docker images 2020-02-04 11:38:42 -08:00
5e488d3aa0 fix PATH 2020-02-04 10:33:18 -08:00
cc52835ce3 remove unneeded output 2020-02-04 09:39:13 -08:00
7d11522768 Just about everything refactored for new Protocol/Buf code except Switch. 2020-02-03 16:18:33 -08:00
417cdc17dc Skip generating packages on edge as that's not reimplemented in CMake yet 2020-02-03 14:00:46 -08:00
c537955c65 ensure go is in the PATH for jenkins builds 2020-02-03 13:57:03 -08:00
a0efea8e0f Merge branch 'dev' into edge
# Conflicts:
#	.gitignore
#	Jenkinsfile
#	attic/macui/ZeroTier One.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
#	attic/service/OneService.cpp
2020-02-03 13:54:49 -08:00
cce51cea5d Merge branch 'pipeline' into dev 2020-02-03 13:48:46 -08:00
df346a6df6 Work in progress... clean up memcpy and create an annotation for that, lots more porting to new Buf/Protocol code, etc. 2020-02-03 13:00:13 -08:00
ba4324f992 Update jenkinsfile for new build process 2020-02-03 12:51:46 -08:00
81e982991b add kali rolling 2020-02-03 10:46:39 -08:00
f6f4fba90e Add docker configs for multi arch jenkins builds 2020-02-03 09:57:48 -08:00
23d5a972ba disable lintian because sid/bullseye are sitting there running /bin/sleep 3 endlessly on this step 2020-01-31 13:15:23 -08:00
cdc6c42375 Take Dictionary behind the barn... 2020-01-25 18:02:11 -08:00
d5b9a54c55 Continuing work on new buffer type... 2020-01-25 01:17:56 -08:00
59da359b06 More porting to new Buf system. 2020-01-24 23:36:08 -08:00
91ce4c4ea6 Refactoring protocol marshal/unmarshal code... 2020-01-24 21:16:07 -08:00
e9656ecf11 More wiring up of addroot/removeroot etc. 2020-01-24 13:27:01 -08:00
5c6bf9d0a4 Wiring up addroot/removeroot 2020-01-23 18:05:34 -08:00
0de194dab3 It builds again 2020-01-23 14:41:59 -08:00
33bb61c63d Loads of refactoring, integration of new version of Trace. 2020-01-23 13:05:33 -08:00
5faf0f8ab6 whoops 2020-01-23 09:46:15 -08:00
0f17cd4791 Update to jenkinsfile for multi-platform release builds 2020-01-23 09:41:17 -08:00
e0518ab176 testing armv5t instead of armv5 flag 2020-01-22 16:36:26 -08:00
e6273b3300 cleanup 2020-01-21 13:12:07 -08:00
d7b31fe014 Warning removal and build fixes. 2020-01-21 12:55:51 -08:00
5aae5f95bf Merge commit 'bba132414527f1742dd1ca550dad5ecce94dfa40' into edge 2020-01-21 11:05:12 -08:00
bba1324145 One more sanity check. 2020-01-21 11:04:18 -08:00
182561f7e6 Port checking fixes. 2020-01-21 11:00:06 -08:00
41871c8b1e Merge commit 'ff655292fba09c0a0d1ed4b4dda738c165ad4404' into edge 2020-01-21 10:59:44 -08:00
ff655292fb Allocate packet on heap, add extra sanity checks on packet size. 2020-01-21 10:58:41 -08:00
782b75a64e Linux build fixes 2020-01-20 21:27:51 -08:00
0c58901469 cleanup 2020-01-20 21:05:29 -08:00
73b23f1b16 Go code cleanup and fixes, other cleanup. 2020-01-20 16:03:19 -08:00
5a29f9ba2d cleanup 2020-01-20 11:18:38 -08:00
03190c5a55 Bunch of build fixes, some docs 2020-01-20 10:40:31 -08:00
dab968ed96 Put LZ4 in its own file. 2020-01-20 09:38:05 -08:00
b598263261 More 2.x notice updates. 2020-01-20 08:49:10 -08:00
eef70e198b Version 2.x notice updates and other boring stuff. 2020-01-20 08:46:20 -08:00
89c41f88a4 Module version bump, vendor, cleanup 2020-01-20 08:23:30 -08:00
53b7c8f725 Make Peer bootstrap field an Endpoint even though we only support InetAddress right now, and a bunch more stuff. 2020-01-20 08:08:38 -08:00
d471142908 Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-01-17 14:01:32 -08:00
3ff9ffd5d4 A bunch of wiring up of stuff... 2020-01-17 14:01:22 -08:00
2558bd1b9b include iomanip 2020-01-16 09:11:12 -08:00
95d0944b9f add /metrics endpoint for exposing root metrics to Prometheus 2020-01-16 09:08:52 -08:00
6e72b6fb37 Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-01-15 16:12:51 -08:00
0c9be4de14 add /metrics endpoint for exposing root metrics to Prometheus 2020-01-15 16:12:34 -08:00
b53b7f4950 . 2020-01-14 15:34:06 -08:00
b2f0b35608 Move self-test so it can be called from CLI and always builds, implement Endpoint and Locator deserialization in Go as well as C++. 2020-01-14 14:37:49 -08:00
cba7a5d4d7 Self test is back, wiring up roots again. 2020-01-13 16:35:49 -08:00
8e1a88c2fb Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-01-13 15:32:31 -08:00
ee5a988f14 Wiring back up PUSH_DIRECT_PATHS and friends. 2020-01-13 14:04:17 -08:00
f814a07ab3 Go build works now 2020-01-10 22:12:56 -08:00
a5aea2f3bb Everything but the Go code builds now! 2020-01-10 21:09:13 -08:00
7291ac2093 A bunch more cleanup and build fixes, and remove old version of multipath code to prep for new version. 2020-01-10 20:40:14 -08:00
790fe50fac Go code cleanup for new changes 2020-01-10 16:54:01 -08:00
83eacdfada New Buffer implementation (not used yet) and cleanup 2020-01-10 15:28:27 -08:00
2fbeaaf148 Bunch more fixes, implement C API for Identity operations. 2020-01-09 13:50:51 -08:00
57710cbc38 . 2020-01-09 08:39:47 -08:00
8bae0acaf9 More cleanup and build fixes, almost builds again! 2020-01-08 21:48:01 -08:00
ef64e6a336 Build fixes, cleanup 2020-01-08 21:24:47 -08:00
9642ff5fb9 . 2020-01-08 18:08:41 -08:00
263798d1c3 cleanup 2020-01-07 14:04:08 -08:00
3fbfad5585 cleanup 2020-01-07 14:03:50 -08:00
627533cf48 . 2020-01-07 13:24:15 -08:00
19899de5a6 . 2020-01-06 18:14:35 -08:00
c1b2c7903c . 2020-01-02 19:04:36 -05:00
28df0c2e38 Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2019-12-17 10:56:53 -08:00
7696d45093 Fix handling of invalid conf file
Fixes GitHub issue #1068
2019-12-17 10:51:01 -08:00
2a7d4fcde5 update vs project settings 2019-12-17 10:49:21 -08:00
3b94ef99ae Bunch of new-gen serialization work 2019-12-16 11:57:33 -08:00
6267c67888 A bunch of cleanup and refactoring toward 2.x 2019-12-12 16:15:49 -08:00
23d6a3aacd Moar refactoring 2019-12-11 13:46:44 -08:00
72361fb1c8 Cleanup and refactor 2019-12-11 13:27:11 -08:00
b55f98b813 wip 2019-12-11 12:04:22 -08:00
995fa4a76c Merge branch 'refs/heads/master' into dev 2019-11-22 15:00:39 -08:00
d8597884f6 jenkins windows 2019-11-22 11:25:31 -08:00
a993ddc54d Merge branch 'refs/heads/master' into dev 2019-11-21 15:12:37 -08:00
54e25084fe re-enable CI on master 2019-11-21 14:51:33 -08:00
e58a0b3efb build central controller docker images on macOS 2019-11-21 14:49:24 -08:00
381f15382c Convert central-controller docker build to use a builder subcontainer 2019-11-20 13:56:26 -08:00
5a4d681af8 Build fixes. 2019-11-19 16:45:53 -08:00
a16a0a8ce5 Warning removal. 2019-11-19 16:22:11 -08:00
91d679af15 Merge pull request #1087 from skunkwerks/dev
drop -Werror from DEBUG builds
2019-11-19 08:47:38 -08:00
8396f16dd2 drop -Werror from DEBUG builds
Appease compilers. Thanks @glimberg for the diff.
Closes #1086
2019-11-19 16:45:06 +00:00
203df51752 ignore workspace/ folder
It's where I usually put temporary identity, etc. files for testing
2019-11-13 12:48:32 -08:00
dc19deb6c3 . 2019-11-13 12:46:52 -08:00
86abd31659 fix log line 2019-11-13 12:46:16 -08:00
b8e70d866a Compile fix for unterminated conditional directive 2019-11-12 09:46:39 -08:00
e1e27eb19d Bugfix for incorrect port binding of secondary and tertiary ports 2019-11-11 12:03:49 -08:00
47b4efd49b Work in progress... 2019-11-04 14:24:37 -08:00
088dab4f04 Let's not print this to the logs 2019-10-31 15:13:20 -07:00
cc79ec6179 use std::string instead of const char* in rmq struct 2019-10-31 15:08:59 -07:00
74478b24b0 add librabbitmq binaries for macos for testing central controller 2019-10-31 14:04:25 -07:00
14fab11081 Merge dev, clean up old files 2019-10-16 06:05:29 -07:00
4c55f3eaa5 Work in progress 2019-10-16 06:03:32 -07:00
bad95d7c67 Update cli help to say <network ID> instead of <network>
Closes #1054
2019-10-15 13:15:45 -07:00
891bf99894 work in progress 2019-10-15 12:49:03 -07:00
22e95b3bcb . 2019-10-09 10:00:30 -07:00
4da315fab2 Plumb through external interface stuff 2019-10-03 10:43:28 -07:00
507ba7d26a Go build stuff, root stuff 2019-10-02 17:55:15 -07:00
68ac884d47 . 2019-10-02 14:30:46 -07:00
e2f3996843 Fix callbacks 2019-10-02 13:39:48 -07:00
57ade250af . 2019-10-02 12:19:37 -07:00
c3e0f262d1 Regularize JSON stuff 2019-10-02 09:34:44 -07:00
b9911d0db7 More plumbing 2019-10-02 07:09:54 -07:00
d1b780c7be addroot 2019-10-01 13:09:53 -07:00
1711cced3e . 2019-09-30 20:31:48 -07:00
63e6693255 . 2019-09-30 20:10:53 -07:00
9b8d191bb1 Locator fix 2019-09-30 20:09:35 -07:00
6db2b8c66d . 2019-09-30 20:03:03 -07:00
47a08ccbd4 Identity management plumbing to Go 2019-09-30 18:59:57 -07:00
7fc78129f4 A bunch of CLI work 2019-09-30 16:12:08 -07:00
c4504fd3ff Vendor Go modules 2019-09-30 12:41:21 -07:00
e4799ff8c4 Bunch of small warnings and stylistic things... 2019-09-30 11:10:47 -07:00
f680924585 Build fixes 2019-09-30 09:48:44 -07:00
b0d222768a Root admin stuff 2019-09-30 09:32:00 -07:00
4303c43db7 . 2019-09-27 14:55:46 -07:00
3b3e6d2bfc Simplify root API 2019-09-26 13:35:56 -07:00
7061f13b24 . 2019-09-26 09:34:31 -07:00
5175636d36 . 2019-09-25 14:31:08 -07:00
570032484f . 2019-09-25 14:16:55 -07:00
9c37fc1a5f . 2019-09-25 13:32:46 -07:00
105023bd87 Build fix 2019-09-25 12:43:14 -07:00
8a9669f130 . 2019-09-25 12:36:49 -07:00
e5bd230fb0 . 2019-09-24 16:44:29 -07:00
e3d47e588a . 2019-09-24 12:32:35 -07:00
f4a5abeed9 Go CLI work 2019-09-24 12:19:28 -07:00
a7e38d2b00 . 2019-09-23 16:58:55 -07:00
84ba396ed3 . 2019-09-23 16:47:13 -07:00
6683280a37 . 2019-09-23 16:46:58 -07:00
1edf680464 . 2019-09-23 16:46:31 -07:00
4df090469a Clean out obsolete dependencies. 2019-09-23 16:42:23 -07:00
3c63f58532 Build fix. 2019-09-23 16:21:43 -07:00
64c8171e13 Port binding check. 2019-09-23 16:21:02 -07:00
b6175bd408 Gogogogogogogo 2019-09-23 15:18:52 -07:00
b44bd19c53 . 2019-09-22 22:33:11 -07:00
536bc59abb . 2019-09-22 22:25:55 -07:00
70d5da1e2a . 2019-09-22 19:25:40 -07:00
90d4d79828 Peers and paths 2019-09-22 17:41:15 -07:00
ccc9be2d4d All that cgo crap compiles! 2019-09-22 00:06:07 -07:00
3341c4a670 Rooting around 2019-09-21 22:54:58 -07:00
bcb9df9cdf Network config stuff in Go 2019-09-21 20:40:06 -07:00
2eef9d22e6 getting there... 2019-09-21 18:22:25 -07:00
5e35346f17 Gogog 2019-09-21 15:35:27 -07:00
bb53ee9567 Going once... going twice! 2019-09-21 15:04:00 -07:00
9934a856dd More go 2019-09-21 12:54:45 -07:00
24904c5083 Go F yourself 2019-09-21 11:56:31 -07:00
6ce4663a31 GoGoGo 2019-09-21 00:19:20 -07:00
fbf74d3baa Go! Go! https://www.youtube.com/watch?v=hyGYdqMfrQQ 2019-09-20 21:00:54 -07:00
b540181990 Go! Go! Go! - Moby 2019-09-20 20:34:31 -07:00
02a6b15e6b Moar Go 2019-09-20 19:51:57 -07:00
b34aa10bf8 Go code! 2019-09-20 18:48:48 -07:00
e0ddbc2f28 Update build process, Go glue builds now. 2019-09-20 15:00:53 -07:00
ed2024285d More Go boilerplate. 2019-09-20 14:11:15 -07:00
ae2120eb96 New service, work in progress 2019-09-20 09:09:05 -07:00
3ceb2257e5 Plumb through roots via API. 2019-09-19 09:47:12 -07:00
624efde7e4 Make sure threads dont exit on spurious return values from recvfrom unless we are really dying. 2019-09-16 20:41:23 -07:00
50009fef6f Merge branch 'dev' into edge 2019-09-16 20:26:41 -07:00
de127056c2 Add notarization to "make official". 2019-09-16 20:13:20 -07:00
dde937e197 cleanup 2019-09-16 19:58:21 -07:00
07a480b37a Build fix. 2019-09-16 18:04:32 -07:00
9f5bccec30 Add a recv timeout to root 2019-09-16 18:03:17 -07:00
ade52bf81e Fix RENDEZVOUS issue and possibly improve GeoIP resolution. 2019-09-16 17:04:13 -07:00
71c766a3b2 Build fix 2019-09-16 15:09:56 -07:00
eef66aee9a build fix 2019-09-16 14:51:02 -07:00
e245eb1eb5 Trim some unnecessary locks from root, and cleanup elsewhere. 2019-09-16 14:48:27 -07:00
e08fc81397 More threading improvements in root, more DNS TXT and multicast work (in progress) 2019-09-16 10:33:59 -07:00
9f9032ae36 Cleanup and warning removal. 2019-09-13 16:24:02 -07:00
063a16fcd6 Ensure SSE is enabled for Salsa20 on x64 2019-09-13 11:16:21 -07:00
0db4151492 cleanup 2019-09-13 11:10:56 -07:00
e44d7a553f The root technically does not need to do this, and its slow. 2019-09-13 10:29:11 -07:00
53a2de98de Packet ID fix 2019-09-13 10:23:35 -07:00
2deaaeef28 Some root cleanup and more lock contention reduction. 2019-09-13 10:20:29 -07:00
1f9e16f63e AES optimization rabbit hole 2019-09-13 09:37:09 -07:00
87fe69c27c AES optimization rabbit hole 2019-09-13 09:35:49 -07:00
2d1eeda188 Cleanup, optimization 2019-09-12 14:32:37 -07:00
5c06d40358 cleanup 2019-09-12 10:37:26 -07:00
31e193756d cleanup 2019-09-12 09:59:46 -07:00
5aa744db84 Simplification and further concurrency improvements. 2019-09-12 08:41:34 -07:00
0ad82dad80 Linux build fix 2019-09-12 08:25:26 -07:00
99c36ed2f2 Parallelization improvements 2019-09-12 08:20:38 -07:00
44878e583a Bug fixes 2019-09-11 16:10:06 -07:00
0723a85ab3 Build fixes. 2019-09-11 15:52:18 -07:00
d8dae365f6 Cleanup, optimization, multicast stuff, and it now compiles again. 2019-09-11 15:34:55 -07:00
bccb86a401 More multicast work... 2019-09-10 16:20:28 -07:00
592e743349 Yet more multicast work. 2019-09-09 15:49:17 -07:00
fb6161e9ac May as well make it a full self-signature. 2019-09-09 10:45:49 -07:00
787277d282 More multicast work, add a signature in identity for safety margin, cleanup. 2019-09-09 10:44:31 -07:00
540ee69773 A bunch of multicast work... in progress. 2019-09-07 19:15:21 -07:00
0d2c87fe4e map fix 2019-09-06 08:54:27 -07:00
2460de9713 map fix 2019-09-06 08:50:36 -07:00
0d32f42d26 map fix 2019-09-06 08:47:32 -07:00
277497684e Revert "map fix"
This reverts commit f4a83e516c.
2019-09-06 08:45:39 -07:00
f4a83e516c map fix 2019-09-06 08:41:03 -07:00
d2eb1ed9a5 map fix 2019-09-06 08:27:03 -07:00
a3ec5846df map fix 2019-09-06 08:18:11 -07:00
b6047899a8 map fix 2019-09-06 08:12:46 -07:00
3516070b6e map fix 2019-09-06 08:11:20 -07:00
56ec87e00e map fix 2019-09-06 08:03:59 -07:00
fe0b896665 map fix 2019-09-06 07:58:43 -07:00
e4721417e6 map fix 2019-09-06 07:55:36 -07:00
45f5b3b648 map fix 2019-09-06 07:40:32 -07:00
3123102211 root cleanup and add nifty geoip thing 2019-09-06 07:37:44 -07:00
c6141ffbc7 cleanup 2019-09-05 18:06:48 -07:00
c0e92d06a5 faster without const variable second-guessing of the compiler 2019-09-05 17:31:12 -07:00
274b2682d6 cleanup and docs 2019-09-05 15:09:20 -07:00
171d661b84 cleanup 2019-09-05 12:17:04 -07:00
5cea8da664 Optimization and naming cleanup 2019-09-05 12:03:11 -07:00
44dd52d08f KBKDF 2019-09-05 11:39:16 -07:00
70648d006d Merge branch 'dev' into edge 2019-09-05 11:06:27 -07:00
0767ea5d69 * Update default root list to latest
* ARM32 platform build and flag fixes
 * Add a clarification line to LICENSE.txt
 * Fix license message in CLI
 * Windows service now looks for service command line arguments
 * Fixed a bug that could cause excessive queued multicasts
2019-09-05 11:02:16 -07:00
43e6a9e9ee more fastitude 2019-09-05 09:54:30 -07:00
0599c1710b Merge branch 'dev' into edge 2019-09-04 16:41:05 -07:00
abf218a9cd cleanup 2019-09-04 16:38:55 -07:00
55f4f9aaeb cleanup 2019-09-04 16:15:10 -07:00
82b7e1dbcb HMAC fix 2019-09-04 15:22:15 -07:00
e8f8b0f8e5 cleanup 2019-09-04 14:40:36 -07:00
7566d4fbab Merge dev 2019-09-04 14:38:35 -07:00
3a0d385119 Implement changes to AES-GMAC-CTR: four keys with one for each role/purpose instead of just two, and simpler CTR-IV calculation. 2019-09-04 14:37:38 -07:00
8454a14eac new Windows GUID for build #2 2019-09-04 14:25:57 -07:00
ecee310087 Update built-in root list. 2019-09-04 14:17:41 -07:00
bcdab95e4c Windows installer version bump, build fix. 2019-09-04 14:13:45 -07:00
a16377cea5 Add mitigations against borked ARM32 exception unrollers, possibly fix GitHub issue #1003 2019-09-04 12:48:28 -07:00
ef69f1bb27 ARM wrestling 2019-09-04 12:37:54 -07:00
27c8eb0d6d GitHub issue #1019 2019-09-04 12:21:51 -07:00
a465afa83d Merge branch 'dev' into edge 2019-09-04 08:19:39 -07:00
3c0f54257b Debian typo fix 2019-09-04 08:19:33 -07:00
185e90c40f AES-GMAC-CTR tweaks, self test tweaks, debian typo fix. 2019-09-04 08:19:12 -07:00
e29c2d0260 Fix field headers 2019-09-03 15:59:34 -07:00
acf6425ae9 Formatting fix 2019-09-03 15:55:23 -07:00
5e8d49de0f Stats, tweak P2P success rate stat. 2019-09-03 15:48:10 -07:00
1f9456a462 Estimate P2P Success Rate 2019-09-03 15:19:17 -07:00
a7d8285c3a Don't require siblings field 2019-09-03 14:57:54 -07:00
5f1dc4b851 cleanup 2019-09-03 14:57:02 -07:00
b1c22949c5 Cleanup, add support for distributing a new planet file 2019-09-03 14:44:13 -07:00
29be175743 Make relay max hops configurable on roots 2019-09-03 13:17:12 -07:00
b6c5ba264b One more fix for discarding hops exceeded packets. 2019-09-03 13:01:01 -07:00
8e7e3c2b11 Fix max hops. 2019-09-03 12:58:23 -07:00
0e7df129d8 Fix variable shadowing bug. 2019-09-03 12:51:32 -07:00
50709cbd21 Fix siblings in peers list, fix meter. 2019-09-03 12:44:09 -07:00
fd6e8d8c5c Add instrumentation to root, add capability to forward to siblings if no path is known to a peer. 2019-09-03 12:21:57 -07:00
2e7496130c Fix silly thinko in root that harms p2p establishment. 2019-08-30 21:17:34 -07:00
9666ab5797 Merge branch 'dev' into edge 2019-08-30 17:57:11 -07:00
e6ead35884 docs 2019-08-30 17:48:22 -07:00
a6dff8ff2f Add an extra catch as workaround for possible cause of ARM crash. 2019-08-30 17:47:13 -07:00
4281b6b448 Ignore MULTICAST_GATHER replies with the wrong count. 2019-08-30 17:45:10 -07:00
4c08ac7873 Fix MULTICAST_GATHER reply problem in root 2019-08-30 17:34:05 -07:00
5435ec7545 Merge dev 2019-08-30 15:40:00 -07:00
6897f602bf 1.4.6 version bump 2019-08-30 15:30:37 -07:00
8764d50179 Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2019-08-30 15:16:21 -07:00
075321fd0d debian build version bump 2019-08-30 15:16:05 -07:00
62cdb8dc94 cleanup 2019-08-30 12:47:19 -07:00
5e8e935189 world! 2019-08-30 11:57:18 -07:00
ebb5f1256f ARM wrestling 2019-08-30 10:03:07 -07:00
7c6d0d3c0f ARM wrestling 2019-08-30 09:50:37 -07:00
9918a1092f JSON fix 2019-08-30 09:39:46 -07:00
7d89511fda JSON fix 2019-08-30 09:38:18 -07:00
795b6d13d1 Simple status output on root of HTTP tree 2019-08-30 09:29:06 -07:00
8328b6f657 Lib fix 2019-08-30 09:10:11 -07:00
9994e591bd More root work and CMake-ify root 2019-08-30 09:08:39 -07:00
b27a38e55e Implement WHOIS 2019-08-29 14:27:41 -07:00
f6d747a5a0 Fix some more multicast stuff (minor) 2019-08-29 12:02:37 -07:00
b7da7574d1 Helps to decompress the packet 2019-08-29 11:40:31 -07:00
dbad9585cd Fix parsing of MULTICAST_GATHER 2019-08-29 11:23:23 -07:00
2d7a97bb94 Fix V4/V6 forwarding issue in root 2019-08-29 10:58:47 -07:00
da19da0360 RENDEZVOUS works now 2019-08-29 08:00:54 -07:00
ee7361ee2e crash fix 2019-08-29 07:25:16 -07:00
6e3e09bed4 Add RENDEZVOUS to high throughput root 2019-08-29 07:17:18 -07:00
86762d2b40 high throughput root is working! 2019-08-28 15:52:18 -07:00
ef12c5af99 . 2019-08-28 15:22:28 -07:00
933404b1dd . 2019-08-28 15:20:34 -07:00
ccec49e444 . 2019-08-28 15:17:16 -07:00
e5f1bf81f7 . 2019-08-28 15:15:21 -07:00
0e627f4f68 . 2019-08-28 15:07:38 -07:00
d33f7d2bf5 . 2019-08-28 14:49:16 -07:00
e07a019615 . 2019-08-28 14:47:05 -07:00
34ca3012e6 . 2019-08-28 14:43:37 -07:00
62634ca2da . 2019-08-28 14:39:31 -07:00
846c96e8d5 . 2019-08-28 14:36:29 -07:00
63775723c1 . 2019-08-28 14:28:07 -07:00
2f7d3e655a . 2019-08-28 14:26:13 -07:00
b19634d7e4 . 2019-08-28 14:21:02 -07:00
a92967a7c1 . 2019-08-28 14:16:14 -07:00
8915b88de5 . 2019-08-28 14:06:45 -07:00
7bca81464b . 2019-08-28 14:04:42 -07:00
b974ece24f . 2019-08-28 13:59:23 -07:00
b1c8e6ad59 . 2019-08-28 13:51:13 -07:00
64f7185e3a . 2019-08-28 13:44:15 -07:00
807cc9afc3 . 2019-08-28 13:40:49 -07:00
0adf306dd4 . 2019-08-28 13:38:52 -07:00
db0f602e86 . 2019-08-28 13:10:36 -07:00
17ec47f5c0 . 2019-08-28 13:09:14 -07:00
cf831d9cd3 . 2019-08-28 13:04:58 -07:00
5e3c633f74 root work 2019-08-28 11:59:13 -07:00
4e4b27b6ab build fix 2019-08-28 11:54:09 -07:00
c0c9590904 High throughput root stuff 2019-08-28 11:49:45 -07:00
24c9577e39 cleanup 2019-08-28 11:28:51 -07:00
59ee0cfe88 Safety upgrades to code 2019-08-28 10:34:32 -07:00
1977b9b764 Use -flto on Mac for release 2019-08-28 07:45:49 -07:00
6f9d1fc14c Merge branch 'dev' into edge 2019-08-28 07:43:36 -07:00
1b6b38e395 Add default addIps() implementation to EthernetTap base class to fix build on systems that do not need addIps(). 2019-08-28 07:43:18 -07:00
8ac59ae2be cleanup 2019-08-28 07:40:13 -07:00
46db37e06c Yield in ticket lock 2019-08-28 07:34:24 -07:00
9d1207b339 Merge branch 'dev' into edge 2019-08-28 07:31:33 -07:00
6e730cfad1 Cleanup, multicast fingerprint, benchmark asymmetric crypto 2019-08-28 07:31:17 -07:00
1cf953c046 working docker image for end users.
GitHub Issue #1013
2019-08-27 16:57:07 -07:00
e5bf4565da readme in central controller docker folder 2019-08-27 15:43:11 -07:00
ddc904a502 remove docker line from readme 2019-08-27 15:27:41 -07:00
5cda292d15 comment out docker docker target from makefile because broken 2019-08-27 15:16:05 -07:00
e51cf0d4d2 moved elsewhere for controller builds 2019-08-27 15:14:55 -07:00
d8de837c60 LinuxEthernetTap addIps virtual function fix for SYNOLOGY builds 2019-08-27 14:43:30 -07:00
199b3345a0 cleanup 2019-08-27 14:42:49 -07:00
b7f504b8a4 cleanup 2019-08-27 14:40:01 -07:00
1b459b0560 cleanup 2019-08-27 14:31:04 -07:00
40803a4dc1 cleanup 2019-08-27 14:25:11 -07:00
6f22570648 Optimization and cleanup 2019-08-26 20:18:28 -07:00
8203547cfc Warning removal. 2019-08-26 20:01:54 -07:00
dad160209e Add -mmacosx-version-min=10.9 2019-08-26 19:54:24 -07:00
8faaaec710 Add check for PCLMUL instruction too. Virtually all CPUs with AES-NI have it but good to be sure. 2019-08-26 19:48:56 -07:00
012fba617d Set SSE/AES-NI flags only on x86/x64 targets. 2019-08-26 19:40:22 -07:00
9ca495229b Revert "optimization stuff"
This reverts commit e63f624d3a.
2019-08-26 19:03:09 -07:00
e63f624d3a optimization stuff 2019-08-26 19:02:28 -07:00
e1dd413266 cleanup 2019-08-26 18:44:56 -07:00
b9ef09dd58 Optimization stuff 2019-08-26 18:15:32 -07:00
990333e7ec cleanup, re-enable AES-NI check 2019-08-26 16:35:28 -07:00
ec9582f3f2 More test vectors, software mode GCM. 2019-08-26 16:24:42 -07:00
ea65386e15 Merge branch 'dev' into edge 2019-08-26 12:22:20 -07:00
ca89695270 Fix make central-controller-docker 2019-08-26 12:19:50 -07:00
a0fd4ad23f Cleanup, Linux build fix. 2019-08-26 12:17:23 -07:00
b6d7a95028 Merge branch 'dev' into edge 2019-08-26 11:09:19 -07:00
91b16310ea * Change license from GPL3 to BSL 1.1, see LICENSE.txt
* Fix an issue with the "ipauth" rule and auto-generated unforgeable IPv6 addresses
 * Fix socket/bind errors setting IPs and routes on Linux
2019-08-26 10:33:26 -07:00
609873e6d1 Windows version bump 2019-08-23 22:10:15 -07:00
4c616621c2 Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2019-08-23 21:38:15 -07:00
05470bf202 Fix RPM targets 2019-08-23 21:38:04 -07:00
633cf9ec04 Warning removal 2019-08-23 21:28:26 -07:00
f3c3a90393 Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2019-08-23 21:24:34 -07:00
25a48f2f44 Fix RedHat sub-version. 2019-08-23 21:24:05 -07:00
1d8f3cee62 cleanup 2019-08-23 21:12:24 -07:00
5ba6e21967 cleanup 2019-08-23 20:34:09 -07:00
52f7f6e6cf Fully implement the packet encryption/decryption algorithms. 2019-08-23 20:20:32 -07:00
9fd5ec673b Get rid of complicated AES-GCM + scramble construct in favor of a simpler construct thanks to "Squeamish Ossifrage" on crypto.stackexchange.com 2019-08-23 18:41:21 -07:00
e905b3c963 cleanup 2019-08-23 17:22:23 -07:00
d214a5437f Bump Mac pkg version 2019-08-23 15:24:52 -07:00
f12370c348 more opt 2019-08-23 12:40:08 -07:00
b727e2a67a More opt stuff 2019-08-23 12:34:45 -07:00
8e87319925 Optimization stuff 2019-08-23 12:18:02 -07:00
1ab29b1ab0 Merge branch 'dev' into edge 2019-08-23 12:11:07 -07:00
de0a5aa840 GitHub issue #994 2019-08-23 12:09:31 -07:00
52d55e34e6 Licenses, and use full strength AES-128 in scramble. 2019-08-23 12:03:13 -07:00
c79360f58b Merge dev 2019-08-23 11:37:40 -07:00
6f9e3e3b78 Back out unnecessary hack 2019-08-23 11:14:17 -07:00
5c5e7fc7ff Merge branch 'dev' of https://github.com/zerotier/ZeroTierOne into dev 2019-08-23 11:13:13 -07:00
43e98930e9 distro cleanup 2019-08-23 11:12:25 -07:00
51ebefc3ab Ifdef these to stop non-Windows IDEs from complaining. 2019-08-23 10:34:37 -07:00
86add4a6d3 Tolerate any libstdc++6 package "version" for Mint and other distros with weird versions on libstdc++6. 2019-08-23 10:31:12 -07:00
221a3f9a08 Merge branch 'dev' of http://10.187.0.8/zerotier/ZeroTierOne into dev 2019-08-23 10:20:04 -07:00
2f74bd5150 Add "make docker" for GitHub issue #1013 2019-08-23 10:19:59 -07:00
e8ae333443 Version bumps, license fixed, and GitHub issue #990 take two 2019-08-23 10:15:13 -07:00
8057c826bc cleanup 2019-08-23 09:34:26 -07:00
6f6138c500 Merge relicensing change from dev 2019-08-23 09:27:13 -07:00
52a166a71f Relicense: GPLv3 -> ZeroTier BSL 1.1 2019-08-23 09:23:39 -07:00
903a18db1d work in progress 2019-08-23 08:41:22 -07:00
0731f3f1a9 wiring more stuff up, and simplification of timing loops 2019-08-23 07:04:20 -07:00
37047a39f9 More cleanup, and fix SHA384 built-in C code. 2019-08-22 14:52:47 -07:00
91d0cbe892 cleanup 2019-08-22 13:08:10 -07:00
b66431bc29 Work in progress... 2019-08-22 13:06:08 -07:00
0e18b14087 Merge branch 'dev' into edge 2019-08-21 14:58:26 -07:00
31bd413166 stub out new verbs 2019-08-21 14:57:57 -07:00
95a6fce2b4 Yet more cleanup, it builds again now. 2019-08-21 14:36:56 -07:00
0b5472f9fb Tons and tons of cleanup and cruft removal 2019-08-21 14:24:45 -07:00
5280d28505 cleanup 2019-08-21 10:44:52 -07:00
67a9898a99 Bunch more work on DNS, cleanup, removal of obsolete cruft. 2019-08-21 09:27:45 -07:00
509da3ac34 Merge pull request #1012 from wendelb/wendelb-patch-1
Controller-Docs little cleanup
2019-08-21 08:14:38 -07:00
fe8815f80f cleanup 2019-08-20 15:36:18 -07:00
3a21fdc304 Crypto work, packet work 2019-08-20 15:34:30 -07:00
83d723eb79 type 1 (P-384) identities 2019-08-20 13:32:23 -07:00
6e771607c0 cleanup 2019-08-19 20:35:16 -07:00
e73b220104 cleanup 2019-08-19 20:30:34 -07:00
5c1fc43610 cleanup 2019-08-19 20:29:24 -07:00
cfbd7e3bf5 Add stubs to easily build and include all of libnatpmp and miniupnpc in osdep/ 2019-08-19 20:28:44 -07:00
c8ca1cfa3c Kill old inline software update, we will use https and secondary auth for new versions. 2019-08-19 19:24:23 -07:00
5cfbb0a423 Clean up dead stuff from OneService and fix build errors. 2019-08-19 19:21:33 -07:00
900ec143a8 . 2019-08-19 16:45:29 -07:00
7bda3d0f74 put sse4.1 back 2019-08-19 15:49:13 -07:00
7650786fb5 cleanup, Locator fix and self-test 2019-08-19 15:43:15 -07:00
ca60d08621 cleanup, scrambler functions 2019-08-19 12:49:33 -07:00
b34218c8c2 auto-set -j option in makefile, and split out cmake setup rule 2019-08-19 10:06:39 -07:00
b14a59629c cleanup 2019-08-19 06:58:42 -07:00
fe18579061 Removed duplicate line creationTime 2019-08-17 22:50:13 +02:00
0914bf8cf0 Some ARM NEON code (not finished) 2019-08-16 19:22:03 -07:00
7bdca83de3 Add decrypt 2019-08-16 18:40:22 -07:00
846f03504e Add DNS TXT resolver (need one for Windows) 2019-08-16 16:49:30 -07:00
01e8fd0b07 The newer C ed25519 is the same speed as the old ASM, so drop it to simplify. 2019-08-16 14:42:38 -07:00
7f301c44b7 more cleanup 2019-08-16 14:26:45 -07:00
51a25fdec9 Remove ASM Salsa20 since it will not be the default in 2.x any more... reduce build complexity. 2019-08-16 14:26:25 -07:00
2b681c37ac Consolidate common compiler flags 2019-08-16 11:42:43 -07:00
cb4ebfdbd2 Dragging adam into CMake kicking and screaming :) 2019-08-16 10:45:14 -07:00
206c85222c Fix Constants.hpp inclusion of version.h 2019-08-16 09:52:13 -07:00
18071e038e Fix MacEthernetTapAgent & Cmake integration 2019-08-16 09:44:31 -07:00
39f7ce15ad mac compiler flags 2019-08-15 17:40:21 -07:00
e39b42bbd3 fixing some CMake stuff on Linux 2019-08-15 17:29:33 -07:00
607d8f72e8 cruftectomy 2019-08-15 15:43:35 -07:00
c483f75fb4 cleanup 2019-08-15 15:32:16 -07:00
81f0175251 cleanup 2019-08-15 14:14:49 -07:00
f753519729 A bit more optimization 2019-08-15 14:07:52 -07:00
f39693f97e cleanup 2019-08-15 13:52:23 -07:00
f83ae0e39e Add self-test for AES and AES-GCM using public test vectors. 2019-08-15 13:47:43 -07:00
521d371b5d A bunch more refactoring to rip out obsolete stuff related to old root system and general cleanup. 2019-08-15 10:49:50 -07:00
b23d551d00 cleanup 2019-08-14 16:05:09 -07:00
1b20cc6075 More optimization and cleanup 2019-08-14 15:59:45 -07:00
2043e12ac2 . 2019-08-14 15:50:25 -07:00
9461bc948f . 2019-08-14 15:28:10 -07:00
9740ab8bd6 more cleanup 2019-08-14 15:17:06 -07:00
6947a6b1d4 more cleanup 2019-08-14 15:12:49 -07:00
4da8036222 More refactor 2019-08-14 15:00:18 -07:00
e6b4006c70 Refactoring to eliminate duplicated code 2019-08-14 14:55:37 -07:00
8f5f7f1baa More work in progress 2019-08-14 12:48:45 -07:00
573d3eea87 Merge branch 'dev' into edge 2019-08-14 10:53:03 -07:00
2ec53df7ab Put a limit on the multicast TX queue to prevent memory use ridiculousness. 2019-08-14 10:52:21 -07:00
eb84eec0f4 Merge branch 'dev' into edge 2019-08-14 10:48:07 -07:00
1c7b553331 GitHub issue #1000 2019-08-14 10:47:58 -07:00
d7a31088ba Cleanup, warning removal, cppcheck informed cleanup. 2019-08-14 10:35:57 -07:00
a028e04ab9 Merge branch 'dev' into edge 2019-08-13 15:51:19 -07:00
a0fb519696 Make sure libstdc++ is in RH spec file 2019-08-13 12:58:14 -07:00
83e6864b78 Version bump in Linux packages for new binaries. 2019-08-13 09:34:56 -07:00
a0520536df . 2019-08-13 08:49:25 -07:00
af137fd5d3 Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2019-08-12 15:37:55 -07:00
f7bc9f01c9 More AES stuff 2019-08-12 15:37:50 -07:00
e4ce1ffd85 Windows detection of AES-NI 2019-08-12 15:28:42 -07:00
2384b49156 set cmake windows build target to Windows 7 2019-08-12 15:28:30 -07:00
f5e71f64ed Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2019-08-12 13:27:07 -07:00
927ef22cf8 Merge branch 'dev' into edge 2019-08-12 13:27:00 -07:00
b6eaec1278 run selftest 2019-08-12 13:26:34 -07:00
c7d1eb71da build & run selftest as part of jenkins 2019-08-12 13:25:14 -07:00
98af3c0dc1 * Fix high CPU use bug on some platforms
* Fix issues with PostgreSQL controller DB (only affects Central)
 * Restore backward compatibility with MacOS versions prior to 10.13
2019-08-12 13:25:12 -07:00
7d41d267a3 silencing warnings for code paths that will never be hit 2019-08-12 13:18:21 -07:00
0ead65ad2d change this 2019-08-12 13:11:43 -07:00
8c5481a3d5 Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2019-08-12 12:58:20 -07:00
741258051e this should work better 2019-08-12 12:58:10 -07:00
0f4fc8635b Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2019-08-12 12:51:38 -07:00
d02d3f72fe AES-GCM code 2019-08-12 12:51:32 -07:00
710b69fc75 kill build dir before jenkins build 2019-08-12 12:44:47 -07:00
4fae382ffd Auto-generate version.h 2019-08-12 12:43:51 -07:00
68b94a3188 CMake for edge branch 2019-08-12 12:35:07 -07:00
8e04f83232 Merge branch 'edge' into cmake 2019-08-12 12:24:25 -07:00
cc9fd9f8ce Merge branch 'dev' into cmake 2019-08-12 12:23:36 -07:00
1e8fcf1344 Add AES to build 2019-08-09 13:42:40 -05:00
809c8305b1 AES code 2019-08-09 10:54:08 -05:00
652c7e8f37 Locator work 2019-08-08 23:23:16 -05:00
beebca98fe Merge branch 'dev' into edge 2019-08-08 19:42:16 -05:00
5341c216a7 Comment ugly query 2019-08-08 19:20:01 -05:00
96a0c3d764 ugly query is ugly 2019-08-08 19:16:11 -05:00
783b49e383 more worky less not worky 2019-08-08 18:58:22 -05:00
ce67abc32f Merge branch 'dev' into edge 2019-08-08 18:49:03 -05:00
d4dc983a01 fix bad column name 2019-08-08 18:31:41 -05:00
72ccd1020a Another exception fix 2019-08-08 18:11:06 -05:00
6a9a577c59 rulesSource needs to be required in network or pgsql has issues 2019-08-08 17:56:27 -05:00
730305ecc7 One more sync fix. 2019-08-08 17:31:32 -05:00
f8f2432ece Shutdown fix 2019-08-08 17:22:20 -05:00
55087521f6 Add periodic sync check when syncing LF<>another DB 2019-08-08 17:20:50 -05:00
760ae07d72 Sync bug fix 2019-08-08 16:30:52 -05:00
52cc482521 Merge branch 'dev' into edge 2019-08-08 15:59:58 -05:00
28d0070ce2 Fix race in multiple DB mirroring configurations. 2019-08-08 15:29:13 -05:00
ad2a7c2590 More windows build fixes 2019-08-08 15:15:12 -05:00
5eacad444d workinprogress 2019-08-08 15:03:52 -05:00
8b97755fc5 Windows fixes. 2019-08-08 14:08:35 -05:00
e8155cbbeb Merge dev 2019-08-08 13:05:28 -05:00
7bb0d9be1b warning removal 2019-08-08 11:04:11 -05:00
6c44fcc290 more warning cleanup 2019-08-08 10:28:57 -05:00
c8e7031198 warning cleanup 2019-08-08 10:01:57 -05:00
fb3b2820b5 centos 7 docs 2019-08-08 09:50:05 -05:00
663376e385 cleanup 2019-08-08 08:42:27 -05:00
3c590994db Finish up ECC384 identity generation. 2019-08-07 23:50:47 -05:00
14c8564893 Merge branch 'dev' into edge 2019-08-07 22:35:27 -05:00
91a37f8868 Add base64 code (unpadded standard alphabet) 2019-08-07 22:35:17 -05:00
c83a4aef55 cleanup 2019-08-07 21:47:06 -05:00
af7a70bf02 cleanup 2019-08-07 21:11:48 -05:00
1a2ff884b3 Merge branch 'dev' into edge 2019-08-07 19:08:35 -05:00
4d70640a15 Remove debug line 2019-08-07 19:06:02 -05:00
b11627a8bc add SDK VirtualTap to new factory method 2019-08-07 18:45:04 -05:00
7436f85ad0 Require MacOS 10.10 2019-08-07 18:22:03 -05:00
237c379866 Choose which tap to use (feth or kext) on Mac based on Darwin version. 2019-08-07 18:20:17 -05:00
aca31c7055 Put kext back in Mac distro and use on versions older than High Sierra (which lack the feth device) 2019-08-07 18:14:12 -05:00
0298719be0 Use SHA384 with ECC384 to match FIPS / Suite B recommendation. 2019-08-07 17:06:03 -05:00
d0746da5e2 Add SHA384 support, more cleanup 2019-08-07 16:41:58 -05:00
5b1cf33b1b Merge branch 'dev' into edge 2019-08-07 11:31:32 -05:00
6073e7972f Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2019-08-07 11:24:04 -05:00
f7e8d8f1dd Fix LFDB path issue when using with Postgress in DBMirrorSet config 2019-08-07 11:23:48 -05:00
54a1bbd016 . 2019-08-07 11:20:12 -05:00
87016ae815 network update to upsert 2019-08-06 15:30:50 -07:00
455cd5551b . 2019-08-06 17:06:39 -05:00
3ed8e46782 Use devtoolset-8 on RHEL/CentOS 7 2019-08-06 16:46:41 -05:00
b3e1783658 . 2019-08-06 16:46:13 -05:00
906c83af83 Merge branch 'dev' into edge 2019-08-06 15:47:54 -05:00
3db0197865 Add try/catch in LFDB and add introspection into multicast subscriptions in client network status API 2019-08-06 15:22:57 -05:00
f9900cc6fb Merge dev to edge 2019-08-06 14:13:07 -05:00
6174c0c103 Fix deadlock bug. 2019-08-06 13:20:37 -05:00
8898cb342b . 2019-08-06 13:12:45 -05:00
9cc76d1115 Remove debug line 2019-08-06 11:01:08 -05:00
5289d3327c Build fixes 2019-08-06 11:00:35 -05:00
00fb9c475e More work on DB mirroring. 2019-08-06 10:42:54 -05:00
3c776675b3 Cruftectomy, work in progress on mirrorring 2019-08-06 08:51:23 -05:00
37d508ab96 Refactoring in prep for mirroring 2019-08-06 07:51:50 -05:00
f4f8fef82e LFDB fix 2019-08-05 15:30:03 -05:00
cd2e3c79f2 Windows AIP version bump 2019-08-04 20:27:09 -07:00
7722350178 Version bump to 1.4.2 for all but Windows AIP 2019-08-04 20:13:12 -07:00
a77b4ecddb Add optional function in DB change listener for member online events. 2019-08-04 19:55:52 -07:00
818b7e4a2e GitHub issue #993 (???) 2019-08-04 15:35:43 -07:00
00d63f6046 GitHub issue #993 (???) 2019-08-04 15:15:02 -07:00
639fc60257 GitHub issue #990 2019-08-04 15:08:33 -07:00
21467596bc Merge branch 'remove_network_status_table' into dev 2019-08-04 12:38:12 -07:00
75ebe5172f Fix for sharing of capabilities in 1.4 (problem introduced when push frequency was reduced) 2019-08-02 20:43:02 -07:00
4a9030b4a0 Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2019-08-02 13:59:10 -07:00
fdc708a624 GitHub issue #979 2019-08-02 13:59:03 -07:00
8e20187d8c set OS X deployment target to 10.9 2019-08-01 15:58:32 -07:00
28dac7ff0e build MacEthernetTapAgent 2019-08-01 15:41:50 -07:00
e385b3d377 Merge branch 'dev' into cmake 2019-08-01 15:16:31 -07:00
7e5c68c553 update jenkins to use cmake for builds 2019-08-01 15:13:06 -07:00
39ad7bc741 update cmake to add LFDB and force C++11 2019-08-01 14:36:35 -07:00
c2f9aab068 Merge branch 'master' into cmake 2019-08-01 13:49:30 -07:00
67beea1e3d Batch file to clean Windows build dir 2019-08-01 13:21:36 -07:00
34364ab8ee Bump version 2019-07-31 16:41:35 -07:00
bb99ef1351 Get rid of online status stuff in FileDB, not necessary at all. 2019-07-31 16:41:12 -07:00
b3891e5506 Version 1.4.0.1: bug fix for Mac multicast and IPv4 issues, no change for other platforms 2019-07-31 13:27:08 -07:00
632d6e04ad Mac multicast bug fix -- GitHub issue #986 2019-07-31 13:25:58 -07:00
db813db7e8 2019-07-29 -- Version 1.4.0
Major Changes

 * Mac version no longer requires a kernel extension, instead making use of the [feth interfaces](https://apple.stackexc
 * Added support for concurrent multipath (multiple paths at once) with traffic weighting by link quality and faster rec
 * Added under-the-hood support for QoS (not yet exposed) that will eventually be configurable via our rules engine.

Minor Changes and Bug Fixes

 * Experimental DB driver for [LF](https://github.com/zerotier/lf) to store network controller data (LFDB.cpp / LFDB.hpp
 * Modified credential push and direct path push timings and algorithms to somewhat reduce "chattiness" of the protocol
 * Removed our beta/half-baked integration of Central with the Windows UI. We're going to do a whole new UI of some kind
 * Fixed stack overflow issues on Linux versions using musl libc.
 * Fixed some alignment problems reported on ARM and ARM64, but some reports we could not reproduce so please report any
 * Fixed numerous other small issues and bugs such as ARM alignment issues causing crashes on some devices.
 * Windows now sets the adapter name such that it is consistent in both the Windows UI and command line utilities.
2019-07-29 16:11:06 -07:00
837c6270f2 More docs 2019-07-29 15:14:37 -07:00
8c3c07cb5d docs 2019-07-29 13:50:02 -07:00
5cc0dd7f55 Windows installer version bump 2019-07-29 12:36:10 -07:00
79c4d98b61 docs 2019-07-29 12:10:39 -07:00
678e11530e 1.4 bump 2019-07-29 12:07:44 -07:00
a8f2b39f15 Windows project fixes 2019-07-29 11:05:46 -07:00
add2ac0369 Merge pull request #963 from atopuzov/armv6l
Fix compiling on Raspberry PI Zero W on Arch Linux
2019-07-29 10:23:09 -07:00
1e475edd1c Merge pull request #973 from unquietwiki/patch-1
Update Dockerfile
2019-07-29 10:22:36 -07:00
745483708a Merge pull request #974 from squeakbat/master
Don't relink zerotier-one every time.
2019-07-29 10:21:35 -07:00
d9432f2f1e cleanup 2019-07-29 10:19:20 -07:00
eb7081d2a3 Fix for detecting changes in LF from other instances of the same controller. 2019-07-26 19:28:09 -07:00
d9befe3fb3 Debug code removal 2019-07-26 18:51:50 -07:00
0618452615 LF masking key should be a secret 2019-07-26 17:44:05 -07:00
f6b080b8a2 Abstract out change listener from controller itself to permit DBs to shadow changes from other DBs. 2019-07-26 17:39:00 -07:00
c8c33db1d1 . 2019-07-26 16:03:21 -07:00
196bac726c Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2019-07-23 16:06:40 -07:00
ac2688de58 More LFDB work 2019-07-23 16:06:35 -07:00
d2af12b6a0 Forgot to add ZT_DISABLE_COMPRESSION to linux makefile 2019-07-23 13:33:25 -07:00
6958ba9557 Added ZT_DISABLE_COMPRESSION build flag for SDK and low-end NAS builds 2019-07-23 12:39:07 -07:00
5f11daadf2 Build fix 2019-07-23 09:30:40 -07:00
99df3fe433 Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2019-07-23 09:29:12 -07:00
d4d350a285 Work in progress 2019-07-23 09:29:08 -07:00
8a0b75c83a Added LFDB.o to objects.mk 2019-07-22 15:24:16 -07:00
9cf74657e0 Commented out rtnetlink error debug trace 2019-07-22 14:12:21 -07:00
5edd04638d LFDB work in progress 2019-07-22 13:43:06 -07:00
eb2f851e65 Don't relink zerotier-one every time.
Because zerotier-one depends on "one", which is a phony target,
making it relinks zerotier-one every time, which is probably
not the desired behavior.

In any case, zerotier-one, zerotier-cli, and zerotier-idtool are
real target, so they should have real dependencies and actions.
The "one" target now depends on these three files.

Behavior is mostly unchanged otherwise.
2019-07-21 21:37:01 -07:00
a0f47b12b4 Removed Synology-specific home path, changes made elsewhere in SPK 2019-07-19 16:34:31 -07:00
1b2d9e202e Remove 44/8 as pseudoprivate since it is now partly global. 2019-07-19 13:33:14 -07:00
daa8839005 Update Dockerfile
Update Dockerfile to use Debian 10 + pull the main.sh directly from Github; works for Portainer use.
2019-07-18 17:48:41 -07:00
7e105343e2 WIP 2019-07-17 16:53:33 -05:00
fe2215df00 TON of refactoring, moon/planet is DEAD, ECC P-384 is integrated (but not enabled), and multicast work and cleanup. Whew. 2019-07-17 10:52:08 -05:00
80124bb753 Update release notes 2019-07-16 15:34:26 -07:00
640bbaabbf Safer value 2019-07-16 17:28:42 -05:00
da2965cb4e P-384 test vectors 2019-07-16 17:25:25 -05:00
861a319014 Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2019-07-16 15:20:05 -07:00
d43e810ecb Finally figured out how to update the network interface names on Windows so that they'll be visible in ipconfig, Get-NetAdapter etc. 2019-07-16 15:16:49 -07:00
94ba242c33 Nist P-384 guts and glory 2019-07-16 16:09:14 -05:00
7afcc17024 no usleep() on Windows 2019-07-16 13:09:10 -07:00
2ab2f68725 Add a central database schema version check to central controller startup 2019-07-16 12:15:38 -07:00
debd5a5c5e Add capability for P2P multicast propagation, and some cleanup. 2019-07-16 13:33:11 -05:00
98bbb84a63 Merge branch 'dev' into edge 2019-07-15 19:40:52 -05:00
90872c906f Fix FileDB stuff and latency measurement. 2019-07-15 16:30:34 -05:00
bdc2ec1f5e Track online status in FileDB 2019-07-15 15:27:53 -05:00
692733fffb Don't write to ztc_network_status table anymore in central controller 2019-07-15 13:00:16 -07:00
9d908a11ed Some new stuff, may not live forever... 2019-07-15 13:57:42 -05:00
d3728d5859 cleanup 2019-07-10 21:30:11 -04:00
389331ca29 Ticket #915, added allowSecondaryPort to optionally force ZT to use a single port 2019-07-09 10:31:03 -07:00
b2c4b7e99f Version bunmp 2019-07-09 10:36:25 -04:00
fee6aae442 Drop in faster C25519 agreement code. 2019-07-09 10:31:08 -04:00
409406d114 Whoops 2019-07-08 12:36:49 -07:00
203414910f Give up to a second for the interface to appear to assign IP addresses 2019-07-08 12:33:26 -07:00
ac0082a67e Update README.md 2019-07-02 11:56:19 -07:00
9ccbe85923 Fix compiling on Raspberry PI Zero W on Arch Linux
* Should also fix it for Raspberry PI 1
* "gcc -dumpmachine | cut -d '-' -f 1" reports armv6l
2019-07-01 14:56:02 +01:00
dffbd2113a Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2019-06-28 11:20:49 -07:00
7db073d993 Start 1.4.0 release notes. 2019-06-28 11:20:38 -07:00
3c02c2e4bd Windows installer bump 2019-06-28 08:48:06 -07:00
a17c760181 Fix Mac installer 2019-06-27 14:36:31 -07:00
54d2fa65dd Version bump, cleanup 2019-06-27 14:31:10 -07:00
a019c3dd5d Tighten up credential push just a bit for faster up-time with older nodes, should not have significant impact on bandwidth. Also some cleanup and push direct path timing fixes. 2019-06-25 13:42:20 -07:00
a3ef9b8a15 Cleanup 2019-06-25 10:06:50 -07:00
4d599e2f9f Linux build with CMake 2019-06-21 15:16:20 -07:00
d3b33e5512 Can now build the Windows UI via CMake as well 2019-06-21 12:54:53 -07:00
c8487cc395 no message 2019-06-20 16:15:19 -07:00
0b3b5f6174 Beginning CMake configuration for ZT
Only tested on Windows so far
2019-06-20 16:13:52 -07:00
554e0b7c6d Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2019-06-20 15:20:46 -07:00
fd74e2a583 Windows build changes for 1.2.99 (1.4.0pre) 2019-06-20 15:20:42 -07:00
af5d3a7f0b dockerfile updates 2019-06-20 14:17:38 -07:00
bb0808c99c Remove current multithreaded receive path, which is not that efficient. We will do something better in the future. 2019-06-19 10:19:59 -07:00
f0295b154b Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2019-06-17 15:50:11 -07:00
b041de831a More stack->heap 2019-06-17 15:50:05 -07:00
21e844cd82 Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2019-06-17 15:32:27 -07:00
4e2439bd12 Don't call _phy->getIfName if localSocket is -1 2019-06-17 15:32:21 -07:00
c5a07c7f20 More stack->heap 2019-06-17 15:28:02 -07:00
e2900f4f3c Fix valgrind warning... not sure if it is an actual issue. 2019-06-17 15:23:52 -07:00
aa831dd843 More stack->heap... 2019-06-17 14:55:33 -07:00
2dc783214c Allocate outp on heap in Peer. 2019-06-17 14:38:27 -07:00
523df47a65 Check for null data ptr 2019-06-17 14:02:35 -07:00
f66fac3982 Win32 build fix 2019-06-17 13:48:42 -07:00
9c51ce9c40 Windows build fixes, fix double/float types to get rid of warnings. 2019-06-17 13:32:41 -07:00
9797540212 merge 2019-06-13 12:53:05 -07:00
ce2338c24a Fix null ptr on managed routes if no IPs are set. 2019-06-13 12:52:38 -07:00
3b188ba672 no message 2019-06-13 10:38:42 -07:00
eb84d61deb remove these from jenkins for now 2019-06-13 10:35:54 -07:00
47d29ddcaf Compiler warning cleanup 2019-06-13 10:28:09 -07:00
f411eb1651 Remove old RethinkDB.cpp/.hpp files from visual studio project 2019-06-13 10:15:45 -07:00
94bd2918fa Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2019-06-12 13:14:23 -07:00
c3bfcf560b Removed check for port number in multipath path replacement logic 2019-06-12 13:14:14 -07:00
5b2b088714 Cleanup, version bump. 2019-06-11 14:58:23 -07:00
0bdfad52e7 docs 2019-06-11 13:51:10 -07:00
cf046a4039 Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2019-06-11 11:01:20 -07:00
700cc92083 Indent fix 2019-06-11 11:01:12 -07:00
2eb9c0924a Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2019-06-11 10:54:14 -07:00
ebadc6f203 Added s390x arch flags to makefile and ZeroTierOne.h for ticket #950 2019-06-11 10:54:06 -07:00
87bce1a36b GitHub issue #886 2019-06-11 10:53:35 -07:00
848f822171 . 2019-06-06 10:04:11 -07:00
d4199ddb3e Commented out RingBuffer::dump() as an alternative solution to PR #952 2019-06-03 11:00:04 -07:00
e4abc91d35 Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2019-05-31 15:10:53 -07:00
37d321afc8 dont spin as much in the onlineNotificationThread 2019-05-31 15:10:45 -07:00
541e5c510e CLI improvements (peers, and get/set ip, ip4, ip6, etc) 2019-05-31 11:41:24 -07:00
90d324ae96 Fixed ZT_SDK build issue. Moved ZT_SDK preprocessor directives to more permanent homes 2019-05-17 10:15:40 -07:00
cacdb445c7 Bump protocol version to 10 2019-05-14 13:54:27 -07:00
4743ad0b16 Added convenience swtich for disabling JSON support in SDK build 2019-05-13 12:24:55 -07:00
2d5c6fa975 Disabled compression for outbound packets in SDK build 2019-05-13 12:24:22 -07:00
95ef13f7a1 Added divisor for ZT_PEER_ACTIVITY_TIMEOUT, gives quicker indication to status change in SDK 2019-05-13 12:24:01 -07:00
298e1d5a74 Added 90x90 AppIcon 2019-05-01 12:53:50 -07:00
87c75d033e pt 2 2019-04-22 11:36:14 -07:00
71ae678930 Make things compile with Android NDK again 2019-04-22 11:35:35 -07:00
6a027c9c0a amqp_consume_message now has a timeout
RabbitMQ::consume() will return an empty string if the call to amqp_consume_message times out
2019-04-18 14:57:06 -07:00
6014df2847 fix compile & sql errors 2019-04-04 15:11:01 -07:00
55a9e6e05e Queue up inserts in onlineNotificationThread() into a multiple insert statement 2019-04-04 12:40:49 -07:00
02f0eead1c More new Mac ethernet tap bugs. 2019-03-29 15:14:03 -07:00
d77846dcea Add bigness to buffers to prevent overflow on high traffic (Mac tap). 2019-03-29 12:45:02 -07:00
92c811deb7 Destroy feth devices before creating to delete old ones if they were left behind (MacEthernetTap). 2019-03-29 12:14:03 -07:00
92f199ab98 More bug fixing for AARCH64. 2019-03-28 22:40:28 +00:00
b65feeba85 One more AARCH64 fix. 2019-03-28 15:23:53 -07:00
6914425b03 cleanup 2019-03-28 13:58:19 -07:00
89f57124b2 Never mind, only unused on some builds so leave them there. 2019-03-27 09:30:45 -07:00
65823332d4 Comment out some unused functions. 2019-03-27 09:29:34 -07:00
ee8682ac75 Temporarily disable the symmetric NAT port prediction code since the current version adds protocol overhead and probably is not that effective. 2019-03-26 15:23:51 -07:00
e3e5137757 Fix more alignment hell in LinuxNetLink for AARCH64 and probably other pedantic architectures. 2019-03-25 22:53:06 +00:00
d81549a7b1 Various other fixes including removal of more mem*() issues and netlink fixes for AARCH64. 2019-03-25 22:19:52 +00:00
d5ac8512e3 ... 2019-03-25 12:58:43 -07:00
f23e354272 Nope, more... 2019-03-25 12:56:03 -07:00
6475e1faf6 I think this is the last one. 2019-03-25 12:53:31 -07:00
752fc0742e More mem*() stuff... sigh... 2019-03-25 12:52:19 -07:00
e1091611da More mem*() stuff... 2019-03-25 12:41:59 -07:00
678116b6d1 One more. 2019-03-25 12:36:54 -07:00
0a9e2227e8 ... and more 2019-03-25 12:00:54 -07:00
2600b1f144 Removal of more mem*() calls. 2019-03-25 11:59:14 -07:00
b56753ea9f Get rid of some mem* calls that are bad C++ form (but worked fine) and cause warnings. 2019-03-25 11:45:32 -07:00
97046b265c Kill ZT_FAST_MEMCPY in selftest. 2019-03-22 15:52:16 -07:00
2966eac64f Get rid of ZT_FAST_MEMCPY because this is not really needed. 2019-03-22 15:50:15 -07:00
d530356055 RingBuffer<> is now templated with size, buffer is now static. 2019-03-22 14:39:52 -07:00
af3ec000a0 Merge branch 'dev' into edge 2019-03-22 09:38:41 -07:00
8051127c3b Update credits. 2019-03-21 16:43:53 -07:00
e37eb0aa54 More cleanup of old stuff no longer used. 2019-03-21 16:42:52 -07:00
130fa35bb1 cleanup 2019-03-21 16:39:56 -07:00
39e1021f62 Replace certificate based gating of multicast like/gather with a simpler more efficient method, fix some minor issues with request based com/cert push, and clean up some other random stuff. 2019-03-21 16:18:49 -07:00
63ec19674c . 2019-03-19 16:43:43 -07:00
af60e769b0 Allow mac users to make central-controller
Made the smallest change I could figure out.
Had to remove -Werror because something in the postgres adapter woudn't
compile.

brew install postgresql rabbitmq-c
and seems to put the libs in the right place
2019-03-18 17:01:05 -07:00
087c75d5ee More cleanup. 2019-03-14 16:40:22 -07:00
e03102dbcb Clean out some unnecessarily pedantic auth stuff in favor of a simpler way of gating multicast gathers. 2019-03-14 14:29:15 -07:00
9d7b7c72b2 Merge branch 'dev' into edge 2019-03-14 13:49:49 -07:00
99c3f02343 Update controller readme
Delete `/controller/network/<network ID>/active` docs

re: #921
2019-03-12 13:02:49 -07:00
95bfc29c92 Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2019-03-11 12:26:57 -07:00
e3cc7c9a80 fix non-central controller builds 2019-03-11 11:16:44 -07:00
d4c0349de9 Revert "#ifdef'd out multipath/QoS statistics buffers allocations for ZT_PROTOCOL_VERSION<10"
This reverts commit 270debb3fc.
2019-03-11 09:44:40 -07:00
d7a6357393 Merge branch 'dev' into edge 2019-03-08 13:16:02 -08:00
6fbf21b4f0 Use a smaller MTU, which should not impact throughput since 2800+overhead/2 still fits in two of these. 2019-03-08 13:15:47 -08:00
993d850f69 more logs 2019-03-08 10:50:33 -08:00
cda07b20a2 add mutex to channel numbering 2019-03-08 10:29:36 -08:00
52c85aa605 now with more -fPIC 2019-03-08 10:29:19 -08:00
e5155df6d5 Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2019-03-08 10:21:19 -08:00
293d2064c4 librabbitmq built with same clang version as zt 2019-03-08 10:20:53 -08:00
171cc3e01a reorder a couple of things 2019-03-08 10:20:19 -08:00
8141043560 finish up rabbitmq integration 2019-03-06 16:16:49 -08:00
9a3cc93d74 update dockerfile to generate rabbitmq config settings when necessary 2019-03-05 15:47:04 -08:00
fcb4221f97 rabbitMQ implementation 2019-03-05 15:11:50 -08:00
1f13374a4f added struct for rabbitmq config 2019-03-04 17:01:16 -08:00
801401a6e7 Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2019-03-04 16:31:36 -08:00
de1fc43cc5 added librabbitmq library for central controller 2019-03-04 16:27:39 -08:00
270debb3fc #ifdef'd out multipath/QoS statistics buffers allocations for ZT_PROTOCOL_VERSION<10 2019-03-01 13:28:00 -08:00
59a0a25f35 Merge branch 'controller-live' into dev 2019-03-01 11:13:49 -08:00
a788486803 Remove /controller/network/<network ID>/active from controller documentation as that path no longer exists.
GitHub Issue #921
2019-02-25 12:13:55 -08:00
3d21f0a91f update docker registry used 2019-02-08 10:40:57 -08:00
f726044e29 no message 2019-02-05 11:48:03 -08:00
a4b1917361 Fixed a bug where UI elements were attempting to be updated in a background thread.
Also code cleanup & removed confusing startup UI
2019-02-05 11:47:37 -08:00
a3b2aeb001 Take netmask bits from most specific route. 2019-02-01 14:06:34 -08:00
5b1ef2fb03 Take netmask bits from most specific route. 2019-02-01 14:05:29 -08:00
d0f78f1e03 Bugfix for heap-use-after-free in concurrent packet processing code (manifests only after terminate() is called) 2019-02-01 11:50:52 -08:00
541e91ed8e Fixed potential memory leak in RingBuffer 2019-02-01 11:44:43 -08:00
321cada1d7 Wrong criteria was wrong. Now with less wrong. 2019-02-01 11:38:19 -08:00
34c1023ba7 Wrong criteria was wrong. Now with less wrong. 2019-02-01 11:37:30 -08:00
82a21d4b71 Bugfix for heap-use-after-free in concurrent packet processing code (manifests only after terminate() is called) 2019-01-30 22:29:51 -08:00
23996c7e6b Fixed potential memory leak in RingBuffer 2019-01-27 14:43:29 -08:00
d7091a0bac Fixed sign-comparison compile warnings in QoS code 2019-01-25 13:24:31 -08:00
7414418e2e insert/update host_port on controller start 2019-01-21 11:29:13 -08:00
2294770e56 Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2019-01-21 11:18:25 -08:00
d98bdb5643 WIP: Pass listen port down to Postgres 2019-01-21 11:18:20 -08:00
21f4f16e63 Disable HTTP control plane for libzt builds, introduction of getRoutes() for SDK API 2019-01-14 11:34:46 -08:00
0e597191b8 Updated licenses for 2019 2019-01-14 10:25:53 -08:00
001ba1a4a7 Update link to knowledge base. 2019-01-09 10:19:02 -08:00
b59c4a2106 Print error & exit on local.conf parsing error 2019-01-07 11:19:50 -08:00
c35933cd1e Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2018-12-10 12:27:00 -08:00
0da2efa633 add application_name to pgbouncer connectio string 2018-12-10 12:26:20 -08:00
e23d95bf03 sleep 60 seconds between deployments 2018-12-07 15:17:12 -08:00
f6e9f0e2a2 cleanup 2018-12-07 01:58:23 -08:00
4a89729529 add INCOMING_PACKET_CONCURRENCY environment variable to be able to specify max threads for receive in controller 2018-12-07 00:59:08 -08:00
56a58f2b11 more logging of exits from the central controller 2018-12-06 13:26:53 -08:00
e959908c51 log message 2018-12-06 13:19:36 -08:00
6e3144370a exit controller if onlinenotification thread exits while _run == 1 2018-12-06 13:10:59 -08:00
20f02bb772 Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2018-12-06 13:08:39 -08:00
1c86f25fab update # of threads for Postgres 2018-12-06 13:08:31 -08:00
e6f9ab929d More speed stuff. 2018-12-06 12:47:58 -08:00
18d1772bb4 stuff for speed and stuff (testing) 2018-12-06 12:00:49 -08:00
5535cad773 Revert mutex change. 2018-12-04 16:15:46 -08:00
ec84934d48 Disable spinlock to check CPU usage implications on multithreaded controllers. 2018-12-04 15:59:39 -08:00
328d08781a finish pgbouncer integration 2018-12-03 16:12:15 -08:00
c8d5215870 add handling for PGBOUNCER_CONNSTR environment variable.
alows Central controllers to connect to PGBouncer on some threads.  LISTEN threads still require a direct connection to the DB
2018-12-03 15:19:15 -08:00
62ccb48a0b allow alternative ports for central controllers 2018-12-03 15:06:26 -08:00
82409eb345 add script to cycle central controllers 2018-12-03 15:04:46 -08:00
b75f212d70 Replace RethinkDB section in controller/README with PostgreSQL 2018-11-30 10:41:54 -08:00
ccb856749f back to plain old libpq in dev 2018-11-30 10:40:57 -08:00
9d2bc9bf4e Merge branch 'master' into dev 2018-11-28 08:44:45 -08:00
52c4385c16 Merge branch 'master' of http://git.int.zerotier.com/zerotier/ZeroTierOne 2018-11-28 08:44:12 -08:00
5da7d6d1ae Merge docker update PR 2018-11-28 08:43:50 -08:00
65e0a74718 Merge pull request #869 from bltavares/patch-2
Update ZeroTier version on Docker
2018-11-28 08:41:42 -08:00
01d5d7d78b Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2018-11-13 16:20:01 -08:00
e3381a4c1f fix member init query 2018-11-13 16:19:55 -08:00
03e35b25b8 Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2018-11-13 16:02:31 -08:00
e2b0fb26b1 self-test build fix. 2018-11-13 16:02:26 -08:00
01c18cc442 update makefile for libpqxx controller 2018-11-13 16:01:43 -08:00
01e6df4d46 Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2018-11-13 16:00:17 -08:00
882b03436d WIP: libpxx instead of libpq 2018-11-13 16:00:13 -08:00
690bd933d5 Support shutdown with postLimit in BlockingQueue 2018-11-13 13:52:45 -08:00
6684559cd9 More Mac tap improvements and threading efficiency improvements. 2018-11-13 13:51:25 -08:00
4ed7d20a48 Another stability fix... turns out vfork is problematic here. 2018-11-13 12:46:36 -08:00
350116c513 Stability improvements for Mac virtual Ethernet tap driver. 2018-11-13 12:42:03 -08:00
7bde2c089d Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2018-11-13 12:08:02 -08:00
90631adb9b Improve multithreading support for OneService (faster, dynamic adjustment of thread count based on HW concurrency). 2018-11-13 12:07:58 -08:00
f6450cd7e1 Cleanup and a minor performance improvement. 2018-11-13 10:19:51 -08:00
3b6b1d1674 Make incoming packet processor thread pool dynamic based on core count. 2018-11-13 09:35:20 -08:00
33d7b22abe Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2018-11-11 23:06:31 -08:00
2f9712e6a7 utility script to update public controllers 2018-11-11 23:06:24 -08:00
b937aeb857 cleanup 2018-11-11 23:03:51 -08:00
f3d8846df3 Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2018-11-11 22:55:57 -08:00
2729db9555 exceptions 2018-11-11 22:55:53 -08:00
1cec4b1c4c Raise thread count to 8 2018-11-11 22:55:38 -08:00
7048c77ebc Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2018-11-11 22:35:26 -08:00
c9c17eaddd Retire RethinkDB, simple receive path multithreading. 2018-11-11 22:35:15 -08:00
f1b82b734a Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2018-11-11 21:09:35 -08:00
4c0e7aa8b0 more error checking 2018-11-11 21:08:51 -08:00
296e4616cc Migrate Windows to use Visual Studio 2017 Community instead of 2015. 2018-11-11 20:31:31 -08:00
15649334a6 Do not use new "feth" devices for ZT traffic. 2018-11-11 19:22:07 -08:00
b3c2c0866f Times should be int64_t, not uint64_t 2018-11-11 17:38:17 -08:00
c6ae81fac7 Added preprocessor check for __APPLE__ as an attempted fix for ticket #600 2018-11-11 14:23:24 -08:00
79086f0858 Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2018-10-26 12:00:01 -07:00
c148a23df4 Added preprocessor check for ZT_NO_CAPABILITIES around header includes 2018-10-26 11:59:55 -07:00
c56831767e Fix Mac tap agent abort on EINTR. 2018-10-25 20:44:32 -07:00
72a724f075 Clean up some stuff after new feth tap implementation, and comment agent file. 2018-10-25 13:10:24 -07:00
96e1df5854 Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2018-10-25 12:43:35 -07:00
2e44b90f63 OSX no longer requires the kext due to feth black magic! The MacEthernetTapAgent must be installed in /Library/Application Support/ZeroTier/One for ZT to work now. Eventually this can let us do an app bundle, get rid of the pkg, and have ZT itself run with normal or reduced privileges. Also fixes GitHub issue #870 (at least for me) and may be faster than the old kext. 2018-10-25 12:43:30 -07:00
5a0adba798 Setup docker container to use jemalloc 2018-10-24 13:36:21 -07:00
761cc5c923 remove another noisy log line 2018-10-24 13:36:07 -07:00
f901b9dd6b Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2018-10-24 12:08:48 -07:00
d87fcca176 Fully operational pgsql controller 2018-10-24 12:06:17 -07:00
7c72653385 because Windows.... 2018-10-23 13:21:25 -07:00
7dbccf08ae Removed unnecessary block before get request. Possible bug fix for Synology NAS ticket #27 2018-10-23 10:58:25 -07:00
2d21c18ebd Update ZeroTier version on Docker
This commit changes the Dockerfile ot use the multi-stage build and help
to get an automated build on Docker.

The idea of the multi-stage build is to use the already stable Debian
distribution channel to provide up-to-date versions of ZeroTier.

The benefit is that it would be possible to automate the image build,
either on Docker Hub, Travis or taking advantage of the [docker-library/official-images] infrastructure.

This changes follows the best-practices suggested by
[docker-library/official-images], such as using a High Availability GPG
keyserver, providing a default CMD, allowing "bash" on `docker run` and
others.

Given that both the builder `debian:stretch` and `alpine:latest` are
official messages and have [manifests], this means that this Dockerfile
is also multi-platform. This means that this same Dockerfile will
pick-up the correct Debian package according to the architecture of the
running system during build.

With this changes we could try to promote the image to be parte of
[docker-library/official-images], and take advantage of automated
publishing of multi-architecture images. Others would be able to use
`docker run zerotier` and download the latest version appropriate to
their system.

Related to #682

[docker-library/official-images]: https://github.com/docker-library/official-images
[manifests]: https://blog.docker.com/2017/09/docker-official-images-now-multi-platform/
2018-10-21 11:28:04 -03:00
15d0aad3c0 Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2018-10-19 10:06:06 -05:00
f0fc9b1766 Merge branch 'master' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2018-10-19 10:05:51 -05:00
7c0331997a Ticket #739 - Fixed what appears to be a copy-paste error for machine type detection in linux makefile, added line for armv7hl 2018-10-03 15:40:16 -07:00
04de2302a7 More insightful errors for get command 2018-10-03 14:24:21 -07:00
1da1409db2 get rid of a noisy log line 2018-09-28 10:58:26 -07:00
c1ea1329c1 Merge branch 'dev' into libpq 2018-09-28 10:56:40 -07:00
417aa9547b Working controller & docker container for GKE 2018-09-28 10:55:39 -07:00
60d5a3c631 Merge pull request #853 from darkain/dev
Fix IPv6 address string representation
2018-09-25 15:32:39 -07:00
7a42416a78 Merge pull request #822 from dschulz/controller-patch1-dschulz
Add functionality to erase members from networks using file backend i…
2018-09-25 11:38:25 -07:00
2a143a7505 Merge pull request #858 from tommyang/fix/mac-uninstall-script
macOS uninstall script: remove symlinks from the actual location
2018-09-25 11:36:28 -07:00
0510f85a8f Merge branch 'dev' into libpq 2018-09-25 10:19:59 -07:00
5b222d0a09 cleanup connections after errors 2018-09-25 10:17:15 -07:00
133b64679c Update README.md 2018-09-24 15:02:11 -07:00
79b88a22c3 Update README.md
Document that allowManagementFrom is an array
2018-09-24 14:58:44 -07:00
88d879987d Remove symlinks from the actual location
Binary symlinks are in `/usr/local/bin` instead of `/usr/bin` since commit 0cf4ddd
2018-09-23 16:53:30 -07:00
27c37a18f3 Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2018-09-17 14:42:33 -07:00
b8268d894b Changed home path for Synology 2018-09-17 11:44:56 -07:00
79b47b055a Only null terminate the first character 2018-09-15 12:13:06 -07:00
8e260bae11 Correcting conversion to/from IP address / string
1) Use existing standard libraries to convert to/from IPv4/IPv6 strings and binary representation.
2) Move null terminator assignment InetAddress::toIpString to top of function, this way if ANY errors occurs that don't write content to the buffer, we're not passing a potentially dangerous buffer around.
2018-09-14 22:42:58 -07:00
af61ee6f3a Merge pull request #836 from skunkwerks/feature/add-freebsd-debugs
add support for debug flags in FreeBSD
2018-09-14 08:08:59 -07:00
04d7a1df96 Merge pull request #837 from skunkwerks/feature/update-ext-json
update external JSON dependency to address libc++ compatibility
2018-09-14 08:08:21 -07:00
b9fd50e348 Merge pull request #845 from asbjornenge/docker-updates
Using multi-stage build for Dockerfile
2018-09-14 08:07:36 -07:00
ef48d11266 Merge pull request #848 from darkain/master
Fix compile on FreeBSD targeting ARMv6 (Raspberry Pi)
2018-09-14 08:05:39 -07:00
a47559d9e3 dev should have odd minor version 2018-09-14 08:05:07 -07:00
cffb992ae8 Adding ARM/NEON detection for non-Linux targets 2018-09-12 19:51:28 -07:00
39e720e811 Adding proper EABI target for ARM32/Salsa 2018-09-12 19:49:14 -07:00
7b87e9c0cb Added ability for OneService to monitor local.conf for changes and automatically reload 2018-09-11 16:55:46 -07:00
3dd9b1aa9b Added ability to specify zt home directory via ZEROTIER_HOME - Addresses ticket #829 2018-09-10 16:25:39 -07:00
0fddebc791 Added ability to manually set secondary and tertiary ports in local.conf 2018-09-10 13:06:05 -07:00
701d64936d Using builder pattern to build in container while keeping final image small 2018-09-07 14:11:25 +02:00
0ec6215493 Send member/network change notifications via Postgres 2018-09-06 15:14:16 -07:00
de45bdb448 quieting things down a little bit 2018-09-05 17:03:49 -07:00
7b608c6ca3 Fix testing for true/false. Dont attempt to update member status on networks that we know dont exist 2018-09-05 16:54:23 -07:00
6ff78c9c26 fix crashes 2018-09-05 16:08:06 -07:00
d701f4e331 Added some exception hadling. Dont want to live *too* dangerously here 2018-09-05 11:49:07 -07:00
92abc92463 Theoretically we have PostgreSQL support now 2018-09-05 11:30:17 -07:00
a4be9ceb5a dont insert/update creation time. Let the database handle it with the default value 2018-09-04 16:08:26 -07:00
e21b6e1daf commit thread WIP 2018-09-04 16:05:34 -07:00
2e3b03fff9 members initialized 2018-09-04 14:51:35 -07:00
cd657da431 Online Update/Notify thread 2018-09-04 14:00:02 -07:00
17af09a5cc Postgres Integration has begun 2018-08-31 14:58:15 -07:00
ceff48b07c Update bug_report.md 2018-08-29 10:15:10 -07:00
199566965e Update issue templates 2018-08-29 09:39:18 -07:00
46e46e9b7b Update issue templates 2018-08-29 09:37:39 -07:00
8b292d2dc7 ext: update nlohmann/json to v3.2.0
- include libc++7 compatibility for FreeBSD
- see https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=230629
2018-08-24 08:19:38 +00:00
88abd6ffc6 add support for debug flags in FreeBSD 2018-08-24 08:18:25 +00:00
76b4ec12a0 Vault-related amendments 2018-08-09 14:32:26 -07:00
0e4cfd897b Multipath-related amendments from merge into edge 2018-08-09 13:40:49 -07:00
515d7962b0 Build fixes. 2018-08-09 11:39:42 -07:00
553101e8b5 merge dev 2018-08-09 11:31:37 -07:00
3cd0ab1b3b Remove direct include of bits/sockaddr.h 2018-08-03 16:20:08 -07:00
fc6dba0797 Add functionality to erase members from networks using file backend in controller microservice
Signed-off-by: Diego Schulz <dschulz@gmail.com>
2018-08-02 17:13:55 -04:00
e01c0adff2 Added ifdef checks to omit some ManagedRoute code in SDK builds 2018-08-01 17:17:04 -07:00
e75a093a8c 2018-07-27 -- Version 1.2.12
* Fixed a bug that caused exits to take a long time on Mac due to huge numbers of redundant attempts to delete managed routes.
 * Fixed a socket limit problem on Windows that caused the ZeroTier service to run out of sockets, causing the UI and CLI to be unable to access the API.
 * Fixed a threading bug in the ZeroTier Core, albeit one that never manifested on the regular ZeroTier One service/client.
 * Fixed a bug that could cause the service to crash if an authorized local client accessed an invalid URL via the control API. (Not exploitable since you needed admin access anyway.)
2018-07-27 14:14:09 -07:00
dcffb042ff Windows Advanced Installer to 1.2.12 2018-07-27 13:35:20 -07:00
d724af6a99 Replace Sao Paolo root with Buenos Aires in default planet def (will push to network too) 2018-07-25 15:03:01 -07:00
b30f423fc9 . 2018-07-25 12:11:59 -07:00
1fc14292fe Version bumps. 2018-07-25 12:09:31 -07:00
fa7e7fc6f9 Revert fix for GitHub issue #600 because it causes route objects to build up forever (at least on Mac). Bleh. #600 is a rare issue and will need some other fix after reliable duplication. 2018-07-20 15:53:19 -07:00
5b114791e5 Fix a bug that caused a crash on empty HTTP requests (localhost only) and add a lightweight lock to the RX queue to prevent possible threads stepping on each other in parallel receive paths. 2018-07-20 14:01:58 -07:00
9bc11a369c Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2018-07-20 07:41:52 -07:00
ac40f2191c . 2018-07-20 07:41:47 -07:00
62a93c58fd Added ifdefs surrounding usage of getifaddrs() on Android 2018-07-19 17:50:10 -07:00
65b0030342 Added basic QoS rule handling 2018-07-11 16:55:13 -07:00
f302fac423 Minor tweak to linux makefile 2018-07-11 16:32:49 -07:00
f94aea8119 Return error 503 if RethinkDB is down when built as RethinkDB-based controller. 2018-07-11 10:42:31 -07:00
28cb40529d Rough draft of fq-codel implementation 2018-07-10 16:50:12 -07:00
37ae3b2b80 Remote debug printf. 2018-07-03 12:52:35 -07:00
73e4286fbf Fix two controller bugs: filesystem bug and another possible infinite recursion bug. 2018-07-03 12:51:41 -07:00
4e6151ebd9 Added "Create and Join Network" menu item to windows system tray UI 2018-06-28 15:24:45 -07:00
fc225401a5 use easy mode for network creation 2018-06-28 15:05:24 -07:00
d74817f79f Added blurb about allowTcpFallbackRelay to README 2018-06-22 16:46:50 -07:00
bdcdccfcc3 Improved path selection, more efficient traffic allocation, lower QoS/ACK overhead 2018-06-22 16:30:20 -07:00
352ec3430f Add a define to set FD_SETSIZE=1024 on Windows
Default on Windows is extremely low at 64 and is the likely culprit behind the UI and CLI not being able to talk to the background service
2018-06-21 12:11:10 -07:00
978d2fcb56 Optimize C25519 and Poly1305 on Windows even in debug. 2018-06-21 12:08:15 -07:00
52264d5e28 Fixed aggregateLinkLatency(). Also changed unit for throughput from byte to bit 2018-06-14 16:48:35 -07:00
17fbb020e7 Added multipath field to zerotier-cli status output. Adjusted how path estimates are computed and cached 2018-06-14 16:34:45 -07:00
f8005b88ad Minor cleanup. More efficient push() operation for RingBuffer 2018-06-13 14:50:37 -07:00
0faa655b83 Reduced how often relative path qualities and aggregate link allocations are computed 2018-06-12 16:30:46 -07:00
6fddf31db3 Improved rate limit logic for QoS/ACK packets. Also reduced how often processBackgroundPathMeasurements() is called 2018-06-12 15:24:12 -07:00
01257a461e Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2018-06-12 09:39:15 -07:00
817b9d012e Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2018-06-12 09:38:52 -07:00
04b3525e0f Merge pull request #755 from skunkwerks/fix/c++-17-deprecation
fix clang C++17 deprecation when building with ZT_DEBUG=1
2018-06-12 09:38:26 -07:00
d55c732e19 Merge pull request #764 from Elfe/master
fix MAC address rule parsing as even/uneven switches at every colon
2018-06-12 09:37:28 -07:00
d223427e22 Merge pull request #773 from alexforencich/master
Add UFW firewall application preset
2018-06-12 09:37:01 -07:00
64856adc3c Merge pull request #776 from Wykks/patch-1
Improve debian service requirements
2018-06-12 09:36:46 -07:00
7c53adbcfe quieting things down unless ZT_TRACE is defined 2018-06-11 10:47:58 -07:00
dce9cb27c1 helps to have an ==0 on a strcmp 2018-06-11 09:53:11 -07:00
4199c56e99 cant compare character arrays with == 2018-06-11 09:53:00 -07:00
9681fedbb4 Spellcheck sweep across codebase 2018-06-07 17:25:27 -07:00
b6d97af451 Added rate gates for QOS and ACK packets 2018-06-07 15:26:18 -07:00
a9ca26c698 Added TX queue cap for issue #769 2018-06-07 12:58:07 -07:00
9463d4abe4 Fix for issue #778
Double quote before member name in `/controller/network/network_id/member` API
2018-06-05 12:55:39 -07:00
b9975845ff Merge branch 'rtnetlink' into edge 2018-06-04 12:24:58 -07:00
b22405b64b rtnetlink integrated. no more callouts to iproute2 2018-06-04 12:24:12 -07:00
62210e57f1 helps to have an ==0 on a strcmp 2018-06-04 11:24:24 -07:00
4dd093efc9 cant compare character arrays with == 2018-06-04 11:07:12 -07:00
91a22a686a Added auto-escalation to multipath if both peers support it. Improved QoS/ACK tracking. Related bug fixes 2018-06-01 18:03:59 -07:00
a307dff3b7 Improve debian service requirements 2018-05-31 23:55:36 +02:00
20f0bed2f6 Add UFW firewall application preset 2018-05-30 19:10:51 -07:00
46a7a2be2e Added VERB_ACK and VERB_QOS_MEASUREMENT, refined notion of path quality 2018-05-30 17:45:29 -07:00
8199dbd0dc Merge branch 'dev' into edge 2018-05-30 11:19:12 -07:00
dfe426e4e0 fix MAC address rule parsing as even/uneven switches at every colon 2018-05-26 21:00:09 +02:00
3ace61ef85 comment out addInterface/removeInterface code for now
We already have ioctl based code to do this
2018-05-25 15:37:00 -07:00
442595d6fc also store binary representation of mac address in the interface lookup table for later use 2018-05-25 14:25:44 -07:00
be469f4dd0 add/remove routes via rtnetlink 2018-05-25 14:18:06 -07:00
7da4b0af15 better data localization in LinuxNetLink now that I know what Im doing 2018-05-24 16:15:03 -07:00
2fff651378 whoops. committed a binary 2018-05-24 16:14:32 -07:00
c24d16e62e ManagedRoute uses ioctl to add/remove routes on Linux
Added LinuxNetLink to talk to the rtnetlink socket for adding interfaces, addresses routes.  Not yet complete.  Can currently monitor changes on the system.
2018-05-24 15:22:11 -07:00
c36c92e077 node: remove deprecated register hint for C++17 compatibility
when building with `ZT_DEBUG=1` this hint produces a warning:

> node/Packet.cpp:335:43: error: 'register' storage class specifier is deprecated and incompatible with C++17 [-Werror,-Wdeprecated-register]
See http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4340
2018-05-18 09:09:27 +00:00
c0efba79c7 Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2018-05-11 13:40:22 -07:00
5809941ae9 Windows 1.2.10 2018-05-11 13:40:03 -07:00
535ba8a207 Consolidated powerpc64le machine types, added 32-bit powerpc machine type and a flag to disable use of Linux capabilities 2018-05-09 13:51:32 -07:00
43331d3fe8 Merge branch 'master' into dev 2018-05-09 10:31:19 -07:00
9765ba334a 1.2.10 2018-05-08 13:07:20 -07:00
0cd01b6ff8 Fix silly bug where moons and networks were being loaded by the address of an array rather than the proper value. 2018-05-07 12:51:39 -07:00
5f85e33510 GitHub issue #734 (warning removal) 2018-05-07 12:15:55 -07:00
22301a4599 Added override directive to CFLAGS for Synology builds in make-linux.mk 2018-05-04 14:31:34 -07:00
c8a907fd71 Added override directive to CXXFLAGS for Synology builds in make-linux.mk 2018-05-04 13:03:52 -07:00
d01b1ffde5 Added -fPIC for Synology builds 2018-05-04 12:09:04 -07:00
f4e993c814 Debian clean fix and CentOS 6 upgrade fix. 2018-05-03 12:51:49 -07:00
91c8e82c42 Adjusted locking order of _paths_m for path pruning. Other minor multipath changes 2018-05-02 15:24:14 -07:00
776ff46db7 User useradd not adduser on Debian. 2018-05-02 14:12:10 -07:00
9001ab5858 Do not add zerotier-one user if it does not exist (Debian) 2018-05-02 14:08:42 -07:00
1debe2292d Cleanup. Misc type conversion and signedness fixes 2018-05-02 11:22:07 -07:00
6a2ba4baca Introduced basic multipath support 2018-05-01 16:32:15 -07:00
836d897aec Re-ordered local.conf and node init logic, also split software update config into separate method to fix bad node pointer reference 2018-05-01 13:39:06 -07:00
740b0fbbf6 Merge branch 'dev' into edge 2018-04-30 13:08:24 -07:00
92e716d93d Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2018-04-30 13:08:16 -07:00
c7115a0671 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2018-04-30 13:07:52 -07:00
020bbed935 ARM32 fix. 2018-04-30 13:07:32 -07:00
0c60963a94 app icon with no alpha channel 2018-04-30 12:08:09 -07:00
d704f5f2d2 Remove alpha channel from app store icon 2018-04-30 12:06:41 -07:00
381bbb0e5e Merge branch 'dev' into edge 2018-04-30 08:47:51 -07:00
0ebd19c14a Merge branch 'dev' of /media/psf/Code/ZeroTier/ZeroTierOne into dev 2018-04-27 20:49:46 -07:00
d4160afac8 Another squeeze fix to see if we can make this work. 2018-04-27 19:51:27 -07:00
fffb037873 Fix for packaging on old Debian squeeze. 2018-04-27 18:53:55 -07:00
1df5d0453d Remove separate dh-systemd dependency since this is obsolete on newer Debian anyway. 2018-04-27 18:50:40 -07:00
19d453cb90 Add some more icon sizes
20x20, 60x60, 1024x1024 pngs
getting ready for an iOS release
2018-04-27 16:48:34 -07:00
6e7437a0d0 Add some more icon sizes
20x20, 60x60, 1024x1024 pngs
getting ready for an iOS release
2018-04-27 16:40:36 -07:00
caf849fcba Typo. 2018-04-27 16:22:36 -07:00
7533d244a9 Debian build fix. 2018-04-27 16:21:22 -07:00
0a52840fa3 1.2.8 Windows Advanced Installer update. 2018-04-27 13:52:33 -07:00
a7d0905b74 1.2.8 bump for all but Windows install files. 2018-04-27 13:06:00 -07:00
05bfafbce8 Merge branch 'master' into edge 2018-04-25 06:41:44 -07:00
d32a26f780 Merge pull request #428 from danielskowronski/netbsd-support
NetBSD support (we still consider this unsupported, but it might work -- thanks!)
2018-04-25 06:39:37 -07:00
42ec780a6f Merge branch 'dev' into netbsd-support 2018-04-25 06:39:02 -07:00
4608880fb0 Re-enable faster ed25519 signatures on x64 thanks to PR from @jonathonf 2018-04-25 06:34:34 -07:00
7492e2789f Merge pull request #722 from jonathonf/dev
Fix ed25519-amd64-asm PIC compatibility
2018-04-25 06:08:12 -07:00
9564a8eaf6 Delete junk. 2018-04-23 14:56:22 -07:00
f12c0e79c9 GitHub issue #723 2018-04-23 14:11:26 -07:00
e4e0be979e Fix ed25519-amd64-asm PIC compatibility
The Hyperledger implementation (https://github.com/hyperledger/iroha-ed25519)
contains changes to the assembly code to allow PIC. This in turn fixes
compilation/linking of ZeroTier One when "full hardening" flags are used.
2018-04-21 16:18:00 +01:00
86637cda9f Disable ASM ed25519 by default (it only helps significantly on controllers) so fPIE will work -- GitHub issue #717 2018-04-20 11:35:50 -07:00
94f41e2332 Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2018-04-18 08:08:06 -07:00
3d2a50f811 Merge pull request #654 from atopuzov/armv7l
Add support for armv7l
2018-04-18 08:06:53 -07:00
c2ffbb8627 Merge pull request #673 from neutronscott/dev
check physical blacklist for interface binding as well
2018-04-18 08:05:51 -07:00
54218f6c3c Merge pull request #690 from Pablohn26/master
Warn about invalid network id instead of help
2018-04-18 08:05:28 -07:00
6fdbdf9272 Merge pull request #712 from elmar/master
fix typo in documentation
2018-04-18 08:04:19 -07:00
3de7691af3 Merge branch 'master' of github.com:zerotier/ZeroTierOne
* Features and Core Improvements
    * Path selection has been overhauled to improve path stability, simplify code, and prepare for multi-path and trunking in the next major release.
    * This version introduces remote tracing for remote diagnostics. Network controllers can set a node (usually the controller itself) to receive remote tracing events from all members of the network or from select members. Events are only sent if they pertain to a given network for security reasons.
    * Multicast replication can now be done by designated multicast replicators on a network (flagged as such at the controller) rather than by the sender. Most users won't want this, but it's useful for specialized use cases on hub-and-spoke networks and for low-power devices.
    * Cryptographic performance improvements on several platforms.
    * Multithreaded performance improvements throughout the code base, including the use of an inline lightweight spinlock for low-contention resources.
 * Bugs fixed
    * Disappearing routes on Mac (GitHub issue #600)
    * Route flapping and path instability in some dual-stack V4/V6 networks
    * Blacklist (in local.conf) doesn't work reliably (GitHub issue #656)
    * Connection instabilities due to unsigned integer overflows in timing comparisons (use int64_t instead of uint64_t)
    * Binaries don't run on some older or lower-end 32-bit ARM chips (build problem)
    * ARM NEON crypto code crashes (build problem)
    * Fixed some lock ordering issues revealed by "valgrind" tool
    * The "zerotier-idtool" command could not be accessed from "zerotier-one" via command line switch
    * Leaking sockets on some platforms when uPnP/NAT-PMP is enabled
    * Fixed two very rare multithreading issues that were only observed on certain systems
 * Platform-Specific Changes
    * MacOS
        * Installer now loads the kernel extension right away so that High Sierra users will see the prompt to authorize it. This is done in the "Security & Privacy" preference pane and must be done driectly on the console (not via remote desktop). On High Sierra and newer kexts must be authorized at the console via security settings system preferences pane.
    * Windows
        * The Windows installer should now install the driver without requiring a special prompt in most cases. This should make it easier for our packages to be accepted into and updated in the Chocolatey repository and should make it easier to perform remote installs across groups of machines using IT management and provisioning tools.
        * The Windows official packages are now signed with an EV certificate (with hardware key).
        * The Windows UI can now log into ZeroTier Central and join networks via the Central API.
        * The `zerotier-idtool` command should now work on Windows without ugly hacks.
        * Upgraded the installer version.
        * Made a few changes to hopefully fix sporadic "will not uninstall" problems, though we cannot duplicate these issues ourselves.
    * Linux
        * Device names are now generated deterministically based on network IDs for all newly joined networks.
    * Android
        * Multicast now works on Android in most cases! Android apps can send and receive multicast and subscribe to multicast group IPs. Note that in some cases the app must bind to the specific correct interface for this to work.
        * IPv6 can be disabled in UI for cases where it causes problems.
2018-04-17 13:32:39 -07:00
bbed93bcf4 * Features and Core Improvements
* Path selection has been overhauled to improve path stability, simplify code, and prepare for multi-path and trunking in the next major release.
    * This version introduces remote tracing for remote diagnostics. Network controllers can set a node (usually the controller itself) to receive remote tracing events from all members of the network or from select members. Events are only sent if they pertain to a given network for security reasons.
    * Multicast replication can now be done by designated multicast replicators on a network (flagged as such at the controller) rather than by the sender. Most users won't want this, but it's useful for specialized use cases on hub-and-spoke networks and for low-power devices.
    * Cryptographic performance improvements on several platforms.
    * Multithreaded performance improvements throughout the code base, including the use of an inline lightweight spinlock for low-contention resources.
 * Bugs fixed
    * Disappearing routes on Mac (GitHub issue #600)
    * Route flapping and path instability in some dual-stack V4/V6 networks
    * Blacklist (in local.conf) doesn't work reliably (GitHub issue #656)
    * Connection instabilities due to unsigned integer overflows in timing comparisons (use int64_t instead of uint64_t)
    * Binaries don't run on some older or lower-end 32-bit ARM chips (build problem)
    * ARM NEON crypto code crashes (build problem)
    * Fixed some lock ordering issues revealed by "valgrind" tool
    * The "zerotier-idtool" command could not be accessed from "zerotier-one" via command line switch
    * Leaking sockets on some platforms when uPnP/NAT-PMP is enabled
    * Fixed two very rare multithreading issues that were only observed on certain systems
 * Platform-Specific Changes
    * MacOS
        * Installer now loads the kernel extension right away so that High Sierra users will see the prompt to authorize it. This is done in the "Security & Privacy" preference pane and must be done driectly on the console (not via remote desktop). On High Sierra and newer kexts must be authorized at the console via security settings system preferences pane.
    * Windows
        * The Windows installer should now install the driver without requiring a special prompt in most cases. This should make it easier for our packages to be accepted into and updated in the Chocolatey repository and should make it easier to perform remote installs across groups of machines using IT management and provisioning tools.
        * The Windows official packages are now signed with an EV certificate (with hardware key).
        * The Windows UI can now log into ZeroTier Central and join networks via the Central API.
        * The `zerotier-idtool` command should now work on Windows without ugly hacks.
        * Upgraded the installer version.
        * Made a few changes to hopefully fix sporadic "will not uninstall" problems, though we cannot duplicate these issues ourselves.
    * Linux
        * Device names are now generated deterministically based on network IDs for all newly joined networks.
    * Android
        * Multicast now works on Android in most cases! Android apps can send and receive multicast and subscribe to multicast group IPs. Note that in some cases the app must bind to the specific correct interface for this to work.
        * IPv6 can be disabled in UI for cases where it causes problems.
2018-04-17 13:30:37 -07:00
8900b30b6e Windows installer tweaks and version bumps. 2018-04-17 12:47:33 -07:00
ae4fb799e4 More versioning 2018-04-17 12:14:59 -07:00
3f1d1fb3c3 'versioning' 2018-04-17 12:12:49 -07:00
f0a23ae0ea docs 2018-04-17 10:48:00 -07:00
c14f9cc247 fix typo in documentation 2018-04-14 10:52:30 +02:00
e276b6463e Release notes, and shorten Linux canonical network ID derived device names a bit. 2018-04-12 10:33:06 -04:00
9da7967197 Merge branch 'dev' into edge 2018-04-12 09:08:48 -04:00
74f2b78c04 Refactor some potentially unsafe SharedPtr<> code. 2018-04-06 08:10:34 -07:00
2021f8cb5f Merge branch 'dev' into edge 2018-03-29 13:34:54 -07:00
40a9ebd078 GitHub issue #675 2018-03-29 10:44:57 -07:00
8c1b73b29c GitHub issue #701 2018-03-29 10:25:29 -07:00
6679a55693 certutil needs -f in case TrustedProvider store is not yet created 2018-03-27 19:15:14 -07:00
1101c1d919 Works on 32-bit too now. 2018-03-27 18:46:06 -07:00
fcb529b348 Take two on unattended driver installs. I think it works now.' 2018-03-27 17:53:28 -07:00
680b1ca208 Upgrade installer AIP versions and redo how we bundle the driver sub-installer to allow unattended driver installs (hopefully). 2018-03-27 14:19:45 -07:00
af74fe1711 Merge branch 'dev' into edge 2018-03-21 15:32:04 -07:00
494cf4049e Add specification of anchor and multicast hub address (optional) to new multicast and IPv4 enabled ad-hoc network ID format. 2018-03-21 15:31:48 -07:00
c908b9f67a Add anchor and multicast hub address field to new multicast enabled ad-hoc address format. 2018-03-21 15:27:26 -07:00
209f6d9d2d Merge branch 'dev' into edge 2018-03-19 11:18:54 -07:00
916077012e Make sure fopen is in binary mode on Windows. 2018-03-16 11:27:11 -07:00
beb170e4fb Use X64 ASM ed25519 signatures on Linux/x64, which are about 10X faster. Will matter a lot for network controllers, not so much for other things. 2018-03-13 06:51:17 -07:00
a59912f3af SHA512 using libcrypto (not enabled by default) 2018-03-12 16:56:47 -07:00
610e594a50 Speed tweaks for signatures, etc. 2018-03-12 16:16:20 -07:00
b4e2547052 Minor tweak to QNAP path getter 2018-03-12 11:23:10 -07:00
a9778549f2 Warn about invalid network id instead of help 2018-03-11 03:39:13 +01:00
b601041b5b Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2018-03-09 07:51:43 -08:00
0945d6ec0d Merge branch 'dev' into edge 2018-03-09 07:50:38 -08:00
78d9cee416 Other fixes to IPv4 ad-hoc networks. 2018-03-09 00:10:01 -08:00
bbdb2aa672 Some work on IPv4 enabled ad-hoc networks. 2018-03-08 23:53:57 -08:00
574b24c082 docs 2018-03-08 22:41:42 -08:00
874a187c7f cleanup 2018-03-08 22:39:51 -08:00
e8fb443313 Forgot one other use in RethinkDb driver. 2018-03-08 22:34:51 -08:00
57b96af2c4 Fix for FileDB _networkChanged / _memberChanged problem. 2018-03-08 22:33:08 -08:00
e61d4ab67a Merge branch 'dev' into edge 2018-02-23 13:58:24 -08:00
2ee358dbfc TAP driver requires input and output buffers for calls passed into DeviceIoControl
Otherwise the driver returns STATUS_INVALID_PARAMETER and the call fails.  This should fix some Multicast issues on Windows
2018-02-23 13:42:02 -08:00
e3bb67d188 Added debug output convenience macros 2018-02-16 16:55:31 -08:00
2d289a3308 Just a little cleanup 2018-02-16 15:20:07 -08:00
bdb2cc7c85 Linux: link system libcurl when compiling with ZT_VAULT_SUPPORT=1
Requires libcurl and development headers to be installed
2018-02-16 15:08:04 -08:00
7793060723 Add HashiCorp Vault storage of ZeroTier's public & secret identity
Adds a "vault" section to local.conf.  Example local.conf:

{
  "config": {
    "vault": {
      "vaultURL": "https://some.vault.host:8200",
      "vaultToken": "my-super-secret-vault-token",
      "vaultPath": "secure/place/to/put/identity"
    }
}

Additionally, the following environment variables can be set.  Environment variables override local.conf:

VAULT_ADDR
VAULT_TOKEN
VAULT_PATH

Identities will be placed in the keys "public" and "secret" under the user specified path.  If no path is specified, they will be placed in the token specific cubbyhole.

If identity.public and identity.secret exist on disk and vault is configured, they will be automatically added to Vault and removed from disk.

TODO:
 *  Decide behavior for if Vault cannot be reached.
 *  Add libcurl as a dependency in Linux & Mac builds
 *  Add libcurl as a requirement for linux packages
2018-02-16 14:30:27 -08:00
84302ae9c7 Add CURL libs to VC project 2018-02-16 14:21:38 -08:00
cd801b96fa libcurl binaries for Windows 2018-02-16 10:31:37 -08:00
5ff0653f9e Hooks into StateGet and StatePut for grabbing identity.secret from Vault 2018-02-16 10:18:10 -08:00
9574d635c1 Add Vault configuration option parsing to local.conf
{
   "settings": {
       ...
      "valut": {
         "vaultURL": "...",
         "vaultKey": "...",
         "vaultPath": "..."
      }
   }
}
2018-02-16 10:18:10 -08:00
1bec8ddce4 Better error messages when the ZeroTier service can't be contacted
Fixes #681
2018-02-13 16:41:21 -08:00
f9b07c63db Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2018-02-12 09:30:12 -08:00
8828fc7520 some JNI error checking 2018-02-12 09:29:44 -08:00
978d8fcd4a Merge branch 'dev' of http://10.187.63.16/zerotier/ZeroTierOne into dev 2018-02-09 06:35:09 +00:00
51aadcf901 A few fixes dicatated by valgrind. 2018-02-09 06:35:01 +00:00
db952a050a Added platform checks for Windows in OneService 2018-02-08 14:15:32 -08:00
f049740ae5 silence LOGV and LOGD in release builds for android 2018-02-07 15:53:23 -08:00
73ca9b6373 check physical blacklist for interface binding as well 2018-02-03 14:53:46 -05:00
c6949aad2d Linux build fix on some versions. 2018-02-02 17:11:23 -08:00
e57d0fdccc Update README.md
this ip changes sometimes
2018-02-02 10:30:49 -08:00
82f383be43 A few other make changes. 2018-02-01 15:58:58 -08:00
26aaf253ac Allow us to build a semi-dynamic official binary that works back to CentOS 6, at least on x64, and is very fast since we can build it with newer clang or icc. 2018-02-01 15:52:41 -08:00
51715376bf Use Intel icc if available on Linux. 2018-02-01 13:05:17 -08:00
ff95b0278c Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2018-02-01 12:46:40 -08:00
fe1fa20c6c Fix build on Intel C/C++ Compiler for Linux. 2018-02-01 12:46:35 -08:00
a867fe404b Omit pragma comment for ZT_SDK builds on Windows 2018-01-31 17:08:42 -08:00
d6e8a5f3ca Fix Windows compile error. 2018-01-30 16:07:41 -08:00
4878d8ec15 Add CAP_NET_BIND_SERVICE to capabilities 2018-01-30 10:47:31 -08:00
f7019d9e80 Tie up the rest of hub and spoke designated replicator multicast mode. 2018-01-26 22:14:10 -05:00
6d8e1e8783 More cleanup of old stuff. 2018-01-26 21:34:56 -05:00
939ab43ceb Do not send to origin in second buffered multicast path. 2018-01-26 21:22:51 -05:00
d3d58ba8a7 Add support for designated multicast replicators to Multicaster::send(). 2018-01-26 21:19:51 -05:00
f03fd57997 Clean up some multicast code. 2018-01-26 20:38:44 -05:00
e74cd4b4ef A little more cleanup. 2018-01-26 20:06:11 -05:00
f3dfd63634 Clean up some old stuff. 2018-01-26 20:00:37 -05:00
5f5302e595 More useful to allow arrays of IPs to bind to. 2018-01-25 17:27:08 -05:00
125ec622ca Add bindToWildcard local.conf option. 2018-01-25 14:59:11 -05:00
384e5b66de More work on GitHub issue #666 2018-01-25 14:16:07 -05:00
7e7723e98f A small memory use reduction. 2018-01-25 09:57:02 -05:00
4419734a7d Implement continuous contacting of designated anchors and multicast replicators - GitHub issue #666 2018-01-25 07:11:59 -05:00
f821db29f3 . 2018-01-24 17:12:53 -05:00
6c64f1816d cleanup 2018-01-24 16:16:00 -05:00
34e2ad0dfc Stub out NetworkConfig for GitHub issue #666 2018-01-24 14:43:04 -05:00
055b99c3cb cleanup 2018-01-12 15:44:27 -08:00
531842dc6b Update miniupnpc to latest version (included library) 2018-01-12 15:30:40 -08:00
d7f3c33d72 Add zerotier-idtool to Windows. 2018-01-12 15:03:45 -08:00
4e689998f9 Sanity checks on array sizes and fix a bug in IPv4 auto-assign. 2018-01-12 10:38:19 -08:00
cd2a4b709c Reduce maximum batcn size for status updates but increase the number of whole record commit threads. 2018-01-12 09:18:27 -08:00
d96aeac335 docs 2018-01-11 16:44:24 -08:00
c594351bcc Remove old code. 2018-01-11 14:32:55 -08:00
5f976d7430 Reenable faster lock. 2018-01-11 14:31:19 -08:00
f87326fc21 Fixes for lock ordering -- GitHub issue #573 2018-01-11 14:29:57 -08:00
0574a70fac docs 2018-01-11 09:49:13 -08:00
4e79804cd3 cleanup 2018-01-10 16:56:39 -08:00
86d5264167 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2018-01-10 16:55:15 -08:00
5bc4399a58 cleanup 2018-01-10 16:55:07 -08:00
406bcf7d3f Fix compilation on Windows
DEBUG macro from miniupnpc interferring with enum Trace::DEBUG;
2018-01-10 15:24:54 -08:00
f17cc1c6d8 cleanup 2018-01-10 15:03:39 -08:00
57077e4607 Added (get) command blurb in cli help 2018-01-10 14:40:31 -08:00
6304c85d3f Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2018-01-10 14:31:31 -08:00
a1992d76f2 Doc updates and other fixes. 2018-01-10 14:31:28 -08:00
98b07f7f3c Added (get) command to cli to single out JSON fields 2018-01-10 14:05:28 -08:00
6e1823ac81 Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2018-01-10 12:43:18 -08:00
640cc22749 Added allowTcpFallbackRelay to local.conf, fixed logic in Binder's route enumeration 2018-01-10 12:41:52 -08:00
9bab49d2f9 Move DB stuff into Db. 2018-01-09 12:39:25 -08:00
2751a6d56d cleanup 2018-01-09 12:31:00 -08:00
07cb62a503 cleanup 2018-01-09 11:41:26 -08:00
8a3b698407 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2018-01-09 11:23:44 -08:00
0c71d658fb cleanup 2018-01-09 11:23:39 -08:00
7e2d614975 Attempted fix for ticket #656 (failes to acknowledge physical blacklists) 2018-01-09 10:16:49 -08:00
09e4ab9aa1 Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2018-01-09 10:00:01 -08:00
2e1bc6e500 Cleaned up old code for attempted fix for ticket #600 2018-01-09 09:59:55 -08:00
1aea096b63 GitHub issue #492 2018-01-09 09:05:22 -08:00
30694f0b20 Allow trusted paths over global IPs for legacy config format too. 2018-01-09 08:59:26 -08:00
01b4cb64ee cleanup 2018-01-09 08:35:02 -08:00
6fbd15f8b2 cleanup 2018-01-08 15:56:53 -08:00
65c07afe05 Copyright updates for 2018. 2018-01-08 14:33:28 -08:00
e338c5f91d cleanup 2018-01-08 14:27:55 -08:00
0b0b5da240 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2018-01-08 13:06:30 -08:00
9c7ee5a21e Tear out old "link quality" stuff since it is not currently used and will be done differently. 2018-01-08 13:06:24 -08:00
f7b3ffe8a0 Commented out block which ignores added routes if there already exists an IP in the route's range. Attempted fix for #600 2018-01-05 17:10:59 -08:00
381857ea49 macOS: add libcurl to libraries when ZT_VAULT_SUPPORT=1 is specified on the make command line 2018-01-03 11:56:20 -08:00
50aef368f6 Add support for armv7l
* GCC running on Raspberry Pi 3 on Arch linux ARM reports arch as
  armv7l-unknown-linux-gnueabihf
2018-01-02 11:32:17 +01:00
a9c4ce38f0 eh 2017-12-18 15:07:58 -08:00
bbc39d7648 Restore managed ZT routes that are deleted or otherwise mangled locally (Attempted fix for ticket #600) 2017-12-18 15:05:19 -08:00
d3e8e9629b More optimization work. 2017-12-15 14:24:17 -08:00
1f0b3a32d5 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-12-15 11:03:27 -08:00
0608704626 Some micro-optimizations, including a memcpy that is faster than Linux for most distro/compiler versions. 2017-12-15 11:03:20 -08:00
cb8e7b4d5e Make UDP read loop eventually move on. 2017-12-15 10:15:13 -08:00
346fa4d7f4 Added ZT_SANITIZE option to makefiles. This your new memory debugging best friend 2017-12-14 13:27:49 -08:00
7a22f01dd8 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-12-14 08:53:32 -08:00
4704d115c4 Some controller fixes. 2017-12-14 08:53:24 -08:00
12c621c230 Removed build flag in CMake script 2017-12-13 14:57:20 -08:00
cba65d897a Added CMake build script for libzerotiercore.a 2017-12-13 14:55:17 -08:00
e4a10cc510 Member commit bug fix. 2017-12-08 19:00:38 -05:00
249c27afd5 Fix old bug invoking idtool personality with -i 2017-12-08 11:17:07 -08:00
38cc89b2ca Add time to rethinkdb message output in controller. 2017-12-08 12:39:20 -05:00
aeb1794be1 Comment out storage of secret ID in RethinkDb. 2017-12-07 16:04:41 -08:00
dae728124e Fix to network path in conventional filesystem controller DB. 2017-12-07 14:42:33 -08:00
cf30b1fcdf GitHub issue #589 2017-12-07 17:13:24 -05:00
19bfef36f1 Build fix. 2017-12-07 16:45:43 -05:00
8d9464c414 docs, and make RethinkDB controller DB driver upsert into the Controller DB and also update the hostname field. 2017-12-07 13:39:25 -08:00
ada611d597 Go ahead and load kext so MacOS High Sierra users will see kext auth dialog right away. 2017-12-07 08:56:15 -08:00
f13886d343 Warning removal. 2017-12-05 17:53:28 -05:00
520b0601db Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-12-05 14:51:06 -08:00
926ecf9640 docs 2017-12-05 14:50:59 -08:00
c57198decd Add remoteTraceLevel to controller. 2017-12-05 17:49:20 -05:00
431716e249 Disable trace by default, stderr message improvements in RethinkDB driver. 2017-12-05 17:16:45 -05:00
694709f392 Add timestamp to network status. 2017-12-04 19:21:56 -05:00
16613ab5fb Clean up remote tracing code, add per-network remote trace settings, add remote trace level, and make local trace output readable again. 2017-12-04 14:40:10 -08:00
c26bf45e28 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-11-29 04:47:16 -08:00
23e5c7b38d Fix self-test compile. 2017-11-29 04:47:10 -08:00
382dd82eb6 Fix for local.conf virtual path blacklist (ticket #594) 2017-11-27 15:31:25 -08:00
f18d5b2efe Attempted fix for github issue #597, leaking sockets. Added call to closenatpmp() after failure to init 2017-11-27 14:23:55 -08:00
0fb22df633 Get ephemeral status fields out of the configs. They do not belong there and it just complicates things. 2017-11-09 17:01:16 -05:00
750e36993f GitHub issue #617 2017-11-09 11:35:46 -05:00
f7f658605d Move more ephemeral stuff to a tiny MemberLastRequest table instead of the main Member table. 2017-11-08 20:19:46 -05:00
192e5dbff8 Another fix for uptime logging. 2017-11-08 20:02:10 -05:00
ef224c3547 RethinkDB build fix. 2017-11-08 19:52:36 -05:00
c12b68a6b2 More Central work. 2017-11-08 11:32:01 -08:00
4166d8ca35 Fix a deadlock and some more work on RethinkDB (for central) integration. 2017-11-08 11:06:14 -08:00
53e7e950f1 Windows build fixes. 2017-11-07 16:39:12 -08:00
0612879dec Fix const. 2017-11-07 16:23:56 -08:00
3b21f946e4 Remove manual define of include rethinkdb driver symbol. 2017-11-07 16:18:48 -08:00
9f85371073 cleanup 2017-11-07 15:23:16 -08:00
cb550ab4fe Merge branch 'dev' into edge 2017-11-07 14:59:18 -08:00
b8cbf08617 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-11-07 14:59:03 -08:00
1613f42d00 Re-integrate in-filesystem DB into new controller DB structure. 2017-11-07 14:44:46 -08:00
e5d1243dd2 Minor changes to SDK-related portions of OneService 2017-11-06 13:43:56 -08:00
7fc9094d8e More fixes to RethinkDB. 2017-11-03 22:40:26 -04:00
92c7070aa8 RethinkDB fixes. 2017-11-03 20:55:16 -04:00
b68bca35db Linux build fixes, linux build rule for RethinkDB mode controller, also force disable shitty allocators in libstdc++. 2017-11-03 16:59:36 -04:00
d97adc8789 Preparing for test. 2017-11-03 12:32:56 -07:00
f5014d7d71 RethinkDB direct connectivity integration. 2017-11-03 11:39:27 -07:00
4e88c80a22 RethinkDB native connector work, minor fixes. 2017-11-02 07:05:11 -07:00
a6203ed038 icon 2017-10-29 12:01:15 -07:00
1db547d607 Windows build fixes, AIP file update. 2017-10-25 16:25:57 -07:00
2cc4dc5a6f Clean peers.d periodically and delete peers older than 30 days. 2017-10-25 16:08:14 -07:00
fac7dc9c91 Stop duplciate IPv6 addresses due to privacy mode IPs. 2017-10-25 16:01:36 -07:00
508fa6a7fe A few fixes for cluster mode. 2017-10-25 15:44:10 -07:00
71bdaa9508 Now with more worky. 2017-10-25 13:27:28 -07:00
459f1e7bfb Refactor path stability stuff and add basic multipath support. 2017-10-25 12:42:14 -07:00
0d8b8d8426 Remove some unused constants. 2017-10-24 15:04:19 -07:00
2d0dc62a53 docs 2017-10-24 14:57:02 -07:00
0d8e134f9f Warning removal. 2017-10-24 14:54:15 -07:00
c7d370c17f Delete something that turns out not to be useful. This will be handled differently. 2017-10-24 14:49:38 -07:00
395d8b3139 Full and clearer implementation of GitHub issue #588 2017-10-24 13:33:53 -07:00
b92ef67e56 Merge pull request #550 from surgicalcoder/patch-2
Peer's role misses a PLANET role
2017-10-24 12:22:38 -07:00
5a8aa66641 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-10-24 12:22:02 -07:00
e87ef18826 cleanup 2017-10-24 12:21:56 -07:00
7b78d4f11f Merge pull request #605 from oneguynick/patch-1
Update make-linux.mk to include support for Armv7l
2017-10-24 12:21:32 -07:00
65ac61b2ea Update make-linux.mk to include support for Armv7l
When running ArchlinuxARM with 64bit support on Raspberry Pi3, the default build fails due to the architecture look-up at the beginning of the build process. A simple addition of the Armv7l section above allows the build to continue and successfully run.
2017-10-19 09:21:24 -04:00
629a3a2a24 call setFriendlyName() after tap adapter is initialized 2017-10-16 12:16:05 -07:00
ee4783e3fb ifdef omit of deletePersistentTapDevice() in OneService for libzt builds on Windows 2017-10-10 15:01:15 -07:00
f2c69ede96 Conditionally omit reference to CancelSynchronousIo in Thread.hp when MINGW32/64 is detected for libzt build - Symbol not supported 2017-10-10 12:21:52 -07:00
ceeb35eaac If lastSend/lastReceive is < 0, just put 0. 2017-10-05 13:19:25 -07:00
099bedd2e9 A few more uint64_t -> int64_t changes for timestamps 2017-10-04 12:01:17 -07:00
4177a11522 remove some leftover debug code 2017-10-04 09:18:13 -07:00
3d4a1b575e Update Android NDK with uint64_t -> int64_t changes 2017-10-03 11:25:26 -07:00
b1d60df44c timestamps changed from uint64_t to int64_t
There were cases in the code where time calculations and comparisons were overflowing and causing connection instability.  This will keep time calculations within expected ranges.
2017-10-02 15:52:57 -07:00
7cf70d111a Return an explicit NULL shared pointer at the end of Topology::getPeer() 2017-09-28 10:40:27 -07:00
e564c56dce Set size of buffer after setting data with unsafeData() call 2017-09-28 10:39:43 -07:00
239c2540d6 Mutex::lock and ::unlock just called themselves 2017-09-27 15:05:13 -07:00
c53d140145 Replace '_' with '__' in network names on toolbar menu in Windows
Otherwise WPF gobbles up the underscores
2017-09-27 13:24:29 -07:00
12a6a2f2d2 remove reference to invalid file 2017-09-27 13:07:24 -07:00
9c903567bb Hashtable needs to include Constants.hpp for ZT_EXCEPTION_OUT_OF_MEMORY 2017-09-25 13:42:19 -07:00
6782dee64a Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2017-09-25 10:10:17 -07:00
302c15140e Fix API problem with path configuration.. 2017-09-25 08:53:55 -07:00
c666f92e35 new startup process UI for Windows 2017-09-22 15:33:09 -07:00
eb42ef68ee Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2017-09-22 10:22:22 -07:00
52916eebcf Keep attemting to upgrade direct path if path is not private to facilitate better use of LANs and backplane networks. 2017-09-14 20:56:50 -07:00
f8014413a3 Add UDP MTU configurability. 2017-09-01 16:25:34 -07:00
2d858b05ac Another fix for ye old tyme clients. 2017-09-01 12:03:31 -07:00
b1fb020aea Raise chunk size to max packet size for network configs. Chunking breaks really ancient clients, so this helps them live a little longer. No real downside for new clients. 2017-09-01 10:43:44 -07:00
02ed84774c Non-x86 build fix. 2017-08-31 20:47:44 -04:00
283e8d5bc0 Start threads in Central harnessed mode. 2017-08-31 18:01:21 -04:00
f39e2e2a53 Fixed typo of mysterious origin 2017-08-31 11:37:29 -07:00
5bf5d5e9cb Minor controller stuff. 2017-08-30 17:22:25 -07:00
e51e212b95 Add some defines of use to low level developers. 2017-08-25 16:04:04 -07:00
6418d02572 Fix HTTP DELETE stupid bug. 2017-08-24 15:33:24 -07:00
49fa30d495 Ticket lock for x64/gcc/clang platforms. 2017-08-23 18:52:32 -07:00
dd8b03a5c5 Threading issue fix? 2017-08-23 18:28:40 -07:00
4d5983114c Fix another deadlock. 2017-08-23 17:14:06 -07:00
0a9c3b5571 Fix possible deadlock. 2017-08-23 16:59:31 -07:00
180049a277 Fix pointer bug. 2017-08-23 16:55:22 -07:00
6ee201865b Clean up WHOIS code. 2017-08-23 16:42:17 -07:00
b1d94c9f93 Performance improvement to RX queue ring buffer. 2017-08-23 15:19:26 -07:00
a156a4dbe2 Symmetric NAT cleanup. 2017-08-23 15:12:00 -07:00
2cebe7a5e0 Fix name difference. 2017-08-23 14:09:29 -07:00
9cfc109527 Tighten a few timings. 2017-08-23 14:00:08 -07:00
64758c46b6 Implement peer serialization and deserialization. 2017-08-23 13:40:51 -07:00
4352202349 Reduce TCP relay latency -- see GitHub issue #564 2017-08-18 14:54:10 -07:00
ba07a60c44 Fix PPC PR. 2017-08-18 14:40:10 -07:00
72bfe0953a Merge pull request #560 from andyfangdz/patch-1
Add `ppc64le` arch
2017-08-18 14:38:41 -07:00
bab5647522 Add make rule for official-static. 2017-08-18 14:00:35 -07:00
fcaf1d89c2 Get rid of some noisy remote traces that should not be needed. 2017-08-18 13:59:22 -07:00
106dff0d53 Make remote trace target null by default, which is probably what we want. 2017-08-18 13:52:10 -07:00
174ba8884e Delete support in harnessed mode. 2017-08-17 13:10:10 -07:00
1ce0dcf0ea Another Central harnessed mode fix. 2017-08-16 14:41:42 -07:00
1387e15c1b Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-08-16 14:14:56 -07:00
50e7ea088b More work on controller for new Central harnessed mode, remove old http mode. 2017-08-16 14:14:49 -07:00
59b7cbb591 Rename SocketTap to VirtualTap to prevent confusion on role 2017-08-15 16:22:28 -07:00
23fe8975e7 . 2017-08-14 11:44:07 -07:00
a4bc40542b GCC/G++ build fixes, GitHub issue #563 2017-08-14 11:43:39 -07:00
ee1dc16e8f Added getRoutes() for libzt 2017-08-10 00:59:15 -07:00
1c04cc0485 . 2017-08-09 17:42:35 -07:00
2c682b4d1c Small controller revisions, first run of controller API model JavaScript. 2017-08-09 14:37:19 -07:00
6842490c1f Add menu option to open ZeroTier Central in the system default browser 2017-08-09 14:19:37 -07:00
ff5e22031a Small fix: should expire packets to prevent repeated WHOISes. 2017-08-08 13:24:37 -07:00
e3cf756785 Make rxQueue lock-free using an atomic counter ring buffer. 2017-08-08 13:21:10 -07:00
7e6598e9ca Possible deadlock fix. 2017-08-07 14:13:08 -07:00
48d2017629 Add ppc64le arch
I've only tested locally, on a power8 box running Ubuntu 16.10, but everything (and earth) checks out.

Let me know if more testing infrastructure is needed.
2017-08-06 02:06:00 -07:00
e4823381c6 . 2017-07-19 15:16:15 -07:00
66feaeb519 . 2017-07-19 15:06:23 -07:00
8c6b833fb3 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-07-19 14:13:23 -07:00
b62296a40b Bug fixes in new harness mode. 2017-07-19 14:13:17 -07:00
fc7728212f Fix ifndef on Windows 2017-07-18 15:59:11 -07:00
31785f7f6e Automatic periodic status dump from controller. 2017-07-18 15:36:33 -07:00
ae65eb5105 Cleanup and replace trace field names with sane ones because usability > a few bytes. 2017-07-18 14:28:38 -07:00
727ccb1125 Cleanup and stdin/stdout harness mode for controller. 2017-07-18 13:57:37 -07:00
77ce238457 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-07-17 17:02:57 -07:00
1685659e37 Remote tracing works. 2017-07-17 17:02:50 -07:00
0f03d4ef51 Update Jenkinsfile for new NDK in Jenkins 2017-07-17 16:55:00 -07:00
bcf697cc2b Wire up PortMapper in Android
Enables UPnP port mapping for Android client on networks with UPnP routers
2017-07-17 16:16:25 -07:00
5e2ea4a81a Cleanup. 2017-07-17 14:24:57 -07:00
b9e1d53d7a Minor cleanup. 2017-07-17 14:21:09 -07:00
ab0806a036 Cleanup. 2017-07-17 13:48:39 -07:00
3a1ec07db0 Remove some exception copypasta. 2017-07-17 10:43:28 -07:00
d939d8d21d A bit more remote tracing stuff. 2017-07-14 14:57:40 -07:00
d9552fb120 Add remoteTraceTarget to network and member configs in controller. 2017-07-14 14:33:36 -07:00
4ecc0c59ca Plumbing through of remote trace into controller code. 2017-07-14 13:03:16 -07:00
0655a1fcbe Move old cluster code into attic. 2017-07-13 16:42:43 -07:00
c8d0cf2c40 Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2017-07-13 16:31:30 -07:00
c692f2e740 Fix for new identity generation bug. 2017-07-13 16:31:16 -07:00
a83c7c0d07 remove debugging flag 2017-07-13 15:13:20 -07:00
ba6fd16823 More tracing stuff. 2017-07-13 15:08:57 -07:00
54893c35c1 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-07-13 10:51:19 -07:00
495c5ce81d Bunch of remote tracing work. 2017-07-13 10:51:05 -07:00
4cc773ec1b fix Windows build 2017-07-12 13:52:45 -07:00
69ae35494e put the correct file extensions on data written to disk in JNI 2017-07-12 13:36:22 -07:00
512c3af4ea fix packet sending functions 2017-07-12 13:12:45 -07:00
d8f1c3dff7 Update JNI code to reflect new ZeroTier API 2017-07-12 11:34:53 -07:00
0a11dd2d24 Fix NeighborDiscovery code now that ZT_SOCKADDR_NULL doesn’t exist 2017-07-11 15:45:36 -07:00
78ee7f6573 Peer's role misses a PLANET role
Peer's role misses a PLANET role in documentation vs what's returned from API.
2017-07-09 15:39:49 +01:00
dab0fb9e05 Remote trace: plumbing, replace old TRACE with calls to Trace object. 2017-07-07 16:58:05 -07:00
e14d5d49a1 Merge branch 'master' into dev 2017-07-07 09:36:54 -07:00
782b2b1514 Merge pull request #537 from laduke/patch-1
Update README.md
2017-07-07 09:32:37 -07:00
a9582417e2 Merge pull request #547 from surgicalcoder/patch-1
Clarification on how to use JSON API with secret
2017-07-07 09:32:23 -07:00
69922b6c39 BSD build fix. 2017-07-07 09:29:24 -07:00
6fc70f7c16 More cleanup, Linux build fixes. 2017-07-07 06:50:40 -07:00
a274e774ee Clarification on how to use JSON API with secret
Makes it clear on how to use the authtoken.secret file when making requests.
2017-07-07 10:11:21 +01:00
f23a43fb81 More cleanup. 2017-07-06 17:32:41 -07:00
88997a0314 Windows build fixes. 2017-07-06 16:29:11 -07:00
d2415dee00 Cleanup. 2017-07-06 16:11:11 -07:00
53728b79b4 . 2017-07-06 12:35:23 -07:00
dff8c02cfe Pull out and deprecate old cluster code. New cluster code will not be merged yet. 2017-07-06 12:33:00 -07:00
640ad577d1 . 2017-07-06 11:56:46 -07:00
cd63ecd3f3 . 2017-07-06 11:45:48 -07:00
f18158a52d . 2017-07-06 11:45:22 -07:00
84748aab51 Merge branch 'dev' into edge 2017-07-06 10:26:04 -07:00
3fadc64ee0 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-07-06 10:25:58 -07:00
47594f7c99 Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2017-07-06 10:25:44 -07:00
2f20258807 . 2017-07-06 10:25:36 -07:00
47122a3804 Merge branch 'dev' into edge 2017-07-03 13:29:54 -07:00
1730f8f5b7 also cluster.hpp 2017-07-03 13:04:11 -07:00
d258a75cd3 remove Cluster.cpp from build list as it's been removed 2017-07-03 13:03:43 -07:00
baa10c2995 . 2017-06-30 17:32:07 -07:00
207d6572e0 fix for changelist posting to mattermost 2017-06-30 14:24:40 -07:00
10264cec2f slackSend -> mattermostSend 2017-06-30 13:43:39 -07:00
0ea1749c59 Merge pull request #540 from skunkwerks/master
build: all BSDs expect gmake here
2017-06-30 09:55:43 -07:00
dd83c680e5 build: all BSDs expect gmake here 2017-06-30 13:11:05 +00:00
1a40f35fd4 Merge branch 'dev' into edge 2017-06-27 11:32:14 -07:00
8a99113c88 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-06-27 11:32:07 -07:00
ada2ea3a6b Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2017-06-27 11:31:39 -07:00
355cce3938 Rename Utils::snprintf due to it being a #define on one platform. 2017-06-27 11:31:29 -07:00
9b2e08dd09 Update README.md
We've had multiple questions in the community chat regarding posting new
network and getting the curl syntax correct.
2017-06-26 11:53:35 -07:00
04cee3b8d3 Merge branch 'dev' of https://github.com/zerotier/ZeroTierOne into dev 2017-06-26 02:13:40 -07:00
c61440efea Detect platformDefaultHomePath on QNAP systems 2017-06-25 20:20:30 -07:00
02d18af57d Remove Cluster.hpp 2017-06-23 16:10:26 -07:00
2225bb093a Merge branch 'edge' into dev 2017-06-23 16:06:38 -07:00
75a6a7baca Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-06-23 16:05:58 -07:00
6b130e8311 fix for windows compilation (related to SDK implementation) 2017-06-21 14:58:39 -07:00
1b18923824 except wondows/lib 2017-06-13 14:25:53 -07:00
fc2ce439e2 remove unneeded files 2017-06-13 14:23:11 -07:00
5b3d9f9184 added Windows SDK in form of dlls 2017-06-13 13:28:23 -07:00
dd68c207f4 Stuff old Cluster code in attic. 2017-06-08 08:51:49 -07:00
9a3c34b5b3 Build fix, use -Os on Linux too. 2017-06-07 17:19:33 -07:00
951d911531 Last bit of new cluster code, ready to test. 2017-06-06 16:11:19 -07:00
4f2179b0df . 2017-06-05 13:42:43 -07:00
9b287392a4 . 2017-06-05 12:15:28 -07:00
aa06470cb6 More cleanup for cluster refactor. 2017-06-01 20:32:43 -07:00
d7b4f24a7a . 2017-06-01 17:21:57 -07:00
e8d11eb5c5 . 2017-06-01 17:21:04 -07:00
7f4da08ff7 . 2017-06-01 12:57:44 -07:00
1f9414a30f . 2017-06-01 12:38:04 -07:00
6015b529a0 More clustering work. 2017-06-01 12:33:05 -07:00
76452b4e28 Data structure fixup. 2017-06-01 07:39:31 -07:00
64b7d9ef82 New clustering work. 2017-06-01 07:15:46 -07:00
7bc9666aac fix for SDK's route/tap association in getTap() 2017-05-31 13:07:03 -07:00
2a4a50b1da Add some also-ZeroTier-written ext/ code for use in new clustering, delete some old code, and change Mac to use -Os which is just as fast as -Ofast and may be faster due to cache effects. 2017-05-31 08:36:09 -07:00
2ec88e8008 Remove old circuit test code. Rules engine will let us do this much better and more simply. 2017-05-30 10:19:45 -07:00
36049a940c added campaign tags to README.md 2017-05-25 17:09:21 -07:00
952834f7f3 Let Android Studio determine debug/release build 2017-05-23 14:56:29 -07:00
f9a9c2d009 Config object was never even being initialized on leave. Never noticed since desktop and server clients did not use. 2017-05-23 14:45:16 -07:00
fb71a6e2b4 skipRootCheck should also prevent dropping of privs on Linux 2017-05-19 16:16:10 -07:00
5e6a2a17b0 Cluster build fix. 2017-05-19 15:32:52 -07:00
92289c1981 Move to canonical device naming on Linux. 2017-05-19 15:18:47 -07:00
99e2098a48 Add a way to specify a different interface prefix (for internal use mostly). 2017-05-19 14:00:08 -07:00
5fc1c1de28 . 2017-05-19 13:24:40 -07:00
2fac693243 I guess there's a bug in Clipboard.SetText(). Clipboard.SetDataObject() works, though. 2017-05-12 16:42:54 -07:00
e9b956ed71 Swallow a possible ArgumentNullException when copying text to the system clipboard 2017-05-12 16:05:29 -07:00
236a952458 typo 2017-05-11 14:26:46 -07:00
426b7c2c76 Stupid bug is stupid. 2017-05-11 14:13:38 -07:00
22780a8504 Merge branch 'dev' of http://10.187.63.16/zerotier/ZeroTierOne into dev 2017-05-10 13:48:55 -07:00
a437fd420c version 2017-05-10 13:48:47 -07:00
2d74c60d47 Add branch hints to bounds checking in Buffer. 2017-05-09 21:54:23 -07:00
ceee56af51 Fix for small stacks. 2017-05-09 21:36:25 -07:00
d297d8fe2e Musl fix 2017-05-09 21:21:56 -07:00
f479b76772 define likely/unlikely 2017-05-09 20:22:08 -07:00
73f7088b45 Run Join/Leave commands asynchronously so the UI doesn't lock up on thoise commands 2017-05-08 16:17:33 -07:00
b3dd5c0e3a Build fix. 2017-05-08 14:51:12 -07:00
ee7ee22555 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-05-08 14:46:54 -07:00
cf49e511a5 More makefile changes. 2017-05-08 14:46:45 -07:00
505b9c7f56 Makefile reorg to allow core to be built as a library. 2017-05-08 14:36:55 -07:00
8c30b2b9f5 Fixed falling out of the network monitor thread if the ZeroTier service isn't running on Windows 2017-05-08 13:27:54 -07:00
b9c1407013 Adjust PUSH_DIRECT_PATH circuit breaker, and comment out traces to reduce noise. 2017-05-08 09:36:37 -07:00
d905607353 Small optimizations. 2017-05-08 08:35:55 -07:00
e5e90b1f71 Wire MTU through to service. 2017-05-04 20:10:49 -07:00
d5ed025871 Support MTU reconfigure for Windows. 2017-05-04 19:50:02 -07:00
b55422a528 MTU integration in taps. 2017-05-04 19:31:50 -07:00
909a14fb48 MTU support in controller. 2017-05-04 17:22:24 -07:00
107e3e4106 First pass of configurable MTU and max MTU increase. 2017-05-04 17:12:02 -07:00
6ef247fb93 More ARM stuff. 2017-05-04 16:00:53 -07:00
b8e46b835b Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-05-04 15:54:15 -07:00
0900fee5d9 Linux build stuff for ARM. 2017-05-04 15:54:08 -07:00
1f26cb98de updated OneService convenience functions for SDK 2017-05-04 15:26:44 -07:00
ceeb8ee0bc added isEqualPrefix to InetAddress 2017-05-04 15:25:48 -07:00
54c47a1e03 Add some historic code just for the heck of it. 2017-05-04 10:42:22 -07:00
6bb855873d GitHub issue #494 -- shut down and restart UI on Mac pkg install/upgrade. 2017-05-03 15:03:26 -07:00
39db45e144 Fix crash on exit (sometimes) in controller. 2017-05-03 09:48:08 -07:00
41c187ba12 Another very small crypto optimization. 2017-05-03 07:43:23 -07:00
d7c99728bc Echo back ping payload. 2017-05-02 17:28:18 -07:00
8e19188f49 Do the sometimes rather big "pong" in a background worker thread. 2017-05-02 16:58:51 -07:00
625e3e8e25 Tiny optimization to prealloc string space. 2017-05-02 13:53:47 -07:00
fde99e2fcf Fix for post size limit in Http library. 2017-05-02 12:08:53 -07:00
132643cd4a Fix small issue preventing pongs if there are never seen members. 2017-05-02 10:34:33 -07:00
faf7b81c01 Send last requets time in status, and do not set physicalAddr unless we know one. 2017-05-01 15:48:52 -07:00
bcc6799902 Send member uptime in pong posts. 2017-05-01 15:23:21 -07:00
718e1d6c08 Finish removing constantly changing stuff from controller. 2017-05-01 13:21:26 -07:00
a9ce773584 Remove lastModified field in config which literally nothing uses anywhere, and prevent some unnecessary writes. 2017-04-28 19:58:21 -07:00
d69bc4fb5e Main license file. 2017-04-27 20:54:42 -07:00
1b68d6dbdc License header update. 2017-04-27 20:47:25 -07:00
62578a2162 Reduce memory use and a bit of cleanup. 2017-04-27 19:36:03 -07:00
9e80db0fd1 Cleanup, fix a valgrind error, stack use reduction. 2017-04-27 00:59:36 -07:00
e8ab6adf89 Deadlock fix. 2017-04-26 12:17:43 -07:00
7c184cf991 Another performance improvement to controller. 2017-04-26 10:35:59 -07:00
72def658d0 Add a dummy Ethernet tap and a build option to enable it. 2017-04-26 08:42:49 -07:00
e7cd888c7d dev is now 1.2.5 2017-04-26 06:50:12 -07:00
1205578935 Big cleanup of controller code, should help performance. 2017-04-26 06:48:08 -07:00
4e77365e8d Remove a little cruft. 2017-04-25 16:17:54 -07:00
4f2a779769 JSONDB performance improvements, threading fix. 2017-04-24 20:51:02 -07:00
cafbe44dde Controller optimizations -- make locking more fine-grained, use true hardware concurrency, etc. 2017-04-24 19:16:36 -07:00
6234bfd8bf 4-core Debian build. 2017-04-24 18:40:34 -07:00
77796caba6 Static ARM32 build fixes. 2017-04-24 18:12:58 -07:00
97f1d7ae2e . 2017-04-24 16:56:18 -07:00
487e89d4d0 Add i486 and i586 to Linux makefile for detection of ia32. 2017-04-24 15:19:03 -07:00
fe5257df81 VERSION 1.2.4: Bug fixes and performance improvements
* Managed routes are now only bifurcated for the default route. This is a change in behavior, though few people will probably notice. Bifurcating all managed routes was causing more trouble than it was worth for most users.
 * Up to 2X crypto speedup on x86-64 (except Windows, which will take some porting) and 32-bit ARM platforms due to integration of fast assembly language implementations of Salsa20/12 from the [supercop](http://bench.cr.yp.to/supercop.html) code base. These were written by Daniel J. Bernstein and are in the public domain. My Macbook Pro (Core i5 2.8ghz) now does almost 1.5GiB/sec Salsa20/12 per core and a Raspberry Pi got a 2X boost. 64-bit ARM support and Windows support will take some work but should not be too hard.
 * Refactored code that manages credentials to greatly reduce memory use in most cases. This may also result in a small performance improvement.
 * Reworked and simplified path selection and priority logic to fix path instability and dead path persistence edge cases. There have been some sporadic reports of persistent path instabilities and dead paths hanging around that take minutes to resolve. These have proven difficult to reproduce in house, but hopefully this will fix them. In any case it seems to speed up path establishment in our tests and it makes the code simpler and more readable.
 * Eliminated some unused cruft from the code around path management and in the peer class.
 * Fixed an issue causing build problems on some MIPS architecture systems.
 * Fixed Windows forgetting routes on sleep/wake or in some other circumstances. (GitHub issue #465)
2017-04-24 11:41:23 -07:00
9161424c97 Version bumps. 2017-04-24 11:41:01 -07:00
cdda0dd043 Windows version bump. 2017-04-24 11:37:54 -07:00
f4feccc626 Do not serve controller requests until init is done. 2017-04-24 09:09:04 -07:00
44cb2f4efd ++version 2017-04-21 15:32:00 -07:00
cacb8fae0d GitHub issue #463 -- fix MacOS uninstall script. 2017-04-21 13:55:44 -07:00
fa99a5cf12 docs 2017-04-21 13:27:34 -07:00
e700165eba GitHub issue #465 - Windows route amnesia 2017-04-21 13:26:02 -07:00
8542ee59db Windows crash fix. 2017-04-21 12:42:51 -07:00
76108671f6 BSD makefile fix for OpenBSD. 2017-04-21 08:42:45 -07:00
8b0ce1cc00 More BSD make fixes. 2017-04-21 08:09:18 -07:00
0e88c73f68 Mirror over some arch rules from Linux to BSD make, and enable fast crypto there. 2017-04-21 08:04:33 -07:00
ba0d73d102 Windows build fixes. 2017-04-20 10:21:40 -07:00
d3ecd1d670 docs 2017-04-20 10:21:08 -07:00
f9ae5938d0 Makefile fix, only bifurcate routes for default, and release notes. 2017-04-20 10:08:46 -07:00
a8ced184dc Some code cleanup and make sure any type punning is guarded with ZT_NO_TYPE_PUNNING. 2017-04-20 09:33:35 -07:00
e7a2c6ecef Integrate ARM/NEON crypto. 2017-04-19 17:11:56 -07:00
a376bcc654 ARM NEON Salsa20/12 in build and selftest. Almost 2X speedup on a Raspberry Pi. 2017-04-19 23:49:26 +00:00
8e1ac9fb0c ARM NEON Salsa20/12. 2017-04-19 15:58:20 -07:00
bc61357a44 HTTP backend support for JSONDB 2017-04-18 17:37:44 -07:00
f6d92eb737 JSONDB fix. 2017-04-18 13:48:19 -07:00
48cadcd2fc More build fixes. 2017-04-18 12:48:56 -07:00
bd63a840c7 Mac build fix. 2017-04-18 12:44:27 -07:00
aaf597f020 Cleanup, Windows fixes, Self test fix 2017-04-18 12:22:44 -07:00
72bd3064a2 Windows build fixes, self test cleanup. 2017-04-18 11:00:29 -07:00
a1c316b940 Makefile cruft. 2017-04-18 09:19:39 -07:00
02f84b225c Add MIPS architectures to Linux Makefile and add an error if architecture cannot be determined. 2017-04-18 09:14:33 -07:00
6551c20005 Enable x64 ASM Salsa20/12 on Linux. 2017-04-18 08:57:32 -07:00
a1e94154be Just incorporate the X64 ASM version of Salsa20/12 for X64 platforms. This gives us (for example) 1.5gb/sec encryption on a Core i5 2.8ghz. 2017-04-18 08:45:37 -07:00
4938e82795 Delete junk. 2017-04-17 18:01:51 -07:00
7a94f63058 Back out NaCl since the old one with xmm6 salsa2012 does not support multi-block use and the new one is slower. 2017-04-17 17:54:12 -07:00
db0edf154c Use right deployment target in OSX bin. 2017-04-17 16:54:41 -07:00
a1cd94a61d Actually include .a 2017-04-17 16:43:36 -07:00
df48738ac9 Enable use of NaCl for faster X64 Salsa20 implementations. Also include binary for OSX for easy build. Blazingly fast. 2017-04-17 16:43:03 -07:00
d8f5cfdee4 Windows profile build target (CPU profiling), and a little bit of optimization revealed by such. 2017-04-17 15:45:49 -07:00
95e5345cc3 Cluster build fix. 2017-04-17 10:12:13 -07:00
ba5d0cc2f9 Silence some TRACE noise. 2017-04-17 09:31:07 -07:00
1d8ded3293 Tiny largely non-consequential credential fix. 2017-04-17 09:30:28 -07:00
2487a8bede Fix for 100% cpu issue. 2017-04-17 09:14:21 -07:00
f1c0563c40 Fix for cluster handoff. 2017-04-14 18:02:04 -07:00
139c4b5633 Significant simplification to path logic. 2017-04-14 17:53:32 -07:00
645bf4a764 Resurrect zerotier-containerized. 2017-04-14 13:30:12 -07:00
88a4a3b1ba Pass tptr on leave. 2017-04-11 08:47:02 -07:00
6fabaae736 Add simple root server watcher (for our own new dashboard, but also for user use). 2017-04-04 16:47:14 -07:00
1b2cfd63e5 add libstdc++ dependency 2017-04-04 14:10:38 -07:00
ff2b219abd root-watcher code 2017-04-04 12:39:14 -07:00
33c3af752b Need to just have a make option for soft float ARM. 2017-04-04 11:26:50 -07:00
f73a1d2d56 Linux ARM flags. 2017-04-04 09:41:34 -07:00
470ad39d0d More Linux ARM stuff. 2017-04-04 09:15:38 -07:00
5ad120208f Small fix, should filter by temporal validity. 2017-04-04 08:46:12 -07:00
b48a70db2e Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-04-04 08:39:22 -07:00
cd050b3423 Performance improvement in controller. 2017-04-04 08:39:19 -07:00
eddbc7e757 Logic simplification, cleanup, and memory use improvements in Membership. Also fix an issue that may cause network instability in some cases. 2017-04-04 08:07:38 -07:00
8a62ba07e5 Membership cleanup work in progress. 2017-04-04 06:47:01 -07:00
b3298a8f57 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-03-30 09:54:10 -07:00
e5284771e4 Add ping/pong to API so controller supervisor in Central can do a full-path check of controller uptime, etc. 2017-03-30 09:54:04 -07:00
5f611dad51 added orbit/deorbit methods to java Node implementation 2017-03-29 13:29:02 -07:00
1c5fdb8a0a fix path checker initialization 2017-03-29 13:28:06 -07:00
de4b9e9a16 Added path checking interface for Java 2017-03-29 12:52:52 -07:00
57b5a33fbb Fix bug preventing default from being set to null if already set to an integer. 2017-03-29 12:32:59 -07:00
3f4f7145a3 Another rule compiler fix. 2017-03-28 22:25:24 -07:00
b959148447 Small rule compiler fix with tag defaults. 2017-03-28 21:50:44 -07:00
855361b5b8 fix native end of JNI code for new thread data ptr 2017-03-28 17:49:00 -07:00
91c9f4cb20 Fix TRACE and CLUSTER builds. 2017-03-27 17:33:25 -07:00
e4896b257f Add thread PTR that gets passed through the entire ZT core call stack and then passed to handler functions resulting from a call. 2017-03-27 17:03:17 -07:00
592cac5815 Remove from a few other places. 2017-03-27 12:09:37 -07:00
4244cca48c Delete comically named SSL gateway code, which is going elsewhere. 2017-03-27 12:08:38 -07:00
179ab5220a Set macOS deployment target to 10.10 for UI applet
Must use CLI for older versions of macOS
2017-03-27 11:36:11 -07:00
d6bb1b72c3 Fix some text colors to work on old OS X versions 2017-03-27 11:15:36 -07:00
3d9a5a4f91 Popovers now appear to work 2017-03-27 10:55:47 -07:00
683ba79ff0 Added ButtFlare stub code 2017-03-24 17:00:14 -07:00
0c69fc719f Windows UI will attempt to re-copy the auth token if a 401 error is received 2017-03-22 10:48:42 -07:00
03b48a4ad4 add lock around [ServiceCom key] and remove some debug code 2017-03-22 10:22:15 -07:00
aa71292265 A couple more places we should check HTTP status 2017-03-22 10:18:12 -07:00
d72eee6cf7 If we get a 401 error from the ZeroTier service in the macOS UI, try re-copying the auth token 2017-03-22 09:58:13 -07:00
6bb19e7947 build fix 2017-03-21 09:08:32 -07:00
3d2518f799 crazy formatting fix 2017-03-21 08:21:11 -07:00
5268909075 Add a facility for full flow-through uptime test of controller by Central. 2017-03-21 06:31:15 -07:00
c62141fd98 Make controller do a simple write-through cache without revalidating. Means you must restart if files change on disk, but will decrease I/O considerably. 2017-03-21 06:15:49 -07:00
ae303ee902 dev is now 1.2.3 2017-03-20 16:17:11 -07:00
cfe0d0971f VERSION 1.2.2
Version 1.2.2 fixes a few bugs discovered after the 1.2.0 release. These are:

 * A bug causing unreliable multicast propagation (GitHub issue #461).
 * A crash in ARM binaries due to a build chain and flags problem.
 * A bug in the network controller preventing members from being listed (GitHub issue #460).
2017-03-17 21:13:41 -07:00
c5c8facc2d Windows installer version bump and a build fix. 2017-03-17 20:20:47 -07:00
f78d6a8a93 docs 2017-03-17 20:04:25 -07:00
78ef2c5f16 Windows build fixes, app about text revisions. 2017-03-17 20:01:58 -07:00
ec8e1178e5 Version bumps, and fix Debian so default is to build normally and .static files are used in our builds. 2017-03-17 19:16:34 -07:00
4f3f471b4c GitHub issue #460 2017-03-17 18:19:51 -07:00
e10325e133 GitHub issue #461 -- plus a bit of cleanup and optimization 2017-03-17 17:15:23 -07:00
ef46d3c97d LZ4 cleanup 2017-03-17 23:09:18 +00:00
a9c08c5975 . 2017-03-17 22:35:56 +00:00
c467c3b7e4 ARM tweaks 2017-03-17 22:26:08 +00:00
cdc0eaec3a Fix attempt to WHOIS self. 2017-03-17 22:13:34 +00:00
a7cb738175 . 2017-03-17 14:25:54 -07:00
d1bb22a583 . 2017-03-17 14:09:30 -07:00
553d972de5 bump that version. bump it good. 2017-03-17 13:56:45 -07:00
cc883cc3d8 Merge branch 'master' of http://10.6.6.2/zerotier/ZeroTierOne 2017-03-17 13:56:01 -07:00
c6a39ed927 Fixes for possible ARM issues, cleanup, fix for spurious meaningless exceptions on NETWORK_CONFIG_REQUEST 2017-03-17 13:55:26 -07:00
df30255542 Merge branch 'master' into dev 2017-03-17 12:37:23 -07:00
d5102539dd Merge pull request #457 from skunkwerks/master
build: use clang on FreeBSD
2017-03-17 12:18:54 -07:00
e3feaf3f5d Warning removal, and dev is now 1.2.1 2017-03-16 16:45:11 -07:00
25dc596397 build: use clang on FreeBSD
this avoids a whopping 500+Mb dependency on gcc and friends at runtime
2017-03-16 12:58:04 +01:00
0daff26fba Version 1.2.0 is a major milestone release representing almost nine months of work. It includes our rules engine for distributed network packet filtering and security monitoring, federated roots, and many other architectural and UI improvements and bug fixes.
The largest new feature in 1.2.0, and the product of many months of work, is our advanced network rules engine. With this release we achieve traffic control, security monitoring, and micro-segmentation capability on par with many enterprise SDN solutions designed for use in advanced data centers and corporate networks.

Rules allow you to filter packets on your network and vector traffic to security observers. Security observation can be performed in-band using REDIRECT or out of band using TEE.

Tags and capabilites provide advanced methods for implementing fine grained permission structures and micro-segmentation schemes without bloating the size and complexity of your rules table.

See the [rules engine announcement blog post](https://www.zerotier.com/blog/?p=927) for an in-depth discussion of theory and implementation. The [manual](https://www.zerotier.com/manual.shtml) contains detailed information on rule, tag, and capability use, and the `rule-compiler/` subfolder of the ZeroTier source tree contains a JavaScript function to compile rules in our human-readable rule definition language into rules suitable for import into a network controller. (ZeroTier Central uses this same script to compile rules on [my.zerotier.com](https://my.zerotier.com/).)

It's now possible to create your own root servers and add them to the root server pool on your nodes. This is done by creating what's called a "moon," which is a signed enumeration of root servers and their stable points on the network. Refer to the [manual](https://www.zerotier.com/manual.shtml) for instructions.

Federated roots achieve a number of things:

 * You can deploy your own infrastructure to reduce dependency on ours.
 * You can deploy roots *inside your LAN* to ensure that network connectivity inside your facility still works if the Internet goes down. This is the first step toward making ZeroTier viable as an in-house SDN solution.
 * Roots can be deployed inside national boundaries for countries with data residency laws or "great firewalls." (As of 1.2.0 there is still no way to force all traffic to use these roots, but that will be easy to do in a later version.)
 * Last but not least this makes ZeroTier somewhat less centralized by eliminating any hard dependency on ZeroTier, Inc.'s infrastructure.

Our roots will of course remain and continue to provide zero-configuration instant-on deployment, a secure global authority for identities, and free traffic relaying for those who can't establish peer to peer connections.

An element of our design philosophy is "features are bugs." This isn't an absolute dogma but more of a guiding principle. We try as hard as we can to avoid adding features, especially "knobs" that must be tweaked by a user.

As of 1.2.0 we've decided that certain knobs are unavoidable, and so there is now a `local.conf` file that can be used to configure them. See the ZeroTier One documentation for these. They include:

 * Blacklisting interfaces you want to make sure ZeroTier doesn't use for network traffic, such as VPNs, slow links, or backplanes designated for only certain kinds of traffic.
 * Turning uPnP/NAT-PMP on or off.
 * Configuring software updates on Windows and Mac platforms.
 * Defining trusted paths (the old trusted paths file is now deprecated)
 * Setting the ZeroTier main port so it doesn't have to be changed on the command line, which is very inconvenient in many cases.

A good software update system for Windows and Mac clients has been a missing feature in previous versions. It does exist but we've been shy about using it so far due to its fragility in some environments.

We've greatly improved this mechanism in 1.2.0. Not only does it now do a better job of actually invoking the update, but it also transfers updates in-band using the ZeroTier protocol. This means it can work in environments that do not allows http/https traffic or that force it through proxies. There's also now an update channel setting: `beta` or `release` (the default).

Software updates are authenticated three ways:

 1. ZeroTier's own signing key is used to sign all updates and this signature is checked prior to installation. ZeroTier, Inc.'s signatures are performed on an air-gapped machine.

 2. Updates for Mac and Windows are signed using Apple and Microsoft (DigiCert EV) keys and will not install unless these signatures are also valid.

 3. The new in-band update mechanism also authenticates the source of the update via ZeroTier's built-in security features. This provides transport security, while 1 and 2 provide security of the update at rest.

Updates are now configurable via `local.conf`. There are three options: `disable`, `download`, and `apply`. The third (apply) is the default for official builds on Windows and Mac, making updates happen silently and automatically as they do for popular browsers like Chrome and Firefox. Updates are disabled by default on Linux and other Unix-type systems as these are typically updated through package managers.

Version 1.2.0 is now aware of the link quality of direct paths with other 1.2.0 nodes. This information isn't used yet but is visible through the JSON API. (Quality always shows as 100% with pre-1.2.0 nodes.) Quality is measured passively with no additional overhead using a counter based packet loss detection algorithm.

This information is visible from the command line via `listpeers`:

    200 listpeers XXXXXXXXXX 199.XXX.XXX.XXX/9993;10574;15250;1.00 48 1.2.0 LEAF
    200 listpeers XXXXXXXXXX 195.XXX.XXX.XXX/45584;467;7608;0.44 290 1.2.0 LEAF

The first peer's path is at 100% (1.00), while the second peer's path is suffering quite a bit of packet loss (0.44).

Link quality awareness is a precursor to intelligent multi-path and QoS support, which will in future versions bring us to feature parity with SD-WAN products like Cisco iWAN.

Version 1.2.0 adds anti-DOS (denial of service) rate limits and other hardening for improved resiliency against a number of denial of service attack scenarios.

It also adds a mechanism for instantaneous credential revocation. This can be used to revoke certificates of membership instantly to kick a node off a network (for private networks) and also to revoke capabilities and tags. The new controller sends revocations by default when a peer is de-authorized.

Revocations propagate using a "rumor mill" peer to peer algorithm. This means that a controller need only successfully send a revocation to at least one member of a network with connections to other active members. At this point the revocation will flood through the network peer to peer very quickly. This helps make revocations more robust in the face of poor connectivity with the controller or attempts to incapacitate the controller with denial of service attacks, as well as making revocations faster on huge networks.

The Mac has a whole new UI built natively in Objective-C. It provides a pulldown similar in appearance and operation to the Mac WiFi task bar menu.

The Windows UI has also been improved and now provides a task bar icon that can be right-clicked to manage networks. Both now expose managed route and IP permissions, allowing nodes to easily opt in to full tunnel operation if you have a router configured on your network.

A special kind of public network called an ad-hoc network may be accessed by joining a network ID with the format:

    ffSSSSEEEE000000
    | |   |   |
    | |   |   Reserved for future use, must be 0
    | |   End of port range (hex)
    | Start of port range (hex)
    Reserved ZeroTier address prefix indicating a controller-less network

Ad-hoc networks are public (no access control) networks that have no network controller. Instead their configuration and other credentials are generated locally. Ad-hoc networks permit only IPv6 UDP and TCP unicast traffic (no multicast or broadcast) using 6plane format NDP-emulated IPv6 addresses. In addition an ad-hoc network ID encodes an IP port range. UDP packets and TCP SYN (connection open) packets are only allowed to desintation ports within the encoded range.

For example `ff00160016000000` is an ad-hoc network allowing only SSH, while `ff0000ffff000000` is an ad-hoc network allowing any UDP or TCP port.

Keep in mind that these networks are public and anyone in the entire world can join them. Care must be taken to avoid exposing vulnerable services or sharing unwanted files or other resources.

The network controller has been largely rewritten to use a simple in-filesystem JSON data store in place of SQLite, and it is now included by default in all Windows, Mac, Linux, and BSD builds. This means any desktop or server node running ZeroTier One can now be a controller with no recompilation needed.

If you have data in an old SQLite3 controller we've included a NodeJS script in `controller/migrate-sqlite` to migrate data to the new format. If you don't migrate, members will start getting `NOT_FOUND` when they attempt to query for updates.

 * **The Windows HyperV 100% CPU bug is FINALLY DEAD**: This long-running problem turns out to have been an issue with Windows itself, but one we were triggering by placing invalid data into the Windows registry. Microsoft is aware of the issue but we've also fixed the triggering problem on our side. ZeroTier should now co-exist quite well with HyperV and should now be able to be bridged with a HyperV virtual switch.
 * **Segmenation faults on musl-libc based Linux systems**: Alpine Linux and some embedded Linux systems that use musl libc (a minimal libc) experienced segmentation faults. These were due to a smaller default stack size. A work-around that sets the stack size for new threads has been added.
 * **Windows firewall blocks local JSON API**: On some Windows systems the firewall likes to block 127.0.0.1:9993 for mysterious reasons. This is now fixed in the installer via the addition of another firewall exemption rule.
 * **UI crash on embedded Windows due to missing fonts**: The MSI installer now ships fonts and will install them if they are not present, so this should be fixed.

 * **Improved dead path detection**: ZeroTier is now more aggressive about expiring paths that do not seem to be active. If a path seems marginal it is re-confirmed before re-use.
 * **Minor performance improvements**: We've reduced unnecessary memcpy's and made a few other performance improvements in the core.
 * **Linux static binaries**: For our official packages (the ones in the download.zerotier.com apt and yum repositories) we now build Linux binaries with static linking. Hopefully this will stop all the bug reports relating to library inconsistencies, as well as allowing our deb packages to run on a wider variety of Debian-based distributions. (There are far too many of these to support officially!) The overhead for this is very small, especially since we built our static versions against musl-libc. Distribution maintainers are of course free to build dynamically linked versions for inclusion into distributions; this only affects our official binaries.

Merge branch 'master' of github.com:zerotier/ZeroTierOne
2017-03-14 22:08:48 -07:00
94ba5b3fbe Version 1.2.0 is a major milestone release representing almost nine months of work. It includes our rules engine for distributed network packet filtering and security monitoring, federated roots, and many other architectural and UI improvements and bug fixes.
The largest new feature in 1.2.0, and the product of many months of work, is our advanced network rules engine. With this release we achieve traffic control, security monitoring, and micro-segmentation capability on par with many enterprise SDN solutions designed for use in advanced data centers and corporate networks.

Rules allow you to filter packets on your network and vector traffic to security observers. Security observation can be performed in-band using REDIRECT or out of band using TEE.

Tags and capabilites provide advanced methods for implementing fine grained permission structures and micro-segmentation schemes without bloating the size and complexity of your rules table.

See the [rules engine announcement blog post](https://www.zerotier.com/blog/?p=927) for an in-depth discussion of theory and implementation. The [manual](https://www.zerotier.com/manual.shtml) contains detailed information on rule, tag, and capability use, and the `rule-compiler/` subfolder of the ZeroTier source tree contains a JavaScript function to compile rules in our human-readable rule definition language into rules suitable for import into a network controller. (ZeroTier Central uses this same script to compile rules on [my.zerotier.com](https://my.zerotier.com/).)

It's now possible to create your own root servers and add them to the root server pool on your nodes. This is done by creating what's called a "moon," which is a signed enumeration of root servers and their stable points on the network. Refer to the [manual](https://www.zerotier.com/manual.shtml) for instructions.

Federated roots achieve a number of things:

 * You can deploy your own infrastructure to reduce dependency on ours.
 * You can deploy roots *inside your LAN* to ensure that network connectivity inside your facility still works if the Internet goes down. This is the first step toward making ZeroTier viable as an in-house SDN solution.
 * Roots can be deployed inside national boundaries for countries with data residency laws or "great firewalls." (As of 1.2.0 there is still no way to force all traffic to use these roots, but that will be easy to do in a later version.)
 * Last but not least this makes ZeroTier somewhat less centralized by eliminating any hard dependency on ZeroTier, Inc.'s infrastructure.

Our roots will of course remain and continue to provide zero-configuration instant-on deployment, a secure global authority for identities, and free traffic relaying for those who can't establish peer to peer connections.

An element of our design philosophy is "features are bugs." This isn't an absolute dogma but more of a guiding principle. We try as hard as we can to avoid adding features, especially "knobs" that must be tweaked by a user.

As of 1.2.0 we've decided that certain knobs are unavoidable, and so there is now a `local.conf` file that can be used to configure them. See the ZeroTier One documentation for these. They include:

 * Blacklisting interfaces you want to make sure ZeroTier doesn't use for network traffic, such as VPNs, slow links, or backplanes designated for only certain kinds of traffic.
 * Turning uPnP/NAT-PMP on or off.
 * Configuring software updates on Windows and Mac platforms.
 * Defining trusted paths (the old trusted paths file is now deprecated)
 * Setting the ZeroTier main port so it doesn't have to be changed on the command line, which is very inconvenient in many cases.

A good software update system for Windows and Mac clients has been a missing feature in previous versions. It does exist but we've been shy about using it so far due to its fragility in some environments.

We've greatly improved this mechanism in 1.2.0. Not only does it now do a better job of actually invoking the update, but it also transfers updates in-band using the ZeroTier protocol. This means it can work in environments that do not allows http/https traffic or that force it through proxies. There's also now an update channel setting: `beta` or `release` (the default).

Software updates are authenticated three ways:

 1. ZeroTier's own signing key is used to sign all updates and this signature is checked prior to installation. ZeroTier, Inc.'s signatures are performed on an air-gapped machine.

 2. Updates for Mac and Windows are signed using Apple and Microsoft (DigiCert EV) keys and will not install unless these signatures are also valid.

 3. The new in-band update mechanism also authenticates the source of the update via ZeroTier's built-in security features. This provides transport security, while 1 and 2 provide security of the update at rest.

Updates are now configurable via `local.conf`. There are three options: `disable`, `download`, and `apply`. The third (apply) is the default for official builds on Windows and Mac, making updates happen silently and automatically as they do for popular browsers like Chrome and Firefox. Updates are disabled by default on Linux and other Unix-type systems as these are typically updated through package managers.

Version 1.2.0 is now aware of the link quality of direct paths with other 1.2.0 nodes. This information isn't used yet but is visible through the JSON API. (Quality always shows as 100% with pre-1.2.0 nodes.) Quality is measured passively with no additional overhead using a counter based packet loss detection algorithm.

This information is visible from the command line via `listpeers`:

    200 listpeers XXXXXXXXXX 199.XXX.XXX.XXX/9993;10574;15250;1.00 48 1.2.0 LEAF
    200 listpeers XXXXXXXXXX 195.XXX.XXX.XXX/45584;467;7608;0.44 290 1.2.0 LEAF

The first peer's path is at 100% (1.00), while the second peer's path is suffering quite a bit of packet loss (0.44).

Link quality awareness is a precursor to intelligent multi-path and QoS support, which will in future versions bring us to feature parity with SD-WAN products like Cisco iWAN.

Version 1.2.0 adds anti-DOS (denial of service) rate limits and other hardening for improved resiliency against a number of denial of service attack scenarios.

It also adds a mechanism for instantaneous credential revocation. This can be used to revoke certificates of membership instantly to kick a node off a network (for private networks) and also to revoke capabilities and tags. The new controller sends revocations by default when a peer is de-authorized.

Revocations propagate using a "rumor mill" peer to peer algorithm. This means that a controller need only successfully send a revocation to at least one member of a network with connections to other active members. At this point the revocation will flood through the network peer to peer very quickly. This helps make revocations more robust in the face of poor connectivity with the controller or attempts to incapacitate the controller with denial of service attacks, as well as making revocations faster on huge networks.

The Mac has a whole new UI built natively in Objective-C. It provides a pulldown similar in appearance and operation to the Mac WiFi task bar menu.

The Windows UI has also been improved and now provides a task bar icon that can be right-clicked to manage networks. Both now expose managed route and IP permissions, allowing nodes to easily opt in to full tunnel operation if you have a router configured on your network.

A special kind of public network called an ad-hoc network may be accessed by joining a network ID with the format:

    ffSSSSEEEE000000
    | |   |   |
    | |   |   Reserved for future use, must be 0
    | |   End of port range (hex)
    | Start of port range (hex)
    Reserved ZeroTier address prefix indicating a controller-less network

Ad-hoc networks are public (no access control) networks that have no network controller. Instead their configuration and other credentials are generated locally. Ad-hoc networks permit only IPv6 UDP and TCP unicast traffic (no multicast or broadcast) using 6plane format NDP-emulated IPv6 addresses. In addition an ad-hoc network ID encodes an IP port range. UDP packets and TCP SYN (connection open) packets are only allowed to desintation ports within the encoded range.

For example `ff00160016000000` is an ad-hoc network allowing only SSH, while `ff0000ffff000000` is an ad-hoc network allowing any UDP or TCP port.

Keep in mind that these networks are public and anyone in the entire world can join them. Care must be taken to avoid exposing vulnerable services or sharing unwanted files or other resources.

The network controller has been largely rewritten to use a simple in-filesystem JSON data store in place of SQLite, and it is now included by default in all Windows, Mac, Linux, and BSD builds. This means any desktop or server node running ZeroTier One can now be a controller with no recompilation needed.

If you have data in an old SQLite3 controller we've included a NodeJS script in `controller/migrate-sqlite` to migrate data to the new format. If you don't migrate, members will start getting `NOT_FOUND` when they attempt to query for updates.

 * **The Windows HyperV 100% CPU bug is FINALLY DEAD**: This long-running problem turns out to have been an issue with Windows itself, but one we were triggering by placing invalid data into the Windows registry. Microsoft is aware of the issue but we've also fixed the triggering problem on our side. ZeroTier should now co-exist quite well with HyperV and should now be able to be bridged with a HyperV virtual switch.
 * **Segmenation faults on musl-libc based Linux systems**: Alpine Linux and some embedded Linux systems that use musl libc (a minimal libc) experienced segmentation faults. These were due to a smaller default stack size. A work-around that sets the stack size for new threads has been added.
 * **Windows firewall blocks local JSON API**: On some Windows systems the firewall likes to block 127.0.0.1:9993 for mysterious reasons. This is now fixed in the installer via the addition of another firewall exemption rule.
 * **UI crash on embedded Windows due to missing fonts**: The MSI installer now ships fonts and will install them if they are not present, so this should be fixed.

 * **Improved dead path detection**: ZeroTier is now more aggressive about expiring paths that do not seem to be active. If a path seems marginal it is re-confirmed before re-use.
 * **Minor performance improvements**: We've reduced unnecessary memcpy's and made a few other performance improvements in the core.
 * **Linux static binaries**: For our official packages (the ones in the download.zerotier.com apt and yum repositories) we now build Linux binaries with static linking. Hopefully this will stop all the bug reports relating to library inconsistencies, as well as allowing our deb packages to run on a wider variety of Debian-based distributions. (There are far too many of these to support officially!) The overhead for this is very small, especially since we built our static versions against musl-libc. Distribution maintainers are of course free to build dynamically linked versions for inclusion into distributions; this only affects our official binaries.
2017-03-14 22:07:26 -07:00
002f9bb105 . 2017-03-14 22:05:39 -07:00
e86b1146a6 Windows version bump. 2017-03-14 21:35:41 -07:00
d44fb3a2f6 bump bump bump that version 2017-03-14 21:23:47 -07:00
1ef3069a7e 1.2.0 release notes and a few final tweaks and cleanup. 2017-03-14 21:21:12 -07:00
f99b62c48d fix stupid thing. 2017-03-14 15:38:24 -07:00
0fd45a640b Allow multiple architectures in software update dist .json file arch fields. 2017-03-14 15:19:16 -07:00
0b0d03dbe2 Merge branch 'dev' of http://10.187.63.16/zerotier/ZeroTierOne into dev 2017-03-14 14:40:27 -07:00
533baf921f Software update cleanup, and a fix for updates on Windows. 2017-03-14 14:40:17 -07:00
8e9767f3c6 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-03-14 13:17:16 -07:00
27d4bedd73 Wait a minute (literally) before doing software update check on startup. 2017-03-14 13:17:10 -07:00
c1c26ec73a Version 1.2.0 bump 2017-03-13 15:41:42 -07:00
8f592ff6e8 Controller performance tweaks. 2017-03-13 13:58:29 -07:00
37629aaf87 Use cache on requests to decrease DB load. 2017-03-13 12:22:06 -07:00
d09d193715 release notes, and delete MANUAL from this repo for now since it isn't quite done and will take shape on the web site 2017-03-13 09:37:24 -07:00
010d0a7d56 Docs and a bit of cleanup. In particular ALL makes no sense for revocations because they have IDs. In that case you would just revoke the COM. 2017-03-13 06:53:23 -07:00
902807ea50 Software update check every 10min. 2017-03-10 22:03:07 -08:00
d0224b3623 Software update fix. 2017-03-10 22:02:08 -08:00
0f3148bda2 Roots need to respond to lots of WHOISes 2017-03-10 20:08:07 -08:00
e3b1fc2ac0 Tweak WHOIS path for federation. 2017-03-10 19:52:08 -08:00
6194d2af3d Return 200 from JSON API when moon is POSTed. 2017-03-10 19:37:03 -08:00
db87d95c1d getUpstreamPeer issue with interim federated roots 2017-03-10 19:31:51 -08:00
47166c9614 Sigh. Another thinko. 2017-03-10 17:54:14 -08:00
ecacdf27a9 Build fix (typo) 2017-03-10 17:45:05 -08:00
aad6f79efa Also must mask off counter bits in IV in cryptField. 2017-03-10 17:44:25 -08:00
0c00b83702 cryptField() used to obscure extended fields in HELLO cannot use mangleKey() 2017-03-10 17:34:41 -08:00
7320e26730 Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2017-03-10 11:34:00 -08:00
1520534660 fix some rediculousness in NDK-14
Apparently having -fPIC on the command line multiple times turns it back off
2017-03-09 17:48:40 -08:00
6d6719da27 Clarify key semantics. 2017-03-08 17:03:32 -08:00
20085cd15b No need to put time in .moon filename. 2017-03-08 16:51:12 -08:00
9b001823f6 Add ifdef for synology around synology-only code in Linux Ethernet tap. 2017-03-08 16:12:54 -08:00
ed4f84cc57 Fix exception thrown in NetworkMonitor thread that can cause the UI to stop polling service for updates 2017-03-08 14:54:58 -08:00
c8e66a2b45 Don't crash when attempting to join a network while the zerotier service isn't running 2017-03-08 14:50:37 -08:00
6eb2e3ffa9 forgot to add prereq for adduser getent on fedora 2017-03-08 13:13:12 -08:00
748ad8a978 create zerotier-one user via rpm 2017-03-08 12:26:16 -08:00
d2f897f8de add dependency on adduser 2017-03-08 12:26:16 -08:00
4b511d80a1 Windows directory cleanup and a Windows build fix. 2017-03-08 10:38:43 -08:00
a74e9e1dd3 remove debug line 2017-03-08 10:27:13 -08:00
9c1a9f984b Clean iddb.d periodically. 2017-03-08 10:18:12 -08:00
04c7adea07 cleanup 2017-03-08 08:58:07 -08:00
5249ce8fb4 Small amount of cleanup. 2017-03-08 08:45:04 -08:00
ebd865dbda Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-03-07 18:25:44 -08:00
d377ef01af Windows build process updates, and repackage everything using new EV certificate and SHA256. 2017-03-07 18:25:06 -08:00
393aa3c527 fix debuild comand 2017-03-07 14:20:06 -08:00
d7b6de57c5 update debian build files 2017-03-07 14:20:06 -08:00
05d4b0cd94 Update RPM spec file 2017-03-07 14:20:06 -08:00
5dbafc2eeb Add config to status in JSON API. 2017-03-07 14:17:51 -08:00
a97918f812 Windows build fixes. 2017-03-07 13:57:31 -08:00
22f86df606 Merge ControlPlane into OneService to make variable access simpler. 2017-03-07 13:53:11 -08:00
712e8e828b use .exe naming convention 2017-03-07 11:58:17 -08:00
7d3846bc49 Bump version to 1.1.19 in prep for release and software update testing. 2017-03-07 10:26:36 -08:00
9980526aaf Consistent field names. 2017-03-07 10:12:05 -08:00
1d2cb867b2 Close all open FDs before exec in Unix software update code. 2017-03-07 09:26:27 -08:00
3859533e73 Minor software updater cleanup. 2017-03-07 09:18:00 -08:00
7ea7e1898a Fix a bug that could cause duplicate IP address assignment on networks if many new members join the controller at once. 2017-03-06 16:21:49 -08:00
5e6a4e5f5e Send revocations automatically on deauth for instant kill, also fix some issues with the RP. 2017-03-06 15:12:28 -08:00
66dfc33de9 Fix circuit test post in controller. 2017-03-06 11:23:46 -08:00
d56f740dc6 Now with less bugs. 2017-03-03 13:49:21 -08:00
a109d341ef Send timestamp with new circuit test response. 2017-03-02 14:35:38 -08:00
87b53d67c5 Fix selftest build. 2017-03-02 10:02:29 -08:00
a577b8d381 Update how controller handles circuit tests -- save results to filesystem. 2017-03-01 16:33:34 -08:00
136fddc7f1 Fix FILTER_TRACE breakage. 2017-03-01 15:14:57 -08:00
ce0c87f8ff Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-03-01 15:12:26 -08:00
d79585d44d Circuit tests now report link quality. Also fixed a little thing in revocation propagation. 2017-03-01 15:12:17 -08:00
592b628523 comment broken TRACE message 2017-03-01 14:50:28 -08:00
39f886ad88 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-03-01 14:37:01 -08:00
1d39be61b2 ZeroTier now has link quality measurement. We are not using this yet but decided to put it in to prep for future QoS support and SD-WAN stuff. 2017-03-01 14:36:52 -08:00
2bf9145ae6 Outgoing side of packet counter for link quality reporting. Also some cleanup and a cluster mode build fix. 2017-03-01 10:22:57 -08:00
127bcb02ff Save space in expecting-reply-to tracking. 2017-03-01 09:41:37 -08:00
4430fc47c6 Added HTTP authorization block for synology builds 2017-02-28 16:30:20 -08:00
2b10a982e9 Match on tag sender equals or tag recipient equals. 2017-02-28 09:22:10 -08:00
31bece7fa0 Add ipauth handling of IPv6 NDP neighbor solicitations and advertisements. IPv6 works well now with ipauth. 2017-02-28 07:43:40 -08:00
4436824faf ipauth characteristic now works with ARP 2017-02-27 17:51:58 -08:00
dd92f1d03d . 2017-02-23 17:56:36 -08:00
b6f87565a9 Add wake on LAN (wol) to rules language ethertype shorthand. 2017-02-23 16:03:43 -08:00
0b909997b8 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-02-23 14:27:48 -08:00
9d7ff26f25 Helps if you actually add the ipauth mask to the characteristics mask. 2017-02-23 14:27:31 -08:00
06c866ceb4 Android JNI fix 2017-02-23 12:47:07 -08:00
fe19ad328c Windows build fix. 2017-02-23 12:40:21 -08:00
010dbc8b2b Merge. 2017-02-23 12:35:20 -08:00
72653e54f9 Finish wiring up ipauth and macauth to Network filter. 2017-02-23 12:34:17 -08:00
93ec86a26e iOS fixes 2017-02-23 12:26:11 -08:00
10185e92fa Certificate of ownership -- used to secure against IP address spoofing, especially for IPv4 and regular IPv6. 2017-02-23 11:47:36 -08:00
33b94e8478 fixed double firing of the leave network API call causing an error popup on windows 2017-02-22 16:54:57 -08:00
2ee53b0e75 Fix bug in default capability flag in rule parser. 2017-02-22 15:52:55 -08:00
fb00f0f94c Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-02-22 15:34:49 -08:00
b679ebde3b Ad-hoc networks, a cool and easy to implement little feature that allows controllerless networks. These only allow IPv6 6plane, no multicast, and the network ID encodes the allowed port range. 2017-02-22 15:32:55 -08:00
f3ca08b0f1 Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2017-02-21 17:55:07 -08:00
946e413997 properly fill out ifcfg files. also removed route re-add code for synology 2017-02-21 17:55:00 -08:00
b475bf4a21 . 2017-02-21 15:28:01 -08:00
54fa73844c Fix crash. 2017-02-21 13:48:29 -08:00
32f5a0ab18 Add default tag values and default set capabilities for new members. 2017-02-21 13:27:20 -08:00
e4135ffb35 Decreased ZT_BINDER_REFRESH_PERIOD for Synology build 2017-02-16 16:56:23 -08:00
b5b335a6f8 Route re-add patch for linux build on Synology devices 2017-02-16 16:41:26 -08:00
57ef31d51c Route re-add patch for linux build on Synology devices 2017-02-16 16:06:04 -08:00
61b413b57f Found it in a few other places. 2017-02-16 09:54:52 -08:00
d2c0203dc9 Fix stupid inverted sense bug. 2017-02-16 09:53:39 -08:00
afba19e01c When deciding whether to send PUSH_DIRECT_PATHS we should check global trust flag, not the one passed into receive(). 2017-02-16 09:44:04 -08:00
b989c03416 Fix build on Linux if PR_CAP_AMBIENT is not defined, which is the case for some libc-dev installs. 2017-02-16 00:57:33 +00:00
3361b4030b Integrate and test linux privilege drop code (from contributor PR). It works now if a "zerotier-one" user is present on a Linux system. Does everything automagically. 2017-02-15 16:25:49 -08:00
bdadd50251 . 2017-02-14 16:49:10 -08:00
d01f31197a Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-02-14 16:43:29 -08:00
8b82f1c609 Add rules compiler script. 2017-02-14 16:43:22 -08:00
de7e8a1ca4 fix About view on Mac so that it opens links in the system web browser 2017-02-14 16:39:15 -08:00
aa2ee3f7be Right and left click both will now open the context menu on Windows 2017-02-14 16:31:11 -08:00
af4e79735c Fix "orbit" semantics. Federation works. 2017-02-13 16:38:21 -08:00
969e09210d Fix loading of existing moons. 2017-02-13 16:14:48 -08:00
cd7b571da0 Add a local.conf option to set the port. 2017-02-13 15:55:38 -08:00
0052877d2f Add CLI shortcuts for adding federated roots. 2017-02-13 15:41:53 -08:00
23bb44f2d6 Fix small typo. 2017-02-13 14:28:17 -08:00
16f11e91d1 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-02-13 14:27:14 -08:00
4b11566505 Integrate moon concept into http config bus, and clean up that code quite a bit. 2017-02-13 14:27:08 -08:00
9ae49b5b85 Update JNI with new root terminology 2017-02-13 10:51:36 -08:00
c95bae2d73 Small fixes to moon-management code in CLI. 2017-02-13 10:05:00 -08:00
e4b6611201 Only accept world updates from upstreams. 2017-02-13 09:46:34 -08:00
e6840a1863 Can't erase from vector using const_iterator on some C++ compilers.' 2017-02-13 09:26:05 -08:00
78d5f1a803 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-02-13 09:03:54 -08:00
42f28bce52 Cleanup and make moons (federated roots) a little easier to deal with. 2017-02-13 09:03:48 -08:00
9a6c3e05ad Fix for deleted networks not being removed from the network details list on macOS 2017-02-10 16:10:23 -08:00
cdc289fa9c Tags work. 2017-02-07 14:06:40 -08:00
672f17c6e9 Add a mask and value range to the IP tos rule field. This allows TOS to be matched more usefully. This will break anyone using tos in the beta, but nobody seems to be and its pre-release so now is the time. 2017-02-07 09:33:39 -08:00
723a9a6e9a Small additional efficiency improvement. 2017-02-06 17:20:22 -08:00
59ba7c8bf5 Improve efficiency of pushCredentials() method since it gets called a lot. 2017-02-06 17:10:20 -08:00
78d548458b Capabilities basically work but need to refactor a bit for performance reasons. 2017-02-06 16:38:48 -08:00
ac3e883c05 One more place to add "break". 2017-02-06 14:07:30 -08:00
9ddc2a4331 Add a break action to rules engine to make capabilities easier to use. 2017-02-06 14:00:49 -08:00
435e4c4695 Fix HELLO parse bug. 2017-02-06 12:06:10 -08:00
21f4a97c35 CSPRNG performance improvement, self test build fix. 2017-02-06 11:49:41 -08:00
e0d63c50db One more tweak after thinking about related keys and key stream reuse. Just a precaution. 2017-02-06 07:45:57 -08:00
803f74634a Tweak how we do crypto of the masked portions of HELLO just to be more "boring" in the DJB sense. 2017-02-06 07:39:38 -08:00
f85a630a64 Docs and a small build fix in debug mode. 2017-02-06 07:17:45 -08:00
43182f8f57 Docs, code cleanup, and protect the extra new fields of HELLO with encryption as a precaution. 2017-02-05 16:19:03 -08:00
594cb1fad8 Small fix for duplicates in world definitions. 2017-02-04 19:29:39 -08:00
5eab6c2e5d More docs. 2017-02-04 19:19:30 -08:00
3587aa1ea7 Add and send certificates of representation to tell people what our valid upstreams are. These are not used yet but will be needed for future privacy modes, etc. Also some cleanup. 2017-02-04 13:17:00 -08:00
beb642faa5 Stub out CAN_REACH. 2017-02-04 10:21:31 -08:00
31db768e4d A bit of code cleanup. 2017-02-04 00:23:31 -08:00
d9e4ba1280 Eliminate a little copypasta. 2017-02-04 00:04:44 -08:00
dcb1233b0d Slight refactor to RENEDEZVOUS sending code for federation. 2017-02-03 23:54:02 -08:00
8a2ff0b31e Actual documentation. 2017-02-03 19:47:00 -08:00
be2881ae8d . 2017-02-02 16:53:27 -08:00
88cba48f45 Eliminate warning. 2017-02-01 15:24:41 -08:00
9284e4edfe agree() must be called on our identity, the one with the secret 2017-02-01 15:22:14 -08:00
62a705af1c Eliminate another check in cluster frontplane mode. 2017-02-01 14:35:07 -08:00
29ec7bf3a2 Add more specific check in source==self case instead of dumping it. 2017-02-01 14:18:56 -08:00
fc3f4fb988 Yeah that could never have worked (normal packets in cluster mode). 2017-02-01 14:05:13 -08:00
60ff280dcb Another tweak to cluster I/O rules. 2017-02-01 13:52:53 -08:00
b378f5dcd7 Take 3 2017-02-01 13:20:51 -08:00
e778d45128 Still want to send WANT_PEER under two failure modes. 2017-02-01 12:51:52 -08:00
5e11cf6378 Can't armor() a packet until all flags are set. 2017-02-01 12:32:06 -08:00
5dbebc513a Minor send path refactor to make packet I/O work on clusters if they are members of networks. Also fix a crash if compiled in cluster mode but no cluster is enabled. 2017-02-01 12:00:25 -08:00
6d5a3cd2e2 Remove debug code. Cluster network config sharing seems to work. 2017-01-30 16:23:38 -08:00
f9ad80aa13 . 2017-01-30 16:15:47 -08:00
ed31cb76d6 Fix to cluster network configs. 2017-01-30 16:04:05 -08:00
eebd271bb1 Implement cross cluster sharing of network configs to make clusters able to actually join networks. 2017-01-30 15:40:22 -08:00
ff74ec2482 Cluster build fix. 2017-01-30 21:39:44 +00:00
49e31ca647 InetAddress.hpp needs to be included in OneService.hpp 2017-01-30 09:16:16 -08:00
471108f2e4 Slightly increase thread stack size for safety (primary Alpine related) possibly GitHub #443 2017-01-30 08:01:36 -08:00
2ceb162df0 Merge pull request #442 from zielmicha/allow-managed
allow user to specify arbitrary allowed IP networks in allowManaged
2017-01-30 06:54:49 -08:00
915206405c docs 2017-01-27 17:41:07 -08:00
5fa1d9796c zerotier-idtool commands to init and generate moons 2017-01-27 17:34:39 -08:00
77a1dd4737 Dead code removal, fix minor issue in upstream endpoint check. 2017-01-27 16:25:53 -08:00
9e7c778cc8 Fix deadlock. 2017-01-27 16:16:06 -08:00
1d775af34a Fix moon persistence. 2017-01-27 15:35:21 -08:00
9f7919f71f Add comments to join ("orbit") moons. 2017-01-27 15:27:26 -08:00
0b3b994241 Relay policy can now be computed. 2017-01-27 14:05:09 -08:00
bc218f9414 little fix 2017-01-27 13:52:29 -08:00
f102fd7f92 Extend in-band world updates to handle moons too. 2017-01-27 13:50:56 -08:00
64774d0d4f Replace piecemeal designation of upstreams with the concept of moons, which is simpler and easier to use and inherits all the cool live update stuff of worlds (now called planets) and global roots. 2017-01-27 13:27:52 -08:00
b88f573733 tap-windows-ndis5 is definitely dead 2017-01-27 07:29:42 -08:00
b211e61671 debian rules 2017-01-26 16:12:50 -08:00
871cacf040 Remove junk. 2017-01-26 15:02:52 -08:00
7c3984413e Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-01-26 15:02:20 -08:00
967ce78a57 Add static build option so we can build a static Linux binary for ancient distros (wheezy, etc.) 2017-01-26 15:02:03 -08:00
923d3f1fe8 remove references to deleted source files in Android NDK build files 2017-01-26 15:01:45 -08:00
e11f42a089 remove reference to BackgroundResolver.cpp/.hpp on Windows 2017-01-26 14:29:39 -08:00
9b8d9b7042 fix copy stage for paths with spaces 2017-01-26 14:27:39 -08:00
902e03bccc build fix 2017-01-26 14:23:22 -08:00
ec0e8a9a43 Rip out resolver and use anycast address instead. In the long term existing TCP proxy dies anyway. Fixes static build problem for old Linux versions. 2017-01-26 13:59:20 -08:00
9e488ce322 delete binary 2017-01-26 21:55:35 +00:00
c111bf3080 Fix tcp-proxy build. 2017-01-26 21:54:55 +00:00
8f2a42d1ad allow user to specify arbitrary allowed IP networks in allowManaged 2017-01-23 12:16:40 +01:00
9a475eeff9 Windows build fix, warning removal. 2017-01-20 12:00:18 -08:00
91a37ec639 docs 2017-01-20 11:02:54 -08:00
db1e2aae41 docs 2017-01-20 11:00:18 -08:00
4a7c76a11b docs, cleanup, temporarily put cli in attic since it is not done. 2017-01-20 10:51:55 -08:00
f1ed57c62d Update nlohmann/json (header only lib). 2017-01-20 10:09:47 -08:00
3b0969e3a5 Fix build on G++ 4.9 on FreeBSD-11. 2017-01-20 10:07:25 -08:00
35174a8766 Basic BSD gmake install/uninstall. 2017-01-19 15:15:31 -08:00
d79f792e6f OpenBSD fixes, workaround for apparent libstdc++ bug. 2017-01-19 15:05:26 -08:00
7b231b38b0 Now builds on OpenBSD, but segfaults. So not yet but close. GitHub issue #439 2017-01-19 10:39:42 -08:00
13263b8401 docs 2017-01-19 16:23:25 -08:00
a604294b1b local.conf docs 2017-01-19 16:10:36 -08:00
89d74cd293 Add a portMappingEnabled flag to local.conf to allow uPnP/NAT-PMP to be disabled. 2017-01-19 15:57:50 -08:00
56e5b34934 Bump bundled miniupnpc to 20161216 2017-01-19 15:52:39 -08:00
f43365e4ba Take LZ4 out of Debian depends. 2017-01-19 15:44:16 -08:00
4d071081bb docs 2017-01-19 15:22:43 -08:00
b67b370dba docs 2017-01-19 15:20:55 -08:00
0995c1dcaa Encapsulate LZ4 in Packet.cpp to eliminate dependency. 2017-01-19 15:16:04 -08:00
7612bf3302 Fix LZ4 warning. 2017-01-19 14:54:39 -08:00
ba158d8dc6 Include LZ4 README and LICENSE. 2017-01-19 14:48:40 -08:00
a90f2249e8 Upgrade LZ4. 2017-01-19 14:48:01 -08:00
d8f36db5dd Fix FreeBSD build in dev. 2017-01-19 12:11:49 -08:00
fd460d93c4 docs 2017-01-19 10:53:44 -08:00
989cbb4d8d Merge pull request #434 from zielmicha/fix-ip
Binder.hpp: gather all IPv4 interface addresses
2017-01-19 10:47:47 -08:00
e9007b1f56 NodeJS migration script for old Sqlite controller.db to new controller data format. 2017-01-19 10:44:26 -08:00
0fb3d1d582 Add a build version for software update use so we can do very minor updates within a version. 2017-01-18 09:16:23 -08:00
81910c1d92 Replace update signing key with real key generated on air-gapped system. 2017-01-13 16:07:57 -08:00
d150f9b2bd Windows update build in Advanced Installer, and warning removal. 2017-01-13 15:19:59 -08:00
1346e31a8e Windows build fixes, Software update fix, warning removal. 2017-01-13 14:22:36 -08:00
54f25b14ee Software updater log for distributors (does not affect real users much). 2017-01-13 14:03:06 -08:00
0e4d3244b2 "make official" for Mac now builds update image as well as pkg (update image is just PKG + SFX script) 2017-01-13 13:09:42 -08:00
87e3b5f076 Mac updater SFX code. 2017-01-13 12:42:49 -08:00
f8e18f2098 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-01-13 12:13:20 -08:00
f81c67c0f0 Make sure to respond to GET_LATEST with the actual latest. 2017-01-13 12:13:14 -08:00
4f4dd3446c Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2017-01-13 11:36:53 -08:00
f149dd9401 fix Android NDK build 2017-01-13 11:36:48 -08:00
3a730c4a5c Remove debug printfs in software updater. It works! At least for unix. Now to test Windows. 2017-01-13 11:24:00 -08:00
b03247ec3c SoftwareUpdate::apply() 2017-01-13 10:46:16 -08:00
8ebb49e972 Cache downloaded updates to disk. 2017-01-12 15:21:14 -08:00
84bfec8329 . 2017-01-12 14:35:52 -08:00
e1727d6297 Fix to software update repeat downloads. 2017-01-12 14:34:52 -08:00
e7bab66d29 Auto-apply updates if enabled. 2017-01-12 13:54:08 -08:00
ab25c96821 Build fixes. 2017-01-12 13:51:06 -08:00
c6b0b07605 More software update work, and settings in local.conf. 2017-01-12 13:18:11 -08:00
b5b583c397 . 2017-01-11 18:10:42 -08:00
56d969c709 . 2017-01-11 17:59:51 -08:00
3fedf16f35 . 2017-01-11 17:57:12 -08:00
5da56776d6 . 2017-01-11 17:54:43 -08:00
d58870a92d . 2017-01-11 17:53:19 -08:00
15ed7423ac . 2017-01-11 17:50:02 -08:00
d7e7ad4f88 Can't send a user message to self. 2017-01-11 17:46:52 -08:00
823a1963f6 init fix. 2017-01-11 17:45:09 -08:00
6513b21426 debug code. 2017-01-11 17:42:57 -08:00
d4321cdd41 Wire up user message handling in OneService event handler. 2017-01-11 17:20:43 -08:00
d301540d92 Software update stuff for test. 2017-01-11 16:58:37 -08:00
af5a3376f3 Should fix Windows build. 2017-01-11 16:56:16 -08:00
4aa52ffc77 Software update stuff. 2017-01-11 16:47:42 -08:00
47b62ece18 Software update integration. 2017-01-11 16:34:33 -08:00
2aab26a08e Software update work. 2017-01-11 15:22:16 -08:00
565842b5ec Software updater work. 2017-01-11 14:37:31 -08:00
a064e19b8a Refactor some JSON stuff for performance, and fix a build error. 2017-01-10 13:51:10 -08:00
6fb49f68fc Comment out and disable old auto-update code. 2017-01-10 12:20:29 -08:00
ef7faa7291 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2017-01-09 15:55:13 -08:00
d5528e4e9a Wire up VERB_USER_MESSAGE in core. 2017-01-09 15:55:07 -08:00
f730f65aaf bring window to front if already open 2017-01-09 14:23:37 -08:00
dbd577c6b0 Merge branch 'winroute' into dev 2017-01-09 12:41:45 -08:00
7ebb207005 Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2017-01-05 13:56:15 -08:00
e41d71cd19 add implementations of compareTo() and equals() for VirtualNetworkRoute().
Android app was relying on these, but since they didn't exist, they didn't function properly
2017-01-05 13:56:07 -08:00
0f6c53589e remove commented out function declaration 2017-01-05 11:46:33 -08:00
e2b1a7157e Potential fix for routing issue on Windows
Move setting _initialized = true until after WindowsEthernetTap::threadMain() has actually created and brought up the adapter.  Also in OneService::nodeVirtualNetworkConfigFunction(), wait up to 5 seconds for WindowsEthernatTap::isInitialized() to return true before attempting to configure the interface and managed routes.  Without this, the adapter doesnt actually exist yet when trying to add routes
2017-01-05 11:43:26 -08:00
aaf69d1aff properly quote string arguments to copyutil in case there are spaces in the path 2017-01-03 14:03:50 -08:00
203b7e17de Binder.hpp: gather all IPv4 interface addresses 2017-01-01 23:57:15 +01:00
18c9dc8a06 fix RTF_MULTICAST and g++ -w 2016-12-27 13:07:05 +01:00
ba07d1f91d cleanup 2016-12-27 11:57:05 +01:00
9a2310395d mimic BSDEthernetTap but with creating/destroying char tap device 2016-12-27 11:42:43 +01:00
218ace51a7 use /dev/tap{0..3}; it is fully working now 2016-12-26 02:52:07 +01:00
f09eedbd7a make it compilable 2016-12-25 22:54:27 +01:00
546e8a3b44 initial netbsd support in makefile/flags 2016-12-25 20:59:12 +01:00
9a2b766aad Windows installer updates. 2016-12-23 15:57:21 -08:00
24017659df Update installer, etc., for Mac. 2016-12-23 15:25:04 -08:00
c175a5fcd7 Change org names, add makefile rule for Mac to build new UI. 2016-12-23 15:11:44 -08:00
5ec8465374 Remove dead Mac stuff. 2016-12-23 14:38:36 -08:00
6b5d6efe6c Retire old build farm (something new is coming) and update makefile for linux to not auto-build doc. 2016-12-23 14:33:04 -08:00
5bff70194b Ship pre-build man pages. We stopped doing this for a bit due to nit-picky Debian craziness but since we are not targeting core Debian at the moment bring it back. 2016-12-23 14:30:27 -08:00
d94d04d7d5 Bump to 1.1.17 for pre-1.2.0 beta. 2016-12-23 13:52:41 -08:00
bf2b9e3692 Auto-authorize new members on public networks properly. 2016-12-22 18:52:34 -08:00
c8554504f3 . 2016-12-22 18:37:46 -08:00
0d066e3b08 Fix JSON parse bug in REDIRECT target. 2016-12-22 18:26:43 -08:00
6b12d86209 Add a workaround for an edge case in TEE/REDIRECT if we are the inbound destination and teeing is only being done on the outbound side. 2016-12-22 18:06:35 -08:00
fe530548bb Fix MATCH_RANDOM in controller. 2016-12-22 16:57:45 -08:00
2eaff6d484 Fix to characteristcs in rules engine. 2016-12-22 16:36:38 -08:00
a54c2b438c Basic support for streaming of changes via stdout from controller. 2016-12-15 15:08:47 -08:00
890f6f0d35 Make allow management from a local.conf parameters. 2016-12-12 16:25:41 -08:00
bad4b72f82 Remove debug printf. 2016-12-12 14:44:21 -08:00
4702c5b4ee Add local.conf option to blacklist interfaces by name. 2016-12-12 14:43:09 -08:00
4459d5ad54 Remove debug printf 2016-12-12 12:58:39 -08:00
39fb4b1b42 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-12-12 12:55:14 -08:00
3864a2e111 Use an alternative method for enumerating interface addresses on Linux to avoid poor performance of getifaddrs() when there are many network namespaces. 2016-12-12 12:53:51 -08:00
697520f1f5 Dont write IPv6 addresses to IPv4 sections of registry TCPIP settings.
Also, dont add the prefix length to the IP addresses in there.

Appears to fix Github Issue #357.  Still waiting on some info from Microsoft for confirmation of a few things.
2016-12-09 11:36:01 -08:00
244f37179c Minor security: lock roots to only be reachable via World IPs. 2016-12-05 16:09:42 -08:00
4b3a47849d Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2016-11-30 15:21:33 -08:00
56faf774ff Store MTU as String instead of DWORD
WindowsEthernetTap was storing the MTU for the ZeroTier Adapter as a
DWORD.  When changing the value from the network adapter settings UI, it
was stored as a string.  Updated the call when creating the adapter to
store it as a string as windows expects.
2016-11-30 15:18:38 -08:00
fa2bb91ae5 Kill some old debug code. 2016-11-30 10:48:09 -08:00
32478845b2 Merge branch 'dev' into systemtray 2016-11-30 10:21:19 -08:00
44f0e3097e docs 2016-11-29 10:56:16 -08:00
289917e2b3 use msbuild instead of devenv 2016-11-28 15:30:52 -08:00
14fcb5867f rethrow windows build error 2016-11-28 14:57:37 -08:00
cf59362c4a add windows build to Jenkinsfile 2016-11-28 13:06:28 -08:00
8472918559 Change 'localhost' to 127.0.0.1
@makerspherehq reported it not working as 'localhost' via Twitter
2016-11-28 09:40:34 -08:00
ae8f51d608 . 2016-11-23 16:27:15 -08:00
4a7ee5472d Small fixes. 2016-11-23 16:23:44 -08:00
8718b33a66 docs 2016-11-23 15:57:06 -08:00
27f1155f1b docs and API stuff 2016-11-23 15:53:53 -08:00
84732fcb12 Wire through external path lookup. Static paths should now work. 2016-11-22 14:23:13 -08:00
c6c578ce1d Fixes to allow usage of ZeroTierOne.h with a C compiler 2016-11-22 13:18:52 -08:00
3c5e28a27d use new ZT_Node_Callbacks struct in JNI 2016-11-22 13:03:36 -08:00
a39f6e9b4c clear cached window positions when display settings change 2016-11-22 12:02:49 -08:00
adb7a88836 cache window positions so we only have to move after open once. 2016-11-22 11:53:06 -08:00
9892f7bb47 Upgrade nlohmann::json 2016-11-22 11:06:58 -08:00
42ba70e79e Replace long callback arg list with struct, and implement path whitelisting, path blacklisting, and local.conf support for roles. 2016-11-22 10:54:58 -08:00
cbaef66e82 Fix a deadlock in federation/upstream code. 2016-11-21 16:04:01 -08:00
97d915b06c Expose relay policy in node settings. 2016-11-21 15:35:18 -08:00
3a3a23db34 hacky way to set window position but it works 2016-11-21 15:31:32 -08:00
d159e5ca44 Allow relay policy setting in local.conf 2016-11-21 15:21:24 -08:00
d3bd10952e hyperlinks in the about page are clickable 2016-11-21 14:32:25 -08:00
40078a99de Make parse failure of local.conf non-fatal in case people have ancient files sitting around. 2016-11-21 14:14:43 -08:00
0142c0d339 fill out the about view 2016-11-21 13:25:10 -08:00
2e5de46584 local.conf and support for virtual role definition 2016-11-21 13:20:56 -08:00
1be55d6182 Merge branch 'dev' into systemtray 2016-11-21 12:59:43 -08:00
8ebcd44405 dont close the network list. just hide it so its reusable 2016-11-21 12:54:27 -08:00
ccdd4ffda7 Move split() to OSUtils since it is not used in core. 2016-11-18 15:49:28 -08:00
a6ed711492 wired up the startup registry key to the registry 2016-11-18 15:44:41 -08:00
3fb224cb22 add a checkbox for startup option in preferences 2016-11-18 15:23:07 -08:00
5ca5af619d Merge branch 'systemtray' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into systemtray 2016-11-18 14:58:01 -08:00
f61c5836b2 copy node ID by clicking on node ID menu item 2016-11-18 14:57:14 -08:00
535b33b46e copy node ID by clicking on node ID menu item 2016-11-18 14:52:04 -08:00
a8847de910 proper shutdown 2016-11-18 14:23:22 -08:00
2231e878d5 Merge branch 'dev' into systemtray 2016-11-18 14:00:25 -08:00
299a7cab20 fixed an issue where sometimes network data wouldnt be updated 2016-11-18 13:59:31 -08:00
e48d6880c9 Wired up connected checkbox and delete button. just something not working with refresh. 2016-11-18 13:52:48 -08:00
673c0c811e Wire through upstream stuff and add setRole(). 2016-11-18 13:48:49 -08:00
6e1da35c12 Remove debug. 2016-11-18 13:15:58 -08:00
25f9c294dc Small bug fix and warning removal. 2016-11-18 13:01:45 -08:00
2ea9f516e1 Rate gate expensive validation of new identities in HELLO. 2016-11-18 12:59:04 -08:00
dbe1461886 wire up the quit button 2016-11-18 12:17:57 -08:00
7bea709747 wire up the rest of the views to the menu. views not implemented yet tho. 2016-11-18 12:03:21 -08:00
6536474b94 moved stuff around again. WPF didnt like things once they were moved. Also wired up Join dialog. 2016-11-18 11:33:46 -08:00
ab4021dd0e Do packet MAC check before locallyValidate(), and add timing measurement in selftest. 2016-11-18 11:09:19 -08:00
1fcbb1fbed Proactively auto-load designated upstreams. 2016-11-18 10:39:26 -08:00
39333c9e8e Modify unite() to deal with a second layer of upstreams. 2016-11-17 16:59:04 -08:00
1615ef1114 Rename getBestRoot() etc. 2016-11-17 16:31:58 -08:00
bf8d71e82c Add notion of upstream that is separate from root in Topology, etc. 2016-11-17 16:20:41 -08:00
a4c2740852 added skeletons for join and about windows. moving things around a little bit too 2016-11-17 14:25:55 -08:00
afa1b8cb2d add timeouts to requests to the json api 2016-11-17 14:23:04 -08:00
5447c01e1f can finally join/leave networks by clicking on them in the context menu 2016-11-17 14:13:05 -08:00
b4bacd50a1 Merge branch 'dev' into systemtray 2016-11-16 16:23:56 -08:00
3c248ec61a handle removing of networks we are no longer connected to from the UI 2016-11-16 15:50:56 -08:00
78a8ceda0e IP addresses now selectable in Windows UI 2016-11-16 15:11:28 -08:00
14bf326de2 make device ID selectable 2016-11-16 14:50:25 -08:00
dc549b7f3c add JSONDB.cpp 2016-11-16 14:50:03 -08:00
456c7ca661 only changed items in the full network list are updated now 2016-11-15 16:55:24 -08:00
bab75186f5 make some fields in the network list selectable 2016-11-15 15:51:25 -08:00
07b2a3818c Fix TTL scaling in cert. 2016-11-15 14:26:05 -08:00
15c6e2ec70 Fix member deauthorization time threshold bug. 2016-11-15 14:06:25 -08:00
5bd8968eb8 Add rules engine debugging switch to make-linux.mk 2016-11-15 11:50:53 -08:00
4ad942522b Kill unnecessary check in another spot. 2016-11-14 15:57:46 -08:00
b6c99ba3ef Add (currently undocumented) option to allow management from certain networks. 2016-11-14 15:47:06 -08:00
ee5bd57d40 We don't bind to non-local IP for TCP yet, but eliminate double check. 2016-11-14 15:29:36 -08:00
6445337a32 looks like a garbage file got committed. deleting 2016-11-14 15:02:40 -08:00
f20c7303e8 remove timer thats no longer needed 2016-11-14 14:58:57 -08:00
c4c8ea62e2 Added network monitor pub/sub class 2016-11-14 14:56:36 -08:00
71aadcbecb fix serialization issue.
Apparently the JSON parser uses this same serialization method under the hood to create objects from JSON.
2016-11-10 15:21:54 -08:00
fd71ceeab5 menu now dynamically populates the network list 2016-11-10 14:17:57 -08:00
e26bee45fb Multithreading in network controller. Threads are only started if controller is used. 2016-11-10 13:57:01 -08:00
1b10d3413a Use circuit breaker only for requests. 2016-11-10 13:08:43 -08:00
f0fcd222a1 Actually push updates when things change. 2016-11-10 12:54:43 -08:00
298e4a9f14 Also avoid sending tags and caps to old members since there is no point. 2016-11-10 12:33:09 -08:00
12d32b9311 Small fix to send pushes if not a reply. 2016-11-10 11:57:45 -08:00
226123ca08 Refactor controller to permit sending of pushes as well as just replies to config requests. 2016-11-10 11:54:47 -08:00
5ebf5077f5 Log last meta-data in controller, and ease up just a bit on keepalives. 2016-11-09 17:11:10 -08:00
e1c930f1b7 update JNI wrapper to reflect removal of lastMulticastFrame and lastUnicastFrame from ZT_Peer struct 2016-11-09 16:33:01 -08:00
c61ca1dea2 Keep connections up for netconf stuff as well as frames. 2016-11-09 16:04:08 -08:00
eea712a1ae Field in wrong place fixed. 2016-11-09 13:26:14 -08:00
1ebfca666d Memo-ize some computed stuff to control CPU utilization. 2016-11-09 12:34:20 -08:00
005b5aacaf rename 2016-11-09 10:32:18 -08:00
7cf3d2caa1 Network list window opens with click on the menu item 2016-11-08 16:31:07 -08:00
e1f9f7b6dc turn APIHandler into a singleton 2016-11-08 15:50:08 -08:00
6b0543ba27 starts up to a toolbar icon with context menu. still much more to do 2016-11-08 14:54:55 -08:00
3d948a930e Send a blanket rule to old versions. New versions will still bidirecitonally enforce on the inbound side. 2016-11-08 14:24:30 -08:00
6f3595bfd2 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-11-08 12:41:32 -08:00
4524899e4d Update LM time on members on request. 2016-11-08 12:41:27 -08:00
54206fd44d add NotifyIcon NuGet package for tray icon support 2016-11-08 11:24:12 -08:00
6d8c8f9fd1 update JSON library to latest 2016-11-08 11:23:15 -08:00
00e1b0ed10 added docs for allowManaged, allowGlobal, allowDefault 2016-11-08 11:00:48 -08:00
4f8feaa530 update JSON API docs for OneService 2016-11-08 10:23:25 -08:00
0324e6ca3d Merge pull request #402 from bobberb/patch-1
Typo fix line 77
2016-11-08 08:32:47 -08:00
d773ab2806 Merge pull request #407 from misuzu/chownfix
Chown fix
2016-11-08 08:32:31 -08:00
8e76363ccf Fix chown on /var/lib/zerotier-one 2016-11-08 16:50:32 +02:00
360c84e035 Minor fixes. 2016-11-08 00:05:18 +00:00
4868d21526 Bug fixes in controller refactor. 2016-11-07 23:49:03 +00:00
c802811ad2 Added a file copy util for Windows UI
Copies the authtoken.secret file into a private local folder for the user so that the UI doesnt have to be run with Admin privileges.
2016-11-07 14:09:01 -08:00
5f63d5039b Bug fixes, self test of JSONDB disabled by default. 2016-11-07 14:01:23 -08:00
a454a37a6e Self test JSONDB. 2016-11-07 13:27:17 -08:00
a78d7311a6 Fix network list API call. 2016-11-04 16:23:41 -07:00
08ff666e99 . 2016-11-04 16:14:58 -07:00
0d108d37f6 . 2016-11-04 16:12:44 -07:00
cae9041c2a . 2016-11-04 15:52:01 -07:00
330a07a554 cleanup 2016-11-04 15:48:23 -07:00
7729cbe313 Fix ambiguous error on some compilers. 2016-11-04 15:34:49 -07:00
3e865067be Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-11-04 15:18:35 -07:00
b03c7b2f30 Refactor controller to use split-out DB for better performance and less ugly. 2016-11-04 15:18:31 -07:00
1ab9c43135 wire up allowDefault, allowManaged, allowGlobal, allowDefault options 2016-11-04 14:50:07 -07:00
efcc24a76b increase window width so IPv6 addreses don't wrap 2016-11-04 14:49:15 -07:00
4762311977 work in progress windows UI update 2016-11-04 12:39:57 -07:00
ab2ccb094a Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-11-03 14:44:49 -07:00
3c00cd0f88 Separate out JSON store from controller code. 2016-11-03 14:17:46 -07:00
a7718bae39 link in notelemetry.obj even though Microsoft said CRT telemetry would be disabled in VS2015 Update 3. Just in case. 2016-11-03 12:25:09 -07:00
8ffae313fd add new files & remove old ones from VS project. Now builds & runs on Windows again 2016-11-03 12:10:50 -07:00
8cced06a2d upgraded vcxprojs to VS2015. got the tap driver building. 2016-11-03 10:04:50 -07:00
965399ba0c fix a few warnings 2016-10-31 15:16:42 -07:00
231cc11a62 Update path to nkd-build 2016-10-27 14:28:42 -07:00
1afa9e992c add color to success output in slack 2016-10-27 14:01:00 -07:00
be543c4039 use internal changelog library 2016-10-25 15:51:30 -07:00
7e7462b39e attempting #2 2016-10-25 15:01:59 -07:00
d2ee37a3e0 attempting to add the changelog to the starting build slack message 2016-10-25 14:58:27 -07:00
1fcedb8d16 fix duplicate branch name in slack 2016-10-25 14:38:57 -07:00
5c476391da fixed build number in slack messages 2016-10-25 14:37:19 -07:00
6cb23e7069 added slack notifications 2016-10-25 14:35:31 -07:00
c976b87ac7 -scheme -> -target 2016-10-25 13:33:50 -07:00
af2bdfc421 dir directive appears to create a tmpdir rather than just cd 2016-10-25 13:14:28 -07:00
b01c551197 fix directory directive in jenkinsfile 2016-10-25 13:04:24 -07:00
df6d3ca66b add stage for building the new macOS UI in Jenkins 2016-10-25 12:58:54 -07:00
5be7374f56 added macOS build for jenkins 2016-10-25 12:40:03 -07:00
7300005398 fixed one more stage syntax for jenkins build 2016-10-25 11:21:39 -07:00
6cd36edf45 Update stages 2016-10-25 11:18:26 -07:00
604a0b1fe6 added Jenkinsfile for jenkins build config 2016-10-25 11:10:21 -07:00
046d5bb9ff Typo fix line 77 2016-10-23 15:45:45 -04:00
0e8442064e Merge pull request #376 from siigna/debian
Move debian/format to debian/source/format
2016-10-21 13:39:55 -07:00
ea1f2762cf Merge pull request #401 from zielmicha/dev
Run as nonroot user on Linux (with CAP_NET_ADMIN and CAP_NET_RAW added).
2016-10-21 13:37:27 -07:00
0f3095f130 Merge remote-tracking branch 'macui/master' into macui-merge
# Conflicts:
#	.gitignore
2016-10-17 14:50:18 -07:00
7b7ec13349 Prepare for merging into main ZeroTier repo 2016-10-17 14:44:32 -07:00
7025c7090b set proper copyright/license in code files 2016-10-17 14:43:24 -07:00
7c12991f57 wasn't setting the Connected checkbox to off if the network wasn't connected 2016-10-17 13:48:25 -07:00
f444da80bc Add a 2 second delay before the About window shows up on the first run 2016-10-17 13:43:44 -07:00
ed58467d12 Clicking "Join" to join a new network now properly closes the popover 2016-10-17 13:43:27 -07:00
c44c3b0530 cleanup 2016-10-17 12:31:59 -07:00
46e9c1195c more removal of NSMenuDelegate 2016-10-17 12:29:28 -07:00
4730111492 updated project settings for Xcode 8.0 2016-10-17 12:27:07 -07:00
a813e29491 Don't need AppDelegate to be a NSMenuDelegate 2016-10-17 12:26:48 -07:00
344a25c133 Run as nonroot user on Linux (with CAP_NET_ADMIN and CAP_NET_RAW added).
- ZT will only drop root privileges if zerotier-one user exists. It is created by
Debian postinst script - in other cases the user has to be created by administrator.
- Linux >=4.3 with ambient capabilities is required, otherwise ZT will silently
- "-U" option now also disables privileges dropping
2016-10-16 13:53:44 +02:00
772599a6fc Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2016-10-13 15:18:12 -07:00
3a3fe272bb add Revocation.cpp to android build 2016-10-13 15:18:07 -07:00
88e3fe699c Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-10-13 15:17:27 -07:00
27d997a2e5 . 2016-10-13 15:17:17 -07:00
8809c6d122 link atomic library. seems to be required in the latest Android NDK 2016-10-13 14:34:54 -07:00
6469aa9df9 typo 2016-10-13 14:28:39 -07:00
ce6b5bc6f5 . 2016-10-13 14:21:24 -07:00
4f3775bb86 Fix ICMP match. 2016-10-13 14:21:00 -07:00
2cb760e0ac Fix ICMP json. 2016-10-13 14:14:46 -07:00
8850a8610a Fix filter trace. 2016-10-13 13:59:17 -07:00
2d6a4e5974 cleanup 2016-10-13 13:52:45 -07:00
93b4ac5cb2 Remove unused POW code, will revisit later. 2016-10-13 13:17:30 -07:00
e2509af163 Fix bug in default rules init in new networks. 2016-10-12 12:30:32 -07:00
3f4c166861 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-10-11 12:00:38 -07:00
e53f63ca87 Broke down and added an OR to the rules engine. It is now possible to have a series of MATCHes that are ORed. 2016-10-11 12:00:16 -07:00
6a50291aa2 Fix the case for InetAddress::containsAddress for IPv6 route of :: 2016-10-07 14:29:06 -07:00
e59ed3e68f Fix size of neighbor solicitation struct 2016-10-07 10:03:07 -07:00
45c4ccb153 Add a tags both equal match. 2016-10-05 16:38:42 -07:00
adeb7e7da0 Make capability flags match more user-friendly and appropriate since "match any flag" is generally what we want. 2016-10-05 12:54:46 -07:00
f1c8706485 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-10-05 10:12:16 -07:00
d5f4d381d0 Go ahead and loop back packets whose destination is self. Some OSes require this since they aactually follow the full network path even for local IPs. 2016-10-05 10:12:06 -07:00
69c5976775 fix typo in assert size 2016-10-04 17:35:52 -07:00
988049f39b Add new rule to rules engine: random match. 2016-09-30 14:07:00 -07:00
6651b8310e Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-09-30 13:47:40 -07:00
0843ed62fa Network delete fix. 2016-09-30 13:47:30 -07:00
d817039f79 Add IPv6 Neighbor Discovery code. Not yet tested. 2016-09-30 13:18:17 -07:00
f0794e09b7 Controller cleanup. 2016-09-30 13:04:26 -07:00
9eaa3756f8 Fix deadlock-causing regression in Network. 2016-09-30 12:22:54 -07:00
1eeebba2f7 Drop old /active path from network. 2016-09-29 17:59:27 -07:00
2fc3d12fb6 Minor tweaks to member code in controller, and fix Linux build. 2016-09-29 14:48:39 -07:00
4fe9a4fe83 Fix memory leak. 2016-09-28 16:13:59 -07:00
01129d02b3 hashCode() for InetAddress 2016-09-28 13:45:25 -07:00
e1fbf7b34c Check multicast limit on send after NDP emulation code. 2016-09-28 12:21:08 -07:00
7e90ab3534 TRACE verbosity increase on exceptions in NETWORK_CREDENTIALS. 2016-09-28 11:06:44 -07:00
5ee1ccd659 Send need credential error on more cases. 2016-09-27 16:41:08 -07:00
0b44919ba2 Clusters can send multiple OKs so we must allow this. 2016-09-27 16:33:37 -07:00
9f550292fe Simply network auth logic and always sent error on auth failure even for unknown networks to prevent forensics. 2016-09-27 13:49:43 -07:00
5ba7ca91c0 TRACE build fix. 2016-09-27 12:44:44 -07:00
cc4bacc199 Cleanup, and implement compression disable flag for networks. 2016-09-27 12:22:25 -07:00
15c07c58b6 Refactored network config chunking to sign every chunk to prevent stupid DOS attack potential, and implement network config fast propagate (though we probably will not use this for a bit). 2016-09-27 11:33:48 -07:00
236fdb450c cleanup attic 2016-09-27 07:02:16 -07:00
7e4b6b594b It now builds. 2016-09-26 17:05:39 -07:00
eac3667ec1 Bunch more refactoring and work on revocations, etc. 2016-09-26 16:17:02 -07:00
e35bca2c3c Move debian/format to debian/source/format
Fixes the following error during package building:
dpkg-source: warning: no source format specified in debian/source/format, see dpkg-source(1)

Reference:
https://www.debian.org/doc/manuals/maint-guide/dother.en.html#sourcef
2016-09-23 20:13:37 -07:00
46049a1ef6 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-09-23 16:08:44 -07:00
1f74dd4589 Revocation work in progress, add WATCH which is TEE with implicit rate sync (thanks JG@DCVC!), and clean up some cruft in Network. 2016-09-23 16:08:38 -07:00
40d3993ceb java code still needed to reflect PEER_ROLE_RELAY rename to PEER_ROLE_UPSTREAM 2016-09-21 14:12:20 -07:00
0564bb3b35 added missing copyright/license info from ZT_jniutils 2016-09-21 14:09:46 -07:00
29711e123f Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-09-20 21:21:43 -07:00
d3524f3609 Refactor COM stuff a bit, and respond to COM requests a bit more readily for rapid setup. Will need to revisit later. 2016-09-20 21:21:34 -07:00
d87f0293e3 Don't print a few error messages when they don't matter. 2016-09-19 13:40:53 -07:00
5fadd8bdd2 ZT_PEER_ROLE_RELAY -> ZT_PEER_ROLE_UPSTREAM in JNI glue 2016-09-19 12:54:19 -07:00
3366b53247 Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2016-09-18 18:10:03 -07:00
68e549233d Revise bearer token code in controller, and add relay policy as a meta-data item presented to controller by nodes (to facilitate future meshiness). 2016-09-15 13:17:37 -07:00
24fce0be86 No, definitely have to back out GitHub issue #385 (non-bisected routes) since this breaks IPv6 on OSX and probably IPv4 too if you were to encounter a 6-only situation. 2016-09-14 22:23:56 -07:00
740b34124f Naming... 2016-09-14 17:35:50 -07:00
15402933bc Add physical MTU recommendation hint to network config via API. 2016-09-14 16:55:25 -07:00
8d0b2b781e Route management bug fixes. 2016-09-13 16:25:48 -07:00
83abc00aae docs 2016-09-13 14:58:59 -07:00
5b6d27e659 Implement relay policy, and setting multicast limit to 0 now disables multicast on the network as would be expected. 2016-09-13 14:27:18 -07:00
ced8dfc639 Try a version of GitHub issue #385 (non-bifurcated default if not present) on Mac. This version adds the bifurcated routes always but also adds a device-specific non-bifurcated route. Will have to see if this still interferes with OSX route settings, since by definition device specific routes should not conflict with general routes. 2016-09-13 11:07:59 -07:00
8ef0e4bbaf Get rid of HELLO rate gate on path since its basically worthless. There are 65535 ports per IP. 2016-09-13 10:46:36 -07:00
0da9a9a3e0 Set trustEstablished in a few more places. 2016-09-13 10:33:03 -07:00
cba37c6107 Add a few more rate limit gates for anti-DOS hardening. 2016-09-13 10:13:23 -07:00
ea1da3321a Rate gate requests for COM. 2016-09-12 15:19:21 -07:00
34b146f28b Back out of GitHub issue #385 for now and maybe for this release. Would be nice but it is non-critical and rules are the priority. Current implementation bangs heads with OSX route assignment on WiFi join, etc. 2016-09-12 14:56:18 -07:00
fb46a546db Just always do route bifurcation on Linux for now... basically the old behavior. 2016-09-09 12:53:44 -07:00
debc4c45ee Set trust established flag in MULTICAST_GATHER. 2016-09-09 11:45:34 -07:00
ab9afbc749 (1) Public networks now get COMs even though they do not gate with them since they will need them to push auth for multicast stuff, (2) added a bunch of rate limit circuit breakers for anti-DOS, (3) cleanup. 2016-09-09 11:36:10 -07:00
ef87069957 Fix gating of multicast GATHER replies since these can come from upstream, etc., and fix an issue with sending ECHO to recheck marginal paths. 2016-09-09 09:32:00 -07:00
0d4109a9f1 More refactoring to clean up code, and add a gate function to make sure we do not handle OK packets we did not expect. This hardens up a few potential edge cases around security, since such messages might be used to e.g. pollute a cache and DOS under certain conditions. 2016-09-09 08:43:58 -07:00
16df2c3363 Clean up handling of COMs, network access control, and fix a backward compatiblity issue. 2016-09-08 19:48:05 -07:00
5ed5b22525 Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2016-09-08 17:45:46 -07:00
dccca7df1a another couple of missing semicolons 2016-09-08 17:45:40 -07:00
1f6b13b7fd Fix bug causing null addresses to get in memberships[] hash. 2016-09-08 16:09:56 -07:00
d23ade879b Do not bifurcate if not replacing an existing route. (Still need to tie up Linux and Windows.) 2016-09-08 15:42:46 -07:00
8afdb0aa65 GitHub issue #346 2016-09-07 17:07:06 -07:00
daf8a66ced More correct and efficient to initialize member relationship push stuff lazily when member is learned. 2016-09-07 15:47:20 -07:00
20278bb9e4 Also send MULTICAST_LIKEs to controllers. 2016-09-07 15:34:34 -07:00
c7a4da3dd3 Turns out we do not need to pass network to receive(). 2016-09-07 15:24:53 -07:00
1908aa55f5 Refactor MULTICAST_LIKE pushing to eliminate redundant and unnecessary pushes and simplify code. 2016-09-07 15:15:52 -07:00
1c08f5e857 Tweak some expire times. 2016-09-07 12:25:19 -07:00
c9ee8612e4 Credential TTL (tags/capabilities) should be credential time max delta, since we could get pushed one that is newer. 2016-09-07 12:12:52 -07:00
a7d988745b Use ECHO instead of HELLO where possible. 2016-09-07 12:01:03 -07:00
a9f404aac3 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-09-07 11:20:47 -07:00
ff9f8b1c2b Typo fix. 2016-09-07 11:15:36 -07:00
b5c86b6ba4 Bunch more path refactoring. Peers no longer forget paths, but do not normally use expired paths. Expired paths might still be tried if nothing else is reachable. 2016-09-07 11:13:17 -07:00
407ad659ea Reflect changes to strut ZT_PeerPhysicalPath 2016-09-06 17:59:01 -07:00
f2d2df2b11 Cluster build fix. 2016-09-06 15:06:07 -07:00
48a374c82c (1) fix crazy bug introduced in doRENDEZVOUS(), (2) reclaim Paths after paths[] condense, (3) fix an edge case around symmetric NAT and external IP change detection. 2016-09-06 14:05:58 -07:00
deee39343e Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-09-06 12:45:37 -07:00
8a2e8bd585 Rework how paths are set as remote cluster preferred. The code is now clearer and cluster preference indications are now very sticky as they should be. 2016-09-06 12:45:28 -07:00
43780742b0 comments, docs 2016-09-06 11:10:04 -07:00
68a966fa55 Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2016-09-05 16:19:10 -07:00
43b3ec4b1a forgot a semicolon in a JNI java type specifier. 2016-09-05 16:19:04 -07:00
dcf1f70868 re-adding file 2016-09-05 16:12:29 -07:00
598ca48ed6 Attempting to fix VirtualNetworkRoute having 2 entries in git. Yay non case sensitive filesystems 2016-09-05 16:12:06 -07:00
3790ebe77a Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-09-05 15:49:07 -07:00
d7f2287ce9 More tweaks to path behavior. 2016-09-05 15:47:22 -07:00
9f717e79ea Fixing filename again.... 2016-09-05 14:42:36 -07:00
26d43c9b06 fix capitalization on file 2016-09-05 14:27:44 -07:00
8682c90c7d ensure routes are also equal when checking for equality on VirtualNetworkConfig objects 2016-09-05 14:10:07 -07:00
d063f583ee Added VirtualNetworkRoute class and added it to VirtualNetworkConfig 2016-09-05 13:52:29 -07:00
eebcf08084 Tweaks to new Path code for dual-stack operation, and other fixes. 2016-09-03 15:39:05 -07:00
01aa469591 Remove debug line. 2016-09-02 14:26:04 -07:00
4992ac2d9f Cluster sub-optimal is in fact necessary... 2016-09-02 14:20:55 -07:00
412979ba8f Attempt to reactivate dead paths. 2016-09-02 13:55:33 -07:00
4f8253dcdb Tweaks to path handling... 2016-09-02 13:33:56 -07:00
4931e44998 Implement "weak pointer" behavior on Topology Path canonicalization hash table. 2016-09-02 12:34:02 -07:00
d1101441b3 Tweak some timings. 2016-09-02 11:54:59 -07:00
e8f6b4b5d3 Rest of big Path canonicalization refactor. 2016-09-02 11:51:33 -07:00
94263ffcc1 Added error handling messages 2016-09-01 19:02:27 -07:00
a3bdae9735 Work in progress: Path canonicalization refactor. 2016-09-01 15:43:07 -07:00
d5e6f59004 . 2016-09-01 13:45:32 -07:00
22271f2a49 Cleanup. 2016-09-01 13:36:41 -07:00
8b6d23b9f6 Optimize filter code a bit, and add a network-level setting for what should happen if an unsupported or unknown MATCH is encountered in a rules table. 2016-09-01 12:07:17 -07:00
25056de5d3 Also need to send credentials when TEEing and REDIRECTing. 2016-08-31 17:56:59 -07:00
994b25af4e Simplify some logic. 2016-08-31 17:45:55 -07:00
74afef8eb1 Think through and refine a few things in rules, especially edge case TEE and REDIRECT behavior and semantics. 2016-08-31 16:50:22 -07:00
54489a7f61 rename SAMENESS to DIFFERENCE which is less confusing 2016-08-31 14:14:58 -07:00
8e3004591b Add overlooked MATCH_ICMP to rule set. 2016-08-31 14:01:15 -07:00
2ff2a8fd9a Cluster build fixes and warning elimination. 2016-08-31 09:38:21 -07:00
c2a01f6db4 Added a path for error handling when fetching data from the ZeroTier daemon
Still need to wire up error messages to the user.
2016-08-30 20:28:52 -07:00
7a00036954 Tweak log length to fit JSON for members within two 4096-kb blocks. 2016-08-29 18:10:02 -07:00
914c42537c Type fixes. 2016-08-29 17:48:36 -07:00
cb63babac4 Debug output fixes. 2016-08-29 16:38:10 -07:00
ac1c127b68 Debug output fixes. 2016-08-29 16:24:08 -07:00
cb82193333 Debug output fixes. 2016-08-29 16:19:26 -07:00
f0636ffd4a EXT_FRAME messages should always be accepted if we are the destination for a matching TEE or REDIRECT rule. 2016-08-29 15:54:06 -07:00
51a420671f Make rules engine debug a bit more verbose. 2016-08-29 15:17:34 -07:00
77c2bf3ad9 Kill dead field from network JSON. 2016-08-29 14:47:19 -07:00
7223685b96 . 2016-08-26 15:30:20 -07:00
e7dff1c785 Change logic a little for self-as-destination in TEE and REDIRECT. 2016-08-26 15:28:31 -07:00
a5383d83d8 Do not TEE or REDIRECT to self. 2016-08-26 15:25:00 -07:00
a3c7627acf Push more than one packet for credentials if we happen to have a whole lot. Should not happen often but might if a member has tons of tags. 2016-08-26 14:43:16 -07:00
297b1b4258 Another tiny API bug fix. 2016-08-26 14:16:55 -07:00
35ac995d05 Fix setting of v6AssignMode in controller. 2016-08-26 14:04:27 -07:00
6bd5aba4fa fix frame size range bug 2016-08-26 13:26:26 -07:00
fb5217761b Add missing names in filter debug code. 2016-08-26 13:20:55 -07:00
90f3e94565 Always output trace info when debugging rules. 2016-08-26 12:21:44 -07:00
ded5a53a6c Documentation updates, add rules engine revision to network config request meta-data. 2016-08-26 10:38:43 -07:00
d637988ccf Fix chicken or egg problem in tags, and better filter debug instrumentation. 2016-08-25 18:21:20 -07:00
858e8c5217 one more... 2016-08-25 16:28:54 -07:00
df1ce856c9 A little bit more controller code cleanup. 2016-08-25 16:25:28 -07:00
b5e0d014ab Controller bug fixes 2016-08-25 16:08:40 -07:00
5eaf397a94 Add a debug log feature in the filter, which only works if enabled in Network.cpp. 2016-08-25 13:31:23 -07:00
1814016eb7 Add daemon thread to controller and move network member cache refreshes there. 2016-08-25 11:26:45 -07:00
6ecb42b031 docs and null check in controller code 2016-08-25 10:46:03 -07:00
584228b2b5 Dead code removal, and get rid of reliable() because we will no longer make that distinction. 2016-08-24 17:56:35 -07:00
cd3683f2ba Fix a missing receive(). 2016-08-24 17:50:51 -07:00
347ebcd899 Set trust flag in network controllers if remote query is accepted to allow NATed network controllers to better traverse. 2016-08-24 17:48:13 -07:00
e52c2c41ec Add a circuit breaker to prevent too many credentials from being stored per member. 2016-08-24 17:24:35 -07:00
95ff057e04 Increase rule limits a little since chunking in netconf can accomodate this. 2016-08-24 17:16:26 -07:00
60bc291414 Add noAutoAssignIps for member of networks. 2016-08-24 17:05:43 -07:00
c476285bd6 Harden PUSH_DIRECT_PATHS and simplify things by only doing it on receive when hops>0 and trust has been established. 2016-08-24 16:16:39 -07:00
63e8ad4cc3 TRACE stuff. 2016-08-24 15:45:37 -07:00
2cdda38dc4 It basically works... at least on current controllers. 2016-08-24 15:26:18 -07:00
ccea3d04d6 Push NETWORK_CONFIG_REFRESH on POSTs to /member/... in controller. 2016-08-24 14:28:16 -07:00
90bd3e07a0 Remove http-parser from RPM spec. 2016-08-24 13:53:24 -07:00
8e3463d47a Add length limit to TEE and REDIRECT, and completely factor out old C json-parser to eliminate a dependency. 2016-08-24 13:37:57 -07:00
8d594f8b53 cleanup 2016-08-23 16:05:10 -07:00
5f4df0c6a9 Controller cleanup and perf improvements. 2016-08-23 15:30:36 -07:00
0ee4d3554a Stub out USER_MESSAGE. 2016-08-23 14:38:20 -07:00
0a7a33ef8f Instantaneous blacklisting and credential revocation. 2016-08-23 13:46:36 -07:00
32fa061700 Compute credential TTL et al. 2016-08-23 13:02:59 -07:00
7036831203 Sign Dictionary in doNETWORK_CONFIG_REQUEST. 2016-08-23 11:57:56 -07:00
68b4ca9b31 Cleanup. 2016-08-23 11:52:10 -07:00
0dfc08b317 Tidy up a few minor protocol things, improve documentation in Packet.hpp. 2016-08-23 11:29:02 -07:00
77f7dcf40a Obsolete "test network" removal. 2016-08-23 09:39:38 -07:00
9a3c652a51 Get rid of expiration in Capability and Tag and move this to NetworkConfig so it can be set network-wide and reset if needed. Also add NetworkConfig field for this and centralize checking of credential time validity. 2016-08-22 18:06:46 -07:00
6db47de25e Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2016-08-22 14:26:17 -07:00
b0d888d235 Signing of Capability and Tag objects. 2016-08-22 14:25:59 -07:00
af53e63ae2 Kube tut update 2016-08-22 11:33:10 -07:00
35d5ed9c2b version bump i forgot to commit 2016-08-19 18:13:00 -07:00
9827b8991d Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2016-08-18 18:18:56 -07:00
4dce71879f . 2016-08-18 18:18:50 -07:00
727fb197d8 kube tutorial update 2016-08-18 15:32:26 -07:00
c2f10a52de zt-kubernetes tutorial update 2016-08-18 15:16:24 -07:00
cf2ec0797e zt-kubernetes tutorial update 2016-08-18 15:15:38 -07:00
6443049f86 Merge branch 'edge' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into edge 2016-08-18 15:13:49 -07:00
44bee4e3ff zt-kubernetes tutorial update 2016-08-18 15:13:43 -07:00
212a5af9a5 Capabilities and tags in POST JSON. 2016-08-18 14:37:56 -07:00
1cadbfb4d1 Little fixes. 2016-08-18 13:47:02 -07:00
4729fec2eb Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2016-08-18 13:00:00 -07:00
f119c4a456 Cache network members for performance, add network non-persisted fields. 2016-08-18 12:59:48 -07:00
3e261fb999 updated entrypoint 2016-08-17 18:33:49 -07:00
0fd3afe2c8 examples files for kube int 2016-08-17 18:03:34 -07:00
9dc507c9ae examples files for kube int 2016-08-17 17:52:19 -07:00
5d37eabb59 Merge branch 'edge' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into edge 2016-08-17 17:43:44 -07:00
169664ffc2 examples files for kube int 2016-08-17 17:43:34 -07:00
4c0a7c0fb2 Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2016-08-17 17:37:48 -07:00
faa9a06bf5 Controller fixes... 2016-08-17 17:37:37 -07:00
183434d30e examples files for kube int 2016-08-17 17:29:14 -07:00
c84ce76c59 examples files for kube int 2016-08-17 17:22:05 -07:00
1833c61556 kubernetes tutorial update 2016-08-17 15:35:00 -07:00
ba78676ace kubernetes tutorial update 2016-08-17 15:28:48 -07:00
0d37b7b665 zt-kubernetes tutorial outline 2016-08-17 15:12:48 -07:00
1254dece5b Linux build fixes, and build controller. 2016-08-17 14:19:29 -07:00
b7ebf6edbf Cleanup and log how member was authorized. 2016-08-17 13:54:32 -07:00
b72847d504 Finally implement network join auth tokens, at least at the protocol level. 2016-08-17 13:41:45 -07:00
168b86fdcd Controller docs and API fix. 2016-08-17 12:27:07 -07:00
a13f4d8353 We now always build the controller in ZeroTier One, at least for desktop and server targets. Also means that ZeroTier One now requires C++11. (Still keeping C++11 out of the core in node/ though.) 2016-08-17 10:42:32 -07:00
cc808cc2dd Rules parsing stuff. 2016-08-17 10:25:25 -07:00
ce001198d8 . 2016-08-16 16:57:45 -07:00
c0639ccd37 Just about ready to test. 2016-08-16 16:46:08 -07:00
58701c1ca8 . 2016-08-16 14:08:08 -07:00
402d99ea8d C++11 mode build fix. 2016-08-16 14:07:11 -07:00
b08ca49580 More controller work -- it builds! 2016-08-16 14:05:17 -07:00
bd15262e54 Bunch of rule JSON stuff. 2016-08-15 18:49:50 -07:00
3cb2e1197f . 2016-08-12 15:32:45 -07:00
7762cd680b fix json include path in cli 2016-08-12 11:30:50 -07:00
c30f74987f Starting refactor of controller... 2016-08-12 11:30:27 -07:00
628ef14d80 added more spacing at the bottom of each network info cell 2016-08-11 17:50:15 -07:00
bc48a097f8 add @2x versions of menu bar icon 2016-08-11 17:41:54 -07:00
dd21c8a577 Rev nlohmann/json 2016-08-10 17:27:46 -07:00
7d906df805 Better instrumentation for filter, and filter bug fixes. 2016-08-10 14:27:52 -07:00
d166b494ee Rule parse fix. 2016-08-10 13:41:22 -07:00
81959f14af Refactor and redesign symmetric NAT predictor. This is cleaner. 2016-08-10 10:28:54 -07:00
2300f3c92b bump build number 2016-08-09 20:04:33 -07:00
73fd934fec * Fixed menu icon size
* Added icon for dark mode
* Added detection for interface mode changing from light to dark and adjusting the icon accordingly
2016-08-09 20:02:12 -07:00
a7b635a980 add border around About web view. added padding to text div in the about page 2016-08-09 19:03:09 -07:00
91b8d6f34f [pasteboard declareTypes] needs to be called before every time you set a string to the pasteboard. 2016-08-09 18:03:48 -07:00
c9d7845fea Minor bug fix and some instrumentation stuff for testing. 2016-08-09 17:00:01 -07:00
0b0cda2be4 ZT_TRACE fix. 2016-08-09 15:55:41 -07:00
e1310a764a More cleanup and removal of cruft due to obsolete network-specific relays (will be replaced with federation stuff). 2016-08-09 15:45:26 -07:00
dbf3e6c3c9 Dead code removal. 2016-08-09 15:01:46 -07:00
dee7f75f7e Minor cleanup. 2016-08-09 14:46:11 -07:00
774c7e0ea5 Put CONFIG_REFRESH back. 2016-08-09 13:52:08 -07:00
4d498b3765 Handling of multi-part chunked network configs on the inbound side. 2016-08-09 13:14:38 -07:00
bcd05fbdfa Chunking of network config replies. 2016-08-09 09:34:13 -07:00
2ba9343607 Encode and decode of tags and capabilities in NetworkConfig. 2016-08-09 08:32:42 -07:00
8ae07fb9c9 build number bump 2016-08-08 19:04:50 -07:00
13682bd919 Change Deployment Target to 10.7. Apparently going below 10.10 was only an issue with Swift 2016-08-08 19:02:09 -07:00
b5cab8afaa update build number 2016-08-08 17:46:01 -07:00
c15c9775bd explicitly link to WebKit framework 2016-08-08 17:45:52 -07:00
51cf49a24f cleanup 2016-08-08 17:40:22 -07:00
00fd9c3a15 It builds... almost ready to test some rules engine stuff. 2016-08-08 17:33:26 -07:00
8007ca56aa Refactor and tie-up of capabilities and tags and packet evaluation points. Some optimization is possible here but it is minor and we will make it work first. 2016-08-08 16:50:00 -07:00
8d7f851b4e Now translated. One minor crash to figure out. 2016-08-07 20:19:36 -07:00
5b13b282ed Replace JoinNetworkViewController with obj-c 2016-08-07 19:13:12 -07:00
d965768004 Replaced the network list with Obj-C 2016-08-07 18:19:47 -07:00
a91187e60e Convert NetworkMonitor to obj-c 2016-08-07 17:25:34 -07:00
179324e44a Replace Preferences view. Removed LaunchAtLoginController and replaced with simpler code 2016-08-07 16:34:54 -07:00
c6dba50e35 replace AboutViewController 2016-08-07 15:18:32 -07:00
b51d68a419 replace ServiceCom with objc class 2016-08-06 19:45:58 -07:00
a0db48571d Convert Network to OBJC 2016-08-06 18:50:50 -07:00
4d7f625aa1 . 2016-08-05 15:55:38 -07:00
e2f783ebbd . 2016-08-05 15:02:01 -07:00
7a12d8193b Replace NodeStatus object with Obj-C Class 2016-08-04 17:55:57 -07:00
4d9b74b171 . 2016-08-04 15:27:20 -07:00
37d139177d Integrate Filter into OutboundMulticast properly. 2016-08-04 13:01:14 -07:00
8a7753cfe3 Filter cleanup, prep for filter integration in a few places. 2016-08-04 12:35:25 -07:00
331382cf2f More cleanup and a tiny federation prep item. 2016-08-04 12:14:13 -07:00
98152d974a More cleanup and removal of DeferredPackets, will do the latter in a more elegant way. 2016-08-04 11:40:38 -07:00
56febbf2ba . 2016-08-04 10:39:28 -07:00
5cf410490e . 2016-08-04 10:18:33 -07:00
404a0bbddd ... 2016-08-04 09:51:15 -07:00
f057bb63cd More work on tags and capabilities. 2016-08-04 09:02:35 -07:00
7e6e56e2bc Bunch of work on pushing and replication of tags and capabilities, and protocol cleanup. 2016-08-03 18:04:08 -07:00
67cb03742e Add tag rules and split out rule serialize/deserialize so the code can be reused. 2016-08-03 14:12:38 -07:00
a08246ce5d update build number 2016-08-02 20:30:49 -07:00
f54d5e9e8f the quest for leaks is over.
Why a singleton doesn't leak, vs calling static methods on a class is beyond me
2016-08-02 20:30:09 -07:00
91940cbcf5 Kill network preferred relays -- this feature is gone (and was seldom used anyway) in favor of federation. 2016-08-02 14:40:26 -07:00
77bd8aacd1 merge cli from edge 2016-08-02 13:50:09 -07:00
ecc1324bb0 Rules engine work: capability based security model with tags and capabilities, and some cleanup across other places. 2016-08-02 13:36:17 -07:00
d3b0081447 Cleanup... 2016-07-28 12:09:58 -07:00
22e44c762b More rules engine work: key/value pair matching for microsegmentation. 2016-07-28 10:58:10 -07:00
78e5a00a68 Only poll the ZeroTier service when the menu or Network List are visible. Reduces CPU idle prevention by a a LOT 2016-07-26 20:31:06 -07:00
b9a4d138fc only update the network list view if it's visible 2016-07-26 20:05:33 -07:00
36a9aff283 Show "About" view on first run.
Still needs some work to show up in the right place
2016-07-26 20:04:59 -07:00
e1755e569e build number bump 2016-07-26 19:16:33 -07:00
ae374a78fc add some non Lorem Ipsum content to the about page 2016-07-26 19:15:12 -07:00
62befe006d Route clicked links in the web view to the default web browser 2016-07-26 18:21:39 -07:00
1e6e112806 Dockerfile for building zerotier/zerotier-containerized for CoreOS et al. 2016-07-26 17:08:09 -07:00
830250759c Fix for running under MUSL libc (e.g. Alpine Linux) 2016-07-26 16:39:02 -07:00
13100b245c Fix for running under MUSL libc (e.g. Alpine Linux) 2016-07-26 16:36:20 -07:00
4929be08f7 Cleanup and stub out new object transfer messages. 2016-07-26 12:33:51 -07:00
088bbd1c08 Filter fixes. 2016-07-25 17:03:26 -07:00
7404eb46c4 Integration of Filter into inbound and outbound packet path. 2016-07-25 16:51:10 -07:00
eaf6d6c938 Basic L2/L3 filter for rules engine (not integrated yet) and some cleanup. 2016-07-25 15:52:16 -07:00
02d288e9d4 Merge branch 'dev' of Y:/ZeroTier/ZeroTierOne into dev 2016-07-21 20:45:17 -07:00
6f15c4a561 1.1.14 Windows version stuff 2016-07-21 20:45:05 -07:00
ae491c277e VERSION 1.1.14: bug fixes!
This version fixes two bugs: a possible infinite loop when using network-specific relays,
and a bug causing a crash on Android.
2016-07-21 20:29:15 -07:00
ebe7e15475 sys/sysctl.h is required on OSX and probably other BSD 2016-07-21 19:21:51 -07:00
dced40361b Bump version in most places to 1.1.14 2016-07-21 19:15:03 -07:00
faf864b8a2 Merge branch 'master' into dev 2016-07-21 19:07:50 -07:00
8a23d764de Merge branch 'master' of http://10.6.6.2/zerotier/ZeroTierOne 2016-07-21 19:06:31 -07:00
f21af60a13 Init trusted path count to zero. Meh. 2016-07-21 19:06:18 -07:00
10564d8e14 Init trusted path count to zero. Meh. 2016-07-21 19:05:14 -07:00
095aef5f30 Merge pull request #348 from the-maldridge/remove-sysctl
Remove explicit sys/sysctl.h includes
2016-07-21 15:16:22 -07:00
145ac31c8a Merge pull request #362 from mwarning/space-between-literal-and-string-macro
C++11 requires a space between literal and string macro
2016-07-21 15:16:05 -07:00
b7a5f783ba Merge pull request #364 from mwarning/fortify-source-needs-optimization-flag
fix _FORTIFY_SOURCE warning
2016-07-21 15:15:42 -07:00
3d25a2ea02 Merge pull request #363 from mwarning/move-declaration-out-of-scope
move sourceAddress out of scope
2016-07-21 15:15:27 -07:00
76b785c90f fix _FORTIFY_SOURCE warning
warning: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Wcpp]
2016-07-21 23:08:58 +02:00
b3073f44a2 move sourceAddress out of scope
sourceAddress is used in the catch block
2016-07-21 23:03:04 +02:00
bcdd158ad8 C++11 requires a space between literal and string macro 2016-07-21 22:41:02 +02:00
693ac4e86c add web view and placeholder about page with ZT logo and lorem ipsum 2016-07-19 19:12:41 -07:00
6320879fe1 Fix for GitHub issue #358 and bump version to 1.1.13 (dev) 2016-07-18 10:56:33 -07:00
2afe3d89d0 Merge branch 'master' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne 2016-07-14 19:29:10 -07:00
8a15b42dab switch to GCC for Android 2016-07-14 19:29:00 -07:00
4b9e84f42f docs 2016-07-14 17:47:32 -07:00
ba87640e4c Release howto for internal use. 2016-07-14 17:46:22 -07:00
a5400e0162 Windows installer now installs a batch file and Path variable settings to make zerotier-cli work in the Windows CLI (1.1.12 MSI updated on web for this too) and a Chocolatey packaging job for ZeroTier One. 2016-07-14 17:09:40 -07:00
bdc3b0834b VERSION 1.1.12: yet another minor fix to managed routes
This version just contains another minor fix to managed routes for
GitHub issue #352.
2016-07-12 15:09:44 -07:00
1a285e5342 Version bump again. Slack has updated their client twice in one day so its okay. 2016-07-12 15:03:06 -07:00
8912515011 Fix to fix to GitHub issue #352 2016-07-12 15:00:30 -07:00
6ec3464ee9 JSON fix for trusted paths (does not affect normal op) 2016-07-12 13:58:15 -07:00
4b5e43ab0d VERSION 1.1.10: minor managed route fixes
Version 1.1.10 is a minor bug fix release. It fixes the following two issues:

 * Routes are no longer added 'via' IP addresses of the current node's ZT interface.
 * IPv6 default route is now fixed on Mac.
 * IP addresses are now deleted before new ones are added to allow changes to netmask
   on Mac and some other platforms.

This version also quietly introduces a feature called trusted paths. We'll be
documenting this in our community section soon. This is an experimental feature
for in-LAN SDN use.
2016-07-12 13:37:38 -07:00
a6d9ae3a36 Man page fix on fedora-22 2016-07-12 13:30:15 -07:00
34e7c8652a Version bumps. 2016-07-12 12:30:35 -07:00
1861f67fa7 Version bump to 1.1.10 2016-07-12 12:21:36 -07:00
b5e9d3f6f4 Rename file to be intuitive. 2016-07-12 11:41:19 -07:00
9785fde32a Trusted paths work! 2016-07-12 11:40:45 -07:00
9657675755 Plumbing through trusted path stuff to OneService. 2016-07-12 11:30:22 -07:00
5d7174b162 Go back to bundling libhttp-parser on Debian, at least for our own internally-created packages, since this library has a massively unstable ABI and causes nothing but problems if referenced from the distro. 2016-07-12 10:11:00 -07:00
cdb5ceac7b Should remove old IPs before trying to add new ones. 2016-07-12 09:43:12 -07:00
23391ff9da More OSX IPv6 fixes. 2016-07-12 09:22:04 -07:00
3f2b21ce71 Do not shadow our own route twice on Mac if there is no default route. (Fix for issue found during IPv6 default route override testing.) 2016-07-12 08:55:57 -07:00
6535730255 GitHub issue #352 2016-07-12 08:42:36 -07:00
765082fdb6 Trusted path support, and version bump to 1.1.9 2016-07-12 08:29:50 -07:00
aff62e9e10 Version bump in Mac pkg. 2016-07-08 14:28:34 -07:00
2d598dd433 Automatically add symlinks to redhat distro. 2016-07-08 14:25:25 -07:00
f86e9b7df2 Bump version in RPM spec and DEB. 2016-07-08 13:57:16 -07:00
898d889537 VERSION 1.1.8: minor Linux bug fix, controller fixes, controller doc improvements
1.1.8 is a very minor update. It contains a small fix to IP address management
on Linux but other than that there are no changes to the regular ZeroTier One
code.

The 1.1.8 controller contains several fixes and improvements:

 * Network authorizedMemberCount works again
 * Managed IP addresses are pushed as long as they fall within a LAN-local managed
   route. The v4AssignMode and v6AssignMode settings only control automatic IP
   assignment from pools. In previous versions v4AssignMode had to be on for IPs
   to be pushed at all, making it impossible to just manually assign IPs.
 * IPv6 now has an auto-assign mode ('zt' to match V4) that can work alongside the
   special RFC4193 and 6PLANE modes (though it is not NDP emulated). If this is
   enabled IPv6 addresses will be auto-assigned from IPv6 ranges in the assignment
   pool list.
 * Controller documentation is MUCH better! See controller/README.md for actual
   useful information!

Finally 1.1.8 has several improvements to linux-build-farm including Debian wheezy
support.
2016-07-08 13:53:37 -07:00
0e2964261f docs 2016-07-08 13:42:04 -07:00
ffe7d8d024 docs 2016-07-08 13:40:21 -07:00
c01ebbcbde docs 2016-07-08 13:38:47 -07:00
a6e5914aa7 docs 2016-07-08 13:37:51 -07:00
6d8de214eb Docs and controller API version 2016-07-08 13:10:02 -07:00
5bf3c54cd3 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-07-08 10:08:06 -07:00
959b64777f 1.1.8 bump 2016-07-08 10:08:01 -07:00
be0af135bc update JNI code for 1.1.6 2016-07-07 20:07:07 -07:00
2d7c58540f v6AssignMode bug fix 2016-07-07 17:05:12 -07:00
951038a304 Ignore /bits in IP assignments and just copy it from the corresponding LAN-local route. Having each managed IP assignment have its own bits field was just a source of user error and poor UX and was completely worthless. 2016-07-07 16:28:43 -07:00
912ee199ed Tiny fixes to LinuxEthernetTap 2016-07-07 16:10:36 -07:00
b9329dc49a Fix to IPv6 picking for small ranges. 2016-07-07 15:55:40 -07:00
6e08e1ae97 A few controller changes: (1) assign managed IPs that are assigned regardless of "assign mode" which now only controls auto-assignment or special addressing, (2) support proper issuing of managed IPv6 IPs, (3) support IPv6 auto-assign ranges 2016-07-07 15:42:10 -07:00
dd1d2b4d00 GitHub issue #343 -- fix authorizedMemberCount 2016-07-07 14:49:54 -07:00
f6d53cc568 . 2016-07-06 18:12:31 -07:00
b6cc815447 . 2016-07-06 18:07:42 -07:00
ddbbb8afec Wheezy stuff 2016-07-06 18:04:13 -07:00
a8a497c621 Debian wheezy work. 2016-07-06 17:59:08 -07:00
1a89694980 Remove explicit sys/sysctl.h includes
Explicitly including sys/sysctl.h breaks the ability to build
against muslc.
2016-07-06 02:38:23 -05:00
5c03416e84 Actually remove http-parser-devel 2016-07-05 14:28:58 -07:00
b732c445b8 Xenial fix (clang broken) and bundle http-parser even in Fedora because it is so version sensitive. 2016-07-05 14:09:33 -07:00
97ec88e346 . 2016-07-05 12:30:58 -07:00
192bc4fcf0 More repo work. 2016-07-05 10:54:07 -07:00
0e6065e3d5 another build number bump 2016-06-30 21:25:14 -07:00
a156fec25a put node ID into the main menu.
Clicking on the menu item copies the node ID into the clipboard.
2016-06-30 21:24:45 -07:00
fe725f9995 fix a case where the "Allow Default" checkbox would be enabled when a network wasn't connected. 2016-06-30 20:35:32 -07:00
58207b30d1 now that the network details list uses the default background color of the pane its embedded in, we don't have to force to the "Light" theme, even if the user has selected the "dark" theme for the top menu bar. 2016-06-30 20:28:04 -07:00
f4192d7b9e added separator between items in the network detail list 2016-06-30 20:17:33 -07:00
e747692727 remove background from network details view 2016-06-30 20:07:22 -07:00
d786c5265f bump version number 2016-06-30 19:46:59 -07:00
ba0a45365c Work around for several strange corner cases in Automatic Reference Counting in Apple's runtime 2016-06-30 19:42:23 -07:00
fc4ea57a9c debian-stretch 2016-06-30 18:03:06 -07:00
751497a748 aptly script 2016-06-30 16:44:22 -07:00
c714e8baa6 Get rid of broken test code for controller so selftest build works with controller enabled. 2016-06-30 08:30:45 -07:00
2331a00555 Fedora-22 32-bit fix. 2016-06-29 18:53:31 -07:00
4218cd13d5 VERSION 1.1.6: route management, default route override, new IPv6 mode for Docker, and more!
(Retagged due to silly one-line bug and left over debug line... doh!)

Version 1.1.6 contains several significant improvements for use in complex network
environments along with some minor bug fixes and improvements to path stability and
dead path detection.

ROUTE MANAGEMENT AND FULL TUNNEL SUPPORT

1.1.6 is the first version of ZeroTier One to permit "full tunnel" (default route
override) operation on Linux, Mac, and Windows. This allows all Internet traffic
to be tunneled through ZeroTier while allowing ZeroTier peer-to-peer traffic to
continue to use the physical interface. 1.1.6 also brings route management support
and permissions settings for local networks to control whether networks are allowed
to modify the routing table or override default routing.

This is currently considered a beta/experimental feature and must be enabled via
the command line interface.

Route management and default route override requires support at the network controller.
When my.zerotier.com is updated and ready, we will post more information and testing
instructions at: https://www.zerotier.com/community

HIGHLY SCALABLE CONTAINER NETWORKING

1.1.6 also brings a new multicast-free (NDP emulated) IPv6 private addressing scheme
called "6plane." 6plane provides each host with a private IPv6 /80 and routes *all*
IPv6 traffic for this subnet to the host via transparent NDP emulation. This /80 can
then be assigned to Docker or other container/VM managers to assign a network-wide
IPv6 /128 to every container. Since NDP is emulated and multicast isn't needed, this
system can scale to millions of containers or more on a single backplane network with
a high degree of efficiency and reliability.

6plane also requires controller support. Look for it at my.zerotier.com once we have
upgraded our core infrastructure and web UIs.

(All hosts must be running 1.1.6 for 6plane to work properly. Other IPv6 addresses
or addressing modes are not affected and normal IPv6 NDP will continue to work
alongside 6plane in the same network.)

OTHER CHANGES

 * Upgraded bundled miniupnpc, libnatpmp, and http-parser.
 * New Debian and RPM packaging that is closer to compliance with distribution
   guidelines, and a new Dockerized Linux package build system in linux-build-farm/
   that can build every package on actual images of the correct distribution.
 * Improvements to dead path detection.
 * IPv6 now uses keepalive because a significant number of stateful IPv6 edge
   routers have very short timeouts (30 seconds or less!).
 * Significant performance improvements to network controllers under high load.
 * Enable -fstack-protector-strong for better stack canary (security) support
   in binaries. Note that this may require newer gcc/g++ or clang.

COMING SOON

The next version of ZeroTier One should have a new Mac UI. It's a system tray app
that looks and behaves a lot like the Mac WiFi pulldown menu. We'll also be adding
GUI support for default route and route management options and other new features.

Shortly after that we plan on adding full OpenFlow-like SDN rules engine support
to the ZeroTier core, making our planetary Ethernet switch a fully manageable smart
switch and enabling sophisticated security and flow rule management.
2016-06-29 18:16:58 -07:00
030dfde38e Unused printf removal while we are at it. 2016-06-29 18:14:49 -07:00
901e2fd692 Fix silly one-liner bug... retag time. 2016-06-29 18:12:35 -07:00
c03ca3c278 VERSION 1.1.6: route management, default route override, new IPv6 mode for Docker, and more!
Version 1.1.6 contains several significant improvements for use in complex network
environments along with some minor bug fixes and improvements to path stability and
dead path detection.

ROUTE MANAGEMENT AND FULL TUNNEL SUPPORT

1.1.6 is the first version of ZeroTier One to permit "full tunnel" (default route
override) operation on Linux, Mac, and Windows. This allows all Internet traffic
to be tunneled through ZeroTier while allowing ZeroTier peer-to-peer traffic to
continue to use the physical interface. 1.1.6 also brings route management support
and permissions settings for local networks to control whether networks are allowed
to modify the routing table or override default routing.

This is currently considered a beta/experimental feature and must be enabled via
the command line interface.

Route management and default route override requires support at the network controller.
When my.zerotier.com is updated and ready, we will post more information and testing
instructions at: https://www.zerotier.com/community

HIGHLY SCALABLE CONTAINER NETWORKING

1.1.6 also brings a new multicast-free (NDP emulated) IPv6 private addressing scheme
called "6plane." 6plane provides each host with a private IPv6 /80 and routes *all*
IPv6 traffic for this subnet to the host via transparent NDP emulation. This /80 can
then be assigned to Docker or other container/VM managers to assign a network-wide
IPv6 /128 to every container. Since NDP is emulated and multicast isn't needed, this
system can scale to millions of containers or more on a single backplane network with
a high degree of efficiency and reliability.

6plane also requires controller support. Look for it at my.zerotier.com once we have
upgraded our core infrastructure and web UIs.

(All hosts must be running 1.1.6 for 6plane to work properly. Other IPv6 addresses
or addressing modes are not affected and normal IPv6 NDP will continue to work
alongside 6plane in the same network.)

OTHER CHANGES

 * Upgraded bundled miniupnpc, libnatpmp, and http-parser.
 * New Debian and RPM packaging that is closer to compliance with distribution
   guidelines, and a new Dockerized Linux package build system in linux-build-farm/
   that can build every package on actual images of the correct distribution.
 * Improvements to dead path detection.
 * IPv6 now uses keepalive because a significant number of stateful IPv6 edge
   routers have very short timeouts (30 seconds or less!).
 * Significant performance improvements to network controllers under high load.
 * Enable -fstack-protector-strong for better stack canary (security) support
   in binaries. Note that this may require newer gcc/g++ or clang.

COMING SOON

The next version of ZeroTier One should have a new Mac UI. It's a system tray app
that looks and behaves a lot like the Mac WiFi pulldown menu. We'll also be adding
GUI support for default route and route management options and other new features.

Shortly after that we plan on adding full OpenFlow-like SDN rules engine support
to the ZeroTier core, making our planetary Ethernet switch a fully manageable smart
switch and enabling sophisticated security and flow rule management.
2016-06-29 15:53:46 -07:00
af2268ebd7 docs 2016-06-29 15:33:18 -07:00
b9876d1809 docs 2016-06-29 15:30:49 -07:00
e64909cdcd docs 2016-06-29 15:24:45 -07:00
ce2ad69e5f Get rid of aptly script. 2016-06-29 14:44:29 -07:00
56fb08621e amazon-2016.03 docker image 2016-06-29 14:35:53 -07:00
4457c8218d Auto-detect miniupnpc 2.0 and use it on Linux if present. 2016-06-29 13:27:10 -07:00
c862f199e3 Windows: ship it! 2016-06-29 13:22:04 -07:00
7918b26f65 Hack settings into old CLI. 2016-06-29 12:22:37 -07:00
df00d3b046 Going to have to continue to use the old MAC web-container-based UI on Macs prior to 10.10 even when the new UI comes out, and the new UI is not ready yet anyway, so resurrect this. 2016-06-29 12:00:16 -07:00
19735e7050 Revert backgrounding of controller requests hack. Controller code is not really parallel anyway and we fixed the perf problem. 2016-06-29 11:43:22 -07:00
bb63646682 Fix broken SQL in controller. 2016-06-29 11:37:28 -07:00
b4fcf2ee60 Fix a valgrind warning. 2016-06-29 11:11:16 -07:00
d9eacd1616 Controller fixes... 2016-06-29 17:02:03 +00:00
5309c7e082 Merge branch 'dev' of https://github.com/zerotier/ZeroTierOne into dev 2016-06-29 16:47:57 +00:00
dbe57742e6 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-06-29 09:45:05 -07:00
928c625e2c docs 2016-06-29 09:45:02 -07:00
1e00603241 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-06-28 16:09:41 -07:00
f6442f2752 fedora-22 2016-06-28 16:09:36 -07:00
7b7ab823b0 Fix getPeer(self) bug if I am the controller. 2016-06-28 22:49:01 +00:00
0410fd4824 Refactor recent member request history to fix performance problem in controller. 2016-06-28 12:44:47 -07:00
02fa32422a Dockerfile ordering 2016-06-27 20:07:35 -07:00
decb4261d4 wire up control to launch at startup in preferences 2016-06-27 19:14:15 -07:00
b0971e3a01 setup launch at login on first start 2016-06-27 19:04:55 -07:00
12037961ff small perf improvement in sqlite db. 2016-06-27 18:48:02 -07:00
8c572dead1 Query optimization. 2016-06-27 18:28:18 -07:00
583cd25506 slightly resize icons 2016-06-27 18:05:17 -07:00
1beacc8c32 wire up network delete again 2016-06-27 17:54:54 -07:00
3ddfebe742 dead code removal 2016-06-27 17:15:39 -07:00
972bbb7e06 Allow further concurrency on network controller. 2016-06-27 17:14:47 -07:00
45f315e603 Defer NETWORK_CONFIG_REQUEST packets and allow multithreaded processing. 2016-06-27 17:09:04 -07:00
b9e86103cf Docker build farm seems to work! 2016-06-27 16:38:08 -07:00
0588589d57 . 2016-06-27 16:21:55 -07:00
4d30f60bbe . 2016-06-27 16:12:17 -07:00
d58dcf29cc For now go back to bundling http-parser etc. in our official RPM builds since this introduces an EPEL dependency for CentOS which would only make sense if we are actually in EPEL. Probably will eventually have two spec files: one for official and one for our own. 2016-06-27 15:46:54 -07:00
809457599a CentOS7 fixes. 2016-06-27 15:21:24 -07:00
2d19fb7f8c More RPM fixes. 2016-06-27 15:08:51 -07:00
2c9401ed74 CentOS6 fix. 2016-06-27 14:56:40 -07:00
af23596c34 Put everything in /usr/sbin on Linux. 2016-06-27 14:45:38 -07:00
233945e60f More Dockerfile fixes, and do not use "ln -r" since it is not supported on older Linux distributions. 2016-06-27 14:36:58 -07:00
147f735333 More build fixes. 2016-06-27 14:21:54 -07:00
8de5b2beda RPM build fixes -- use RPM cflags, spec fixes, etc. 2016-06-27 09:25:34 -07:00
b02c3dfe8d Debian dependency for iproute2 2016-06-27 08:48:09 -07:00
c5d3895313 ZeroTier One requires /sbin/ip (RPM-based distros) 2016-06-27 08:47:09 -07:00
9f880d07ab build number change 2016-06-26 18:21:26 -07:00
3fc11e2278 misc bug fixes related to default routes 2016-06-26 18:18:59 -07:00
1756e8b0f2 Wire up checkboxes for allowGlobal, allowDefault, allowManaged to set the proper state in zerotier daemon
checkboxes are disabled if the network is not currently connected.
2016-06-26 17:33:46 -07:00
d57e343245 add UI elements in network details for allowDefault, allowGlobal, allowManaged 2016-06-26 17:21:45 -07:00
7e17a2072c add allowManaged, allowGlobal, allowDefault to Network object 2016-06-26 16:41:52 -07:00
9c94d6527a add allowGlobal, allowDefault, allowManaged options to joining a network 2016-06-26 16:11:30 -07:00
d20bcdae12 CentOS 6 Docker build. 2016-06-25 16:27:28 -07:00
81cd68b60d . 2016-06-25 14:07:02 -07:00
0582b3daba . 2016-06-25 14:06:40 -07:00
af0a205594 Build and spec file updates for CentOS6 2016-06-25 14:04:08 -07:00
06e2e8119e Script to create Debian repos (requires aptly) 2016-06-24 16:23:10 -07:00
5da4fd2aef Added "..." to menu items to signify it pops up in a window 2016-06-24 15:24:29 -07:00
e621058cfd build number 5 2016-06-24 15:24:03 -07:00
8b78f19335 More build targets. 2016-06-24 14:57:20 -07:00
9784393b15 More Linux Docker build farm targets. 2016-06-24 14:45:09 -07:00
65da797112 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-06-24 14:19:01 -07:00
75fe981b9d Bump version. 2016-06-24 14:18:28 -07:00
caaf33e4cf Bump version. 2016-06-24 10:20:35 -07:00
d642db6f66 Changes for Debian packaging to prep for 1.1.6 interim. 2016-06-24 10:19:41 -07:00
3740b83f63 Don't back up sqlite db if it hasn't changed to prevent constant thrashing on inactive controllers. 2016-06-24 06:53:23 -07:00
90cdef8400 Forgot NDP emulation flag. 2016-06-24 06:43:23 -07:00
ee649ae69a Add 6plane assignment support to network controller, and cleanup. 2016-06-24 06:40:50 -07:00
20d155e630 . 2016-06-24 05:21:25 -07:00
be5996daca Cleanup of 6plane stuff. 2016-06-24 04:54:05 -07:00
38dfebad8c IPv6 NDP emulation flag in NetworkConfig, and implement Docker-friendly
(and other host friendly) IPv6 /80 magic subnetting to allow massive
multicast-free NDP emulated IPv6 networks where each host can have a
/48 worth of IPv6 IPs for internal containers, VMs, etc.

Alan Kay, thou art avenged.

https://ivanovivan.wordpress.com/2010/09/13/alan-kay-quotes/
2016-06-23 22:41:14 -07:00
f2e2632ae7 Added About view
also not yet populated
2016-06-23 20:22:03 -07:00
35d1736c97 add preferences view
not populated yet
2016-06-23 20:04:57 -07:00
3c534abc99 "Show Networks" -> "Network Details" 2016-06-23 19:48:48 -07:00
c3deedd6fd Fix menu bar icon. Add app icon. 2016-06-23 19:44:00 -07:00
a5a05e454e cli work... 2016-06-23 17:00:33 -07:00
32d9850263 More new CLI work. 2016-06-23 12:37:15 -07:00
a5ea8cc5cb . 2016-06-22 17:56:36 -07:00
0ad6b4105a Outline of new CLI with ability to control controllers/central as well as service. 2016-06-22 17:54:07 -07:00
b256111a17 misc cleanup 2016-06-21 20:02:18 -07:00
b5a90a437b update build number 2016-06-21 19:45:08 -07:00
6d114b7480 dynamically generate the menu so that networks are listed
can join/leave networks directly from the menu
2016-06-21 19:44:59 -07:00
f765597526 Add network local.conf stuff to save network permission settings and wire it all through via the JSON API. Default route and route management stuff just about done. 2016-06-21 16:52:49 -07:00
8ca4f22f1d cleanup 2016-06-21 15:53:38 -07:00
674b84d908 Plumbing for network setting control, and GitHub issue #330 2016-06-21 14:58:30 -07:00
e2ca239be0 Comment cleanup. 2016-06-21 14:38:15 -07:00
4f237687ce Route management now works on Windows, including default route override! 1.1.6 very close! 2016-06-21 13:54:03 -07:00
5b2d2efb45 Windows builds again. And there was much rejoicing. 2016-06-21 12:55:43 -07:00
82473c85e0 Default route override and route management in general now works in Linux. 2016-06-21 12:32:58 -07:00
51ced0cf41 GitHub issue #338 2016-06-21 09:41:55 -07:00
6c4a444f29 GitHub issue #339 2016-06-21 09:40:53 -07:00
330c80f3f5 Add rule type to match a COM field of the peer by ID and value because this will be powerful. 2016-06-21 08:09:20 -07:00
eee59ec9ce Fix Buffer<> version of Dictionary.get(). 2016-06-21 08:00:40 -07:00
0959d33ba0 Add a few technically unnecessary but feel-good paranoia bounds checks in Dictionary.get(). 2016-06-21 07:59:42 -07:00
ca82715bfa Another fuzzing code fix. 2016-06-21 07:52:32 -07:00
0c05b2cb50 Comment cleanup and fuzzing improvements. 2016-06-21 07:49:46 -07:00
b2d048aa0e Make Dictionary templatable so it can be used where we want a higher capacity. 2016-06-21 07:32:58 -07:00
3ee15e65aa Tying up default route and route mgmt loose ends. It now periodically updates shadow routes so hopefully your link will stay up as you move around. 2016-06-17 13:14:48 -07:00
c8f85ffec9 Factored network updates into its own class. Delivered via notification 2016-06-16 20:53:55 -07:00
1bf1c38b30 Default route population works on Mac! 2016-06-16 18:23:33 -07:00
eb4a78bcc3 Report routes in locally joined network JSON. 2016-06-16 17:40:32 -07:00
37afa876a7 Linux bug fixes, small controller fix. 2016-06-17 00:21:58 +00:00
601c51b351 Bug fix. 2016-06-16 23:18:20 +00:00
20d4dada40 Refactor controller for new merged format. 2016-06-16 16:05:57 -07:00
901b75e756 New format now integrated, and it works. 2016-06-16 15:48:58 -07:00
bc3d7d11fe Remove netcon from dev branch. This is moving to its own new ZeroTierSDK repo for future release under the SDK name. 2016-06-16 14:50:08 -07:00
490d20e8fb Self test for dictionary, and fixes. 2016-06-16 14:45:36 -07:00
2113c21fdc devicemap now works again in OSXEthernetTap 2016-06-16 14:09:09 -07:00
e09c1a1c11 Big refactor mostly builds. We now have a uniform backward compatible netconf. 2016-06-16 12:28:43 -07:00
b104bb4762 New super-packed dictionary -- we are going back to a backward compatibile format with the old netconf but in an embedded-friendly way. This is simpler. 2016-06-15 18:47:35 -07:00
f41ea24e97 Build fixes. 2016-06-16 00:11:46 +00:00
3c655a4b84 Default route ready to test on Mac. 2016-06-15 15:46:57 -07:00
b90e66f7c7 ManagedRoute, which applies C++ RAII to injected routes. Move RoutingTable to attic. 2016-06-15 15:02:40 -07:00
bae0060552 add a timer to retrieve the network list every second. 2016-06-14 19:59:45 -07:00
c8750e5812 more error checking when parsing JSON for network list
remove "multicastSubscriptions" field as it isn't used anyway
2016-06-14 18:09:30 -07:00
4446dbde5e Big refactor in service code to prep for plumbing through route management. 2016-06-14 10:09:26 -07:00
89cb0e260a Set deployment target to 10.10 for the minimum OS X version for this app
I'm currently using features only available in 10.10 or above.  We'll have to discuss this and see what can be done for OS X 10.7 through 10.9.
2016-06-13 19:58:21 -07:00
2c1a8524f0 remove unused variables 2016-06-13 19:56:43 -07:00
b085329bca Base functionality complete. Can join/leave/list networks. Can disconnect from networks without removing them from the network list. 2016-06-13 19:46:54 -07:00
769351b30f Fix to routes config in controller API. 2016-06-13 15:58:00 -07:00
734cbb2f1e Controller modifications for default route are ready to test. Will require slight changes in ZeroTier Central when it goes live. 2016-06-10 15:58:35 -07:00
acbe8ad398 More controller work, and some RedHat fixes. 2016-06-10 08:26:27 -07:00
188f8021f8 Joining/Deleting networks now implemented.
Still need to implement known networks cache so we can join/leave networks without deleting them from the UI
2016-06-09 19:59:05 -07:00
9898066b47 Remove some deprecated stuff in controller -- not done yet. 2016-06-09 11:02:42 -07:00
82635ce606 Add flags and metric to ZT-managed routes. 2016-06-09 09:43:09 -07:00
8c7433a525 . 2016-06-08 17:45:25 -07:00
56ef9e0643 Add rpm target. 2016-06-08 16:29:30 -07:00
e6328dfe82 Add RPM spec conditionals to include json-parser or bundle it depending on whether we are fedora or rhel/centos/epel. 2016-06-08 16:19:38 -07:00
3a48e3781b bundle miniupnpc for now... might change later. 2016-06-08 15:37:37 -07:00
f9056da6be rpmbuild -ba zerotier-one.spec basically works 2016-06-08 15:33:59 -07:00
536feb632c Support yet another old version of http-parser for CentOS/EPEL. 2016-06-08 15:09:09 -07:00
cafa41ba4d RedHat stuff and cleanup. 2016-06-08 14:46:42 -07:00
196d96cfa7 Fix ronn convert problem in man page. 2016-06-08 14:08:56 -07:00
4e6f95e152 Build man pages with ruby-ronn on Debian. 2016-06-08 14:06:19 -07:00
de9fa6a334 All three init systems now covered in debian. 2016-06-08 13:30:29 -07:00
abd7071eaa systemd stuff for debian 2016-06-08 13:19:08 -07:00
7e68791bee Fix include for system json-parser. 2016-06-08 12:57:22 -07:00
6c6b18d003 Fix include for system lz4. 2016-06-08 12:50:56 -07:00
4da9d4e53a Fix build against Debian version of libhttp-parser -- its old but it will work. 2016-06-08 12:49:07 -07:00
0ca764968a Remove warnings, more Debian stuff, remove obsolete ui/ stuff. 2016-06-08 11:21:01 -07:00
62b64d39ab Minimal debian is working. 2016-06-08 10:30:54 -07:00
ae87fbf8e3 make install installs man pages 2016-06-08 10:19:46 -07:00
2e890580fc Stop shipping pre-build man pages since it violates Debian arcane rule #134931e+26 and add manpages build target. 2016-06-08 10:13:31 -07:00
afda5e684b Make install/uninstall for Linux 2016-06-07 17:11:09 -07:00
9161eebc68 Carry virtual network routes through to API. 2016-06-07 12:15:19 -07:00
683254a0db Don't bother signing if we are not using the legacy netconf. 2016-06-07 11:17:38 -07:00
2885aea65c Only send new format netconf for PV>=6 2016-06-07 11:13:18 -07:00
523ea68ae2 Increment protocol version to indicate support for binary network config and config request meta-data. 2016-06-07 11:08:36 -07:00
ca88e1f1cf fix size 2016-06-07 10:47:22 -07:00
be37d025b8 Make flags 64-bit in both network request and config. 2016-06-07 10:46:29 -07:00
4342b71d7a Upgrade miniupnpc to 2.0 2016-06-02 17:04:15 -07:00
f20602a7b1 docs 2016-06-02 15:57:18 -07:00
f311b4111b docs 2016-06-02 15:56:58 -07:00
61d6ada88d . 2016-06-02 15:26:00 -07:00
506c74270c Stash old Linux binary installer stuff in attic. This is going away. 2016-06-02 15:20:43 -07:00
4d13ddd48c GPG public key for signing GitHub releases, etc. 2016-06-02 15:04:56 -07:00
cc89290eb6 last man page! 2016-06-02 14:50:38 -07:00
5bce3e37ee clean doc node_modules on clean 2016-06-02 13:58:34 -07:00
6671d5553b More man pages. 2016-06-02 13:56:24 -07:00
41b3b54bf8 man stuff 2016-06-02 13:04:46 -07:00
096db53822 Switch manual pages to "ronn," a program that converts MarkDown to roff man pages, and pre-build them. Also have the zerotier-cli(1) man page ready to go! 2016-06-02 12:33:28 -07:00
f9148bf9cb Finally json-parser. Skip miniupnpc since some Linux distros (even newer ones) ship with an old unsafe crummy version. 2016-06-01 22:26:58 -07:00
a880f93166 also libnatpmp 2016-06-01 22:06:43 -07:00
fd81a7fe63 On Linux auto-detect presence of http-parser and lz4 and link against system libs instead of ext/ builtins (for RPM and DEB packaging effort) 2016-06-01 21:55:48 -07:00
65b7893a8a add full docs to ext/json-parser (no upgrade available) 2016-06-01 18:51:22 -07:00
597dee40fd upgrade ext/http-parser 2016-06-01 18:49:36 -07:00
975bcb8aff some OS X Authentication Services wizardry to get /Library/Application Support/ZeroTier/One/authtoken.secret and copy it to ~/Library/Application Support/ZeroTier/One/authtoken.secret 2016-05-31 17:23:11 -07:00
51e74f8d4f remove some extra logging 2016-05-31 15:01:42 -07:00
b4f3dfc347 look up authtoken in user's app support directory 2016-05-31 13:50:43 -07:00
2c995f1f91 IPv6 links are unfortunately not "reliable." Many IPv6 gateways, while not
implementing NAT, do implement stateful firewalling with absurdly short
timeouts (<60s). Keepalives are still required in IPv6.

Network engineers continue to mindlessly carry forward cruft and baggage
from IPv4 to IPv6.
2016-05-31 10:30:00 -07:00
41328eef94 . 2016-05-27 15:25:32 -07:00
59cf2ea341 add proper border around the network list 2016-05-27 15:21:23 -07:00
67d472424d make the view show up light instead of dark 2016-05-27 15:07:20 -07:00
1d27adb102 Finished wiring up the view 2016-05-27 13:48:22 -07:00
940c0f2b93 WIP. Mac UI 2016-05-27 13:28:32 -07:00
68d950c344 Hack in zerotier-idtool to allow generation of vanity addresses. 2016-05-26 09:26:03 -07:00
d5620288d5 Parse JSON network list into Network objects for the view 2016-05-17 19:41:54 -07:00
da30d2898e beginning of communicating with the zero tier service 2016-05-16 19:58:24 -07:00
40198d6c13 call super functions on a few overrides 2016-05-16 19:25:20 -07:00
4653ebc97f add table view to show networks view 2016-05-16 19:08:00 -07:00
0bcc7d46a3 Disable debug code. 2016-05-16 18:39:34 -07:00
93b673043c Fix new binary meta-data deserialization and add some debug code (will disable later). 2016-05-16 18:37:37 -07:00
acd6978a30 set the combo box to use a data source and remember the last 20 networks input 2016-05-16 18:26:33 -07:00
ccbd6f97cd remove some mistakenly committed files and add .gitignore for Xcode projects 2016-05-16 18:02:26 -07:00
b4a8057994 limit the join network combobox to hex characters.
Join only clickable when a valid network is entered
2016-05-16 17:51:14 -07:00
225c2b095b Initial start of the menu bar app.
Has menu items to join/leave networks which currently displays an empty popover from the icon (icon needs to be made still)
2016-05-14 15:42:45 -07:00
0582338015 Initial Commit 2016-05-14 13:54:49 -07:00
de1b745988 comment out a few TRACE messages that don't compile 2016-05-14 13:29:31 -07:00
efdbd6326f compiling with C++11 requires a space between string literals 2016-05-14 13:25:40 -07:00
25c3d3a452 cleanup 2016-05-11 13:24:55 -07:00
548730660b Ready to test whole new netconf refactor. 2016-05-11 10:19:14 -07:00
7ee3743c3d Refactor controller to send both old and new format netconf. 2016-05-11 08:49:15 -07:00
37b89b3944 Add TCP relative sequence number criterion for documentation/posterity. 2016-05-09 17:00:17 -07:00
8b9519f0af Simplify a bunch of NetworkConfig stuff by eliminating accessors, also makes network controller easier to refactor. 2016-05-06 16:13:11 -07:00
529515d1d1 Changes to how new-style binary network configs are detected, and a new-style binary serialized meta-data representation. 2016-05-06 13:29:10 -07:00
69d0562e2c docs 2016-05-06 11:41:11 -07:00
7913fa7bbd Dead code removal. 2016-05-06 11:13:34 -07:00
b543868351 Missing deserialize stuff. 2016-05-06 11:00:19 -07:00
0f17077b3d Merge gateways and routes in netconf since they are the same thing. 2016-05-06 10:57:53 -07:00
9da8bf37d7 docs 2016-04-28 21:31:10 +02:00
e5cc487b95 Beginning of security doc and kill some obsolete defines in main include file. 2016-04-28 14:58:16 +02:00
726136beda Ifdef fix. 2016-04-27 09:30:34 +02:00
59eb09d063 Deserialize new style netconf. 2016-04-26 17:20:31 -07:00
b9dba97fdb Bunch more refactoring for an even more compact NetworkConfig representation, especially rules. 2016-04-26 17:11:25 -07:00
25a5275921 . 2016-04-26 08:53:49 -07:00
e731fc1a3a Replace two bools in NetworkConfig with a flags field. 2016-04-26 08:40:26 -07:00
90e1262a8b More refactoring to remove old Dictionary dependencies. 2016-04-26 08:20:03 -07:00
246f86dad3 Define an "anchor" as a statically defined device that serves as a network lookup point. 2016-04-26 07:56:41 -07:00
d736074301 Refactor rules table in-memory structure in new NetworkConfig to permit far more rules with better space efficiency. 2016-04-22 15:40:53 -07:00
368efaa2ba Kill some old debug code. 2016-04-19 12:55:48 -07:00
2f18a92e20 Cleanup in numerous places, reduce network chattiness around MULTICAST_LIKE, and fix a "how was that working" latent bug causing some control traffic to take the scenic route. 2016-04-19 12:09:35 -07:00
affbca74b4 Clean up Linux makefile and remove doc target from default since it requires rst2man. Add doc target to official instead. 2016-04-19 09:35:32 -07:00
4c455876f9 Revise peer path weighting to always prioritize cluster-optimal paths. 2016-04-19 09:22:51 -07:00
cecfa99b7b (1) cluster members send a flag indicating that a PUSH_DIRECT_PATHS is a cluster redirect, (2) 1.1.5 uses this to avoid a bug (this bug does not exist in 1.1.4) 2016-04-18 16:44:23 -07:00
b3cac538cc Store lat/lon too for testing and future display use. 2016-04-18 15:48:33 -07:00
587b1e05d1 Replace cluster-geo subprocess with in-memory loaded CSV of GeoIP data. This is faster, cheaper, more reliable. We use https://db-ip.com/ but others would work too. 2016-04-18 11:33:54 -07:00
02c3727ccd . 2016-04-18 10:21:38 -07:00
af471af8ef Shrink NetworkConfig slightly. 2016-04-12 13:32:41 -07:00
e28838805f Brace fix... 2016-04-12 13:17:16 -07:00
8a9762331f Fix one more old NetworkConfig bit of code. 2016-04-12 12:54:14 -07:00
31db6f8f36 NetworkConfig refactor almost done. 2016-04-12 12:49:46 -07:00
ad1e83d8b9 Refactor IncomingPacket for new NetworkConfig 2016-04-12 12:32:33 -07:00
bbd9915056 Refactor Node for new NetworkConfig 2016-04-12 12:26:10 -07:00
51fecc0be9 Refactor Network for new NetworkConfig. 2016-04-12 12:16:29 -07:00
6f854c8391 NetworkConfig refactor part 1 2016-04-12 12:11:34 -07:00
9b8444fff1 Merge of bignose/manual-pages (Linux man pages) 2016-04-07 12:28:43 -07:00
43e317f0b7 Authorship stuff. 2016-04-07 12:24:15 -07:00
0e40181d8f Merge branch 'license-clarification' into dev 2016-04-07 12:18:46 -07:00
63b62ebf4c Boost local interface check interval a bit to speed direct link provisioning on startup. 2016-04-07 12:13:18 -07:00
569de22481 Make port mapper names even more unique, and trial bind before binding TCP now which should work on Linux and others. 2016-04-07 09:51:14 -07:00
9085a04b16 Merge branch 'dev' of http://git.int.zerotier.com:/zerotier/ZeroTierOne into dev 2016-04-07 16:41:28 +00:00
c7df61a3c3 dev branch now works again on Linux 2016-04-07 16:41:07 +00:00
c278f05181 RoutingTable build fixes. 2016-04-06 17:29:38 -07:00
61a9c27af0 Consolidate routing table code. 2016-04-06 17:14:05 -07:00
e9b2613d5f Put routing table code back in osdep/ 2016-04-06 16:57:37 -07:00
24469a7f43 . 2016-04-06 16:47:11 -07:00
56096be8b6 Tweak new RX queue algorithm to "expire" old entries to prevent always needing to traverse the whole queue array. 2016-04-06 16:28:40 -07:00
8ef78e7e7d Preserve add local interface address add order and send in that order since this is a priority. 2016-04-06 11:50:00 -07:00
504738b183 Binder for Windows, and use Binder to get local interface addresses to advertise. 2016-04-05 15:53:19 -07:00
32cd2a02c9 OneService now binds all ports to specific local interfaces instead of wildcard and rebinds on changes. (default route) 2016-04-05 15:44:08 -07:00
4a109658ab More refactoring and prep for explicit interface bindings (for default route support). 2016-04-05 11:59:46 -07:00
52d9612301 Reduce symmetric prediction fuzz just a bit. 2016-04-05 10:49:14 -07:00
d8b89b0c86 Fix Cluster to send from a designated endpoint address instead of wildcard. 2016-04-05 10:47:13 -07:00
e0ad854d19 Beginning of local binding manager for default gateway support. 2016-04-04 18:46:41 -07:00
0e26917c72 Tweak metric and clean out attic a bit. 2016-04-01 11:07:44 -07:00
3df60995e1 nit pick... might this matter? 2016-03-30 16:49:21 -07:00
1a5e7cb0cb More tweaks to OS determination stuff. 2016-03-28 12:26:49 -07:00
8035afae87 Try to define ZT_NO_TYPE_PUNNING on iOS in case it wasn't. 2016-03-28 12:22:05 -07:00
284e5d83b5 Fix some broken TRACEs and a tiny reorder in a few ifs. 2016-03-28 12:15:24 -07:00
2b3e1d5c10 Ignore IP assignment pool ranges that begin with 0.0.0.0 or that contain no IPs. 2016-03-24 13:34:01 -07:00
2c328d61ad Do not auto-assign IP addresses on bridges. IPs can still be assigned manually. 2016-03-24 13:32:01 -07:00
76f9b4c582 A few other little formatting things. 2016-03-18 15:06:45 -07:00
c589bc4c57 Indentation 2016-03-18 14:32:48 -07:00
d6a1868d0a Refactor incoming packet (rxQueue/fragmentQueue) to eliminate variable length queues and merge queues. This is both faster and saves memory. 2016-03-18 14:16:07 -07:00
9f31cbd8b8 Make /network/???/active return more info. 2016-03-17 13:05:51 -07:00
c0262d8f76 Add “doc” to the dependencies for the “all” build target. 2016-03-04 17:01:31 +11:00
92702615a7 Add an overall “doc” build target. 2016-03-04 17:01:14 +11:00
c9d3f3ab96 Correct license grant to match “GPL v3 or later” grant in source. 2016-03-04 16:45:15 +11:00
72797c25d5 Update copyright notice. 2016-03-04 16:44:23 +11:00
ea6ce47345 Refactor the program name to a pre-processor directive. 2016-03-04 16:42:30 +11:00
10855b451d Refactor the copyright notice text to a pre-processor directive. 2016-03-04 16:40:09 +11:00
3265b3594b Refactor the license grant text to a pre-processor directive. 2016-03-04 16:37:36 +11:00
cafc46a8e9 Add Makefile module for building documentation. 2016-03-04 16:06:17 +11:00
5993b178c5 Ignore generated man page files. 2016-03-04 16:05:55 +11:00
24e286b5ec Add a stub for an encoding declaration on a man page. 2016-03-04 16:04:57 +11:00
c63de27633 Add references to other tools for ‘zerotier-one’. 2016-03-04 15:41:06 +11:00
a84a256df4 Add incomplete man pages for ‘zerotier-idtool’ and ‘zerotier-cli’. 2016-03-04 15:40:08 +11:00
88dfa860f4 Document how the home directory is used, and its default value. 2016-03-04 15:08:17 +11:00
83bc5d95aa Document remaining options explicitly. 2016-03-04 14:57:10 +11:00
09c61d5cb1 More explicit specification of how to use ‘-i’ and ‘-q’. 2016-03-04 14:53:50 +11:00
71c84aee60 Add “see also” section referring to ZeroTier documentation online. 2016-03-04 11:36:19 +11:00
cee09b0d2e Refine description of ZeroTier One. 2016-03-04 11:36:04 +11:00
fdb8ea93ef Add a reStructuredText document for a ‘zerotier-one(8)’ man page. 2016-03-04 11:35:16 +11:00
60ab565185 Fix cluster-geo code to cache IPv6 by first 64 bits to prevent cache fillup due to IPv6 privacy extensions. 2016-03-03 15:33:38 -08:00
1fe251d0a0 stupid bug is stupid 2016-03-03 14:50:47 -08:00
ff931e53b5 more makefile stuff 2016-03-03 14:31:43 -08:00
ef376a7919 Linux make clean fix. 2016-03-03 14:24:52 -08:00
09fc9e4d0c indent fix 2016-03-03 14:21:13 -08:00
fe3a84a422 Fix problems with previous commit. 2016-03-03 14:15:09 -08:00
ba56a5b9d1 Another NAT-t improvement:
Many NATs revert to symmetric behavior from friendlier modes if they cannot
preserve ports. This can occur if there is, for example, more than one ZT
device behind the NAT using port 9993.

Others (Airport Extreme?) seem to have bugs in which they completely freak
out if more than one device tries to do a lot of mappings using the same
internal local port.

Mostly to fix the latter case and somewhat to fix the former, we introduce
a secondary port. ZeroTier now binds 9993 (or whatever port you specify)
plus another port computed deterministically from your ZeroTier address.
This port is used for new links 1/4 of the time.

This mostly addresses the second problem above and partly helps to address
the first.

If uPnP/NAT-PMP is enabled we also still open a tertiary port because some
routers freak out if NAT-t is attempted using the same port as uPnP.

All of this is IPv4 only of course. IPv6 is sane.
2016-03-03 13:52:27 -08:00
a27d8b2910 Windows cleanup. 2016-03-02 19:20:04 -08:00
b6f6ed35fc More Windows tweaks and a compile fix. 2016-03-02 19:06:29 -08:00
d3cb063d13 Tweaks to WindowsEthernetTap to attempt to address GitHub issue #308 and/or GitHub issue #277 -- we can't reproduce yet but I found one area where a spin was possible under certain failure conditions. Maybe. 2016-03-02 18:37:24 -08:00
b9125e4256 Document myself as a contributor. 2016-03-02 10:38:30 +11:00
0aae86be2e Merge branch 'dev' of https://github.com/krisek/ZeroTierOne into dev 2016-03-01 12:29:29 -08:00
d9fa07399e Fix GitHub issue #311 2016-03-01 09:49:33 -08:00
d570adf021 State grant of license in each third-party component. 2016-02-29 18:11:54 +11:00
dcb91c043f State which exact files constitute third-party works. 2016-02-29 18:04:20 +11:00
f613930dee Explicitly mark home page URLs of third-party code. 2016-02-29 18:03:16 +11:00
667048310d Remove text that paraphrases GPLv3 conditions. 2016-02-29 17:44:47 +11:00
642aa3313d Explicitly grant GPLv3-or-later terms to the overall code base. 2016-02-29 17:44:47 +11:00
f6e98df8da Refer directly to the accompanying GPL-3 license document. 2016-02-29 17:44:47 +11:00
d37e44225f Add explicit copyright statement in same file as license grant. 2016-02-29 17:44:47 +11:00
5c172d1a15 Rename file that is not a license text. 2016-02-29 17:44:10 +11:00
0bf2060a7d Add verbatim text of GNU General Public License version 2. 2016-02-29 15:16:19 +11:00
22883b3eeb Add verbatim text of GNU General Public License version 3. 2016-02-29 15:13:37 +11:00
6d1dc47368 Typo fix. 2016-02-28 17:06:46 +01:00
f8d05eb625 Spec description rephrased. 2016-02-28 17:05:43 +01:00
45c233c0e7 Formatting change 2016-02-28 00:04:18 +01:00
b836228465 Formatting change 2016-02-28 00:02:48 +01:00
8118630861 Formatting change 2016-02-28 00:00:55 +01:00
bf3e31ece7 Initial commit of the standard zerotier RPM specification 2016-02-27 23:55:14 +01:00
f217ce7ff7 Upgrade http-parser. 2016-02-25 18:13:42 -08:00
039790cf26 Upgrade LZ4 to hopefully fix wacky sporadic crash when built with g++ 5.3.1 on Debian/testing. 2016-02-25 15:39:15 -08:00
e5f82f5457 cleanup 2016-02-25 10:08:30 -08:00
a5e4e3fcac Remove ui/ on Linux uninstall. 2016-02-24 17:24:36 -08:00
3fe60615df Make installers silent when run inside packages. 2016-02-24 15:23:49 -08:00
7b5c1696eb Fix a CIRCUIT_TEST bug in forwarding of tests along hop paths on private networks. Unfortunately this means full circuit testing for private nets will need an upgrade. :( 2016-02-23 14:56:51 -08:00
c7c61b4ac0 Fix checking of path address validity. 2016-02-22 16:01:35 -08:00
92f24d1988 Make maximum size of a circuit test structure sane. 2016-02-22 15:54:18 -08:00
9b59bcd995 Clean controller circuit test memory. 2016-02-22 15:48:27 -08:00
43fff1a87e Deprecate reporting of local clock in circuit tests since a small number of users might have security problems with this. 2016-02-22 12:59:26 -08:00
2aa7138373 Reduce direct ping delay back to 1m and make SelfAwareness aware of local received-on address to eliminate false symmetric classification. 2016-02-22 09:47:50 -08:00
69a438d64d Small tweak to active threshold. 2016-02-19 09:10:31 -08:00
772551c45d Try +1 and +2 existing surfaces for symmetric NATs. 2016-02-11 10:39:39 -08:00
0c951b6e56 More tweaks to new symmetric NAT buster, and stop using old iterative method since this supersedes it. 2016-02-10 18:41:39 -08:00
eadafd8de7 Little fix to NAT-t alg 2016-02-10 17:51:42 -08:00
f9230eb970 Widen max delta for TS/revision just a bit more for now. 2016-02-10 16:18:45 -08:00
82348e1537 Temporarily blacklist he.net IPv6 tunnel addresses for paths: these usually have a very low MTU which causes packet loss and other issues. 2016-02-10 11:06:26 -08:00
10bb9919f1 Tweak certificate of membership revision/time tolerance to eliminate boundary packet loss issues occasionally seen in the wild. 2016-02-10 09:32:42 -08:00
4769dacf61 Tweak needsOurMembershipCertificate timing to resolve a possible source of occasional dropped packets. 2016-02-09 16:54:47 -08:00
63ec7e58d4 Make activity no longer a function of ping frequency, since this causes compatibility bugs when the latter was modified due to timer interactions with other versions. 2016-02-08 10:03:01 -08:00
a963810e02 Tweak a few cluster params for higher perf / lower initial setup latency. 2016-02-08 09:57:46 -08:00
69b1da2e1d return 200 instead of 404 when test is fetched 2016-02-04 16:27:25 -08:00
dc3d899e70 Return test ID when we post a test. 2016-02-04 16:09:26 -08:00
78c1d9006a flood protection fix 2016-02-04 14:39:43 -08:00
5dad73647d Lengthen backup period again 2016-02-04 14:22:54 -08:00
13b39a0c3e SQLite perf tuning 2016-02-04 14:03:37 -08:00
90801a94d3 Track client version and tell whether active nodes support circuit test. 2016-02-04 13:38:42 -08:00
fab6f4450d /active subpath off networks 2016-02-04 12:17:55 -08:00
2e04dc03f2 Logging to NodeHistory, SQL queries. 2016-02-03 18:10:56 -08:00
f8eb6b0067 Add NodeHistory table on sqlite controller. 2016-02-03 13:56:35 -08:00
7a63fdc447 Fix for GitHub issue #298 and hopefully #297 2016-02-01 14:41:54 -08:00
4655a59912 typo 2016-01-28 17:59:31 -08:00
c0668dcdf2 Merge branch 'edge' into dev 2016-01-26 14:20:25 -08:00
9cb4bbe2b8 Save test results for circuit tests in memory and then cancel the test and send the results when the test is queried later. This way you can POST a test and then come GET the result at the appointed time. 2016-01-26 12:42:44 -08:00
95d28494f6 Mac OSX Port - Lightly tested 2016-01-25 12:55:29 -08:00
67f678d60a Merge branch 'master' into dev 2016-01-22 18:07:20 -08:00
3993dfa2a5 Fix JNI for API changes in 1.1.4 2016-01-22 18:06:58 -08:00
935f00ad4c Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2016-01-21 16:03:14 -08:00
bafdb54752 New dev version: 1.1.5 2016-01-21 16:02:16 -08:00
7526ed705c Check for /dev/tun as well as /dev/net/tun since some Linux devices put it there. 2016-01-21 16:01:24 -08:00
bccd60125b Added python, python3, darkhttpd unit tests 2016-01-21 15:52:54 -08:00
7127d2b811 Updated unit tests + README 2016-01-21 15:10:26 -08:00
9cc2733ed8 VERSION 1.1.4: Improved path detection, improved anti-recursion code, and Network Containers BETA
ZeroTier One version 1.1.4 has several improvements to path stability and
path learning logic. It also contains the BETA version of Network Containers!

See netcon/README.md and https://www.zerotier.com/product-netcon.shtml for more
information.

Improvements in 1.1.4:

 - Paths are now confirmed more aggressively on inactivity. This version can
   usually detect a dead direct path in under 10 seconds vs 1-2 minutes in
   previous versions.
 - Logic to prevent recursion has been overhauled. The old versions had code
   that explicitly checked packet contents (AntiRecursion.hpp). This is now
   gone in favor of a function that checks IP addresses of ZeroTier devices
   when paths are learned or probed. This is both more efficient and less
   prone to edge case failures. Testing in several complex environments has
   shown that this eliminates a few edge cases where inappropriate paths would
   be used.
2016-01-20 18:10:40 -08:00
3b10fd7557 Windows build fixes. 2016-01-20 18:06:20 -08:00
f782797dc7 readme 2016-01-20 17:44:17 -08:00
227b8bfbf6 Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2016-01-20 16:59:59 -08:00
385770dcc8 1.1.4 bump 2016-01-20 16:59:54 -08:00
4f6ca14d4f typo 2016-01-20 16:52:46 -08:00
c3fc5340b6 Added check for identiy
Needed if you just copy & paste the whole block.
2016-01-20 16:43:37 -08:00
4f30b06930 Merge branch 'dev' into edge 2016-01-20 16:28:14 -08:00
398e0b7c63 Removed debug line 2016-01-20 15:04:02 -08:00
b7b014298b Bad connection reference fix + RX lock fix 2016-01-20 14:43:49 -08:00
bcaf42e075 Transfer speed increate + stability fixes 2016-01-20 13:38:14 -08:00
357cb92f2e Stability fix + introduction of connection probation 2016-01-18 23:41:28 -08:00
31ed86740c Added some safety + unregister callbacks on close 2016-01-18 16:04:29 -08:00
f2cc144811 Fixed nc_sent possible bad ptr on close issue 2016-01-18 12:26:40 -08:00
1783867f96 Print path for user. Removed unused stub Phy methods 2016-01-17 15:13:32 -08:00
a73638b214 Fixed memory leak 2016-01-17 14:32:34 -08:00
bd1884e48f yay more icons 2016-01-15 18:39:16 -08:00
5cd20c0009 Adding app icons for iOS 2016-01-15 18:22:53 -08:00
58ebfdffcb Debugs off by default 2016-01-15 13:03:37 -08:00
1e2c434ae8 nc_recved() connection closure change 2016-01-15 13:02:48 -08:00
7107297c25 Merge branch 'edge' of http://10.6.6.2/zerotier/zerotierone into edge 2016-01-15 11:19:25 -08:00
35fb602dff Fixed pcb->state == CLOSE_WAIT bug 2016-01-15 11:18:26 -08:00
8af3d35234 Merge branch 'dev' into edge 2016-01-15 11:18:23 -08:00
323d40a560 Small formatting changes 2016-01-15 10:27:27 -08:00
321bca4bf7 Adjusted formatting/conventions to conform to rest of ZT codebase 2016-01-15 10:09:31 -08:00
7cb08630d0 Fixed RX race condition 2016-01-14 18:59:08 -08:00
45f0737a00 Naming convention update 2016-01-14 14:15:50 -08:00
6cf478c1b2 RX buffer update 2016-01-14 14:03:03 -08:00
f52a82d9f2 Updated RX buffer code 2016-01-14 13:23:01 -08:00
6dac0c8c4f C doesn't support default arguments 2016-01-13 17:47:34 -08:00
5e30eabd30 Updated getsockopt/setsockopt, removed unused code 2016-01-13 15:52:15 -08:00
7bba867ce8 Fixed double-close bug 2016-01-13 13:55:11 -08:00
e8e6a4702b Merge branch 'dev' into edge 2016-01-13 13:15:47 -08:00
c3e2cb9b8e Modified PCB/state management logic 2016-01-13 12:19:48 -08:00
2e5caa335a Old SF root is dead. Now we are just on Alice and Bob. (world update for 1.1.4) 2016-01-13 10:18:41 -08:00
bdabe40c65 Updated error reporting for sock_fd_read() 2016-01-12 14:25:30 -08:00
7991a7c50a Merge branch 'dev' into edge 2016-01-12 14:05:40 -08:00
4e4fd51117 boring doc stuff 2016-01-12 14:04:55 -08:00
e91322bd10 README update and example server port change 2016-01-12 14:04:55 -08:00
23cdb3aed5 Removed ztnc network config file 2016-01-12 13:58:15 -08:00
bd3d9ee356 Removed terminology changes 2016-01-12 13:55:46 -08:00
76f1ab33f0 Make clean rm .depend 2016-01-12 13:44:59 -08:00
61fd8463f8 Merge branch 'dev' into edge 2016-01-12 13:19:53 -08:00
3883ac08c7 Docs and cleanup. 2016-01-12 13:17:30 -08:00
dd233fdb8d Updated terminology. No functional change 2016-01-12 13:00:31 -08:00
18aea2d3d3 Removed unused code 2016-01-12 12:56:51 -08:00
74e22368b5 Fixed sketchy memcpy logic, also added checks for service RPC ACK 2016-01-12 12:42:46 -08:00
d03a63e055 Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2016-01-12 12:25:19 -08:00
93ab8d46b9 Merge branch 'dev' into edge 2016-01-12 12:25:15 -08:00
740eb6ebc4 Simplify Peer locking to eliminate deadlock with new path recursion check code (and also probably improve performance). 2016-01-12 12:12:25 -08:00
d6f0f1a82a Use network user ptr in lookup for Ethernet frame handling to eliminate map lookup. 2016-01-12 11:34:22 -08:00
83ef98a9dc Add a network-associated user ptr in API. 2016-01-12 11:04:35 -08:00
3edfbfec93 Merge branch 'master' into dev 2016-01-12 09:50:19 -08:00
68c004ef68 Merge pull request #291 from JackyRen/patch-1
Update controller README.md
2016-01-12 09:49:54 -08:00
e2ae9165c6 RPC update 2016-01-12 09:46:49 -08:00
704205c5f7 Dead code removal. 2016-01-12 09:33:14 -08:00
21656ba015 Update controller README.md
Sync make parameter with code.
2016-01-12 22:51:08 +08:00
bbcc3304a0 Check shouldUsePathForZeroTierTraffic in legacy beacon responder. 2016-01-11 15:57:58 -08:00
c6571073fe Get rid of constructor/destructor in libzerotierintercept, and simplify a few things. 2016-01-11 15:27:22 -08:00
ba9fcb31d0 Merge branch 'dev' into edge 2016-01-11 14:30:24 -08:00
78c0f0a443 RPC detection fix 2016-01-11 13:23:43 -08:00
7656e6b9f8 Transfer tune-up 2016-01-11 11:37:04 -08:00
39d79f34ab Added RPC ACK 2016-01-11 10:35:02 -08:00
b3e3d4cacc Instead of using binary packet comparison, add a callback to the API to explicitly check whether paths should be used. Check in with this callback (if present) when learning new paths or sending initial packets. 2016-01-11 10:17:44 -08:00
3e65ecb93d Stateless RPC rework 2016-01-11 10:12:59 -08:00
ba2a89c760 docs 2016-01-11 09:13:41 -08:00
eea634a432 Refactor to eliminate copypasta. 2016-01-11 09:11:35 -08:00
ab19e19f00 Fix a bug that we visually found in Windows code -- it was not advertising uPnP addresses?!? 2016-01-11 09:09:24 -08:00
1023ef23b7 Remove somewhat ugly and costly anti-recursion hack -- we will switch to more explicit methods. 2016-01-11 09:06:10 -08:00
a56fbc1929 Close another potential anti-recursion loophole. 2016-01-06 15:35:27 -08:00
47ce52228b Roots should probably not do this since it would likely be a waste of packets. 2016-01-06 12:54:51 -08:00
ff9317365a Merge branch 'dev' into edge 2016-01-06 11:38:11 -08:00
0a3ef38cad Put old test code in attic. 2016-01-06 11:06:47 -08:00
9aee72099e AntiRecursion cleanup and some other minor things. 2016-01-06 10:59:39 -08:00
05b2c0743f Tighten up dead path detection. Should now auto-detect dead paths in less than 10 seconds at a very small cost in ECHO requests (or HELLOs for older peers). GitHib issue #272 2016-01-06 10:00:03 -08:00
4d94ae77b4 simplify if 2016-01-05 16:48:35 -08:00
d8143a5e18 Implement first pass on rapid dead path detection, and increment version to 1.1.3 (dev) 2016-01-05 16:41:54 -08:00
cba739fd6b more dead code 2016-01-05 14:46:26 -08:00
fb5237d5b6 Outline dead path detection mechanism. 2016-01-05 14:42:56 -08:00
258f95b2cd dead code removal 2016-01-05 14:19:16 -08:00
b8059d5c87 typo 2015-12-23 22:54:36 +01:00
66894eb473 Merge branch 'dev' into edge 2015-12-21 16:56:13 -08:00
61becbb7e5 . 2015-12-21 16:56:11 -08:00
42e453872c VERSION 1.1.2: bug fixes and NAT-PMP support
ZeroTier One version 1.1.2 is mostly a bug fix release, but also includes support
for NAT-PMP as a method of mapping external ports from behind supported routers.

Bugs fixed include:

 - Refactored path selection code to eliminate a change that might have introduced
   a reliability regression from earlier versions.
 - Reworked UPnP code for improved reliability and also added NAT-PMP support.
 - Fixed a crash on network preferred relays. (Not exploitable or security critical
   since only network controllers can send that config option and there was no
   buffer overflow or other exploitable issue.)
 - Fix GUI problem on OSX where window could be larger than screen on some Macbooks.
 - Fix a potential rate limit problem on PUSH_DIRECT_PATHS that could negatively
   impact same-network connectivity.
 - Update zerotier-cli to show preferred vs. active paths and hide inactive ones.
 - Fix an issue on shutdown with thread delete order and thread synchronization.
2015-12-21 16:48:33 -08:00
2f42a7c010 Windows 1.1.2 build. 2015-12-21 16:36:56 -08:00
436c1fac1d Selectively move over changes from "edge" to "dev" excluding netcon. 2015-12-21 16:15:39 -08:00
16bc9533ed Fix a problem that made valgrind complain on shutdown (not otherwise an issue). 2015-12-21 15:23:14 -08:00
63a51e2890 Fix a small potential uninitialized variable issue. 2015-12-21 14:55:11 -08:00
23eaafc4eb Remove stray file that is instead found in netcon. 2015-12-21 14:01:48 -08:00
536b7000bc Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2015-12-21 13:15:09 -08:00
24cc0904fa 1.1.2 Windows build fixes, tweaks, etc. 2015-12-21 13:14:48 -08:00
5a65463b92 typo 2015-12-21 22:11:39 +01:00
c8056452b8 fix / workaround for ubuntu
Otherwise, if started with -d as daemon, the netcon service dies after
intercept listen registers.
2015-12-21 21:20:22 +01:00
64e273e9c0 updated netcon readme 2015-12-21 19:49:22 +01:00
6f62d6bb34 Removed straggler debug prints 2015-12-21 07:36:44 -08:00
d430457f1e Updated readme, removed test network keys 2015-12-21 07:26:45 -08:00
4267cc138e Readme changes, turned off debug 2015-12-21 07:17:37 -08:00
de2ba8d0f7 Fixed typo 2015-12-21 05:36:27 -08:00
c488fa8461 Tightening of RPC code 2015-12-21 05:03:26 -08:00
608e059b18 single updated test file 2015-12-18 15:19:34 -08:00
81203b20b8 Merge branch 'edge' of http://10.6.6.2/zerotier/zerotierone into edge 2015-12-18 15:09:18 -08:00
91bc32fe51 Re-added keys for testing 2015-12-18 15:09:08 -08:00
d3dacf5c2a Tiny bit of dead code cleanup. 2015-12-18 14:51:24 -08:00
13036a1085 . 2015-12-18 14:30:47 -08:00
942ab6fd95 . 2015-12-18 14:29:23 -08:00
fd9b2e931f Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2015-12-18 14:26:37 -08:00
6de67e828d Fix accept4() semantics. 2015-12-18 14:26:31 -08:00
2d9f1f7857 Added install script for debugging with strace 2015-12-18 13:13:47 -08:00
fde8af9483 getsockopt() tweak 2015-12-18 11:37:11 -08:00
c22c0a20f6 Merge branch 'edge' of http://10.6.6.2/zerotier/zerotierone into edge 2015-12-18 10:31:24 -08:00
9063209124 getsockname() fix 2015-12-18 10:31:11 -08:00
61dc13a6e1 Cache query in progress to reduce redundant GeoIP2 queries. 2015-12-18 09:38:34 -08:00
e3eea6fcbd RPC Reliability improvements and partial getsockname() fix 2015-12-16 18:05:47 -08:00
7d001458cb Update World to drop an old legacy root. 2015-12-17 11:52:05 -08:00
823c9979c0 Erase more debug junk. 2015-12-17 11:45:55 -08:00
9ebcbc94e4 Remove some stray debug stuff. 2015-12-17 11:44:48 -08:00
aa39b0dc24 Show paths as active or preferred in listpeers. 2015-12-17 11:03:39 -08:00
2160164e8c (1) Get rid of path sorting and just scan them, since sorting may have been a premature optimization that introduced a regression and path instability in a few edge cases, and (2) do not attempt to contact remote paths received via PUSH_DIRECT_PATH if we already have that path and it is already active (dumb, should have done this originally) 2015-12-17 10:53:07 -08:00
3137f43da9 Fix for getsockname() crash and other address size issues. 2015-12-16 10:30:02 -08:00
efc2a74df1 Some final README revs. 2015-12-16 10:07:04 -08:00
9638889614 Removed docker-test keys/config for netcon network 2015-12-16 08:33:39 -08:00
0df639f8f5 readme update 2015-12-15 16:20:31 -08:00
011ce35ede Merge branch 'edge' of http://10.6.6.2/zerotier/zerotierone into edge 2015-12-15 15:57:02 -08:00
a9802eff02 readme update 2015-12-15 15:56:47 -08:00
f9837163d3 docs 2015-12-15 15:43:07 -08:00
6bc93d2050 Docs, and change ZT_NC_NWID to ZT_NC_NETWORK and use full path in local ZT home dir to enable multiple instances. 2015-12-15 15:35:21 -08:00
37a7e9e275 Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2015-12-15 15:00:05 -08:00
531e5f9923 . 2015-12-15 15:00:03 -08:00
617845a7da readme and makefile updates 2015-12-15 14:59:17 -08:00
9dc59eff76 Cleaned up, tests updated, readme updated 2015-12-15 14:50:54 -08:00
a6c5596782 Patch controller to not send relays to 1.1.0 to avoid triggering 1.1.0 network preferred relays bug. 2015-12-15 10:53:15 -08:00
022d3857cc Fix should use ECHO check. 2015-12-15 10:37:32 -08:00
82aa3f59d6 Fix bug in ECHO handling (OK was invalid!), and use ECHO on newer peers for path confirmation. Also get rid of path confirmation circuit breaker since this causes issues with some peers and should be done more intelligently anyway. 2015-12-15 10:30:40 -08:00
04d6b03733 Make auto backups slightly less frequent. 2015-12-15 09:22:10 -08:00
3b22ecc80c Make hex device address in UPnP name the right length. 2015-12-14 17:35:45 -08:00
53fe576028 Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2015-12-14 17:04:36 -08:00
f6dc99f345 Old NYC is dead. 2015-12-14 17:04:27 -08:00
c0df1169ee Remove unimplemented SET_EPHEMERAL_KEY for now. 2015-12-14 14:53:43 -08:00
b92884a0ad Merge branch 'edge' of http://10.6.6.2/zerotier/zerotierone into edge 2015-12-14 14:45:40 -08:00
a421e31dd5 send_cmd() retrun value bugfix + minor debug changes 2015-12-14 14:45:25 -08:00
7b1c0c4013 Cache null results from Maxmind. 2015-12-14 14:40:00 -08:00
f558b088e6 Library functions are now static, RPC return value tuning, and cleanup 2015-12-14 09:06:58 -08:00
99afc74021 FDs transferred over listen socket + other fixes 2015-12-12 01:28:59 -08:00
761bb4fdd0 Stability fix 2015-12-11 12:19:54 -08:00
663a336b83 RPC cleanup + Temporary timing fix 2015-12-10 09:24:56 -08:00
e506fda3e4 Only set SO_NO_CHECK on IPv4 UDP sockets for now due to broken V6 stacks that drop zero checksum UDP packets. 2015-12-09 15:02:42 -08:00
42da36ba81 Fixed addrlen assignment in getsockname() 2015-12-09 12:22:08 -08:00
a730c86907 getsockname() implemented 2015-12-09 12:20:38 -08:00
b8cba90d85 . 2015-12-09 09:01:09 -08:00
9090edebb0 . 2015-12-08 18:17:03 -08:00
49d76c6311 Stub out getsockname() 2015-12-08 18:07:46 -08:00
5717dfe3b9 . 2015-12-08 17:45:51 -08:00
c576cd68cb . 2015-12-08 17:44:13 -08:00
f2078bf986 (WIP) more netcon work 2015-12-08 17:35:37 -08:00
c2c37f3a63 Merge with fixes of netcon to edge. 2015-12-08 15:15:44 -08:00
b1eb16d5fb Updated README, tests, and Intercept 2015-12-08 07:47:20 -08:00
f2db82940b Nginx patch. Verified to work in fc23 and ub14 2015-12-08 05:09:12 -08:00
a2837ccaa7 Fixed typo 2015-12-07 08:36:13 -08:00
284b37ccc0 Updated compatibility section 2015-12-07 08:35:26 -08:00
48d9708abe Combined make-linux.mk and make-intercept.mk's installer section 2015-12-07 06:54:13 -08:00
b141026fc7 Replaced darkhttpd with httpd since darkhttpd is not currently supported and does not work 2015-12-07 06:41:20 -08:00
c9bd0b3bf1 More concise unit test section 2015-12-07 06:30:54 -08:00
21b158cc48 Added unit test info to README.md 2015-12-07 06:21:40 -08:00
dab13f59e5 Test updates 2015-12-07 05:37:14 -08:00
036bbfaff9 Modified test scripts to match new naming conventions 2015-12-07 03:21:46 -08:00
afafde2571 Modified Nginx test scripts 2015-12-06 22:37:23 -08:00
1dec034f77 Added application-specific test arguments to test script 2015-12-06 17:55:48 -08:00
0df33485ca Merge remote-tracking branch 'origin/netcon' into edge 2015-12-04 15:41:56 -08:00
7ea53dd21b (WIP) Additional test script changes 2015-12-04 15:39:35 -08:00
3869d6257b Always Salsa20 encrypt the result of the system CSPRNG as a mitigation against various low-entropy bugs such as the recent Raspberry Pi one. 2015-12-04 14:50:24 -08:00
4e12899a8e docs 2015-12-04 14:17:33 -08:00
cebced259e docs 2015-12-04 13:48:53 -08:00
425d311ce8 Merge of netcon with edge and unification of make processes. 2015-12-04 13:19:31 -08:00
ac8918992b Merge dev. 2015-12-04 12:45:21 -08:00
cbf8d9c45b . 2015-12-04 12:43:48 -08:00
905253b4f5 First draft (unfinished) of new README for netcon (original in README.orig.md). 2015-12-04 12:43:21 -08:00
d9b12be697 ZT_NC_NWID patch + (WIP) test script modifications 2015-12-04 12:39:54 -08:00
2196d982c3 (fixed) nwid detection in test script 2015-12-03 18:50:20 -08:00
5c5943a00c (fixed) test script liblwip.so placement, also streamlined test logic 2015-12-03 07:11:33 -08:00
a4cfe4cd16 Fix Linux init script to properly specify runlevels. 2015-12-01 10:19:10 -08:00
ceaef19fb7 Fix for GitHub issue #260 -- fix for (non-exploitable) crash in network preferred relay code 2015-11-30 17:20:12 -08:00
944fdfb65e Low-impact sanity check against GitHub issue #247 -- will likely prevent other weird recursions too. 2015-11-30 16:44:32 -08:00
be44b15eac Fix for GitHub issue #252 2015-11-30 16:15:23 -08:00
d73edfea56 GitHub issue #257 2015-11-30 16:12:03 -08:00
c21882da9c Put selftest back and turn off tracing in PortMapper. 2015-11-30 16:07:02 -08:00
f260250580 Simplify IP assignment logic in OSXEthernetTap, also fix for GitHub issue #249 2015-11-30 15:39:34 -08:00
40a4ba6e39 indentation 2015-11-30 15:15:43 -08:00
d862d2868c ... and here. 2015-11-30 14:57:28 -08:00
1e213b4d4c Need to close on premature abort too or resources are leaked. 2015-11-30 14:56:36 -08:00
3d66492828 Also add a timeout for the actual NAT-PMP port mapping step. 2015-11-30 14:17:58 -08:00
838fdf4d11 ifdef naming fix. 2015-11-30 13:32:30 -08:00
685c5e9ad1 Fix for uPnP 2015-11-30 13:25:34 -08:00
66a29a00ee Merge miniupnpc/libnatpmp build into main build by just adding flags, defs, and objs. 2015-11-30 13:17:43 -08:00
6768521330 Ton of uPnP work and adding NAT-PMP support, still testing... 2015-11-30 13:10:22 -08:00
6c0de526e8 Merge pull request #261 from janjaapbos/synology
Fix for cross compiling
2015-11-30 11:07:20 -08:00
4c812e3796 Merge pull request #259 from janjaapbos/jb-dev
Increase maximum number of paths per IP scope to 4
2015-11-30 10:53:22 -08:00
e6808c69f8 Increase maximum number of paths per IP scope to 4
Otherwise, local discovered routes are ignored.
Don't know what the best value would be. Taking 4 for now.
2015-11-30 19:48:38 +01:00
75637f68b3 Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2015-11-24 14:11:31 -08:00
56cb2f43fa Merge pull request #254 from bonki/fix_iproute2_ip_handling
Fix for GitHub issue #253.
2015-11-24 14:11:14 -08:00
038476c412 Fix for GitHub issue #253.
Make 'ip' detection more robust (some distros don't ship the binary in /sbin or /usr/sbin).
Add error handling for cases where an ip add/remove fails.
2015-11-24 22:56:02 +01:00
201109a7a0 (fixed) make-linux.mk conflicts, updated clean logic 2015-11-23 16:02:39 -08:00
7e28161638 Merge dev 2015-11-30 15:17:31 -08:00
ef4472e185 Intercept now checks ZT_NC_NWID environment variable for 16-digit network ID and does not initialize if not present. 2015-11-23 13:59:38 -08:00
4acb3d81f3 Rename Common to common.inc.c to indicate that this is an included C file not a primary build C file. 2015-11-23 13:25:46 -08:00
bee44ae731 Merge Sendfd into Common.c 2015-11-23 13:24:28 -08:00
95106e2e30 Mare make-self-contained code cleanup. 2015-11-23 13:18:46 -08:00
2a6ea38718 More code cleanup, just moving some stuff into NetconEthernetTap that is not used elsewhere. 2015-11-23 13:02:50 -08:00
d8d4cfbf01 Eliminate a few warnings and some small code reorg. 2015-11-23 12:43:42 -08:00
34404eb300 Ignore more DLL patterns. 2015-11-23 12:34:46 -08:00
7a84805824 Uncommit binary... :P 2015-11-23 12:34:23 -08:00
1d4563ac31 A few very tiny bits of dead code removal, etc. 2015-11-23 12:32:20 -08:00
a18336fa18 MERGE current "dev" into "netcon" -- should not affect netcon itself but will retest -- brings ZeroTier core up to 1.1.0 2015-11-23 10:46:52 -08:00
1e4a40e772 Reformat table. 2015-11-23 10:11:46 -08:00
6e5feaba3a Updated test files 2015-11-23 07:08:07 -08:00
71b38a48ac Replaced README 2015-11-23 06:22:09 -08:00
6a3f230555 Unit test info added to README 2015-11-23 06:20:01 -08:00
a952ff2c61 Removed odd file 2015-11-23 06:11:19 -08:00
05e51f40b4 README formatting update. Removed odd files 2015-11-23 06:07:48 -08:00
b83aefcf8f Updated README, fixed node.js test bug 2015-11-23 05:59:05 -08:00
8b9b593256 Removed old READMEs and OS files 2015-11-23 05:21:20 -08:00
275a76ff5c Test update 2015-11-23 05:15:19 -08:00
3d163f7044 Patch for Node.js -- accept() bug 2015-11-23 01:14:17 -08:00
764dd1c3d9 ARP packets do need the source IP address in them, as well as the MAC address.
Packets wouldn't even show up in WireShark without the source IP in it.
2015-11-21 19:14:59 -08:00
ac09c3569a ARP packet lengths are 28 bytes. This condition required the packet to be 29 or more bytes. 2015-11-21 19:14:06 -08:00
ce5b7f0305 The World as of 2015-11-20 2015-11-20 12:49:23 -08:00
1fde17bacb Update World to reflect Alice and Bob in their final glory. Will hot-push this soon. 2015-11-20 11:46:10 -08:00
d472c59b8d Additional test files 2015-11-20 02:41:27 -08:00
126fc46dc4 Updated makefile, removed old results directory 2015-11-20 01:22:15 -08:00
d2e624f301 Updated makefile, removed old results directory 2015-11-20 01:19:16 -08:00
7173b0124b Removed old test directory 2015-11-20 01:13:04 -08:00
1f27022fa7 Test/Code Refactor in preparation for merge 2015-11-20 01:08:38 -08:00
9a25a627bb WIP: Unit tests -- more generalization 2015-11-19 17:34:56 -08:00
375aae44e4 . 2015-11-19 16:36:15 -08:00
31bc5e1559 WIP: Unit tests 2015-11-19 16:21:59 -08:00
b1100b3d13 WIP: Automated tests 2015-11-19 16:14:27 -08:00
399b2e9e26 forgot to submit this. Add DeferredPackets.cpp to the android makefile 2015-11-17 19:16:10 -08:00
6f16f44438 VERSION 1.1.0: Win/Mac UI improvements, improved NAT-t, CIRCUIT_TEST, and more!
ZeroTier 1.1.0 introduces a number of fixes and improvements in several areas.
We incremented the secondary version to indicate the significance of this release.

Version numbering has been a bit ad-hoc in the past. In future versions we will
adopt the following scheme: odd-numbered revision numbers like 1.1.1 will indicate
development versions, while even numbered ones like 1.1.2 will indicate tagged
releases. The public git repo branching has also been revised: master will always
be the latest tagged release, dev will be usually-working development, and edge
will host maybe-broken "bleeding edge" development. Pull requests on GitHub should
generally be made against dev, not master or edge. Other branches that may appear
from time to time may be feature or experimental branches. Only master is confirmed
good, with dev usually being okay but not guaranteed to be such. (To the extent
that any software is ever guaranteed to be anything.)

Change summary:

User-facing changes and improvements:

 - Windows now has a new .NET-based native UI, which replaces the old WebControl
   wrapper around the React UI. This just didn't work well on older Windows systems,
   and we did not want to bundle 40+ megabytes of web browser with our app just for
   its very simple UI.
 - The web UI (still used for Mac and usable in Linux as well) is updated with
   improved look and simplifications.
 - Both UIs no longer have the "Peers" tab, since several users reported that non-
   technical users found this confusing and even alarming (does this mean people
   can access my system?). This information is visibile with "listpeers" from the
   command line (zerotier-cli).

New features:

 - Virtual networks that use our RFC4193-based IPv6 numbering scheme now emulate
   IPv6 NDP for queries that target these addresses within the same network. This
   allows for faster multicast-free connection init and improved security since
   the address is now hard-wired to the device ID (which is a crypto token). This
   does not affect IPv6 NDP for other IPv6 addresses or link-local, which will
   continue to work normally. This also opens the potential for a reduced footprint
   multicast-free build for embedded applications.
 - This version includes beta support for a feature called CIRCUIT_TEST. Network
   controllers for networks you have joined can now send a special message called
   CIRCUIT_TEST which allows for ZeroTier-layer link testing and remote diagnosis
   of link issues. Any operator of a network controller can do this; more
   documentation will be forthcoming. The only information that may be gathered
   in this way is IP addressing info and very basic system info (OS, 32/64 bit,
   ZeroTier version). No personal information, hard drive data, location, or other
   private info is available. This can only be ordered by a controller of a network
   you have joined and is secured using cryptographic signatures.
 - This version includes an alpha version of clustering a.k.a. multi-homing! This
   powerful feature allows for a single ZeroTier device to be run from multiple
   endpoints, with connecting peers being handed off to endpoints that are closer
   via GeoIP lookup and/or are more lightly loaded. Currently this is only suitable
   for use in our soon-to-be-upgraded root server infrastructure (details will be
   blogged soon), but in the future it will be capable of hosting multi-homed
   devices on user networks. This will allow things like (for example) a geo-
   clustered Cassandra server that appears behind a single IP on a virtual LAN.
   This feature must be enabled with the ZT_ENABLE_CLUSTER=1 build option.

Bug fixes and other improvements (including performance!):

 - A faster version of the Poly1305 cryptographic MAC function was substituted
   for sometimes greatly improved performance.
 - C++ STL std::map was replaced throughout the entire core with a hand-rolled
   Hashtable implementation for improved performance and in some cases a reduced
   memory footprint. Some maps are still used in peripheral code that is not
   performance critical or where ordered keys are needed.
 - The zerotier-cli and zerotier-idtool symbolic links are now created in
   /usr/local/bin on OSX to comply with El Capitan file security restrictions.
 - The OSX tap device driver has been updated. This update may fix issues that
   some users have reported with bridging on OSX. This new tap device driver
   drops 32-bit support, but if you have a 32-bit system you can manually install
   the old driver from ext/bin/tap-mac.
 - Mac users could experience a problem with the UI if they installed ZeroTier,
   then uninstalled it, then installed again. This is now fixed.
 - UPnP port mappings should work better on some routers, and a different local
   port is now used for UPnP mapped traffic vs. NAT-t'd traffic to get around
   a bug in several popular mid-tier routers where using UPnP mapping alongside
   traditional NAT traversal made a port unreachable.
 - Debian package now builds with the right arch label on armv7l systems (Pi 2)
 - The old "root topology" has been replaced with a similar but better thought
   out concept called a World. The World defines the root servers and possibly
   in the future other things, and can be updated in-band from trusted peers
   allowing for software-upgrade-free network upgrades to keep up with growing
   demand. See node/World.hpp for details.
 - A fix was made to "self-awareness," which keeps track of your external IP
   info and adapts to changes, to eliminate a problem that could cause "link
   thrashing" behind some symmetric NATs.
 - Escalating UDP TTLs was re-introduced to better transit some port-restricted
   cone NATs such as Linux IP MASQ (used for Docker).
 - An otherwise harmless crash-on-exit bug in the network controller was fixed.
 - All new direct links are now confirmed in both directions. This adds a very
   small amount of initial HELLO/OK traffic but fixes some edge cases where an
   incomplete or unidirectional path might be used.
 - [SECURITY] Better rate limiting was put in place for VERB_PUSH_DIRECT_PATHS
   to prevent potential abuse for amplification attacks.
 - [SECURITY] Build flags were tweaked on OSX to ensure that all code including
   dependency libraries are built with full stack canary protection and ASLR
   support.

Visit https://www.zerotier.com/blog or follow @ZeroTier on Twitter for updates
and announcements!
2015-11-17 12:18:45 -08:00
1c0c3e62dc Just add a launch prerequisite for .NET 4.5 -- it's usually there, and if not it can be easily installed. This is mostly an issue on old Windows Server systems, and in that case the admin will likely want to decide how to proceed. 2015-11-17 11:13:44 -08:00
9169b6c999 Fix crash on exit in Windows (does not affect other OSes) and revert debugging tweak in Windows version that prevented service from starting after real install. 2015-11-17 09:56:19 -08:00
a660ec490e Started work on automated unit test scripts 2015-11-17 02:28:23 -08:00
f5c2600ca4 Added symbol checks in intercept. This seems wise after all 2015-11-16 23:57:19 -08:00
48745eca57 Fix ARM dpkg build. 2015-11-16 19:54:58 -08:00
b0f6dc43b4 Revised fd RX logic 2015-11-16 19:53:59 -08:00
456bfea58d Real World -- edge now talks to real net. 2015-11-16 19:27:36 -08:00
0f5fb48a0b Turns out it wasn't hard to add miniupnpc to the VS2012 project and just have it build with the rest of the code. 2015-11-16 19:04:04 -08:00
dc8edea0c6 Linux make rules to make libminiupnpc from source. 2015-11-16 18:33:52 -08:00
cf6164e847 Build libminiupnpc from source now, and update version. 2015-11-16 18:28:55 -08:00
a13a21377c Delete pre-build miniupnpc for Linux and Mac -- will add Make rules to build from source and include source in ext/ 2015-11-16 18:18:08 -08:00
37acd375d6 Fix 64-bit int warning. 2015-11-16 18:10:40 -08:00
f2289544b7 Check for fork/clone and re-initialize in close() -- for nginx 2015-11-16 17:44:11 -08:00
7a53ecac86 UI stuff. 2015-11-16 17:18:44 -08:00
906e49ff72 Add make option ZT_ENABLE_CLUSTER and disable it in default Linux build. 2015-11-16 16:22:41 -08:00
e4d1aba3f8 Use new OSX tap version, and update OSX install scripts. 2015-11-16 16:19:24 -08:00
38fe77ecf2 WebUIWrapper is dead. 2015-11-16 15:44:07 -08:00
8fde33d87c . 2015-11-16 14:45:17 -08:00
220552af62 GitHub issue #241 -- and also some appearance updates. Eventually this might get replaced by a native Mac app. 2015-11-16 14:30:25 -08:00
637d50a9de Write binary of world too. 2015-11-16 13:11:16 -08:00
f5b465c0e1 Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2015-11-16 11:13:02 -08:00
6ac70ba808 . 2015-11-16 11:01:19 -08:00
08cd603623 Code to generate real World for edge. 2015-11-16 10:58:40 -08:00
ddf0cb0278 Docs and tweak some caching values. 2015-11-16 09:54:08 -08:00
75f8ee1b9c get the compiler to stop complaining about two string literals (one a macro) next to each other without an intervening space 2015-11-14 18:19:33 -08:00
0508a41afd added ttl parameter to WirePacketSendFunction 2015-11-14 17:40:17 -08:00
0d9f33dc4f Fix: (1) Windows stack overflow due to buffer too large in peer deserialize, (2) clean up some other stuff seen during debugging and reduce the sizes of some buffers due to Windows small stack size, (3) remove a redundant try/catch. 2015-11-13 12:14:28 -08:00
90f9415107 Update installer to drag along a net-install binary for .NET 4.5 that it runs if .NET 4.5 is not present... because yes we have to install Microsoft's own flagship runtime under some conditions. (Rare, but present.) 2015-11-13 09:11:12 -08:00
2ec638a23d New Windows UI tweaks: get rid of networks tab (only one tab!), make networks full width and make window narrower and a bit taller, colors, fixed-width fonts in several places, make network IDs selectable. 2015-11-12 17:38:30 -08:00
a6cffefa6d Updated compatibility 2015-11-12 17:15:44 -08:00
a818c622d9 Updated throughput_httpd docker test files 2015-11-12 16:57:45 -08:00
ccae473783 Eliminate Windows warnings. 2015-11-12 16:51:33 -08:00
54f68280bd Minor Windows build fixes. Builds on VS2012 again. 2015-11-12 16:48:42 -08:00
7d8084262a Fixed rpc_st command alignment bug for RPC_SOCKET 2015-11-12 16:48:08 -08:00
bacb53fe8f Remove old Windows NDIS5 tap driver -- I think this is dead. 2015-11-12 16:40:50 -08:00
33c132968e GitHub issue #219 -- make Linux makefile cross-compiler aware. 2015-11-12 15:37:32 -08:00
73e314cc1a Shelve pcap-with-bridge OSX experiment -- apparently pcap_inject does not work with bridge devices. Still have to use a kext. 2015-11-12 15:28:55 -08:00
6af54c5943 Minor debug updates 2015-11-12 14:49:20 -08:00
fa7220ec0e Removed old Common.h 2015-11-12 14:35:58 -08:00
d1a22a0878 Streamlined debug output code 2015-11-12 14:32:27 -08:00
8ac411a9e4 Stashing utun work for OSX -- abandoning for now since utun excludes mDNS among other issues. 2015-11-12 10:47:50 -08:00
e5fad005a9 Updated RPC handling 2015-11-12 08:21:05 -08:00
0940d673db Always advertise to the cluster when we have a peer even if we have also initiated handoff. This might be the cause of the warmup problem -- will test later. At the very least it should not hurt anything due to pick-latest logic and the fact that cluster members with only suboptimal paths do not respond to WANT_PEER. 2015-11-11 14:36:22 -08:00
b94335f115 Increase WHOIS retry delay slightly to allow for global cluster latency (e.g. 300+ms from New York to Johhannesburg) 2015-11-11 11:07:08 -08:00
a13ba7102a GitHub issue #242 -- crappy uPnP protocol demands infinite lease time or else 2015-11-10 17:45:05 -08:00
451b8aa7b2 Query both root and network controller for multicast last resort GATHER. 2015-11-10 17:37:38 -08:00
53731acf51 Bracket by time in result cruncher script. 2015-11-10 17:15:06 -08:00
3b9411044f Patch tap-mac to latest tuntaposx upstream changes, and add updated build for 10.8 or later (keep old one for 10.7). 2015-11-10 16:00:21 -08:00
141e2db38c More results. 2015-11-10 15:47:18 -08:00
0cf4ddda4a Some more test results, and fix OSX installer to put symlinks in /usr/local as per El Capitan requirements. 2015-11-10 15:11:15 -08:00
0e4a2c378f Fix a sporadic warning in cluster-geo, and fix test to not overload the test-watcher. 2015-11-10 13:09:58 -08:00
2854f14966 Some cluster parameter tweaks, and change the test code in tests/http to dramatically reduce the amount of data transfer to/from the test master. Also add results of first successful 50k test. 2015-11-10 11:59:03 -08:00
4328c6c3bc Fix delete oldest logic. 2015-11-10 09:46:14 -08:00
b171c9a0db Replace slow std::list<> with an O(log(N)) data structure for the cluster relaying send queue. 2015-11-10 09:05:01 -08:00
82a60b1e28 Fixed throughput build script 2015-11-09 20:16:27 -08:00
19f09e46fa Moved/Renamed Docker test dirs 2015-11-09 19:37:19 -08:00
134ad8ac21 Changed httpd version in throughput-test Dockerfile 2015-11-09 19:13:53 -08:00
32ec378e3b Announce that we have peers on the cluster when we first see them to improve startup times, and add a result crunching script to tests/http. 2015-11-09 18:01:23 -08:00
2cc50bdb10 Try bringing back TTL escalation -- may help with Docker (IP-MASQ) type NAT 2015-11-09 15:44:13 -08:00
94f4316a0e Fix for possible high CPU usage on multicast queries. 2015-11-09 14:54:05 -08:00
35c4e28f31 Mark geo-redirected paths as suboptimal and do not report that we have a peer if all we have is one of these. Also a few other small fixes. 2015-11-09 14:25:28 -08:00
47424df417 Fix (1) a deadlock bug and (2) a bug that prevented distributed rendezvous messages from being sent. 2015-11-09 13:39:06 -08:00
73e2c6e511 How did that ever work? 2015-11-09 12:24:49 -08:00
12cd9df059 . 2015-11-09 11:30:17 -08:00
4ad2ff2f71 . 2015-11-09 11:08:52 -08:00
b57c855a8c PROXY_SEND fix. 2015-11-09 10:25:20 -08:00
ed954c5ca2 . 2015-11-09 10:09:16 -08:00
21341ab15c Ready to test. 2015-11-09 09:45:43 -08:00
f4d12603e0 Tweak how Switch passes off to Cluster on relay to fit new paradigm. 2015-11-09 09:19:03 -08:00
ff81415ffe Build fixes... 2015-11-09 09:14:26 -08:00
5371195c80 Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2015-11-09 09:01:58 -08:00
473ce82040 Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2015-11-09 09:01:41 -08:00
ab013d831c . 2015-11-09 09:01:38 -08:00
57b71bfff0 Cluster simplification and refactor work in progress... 2015-11-08 13:57:02 -08:00
6bc8c9d8ef Clustering cleanup, still a work in progress. 2015-11-06 16:12:41 -08:00
5f39d5b7ea Further pare down Cluster messaging and rename some stuff. 2015-11-06 14:37:17 -08:00
9490b1f136 Try prioritizing cluster-send over direct send in cluster mode -- may improve cluster relaying reliability. 2015-11-06 13:38:56 -08:00
badec136fc New agent master IP. 2015-11-06 11:55:06 -08:00
8ea5f424fd Small amount of cleanup. 2015-11-06 11:15:06 -08:00
3cafa60284 fix up some borders & colors 2015-11-05 19:44:19 -08:00
2415ae45c1 remove the peers page 2015-11-05 19:44:19 -08:00
aa169b54de Add conntrack tweak to nf for testing. 2015-11-05 18:06:04 -08:00
83c6b7ab3d Use bigger UDP buffer on bigger x64 machines. Keep old value elsewhere since these are likely to be smaller boxes. 2015-11-05 17:41:07 -08:00
ba5008c370 Now make cluster announcements slightly more frequent. 2015-11-05 17:28:55 -08:00
3fa1b5a89d Make cluster HAVE_PEER a little lighter by removing full identity. Technically this is not necessary and they will propagate over time in any case. Might restore it in some form in the future. 2015-11-05 17:22:22 -08:00
7603d8cee8 Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2015-11-05 16:46:42 -08:00
869eff49bc . 2015-11-05 16:46:33 -08:00
d9abc28fe3 . 2015-11-05 14:54:54 -08:00
3e22fee842 Integrate deferred background processing into main OneService implementation. 2015-11-05 12:41:14 -08:00
5ec5911e1b Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2015-11-05 12:23:06 -08:00
8ef4edebbf Deferred decode for HELLO to prevent HELLOcalypse under high load of new peers. 2015-11-05 12:22:58 -08:00
86c74d8a65 set manifest to require administrator privileges and read the authtoken and port from disk 2015-11-04 20:34:49 -08:00
49086e4556 just a little xaml cleanup 2015-11-04 20:31:41 -08:00
4c7bb06894 make the main window width a bit smaller 2015-11-04 20:19:14 -08:00
f3e527e130 update the peer list in place rather than replacing it 2015-11-04 20:17:58 -08:00
df74dd6e41 make the peers page prettier 2015-11-04 20:03:25 -08:00
5e9166cec7 setting width/height isn't necessary 2015-11-04 19:30:26 -08:00
d2c288b13f Fix vertical scrolllbar on networks view 2015-11-04 19:12:12 -08:00
fc32dc11a6 make the networks view a bit prettier 2015-11-04 19:08:13 -08:00
2721804ebf make the tabs a little prettier 2015-11-04 18:41:08 -08:00
7b86176d0e Don't go kaboom when the ZeroTier service isn't running. 2015-11-04 18:28:07 -08:00
a95ff21aaf test stuff 2015-11-04 15:09:19 -08:00
3e84e8b8c3 Performance tweaks to lwipopts.h (TX=12MB/s) 2015-11-04 14:45:26 -08:00
9ec32e7926 Agent settings for big test. 2015-11-04 13:28:43 -08:00
7756b5bf1c Merge branch 'android-jni-dev' into edge 2015-11-03 19:15:00 -08:00
eadeac0a42 logging of events 2015-11-03 19:14:11 -08:00
4b07987210 Added throughput-test Docker files 2015-11-03 18:10:39 -08:00
172fc1052b Merge windows-ui into edge. 2015-11-03 17:38:36 -08:00
523412edfb Abort backup in progress if thread is told to shut down. 2015-11-03 16:03:00 -08:00
f7a407ffa0 Tweak timings and use lock in backup to make it a bit faster and still permit main thread to work. 2015-11-03 15:56:24 -08:00
7903f24a8f Create periodic backup copies of controller.db in network controller from the main process itself to facilitate easier and safer backups of controller.db. 2015-11-03 15:52:10 -08:00
4b655ab22c tests 2015-11-03 14:39:44 -08:00
d9d11042ca . 2015-11-03 12:56:34 -08:00
0b245b031e Allow ZT_TRACE without debug. 2015-11-03 11:20:12 -08:00
a42d714a87 . 2015-11-03 11:18:45 -08:00
c9e6e60c09 Handle ZeroTier-RFC4193 IPv6 address NDP queries inline by spoofing responses if the addressing scheme matches -- this allows multicast-free instant lookup of local IPv6 for better performance and reliability. 2015-11-03 10:46:41 -08:00
df391c8413 Added debug statements for transfer test 2015-11-03 10:30:18 -08:00
4c20fa4874 Added debug statements for transfer test 2015-11-03 10:26:10 -08:00
b7df177f33 updates for origin/edge 2015-11-02 19:18:55 -08:00
179b064b05 Merge branch 'edge' into android-jni-dev 2015-11-02 18:32:21 -08:00
a19e82fcbc Merge branch 'edge' into windows-ui 2015-11-02 18:30:54 -08:00
ccbdb1a3a1 RPC command index fix 2015-11-02 16:09:28 -08:00
4e9d430476 Make root and relay selection somewhat more robust. 2015-11-02 16:03:28 -08:00
8d7b2cd486 Removed serv. conn. checks. 2015-11-02 15:52:12 -08:00
00dcb0f22c . 2015-11-02 15:39:09 -08:00
7fbe2f7adf Tweak some more timings for better reliability. 2015-11-02 15:38:53 -08:00
fd33e0812c Added checks for bad service connection. 2015-11-02 15:31:57 -08:00
60ce886605 Tweak some timings for better reliability. 2015-11-02 15:15:20 -08:00
ab27a91b07 . 2015-11-02 13:53:27 -08:00
24ffb22fa6 Changed default debug level 2015-11-02 13:26:59 -08:00
da462bbd55 Removed curses dependency 2015-11-02 13:21:40 -08:00
fd3916a49e More test stuff... make it more granular and less batch based. 2015-11-02 13:17:11 -08:00
bb912cff30 More appropriate phyOnUnixClose handling 2015-11-02 12:50:32 -08:00
e53ef9642e test stuff. 2015-11-02 12:31:34 -08:00
6338a4933b Fixed another closure bug. Updated debug levels 2015-11-02 12:30:18 -08:00
29249db5d2 Big test stuff. 2015-11-02 11:37:32 -08:00
4dbb84cea1 Fixed connection closure bug (ERR_ABRT from nc_recved) 2015-11-02 10:59:46 -08:00
f1b6427e63 Decided to make this 1.1.0 (semantic versioning increment is warranted), and add a legacy hack for older clients working with clusters. 2015-11-02 09:32:56 -08:00
db473beb48 Fixed accept return value / errno bug, also fdret_sock return bug 2015-10-30 17:00:30 -07:00
1b4cc4af5c Fix evil bug, and instrument/assert on some other stuff, and a bit of cleanup. 2015-10-30 15:54:40 -07:00
7382c328da Null pointer bug appears fixed... testing again at large scale. 2015-10-30 14:23:28 -07:00
641b0dec44 . 2015-10-30 14:12:20 -07:00
2fbb5d0bbf . 2015-10-30 14:11:45 -07:00
d8dbbf7484 Add some debug code in TRACE mode to catch a bug. 2015-10-30 14:11:10 -07:00
377ccff600 getPeer() had a small potential to be unsafe. 2015-10-30 13:39:28 -07:00
f974517f64 Save zerotier output in containers. 2015-10-30 13:06:30 -07:00
f808138a94 docs and stuff 2015-10-30 13:05:34 -07:00
b845dd1b88 Set contact IP for real test. 2015-10-30 12:38:12 -07:00
b6725c4415 Optimize AntiRecursion. 2015-10-30 11:48:33 -07:00
5bfa29dded Make antirec tail len slightly shorter, better performance and still plenty long enough. 2015-10-30 11:09:40 -07:00
80e62ad291 docs 2015-10-30 10:55:05 -07:00
e2fc20876d docs 2015-10-29 18:23:41 -07:00
96eb0ce492 Added state dump, fixed numerous RPC related bugs 2015-10-29 17:57:59 -07:00
d6c0d176ee Periodically re-announce peers that we have. 2015-10-29 10:10:09 -07:00
9f0f0197fe More dead code removal. 2015-10-29 09:44:25 -07:00
a994573a43 Eliminate some more dead code. We may do path trust, but not like that. 2015-10-29 09:42:15 -07:00
883c84bdb9 Tweak some timings, and remove some dead code. 2015-10-29 09:39:36 -07:00
f6e0bdb2f2 Fixed PCB state issue when closing connection 2015-10-28 16:18:08 -07:00
e3d811b04b docs 2015-10-28 15:55:40 -07:00
cabb8752cb docs 2015-10-28 15:28:05 -07:00
1f5ef968cf Test need a more recent version of NodeJS so update Dockerfile. 2015-10-28 15:08:00 -07:00
c8f27da294 Added support for MongoDB (server side) 2015-10-28 14:37:46 -07:00
68d6d3c4ff Fix bug in peer count. 2015-10-28 14:29:08 -07:00
4c24e0cfb0 More tweaks to tests... just about ready to run at scale. 2015-10-28 14:24:54 -07:00
9653531242 . 2015-10-28 14:18:58 -07:00
07c1b4ddee test stuff 2015-10-28 14:16:58 -07:00
1cae7327ae Basic Dockerfile for building test agents. 2015-10-28 13:35:52 -07:00
c03550de35 HTTP test works! 2015-10-28 13:14:53 -07:00
c6a918d996 HTTP test code. 2015-10-28 12:50:48 -07:00
0034efafe4 On semi-undocumented test net, assign a RFC4193 IPv6 address too. Will be useful for our at-scale tests. 2015-10-28 11:08:15 -07:00
0fd15d9cf3 Fix inverted sense bug. 2015-10-28 10:38:37 -07:00
938d0a970b TRACE build fixes. 2015-10-28 10:01:32 -07:00
fdc3e103cc Cleanup and docs. 2015-10-28 09:38:33 -07:00
c1b0329969 Only check IP equality to detect external surface changes (should prevent some spurious resets under symmetric NATs), and simplify some logic. 2015-10-28 09:32:07 -07:00
da93712846 Clean up PUSH_DIRECT_PATH limits a bit more and make them a bit smarter. 2015-10-28 09:11:30 -07:00
cdc99bfee1 Add a circuit breaker for VERB_PUSH_DIRECT_PATHS. 2015-10-27 18:18:26 -07:00
88b100e5d0 More cleanup. 2015-10-27 17:59:17 -07:00
21889305e0 Updated README.md 2015-10-27 17:41:51 -07:00
18db95d0e9 Updated README.md 2015-10-27 17:38:56 -07:00
51fcc75354 Some cleanup, and use getPeerNoCache() exclusively in Cluster. 2015-10-27 17:36:47 -07:00
721d58b464 Added support for Redis 2015-10-27 17:12:32 -07:00
4221552c0b Use getPeerNoCache() in Cluster to avoid keeping all peers cached everywhere. 2015-10-27 16:52:44 -07:00
cc1b275ad9 Replicate peer endpoints and forget paths if we have them -- this allows two clusters to talk to each other, whereas forgetting all paths does not. 2015-10-27 16:47:13 -07:00
cc6080fe38 (1) No need to confirm if we are a root (small optimization), (2) Refactor peer affinity tracking. 2015-10-27 15:57:26 -07:00
6399f6f094 This no longer has to be quite so fast. 2015-10-27 15:02:15 -07:00
218ef07d8e Build fix in TRACE mode. 2015-10-27 15:01:11 -07:00
16bc3e0398 Factor out RemotePath subclass of Path -- no longer needed, just cruft. 2015-10-27 15:00:16 -07:00
40976c02a4 Forget paths to peers if we are handing them off. 2015-10-27 14:37:38 -07:00
f692cec763 Change how cluster relays packets -- just PROXY_UNITE and then send packet via normal ZeroTier front plane -- more efficient and eliminates fragmentation issues. 2015-10-27 14:04:12 -07:00
40e0a34a5c Add set buffer sizes code to Phy<> 2015-10-27 13:04:08 -07:00
7295fcfa86 Merge Phy<> from netcon. 2015-10-27 12:50:23 -07:00
cfe166ef35 Tweak some size limits. 2015-10-27 12:29:01 -07:00
0ffbd05c0e --wtf; prevent roots from TCP fallback 2015-10-27 12:21:57 -07:00
a1a0ee4edb Fix infinite loop in Cluster, clean up some stuff elsewhere, and back out rate limiting in PUSH_DIRECT_PATHS for now (but we will do something else to mitigate amplification attacks) 2015-10-27 12:01:00 -07:00
54a99d8e32 Well that was broken. 2015-10-27 11:14:07 -07:00
62db18b6dd Lessen this limit just a bit to make cluster settle faster. 2015-10-27 11:01:58 -07:00
f32e9d07dd Don't include COM if not necessary (fix). 2015-10-27 10:58:01 -07:00
700c3166b7 Fix inverted sense bug. 2015-10-27 10:51:11 -07:00
17e7528e2c More root cleanup. 2015-10-27 10:40:31 -07:00
8a7a0b6b88 Cleanup, including simplification of root server picking algorithm since we no longer need all that craziness. 2015-10-27 10:37:39 -07:00
9617208e40 Some cleanup, and use VERB_PUSH_DIRECT_PATHS to redirect newer peers. 2015-10-27 09:53:43 -07:00
fb3b7a3baa Take -DZT_ENABLE_CLUSTER out of Mac defaults. 2015-10-27 09:41:12 -07:00
69857b4ba8 Refactor cluster redirects to move code to push peers out of the actual Cluster function that checks for redirect, and clean up Peer::received() to be a bit more logical. 2015-10-27 09:36:48 -07:00
0ffcfa307e another build setting 2015-10-26 20:26:19 -07:00
16c812ec80 set the app icon for release 2015-10-26 20:24:08 -07:00
268fbdabce disable sorting of peers 2015-10-26 20:06:53 -07:00
87496e9f4a can now leave networks 2015-10-26 19:53:03 -07:00
300a951730 Figured out how to expand controls to fill parent. yay 2015-10-26 19:39:54 -07:00
095539de29 Initial peers page 2015-10-26 19:21:21 -07:00
c4c67e591b add error handling for JSON serialization 2015-10-26 19:02:19 -07:00
502aa68bb7 change int to UInt64 for these properties 2015-10-26 19:01:59 -07:00
81cb4bc8d6 set up a timer to update the UI from a background thread 2015-10-26 18:31:10 -07:00
e713f7a54c Can redirect in response to a few more verbs, just not these. 2015-10-26 18:20:40 -07:00
352b83252f Merge branch 'adamierymenko-dev' into windows-ui 2015-10-26 18:10:27 -07:00
a0c3083af0 disallow paste of non hex characters 2015-10-26 18:08:44 -07:00
98d856daa2 Only send redirects to the sending InetAddress and only in response to a set of certain frame types to avoid potential race conditions. 2015-10-26 17:58:51 -07:00
8bfb02ba3c Only send redirects for the same address class, and elminiate some TRACE noise. 2015-10-26 16:55:55 -07:00
0b82c9ebad Fix infinite loop if there are no live roots (never happened before?!? wow!) 2015-10-26 16:09:56 -07:00
de761c5a82 Fix test world def. 2015-10-26 15:47:32 -07:00
6cf1da166f Add the whole new World, though with test identities at this point. 2015-10-26 15:12:28 -07:00
6625d79296 Fix if cluster compiled in but not enabled. 2015-10-26 13:07:00 -07:00
debed1ac2d Expose cluster status in /status JSON response. 2015-10-26 13:06:10 -07:00
5ff7733f84 More plumbing of cluster status. 2015-10-26 12:49:17 -07:00
865acfa40f Cluster status plumbing. 2015-10-26 12:41:08 -07:00
3ce5ad9e2c For forward compatibility, add minimal parse for some future physical address types. 2015-10-26 10:42:30 -07:00
d2b1dfe424 Fully specify new network in alice-test, this will (with different identities) eventually become the World. 2015-10-23 15:51:50 -07:00
55dcf4c65f wire up the join network button 2015-10-23 15:50:49 -07:00
7e635d37ad only accept hex characters for network id 2015-10-23 15:49:04 -07:00
b7b973624a add methods for joining/leaving networks, and getting peers 2015-10-23 15:37:36 -07:00
62059a91aa C#-ifying stuff 2015-10-23 15:36:42 -07:00
35676217e8 Refactor multicast group announcement to work directly or indirectly. 2015-10-23 14:50:07 -07:00
8cfee8a38c Changed to more appropriate APP_POLL_FREQ 2015-10-23 14:31:06 -07:00
80a73cb14b Minor cleanup 2015-10-23 14:23:04 -07:00
e9648a6cdf Clarify logic in pinging, and prevent roots from pinging "down." 2015-10-23 14:05:12 -07:00
e6a63f5547 Fix bug in setWorld that might have caused a peer entry for myself (which would never be used) 2015-10-23 13:57:02 -07:00
b48ed824e6 Improved RPC connection closure logic 2015-10-23 13:37:41 -07:00
29b966894c (1) Fix bug in geo-ip service that prevented cache lookup, (2) fix problem in SelfAwareness (will need to test ALL versions in the wild with this), and (3) add more TRACE instrumentation to Cluster. 2015-10-23 13:03:34 -07:00
f0160635a2 Add --harmony for older nodeJS. 2015-10-23 12:05:17 -07:00
964b30902a Cluster fix: was accumulating remote endpoints endlessly. 2015-10-23 11:51:18 -07:00
2a3dd53952 . 2015-10-22 17:50:00 -07:00
236e474553 Unload lwipstack->_libref upon exit 2015-10-22 16:26:29 -07:00
dee6e7e3c1 . 2015-10-22 16:11:48 -07:00
7711eba297 More cluster wiring... 2015-10-22 16:02:01 -07:00
2f4628520b Improved RPC connection cleanup logic 2015-10-22 13:20:50 -07:00
b203d25656 PhySocket NULL check added to handle_write. Fixed after-close handle_write segfault 2015-10-22 12:40:01 -07:00
1bc451ed10 GeoIP cluster service works. 2015-10-22 10:41:15 -07:00
e07bae2525 Run geoip cluster service sub-process. 2015-10-22 10:18:05 -07:00
5304b0d8d1 Rename index.js so process is distinguishable. 2015-10-22 09:09:15 -07:00
fe6960888a add a scroll bar to the network info view 2015-10-21 20:40:43 -07:00
5b6ddaa2d7 Base windows UI is working.
* No joining/leaving networks yet, but they do display.
* Nothing is updated yet after first load of the app.  Need to set up a background task to run updates.
2015-10-21 20:29:03 -07:00
6471c1f4e2 Merge branch 'adamierymenko-dev' into windows-ui 2015-10-21 17:35:38 -07:00
8e7e409fce Updated netcon README 2015-10-21 16:56:39 -07:00
1458dc8347 set O_NONBLOCK default in accept() 2015-10-21 16:32:27 -07:00
303579cb42 Added Node.js support 2015-10-21 16:27:17 -07:00
a46514b397 Cluster-geo launcher. 2015-10-21 12:47:02 -07:00
25a84e30fc Code for cluster-geo service. 2015-10-21 12:41:46 -07:00
978b056a01 Wire in redirectPeer(), now about ready to test clustering! 2015-10-20 17:36:10 -07:00
6a7b47e5e1 Forgot a return true. 2015-10-20 17:27:57 -07:00
d6dee7bb5c Clustered handling of relaying. 2015-10-20 17:22:53 -07:00
35a12b94ea Outfit Cluster with TRACE for debugging. 2015-10-20 16:48:49 -07:00
2258e36a59 Move replication of COMs to avoid race condition. 2015-10-20 16:34:21 -07:00
59e1444b27 Finish wiring up Cluster, fix some issues with other recent changes. 2015-10-20 16:31:41 -07:00
eb79d4a2f3 Wire up peer announcement in cluster. 2015-10-20 16:24:21 -07:00
57e29857cf Cluster work -- integrating with the rest of the code. 2015-10-20 15:27:53 -07:00
21ae423feb . 2015-10-19 21:19:23 -07:00
9ba5c91d4a initial layout for network info 2015-10-19 21:17:18 -07:00
80d02d189a set the main window icon 2015-10-19 20:30:21 -07:00
56267b2aed setting icon and a few other settings 2015-10-19 20:29:06 -07:00
6040574d8d set up project and base UI for a native windows UI for ZeroTier 2015-10-19 20:20:42 -07:00
5e6eae620b Make _members dynamically allocated due to static array limit on ARM. 2015-10-19 16:18:57 -07:00
69dad37d8f Restore default World for commit to upstream 2015-10-19 15:23:43 -07:00
cfdcce6d12 Fix very obscure IP scope classification logic bug. 2015-10-19 15:19:04 -07:00
0b2e5ed499 Fix some broken logic in Path::reliable() 2015-10-19 15:11:43 -07:00
9150778757 . 2015-10-19 15:04:26 -07:00
50f3ccd3c9 . 2015-10-19 15:03:58 -07:00
584072fa6a Fix for V4/V6 stable addressing. 2015-10-19 14:04:36 -07:00
3adb183c5f Fix bad COM attachment bug and eliminate an unnecessary redundant check. 2015-10-19 13:38:27 -07:00
95953b48f9 Do not allow VERB_RENDEZVOUS from non-upstream peers to block potential DOS vector. 2015-10-19 12:56:29 -07:00
aa6e3c79a0 Some test stuff that will not be pushed elsewhere. 2015-10-19 10:49:31 -07:00
0c43d34ce3 World test stuff... some of this will be yanked before release. 2015-10-19 10:00:35 -07:00
8b03965912 Added status debugs 2015-10-16 19:30:01 -04:00
82e0abc4be Fix for cross compiling 2015-10-17 00:15:10 +02:00
0405ba1ccf Misc changes 2015-10-16 18:02:07 -04:00
738fa5a5e5 . 2015-10-16 12:10:57 -07:00
b96c08f35c Fixed nginx listen() bug 2015-10-16 14:43:38 -04:00
cc4d0199e7 Fix vProto init. 2015-10-16 10:58:59 -07:00
781f06ef82 Accept OK for confirm of HELLO or ECHO. 2015-10-16 10:48:38 -07:00
f9f60f89d9 Peer save/restore fix. 2015-10-16 10:45:58 -07:00
5ce3aac929 Add rate limit on receive of DIRECT_PATH_PUSH to prevent DOS exploitation. 2015-10-16 10:28:09 -07:00
2229e91b57 IPv6 support fixes. 2015-10-16 10:10:12 -07:00
2debde3451 GitHub issue #235, and I also see no reason not to communicate with people from other Worlds. 2015-10-15 07:22:17 -07:00
3e8e025704 Minor cleanup items 2015-10-14 19:55:21 -04:00
a775ee7d31 . 2015-10-14 16:21:39 -07:00
9ece8c465e decrypt fix 2015-10-14 15:49:41 -07:00
499d1628c7 Improved error coverage 2015-10-14 17:59:11 -04:00
59389b3dce Untested cluster code, not enabled. 2015-10-14 14:17:55 -07:00
619e113748 Work in progress on Cluster for new root infrastructure, multi-homing. 2015-10-14 14:12:12 -07:00
e722eab892 Disabled TCP listen backlog, must be enabled in lwipopts.h 2015-10-14 17:03:32 -04:00
9ca699c86d Added support for listen backlogs 2015-10-14 16:04:26 -04:00
d45db0f5af Fixed premature connection close bug 2015-10-14 15:46:22 -04:00
0b5a2a7594 Removed character from NEtconEthernetTap.cpp 2015-10-14 13:49:13 -04:00
831a513b2d Normalized cases 2015-10-14 13:47:35 -04:00
c312ae221f Fix for world size in OK(HELLO) 2015-10-14 10:45:33 -07:00
a35b6589d2 Removed lowercase intercept.h conflicting file 2015-10-14 13:43:12 -04:00
719233617c Add uint16_t key to Hashtable, and make Salsa20 zero its keyspace on destruction. 2015-10-14 10:14:07 -07:00
3c8e74023f Inconsequential. Updated commends, added debug statements 2015-10-13 20:20:45 -04:00
71c6ec71e5 connect() now checks socket family 2015-10-13 19:27:19 -04:00
1fd04557c7 Refactored connect(), added checks to socket(), updated checklists 2015-10-13 19:12:12 -04:00
aa6ff039c4 Improved bind() logic, added more error handling to accept() 2015-10-13 18:33:56 -04:00
8a05efa365 EBADF, EOPNOTSUPP, EMFILE error repoarting for accept() 2015-10-13 17:57:17 -04:00
da536cc311 Improved error reporting 2015-10-13 17:37:54 -04:00
0912d4be59 Fixed socket protocol check logic in socket() 2015-10-13 17:05:11 -04:00
489e1a5b83 Don't keep connections up longer than the alive timeout (unless they are relays or roots) 2015-10-13 13:51:54 -07:00
824ed99160 . 2015-10-13 12:42:54 -07:00
385f1410d2 Expose world info in JSON. 2015-10-13 12:33:15 -07:00
70d8e3ad94 Expose world ID and world timestamp in ZT_NodeStatus 2015-10-13 12:31:38 -07:00
71348f3ebb docs 2015-10-13 12:29:01 -07:00
e268d9492a cleanup 2015-10-13 12:18:47 -07:00
123c466843 Full integration of World and World updates. 2015-10-13 12:17:47 -07:00
5d2f523e81 World stuff... 2015-10-13 12:10:44 -07:00
73145de618 Added some parameter checks from linux kernel syscall source 2015-10-13 14:27:30 -04:00
05677f57e2 Add C output to mkworld. 2015-10-13 08:55:21 -07:00
cae58f43f1 More World stuff, and mkworld. 2015-10-13 08:49:36 -07:00
82052459a2 Odds and ends 2015-10-12 21:50:41 -04:00
4e1e857949 Minor bug fixes 2015-10-12 21:26:32 -04:00
1b1945c63e Work in progress on refactoring root-topology into World and adding in-band updates. 2015-10-12 18:25:29 -07:00
8d1b01cb5b Bug fix: Connection fd lookup in service 2015-10-12 20:46:59 -04:00
70fe7dd1fd cleanup 2015-10-12 16:40:57 -07:00
5dffa43201 Additional retval+errno handling 2015-10-12 19:29:27 -04:00
6b1a38f14c Better retval+errno handling 2015-10-12 16:38:08 -04:00
fe8e7ded8c retval+errno return test 2015-10-09 20:27:38 -04:00
eff1fe3c61 Create files for each hop (more convenient) and fix a packet parse bug. 2015-10-09 16:22:34 -07:00
7d01fab132 Reorg fields to be in same order as FS scheme. 2015-10-09 15:18:01 -07:00
c9295a5883 . 2015-10-09 15:12:05 -07:00
aec13b50fd Be a bit more verbose in circuit test reports to more clearly track current and upstream hop in graph traversal history. 2015-10-09 15:05:26 -07:00
a95fa379cc Circuit tests basically work but need some tweaks, and fix some issues found with valgrind. 2015-10-09 14:51:38 -07:00
07536216c2 Removed netcon/.depend 2015-10-09 17:36:27 -04:00
3bcb6bf321 Minor cleanup 2015-10-09 17:31:22 -04:00
7f56678d84 Added liblwip.so and libintercept build files 2015-10-09 17:06:09 -04:00
97dee9de36 Add more helpful example stuff. 2015-10-09 12:50:52 -07:00
e3ec000e93 Added intercept build file and sources 2015-10-09 15:41:16 -04:00
6b5bb0b278 Eliminate format string warnings. 2015-10-09 12:22:13 -07:00
e33adad8f5 Script to quickly generate test docker env files. 2015-10-09 12:15:42 -07:00
769bad3320 Test: Added handle_write call to nc_poll 2015-10-09 15:05:45 -04:00
9a25651151 . 2015-10-09 10:14:45 -07:00
c2bbec2f05 Docker example (and useful for testing) 2015-10-09 10:14:20 -07:00
0c498556d5 Unroll Salsa20 fully for a little more speed (non-SSE now almost as fast as SSE) 2015-10-09 09:39:27 -07:00
3fa6dd377f docs 2015-10-09 08:51:57 -07:00
6600b005b6 No Whack! 2015-10-08 21:24:51 -04:00
b5b57aca02 Whack! 2015-10-08 21:04:47 -04:00
160278c489 Little bit of reorg in Salsa20 which seems to speed things up very slightly. 2015-10-08 17:42:53 -07:00
d868a234da Refactored write logic 2015-10-08 19:38:29 -04:00
59da8b2a4b Logging of circuit test results to disk. 2015-10-08 15:44:06 -07:00
41dfbe544f Removed exit(0) for debugging 2015-10-08 18:10:10 -04:00
bbfc9359e9 Minor timer changes (~21 Mb/s local) 2015-10-08 17:55:58 -04:00
558775d544 Merge branch 'adamierymenko-dev' of http://10.6.6.2/zerotier/ZeroTierOne into adamierymenko-dev 2015-10-08 13:26:43 -07:00
a3876353ca Abiltiy to post a test via the controller web API, and parsing of CIRCUIT_TEST_REPORT messages. 2015-10-08 13:25:38 -07:00
273f0d18b0 docs 2015-10-08 09:05:25 -07:00
9347d6c866 Make it so ZeroTierOne.h can be used with a C compiler again. 2015-10-07 18:04:40 -07:00
fea1b6b2c3 docs 2015-10-07 16:25:08 -07:00
0ce0bc00d2 Make sure received() gets called for some new messages, and docs. 2015-10-07 16:20:54 -07:00
69b44bf9a5 Finally add an ECHO. 2015-10-07 16:11:50 -07:00
73cafbe0ec Limit proof of work difficulty to something sane. 2015-10-07 13:46:44 -07:00
e5f168f599 Add proof of work request for future DDOS mitigation use. 2015-10-07 13:35:46 -07:00
7d62dbe9f7 Tune NAT-t keepalives so that timing is better obeyed, clean up a build warning, and fix a potential source of network recursion (though harmless). 2015-10-07 11:57:59 -07:00
13f14c2f4c Kill debug line. 2015-10-07 10:56:47 -07:00
c952fbbd8d Only enable 128-bit Poly1305 on X86_64 right now. Has compilation issues on ARM, but the 64-bit version should be fine. 2015-10-07 10:40:59 -07:00
ab0228f626 More cleanup and simple refactoring, consolidate InetAddres serialize/deserialize into the class. 2015-10-07 10:30:47 -07:00
6c7ce79c89 Be consistent in how enums are defined in the main .h file. 2015-10-07 09:51:35 -07:00
1b2cac0cc5 Trim some cruft that is not used and probably never would be. 2015-10-07 09:38:33 -07:00
1bc33ae8d7 Minor debug output changes 2015-10-06 21:22:08 -04:00
598a1d8dd7 Try reopening /dev/urandom if there is a problem. 2015-10-06 18:10:40 -07:00
64aaea3978 Cleanup, and add an even faster Poly1305 on systems that support it. 2015-10-06 18:04:53 -07:00
876aa0883d Merge branch 'adamierymenko-dev' into netcon 2015-10-06 17:56:47 -07:00
477feee8a3 Some work on CIRCUIT_TEST, and a significant speedup to Poly1305. 2015-10-06 17:55:57 -07:00
36db5865e7 Refactored tcp_write code - Reduced CPU usage to respectable levels 2015-10-06 20:32:48 -04:00
7394ec6f6a Prep in controller code to run tests. 2015-10-06 15:56:18 -07:00
3593fb3462 Send initial CIRCUIT_TEST packet. 2015-10-06 15:16:41 -07:00
d3f29d09e8 Plumbing through circuit test stuff. 2015-10-06 14:42:51 -07:00
5341afcdcd Handling of CIRCUIT_TEST, should be ready to test. 2015-10-06 11:47:16 -07:00
57c857e89a Fix TRACE output. 2015-10-06 06:57:00 -07:00
c16ad053b6 no toString() method on peer. Commenting out for now. 2015-10-02 19:39:46 -07:00
6080a45c9c change cert to com. no variable named cert. 2015-10-02 19:39:13 -07:00
5384f185ae Simplify Dictionary and reduce memory usage, now no more std::maps in core. 2015-10-01 18:12:16 -07:00
76a95dc58f The return of peer peristence. 2015-10-01 17:09:01 -07:00
5076c49210 Peer serialization and related changes. 2015-10-01 15:40:54 -07:00
72e7e36a5b No reason to randomly pick uPnP secondary port. In fact it would likely cause problems on restarts and uPnP rule bloat. 2015-10-01 14:40:28 -07:00
2fa21aa676 . 2015-10-01 13:43:57 -07:00
3999e468b7 Need to hold nconf so *com does not die while being used. 2015-10-01 13:43:15 -07:00
6693149f3e Send COM with MULTICAST_GATHER for future use. 2015-10-01 13:34:12 -07:00
2c196307ee --bugs; 2015-10-01 13:01:18 -07:00
d6676a9d6c Always announce multicast groups, not just to peers with direct links, and push network COMs to any MULTICAST_LIKE recipient for future use. 2015-10-01 12:50:19 -07:00
a7409850d6 Get trim() out of core where it is not needed. 2015-10-01 12:37:18 -07:00
53e5f94b99 . 2015-10-01 12:25:43 -07:00
64bf3ffe6c Mutex cleanup. 2015-10-01 11:44:09 -07:00
9405150b11 Restore group announcement on Peer::receive() but centralize packet composition in one place. 2015-10-01 11:37:02 -07:00
a3db7d0728 Refactor: move network COMs out of Network and into Peer in prep for tightening up multicast lookup and other things. 2015-10-01 11:11:52 -07:00
11ff96ba1d Consider IPv6 paths reliable (no constant keepalives needed) 2015-09-30 15:20:08 -07:00
0d0039674f Add new verb names, and fix some Mac compiler flags. 2015-09-30 14:48:07 -07:00
789046ca57 Speed up Salsa20 just a bit. 2015-09-30 14:35:05 -07:00
1a4f16e0ed More work on circuit testing... 2015-09-30 13:59:05 -07:00
4983fd3776 Recompiled ZTO binary with fix + moves index.html to var/www 2015-09-29 14:32:07 -04:00
cc10d4f310 Speed up multicast group checking/registration. 2015-09-29 10:31:41 -07:00
167a5039d0 . 2015-09-28 23:40:20 -07:00
4b82171a95 . 2015-09-28 22:16:58 -07:00
b4624237af . 2015-09-28 22:14:32 -07:00
49f93a57bf . 2015-09-28 17:07:46 -07:00
ea71738c72 Entry point stuff... 2015-09-28 16:36:20 -07:00
49956ed63d Updated intercept library for Earth 2015-09-28 19:31:32 -04:00
280fcc3771 add cr after identity in demo script. 2015-09-28 16:15:17 -07:00
3a6346f560 More entry point work, and change network to 8056c2e21c000001 for demo. 2015-09-28 16:14:32 -07:00
980d145f48 Entry point changes to wait for ZT startup, print banners, log output debug messages and trace to files. 2015-09-28 15:31:47 -07:00
a7bd1eaa40 Never assign v4 IPs ending in .255 even within range. 2015-09-28 15:28:30 -07:00
1773dca9dc Optimized Dockerfile arrangement 2015-09-28 17:59:54 -04:00
8e3e830e89 Working intercepted Apache 2015-09-28 17:47:38 -04:00
77b385fb12 Re-added Apache to Dockerfile 2015-09-28 17:30:18 -04:00
0b34d8e75e New Dockerfile 2015-09-28 16:56:14 -04:00
0c3dd2be96 Fixed apache script 2015-09-27 21:48:38 -04:00
444481f6d9 Modified Dockerfile 2015-09-27 21:26:57 -04:00
299ec12b39 Added docker-test folder 2015-09-27 21:16:02 -04:00
b21c5d8e51 Added dockerfile 2015-09-27 20:51:32 -04:00
2d0adb562d Specify circuit test messages. 2015-09-27 11:37:39 -07:00
3bc9530db7 Object-Model refactor: Removed notion of Client 2015-09-27 06:08:39 -04:00
75a191a856 don't create an InetSocketAddress on local address if it's equal to ZT_SOCKADDR_NULL 2015-09-26 14:10:45 -07:00
7c3be2b5c1 fix function signature in lookup for onSendPacketRequested function 2015-09-26 14:10:16 -07:00
0b9e5928d3 update PacketSender interface 2015-09-26 13:53:38 -07:00
e8cdff3eaf Merge branch 'adamierymenko-dev' into android-jni-dev
also update for changed function calls that now accept a local address

# Conflicts:
#	include/ZeroTierOne.h
#	java/CMakeLists.txt
#	java/jni/Android.mk
#	java/jni/ZT1_jnicache.cpp
#	java/jni/ZT1_jnilookup.h
#	java/jni/ZT1_jniutils.cpp
#	java/jni/com_zerotierone_sdk_Node.cpp
2015-09-26 13:47:55 -07:00
fe78eb77d4 Fixed another closure bug 2015-09-24 19:22:56 -04:00
f69454ec98 (1) Make ZT_ naming convention consistent (get rid of ZT1_), (2) Make local interface a full sockaddr_storage instead of an int identifier, which turns out to be better for multi-homing and other uses. 2015-09-24 16:21:36 -07:00
8a8264bc39 Fixed their_fd closure bug 2015-09-24 17:33:25 -04:00
1119f64a77 Fixed connection closure issue 2015-09-24 17:10:30 -04:00
c25ceaf06b Fixed recursive lock problem in closeConnection 2015-09-24 16:15:14 -04:00
b263926ea6 thread fixes. 2015-09-24 13:02:10 -07:00
84747b1a14 thread fixes... 2015-09-24 13:01:19 -07:00
9396b8d53c Minor debug changes 2015-09-24 15:56:48 -04:00
37497ec2a8 Minor changes 2015-09-24 15:31:11 -04:00
851e4c667f Minor changes 2015-09-24 15:30:07 -04:00
9feeafd757 Make LWIPStack thread safe. 2015-09-24 12:29:10 -07:00
0027a1e152 Merge branch 'netcon' of http://10.6.6.2/zerotier/zerotierone into netcon 2015-09-24 14:33:49 -04:00
65af5af138 Added debug statements 2015-09-24 14:33:15 -04:00
557d2b3b0d Make LWIPStack clean up properly. 2015-09-24 11:11:16 -07:00
fbde40d1fc Merge branch 'adamierymenko-dev' into netcon 2015-09-24 11:00:22 -07:00
557c0c29b0 minor changes 2015-09-23 19:45:44 -04:00
0e5aac6a11 Prefer IPv6 paths if available. 2015-09-23 16:16:36 -07:00
b242216674 Version bump, preparing for a likely 1.0.6 soon. 2015-09-23 16:10:06 -07:00
423412df98 Pick a random secondary UDP port for uPnP mapped traffic because of broken routers. 2015-09-23 15:16:20 -07:00
c85dd262ed moved lib files to ext 2015-09-23 18:03:21 -04:00
02d5a31822 added lwip unix port lib files 2015-09-23 17:55:15 -04:00
7821d1cbdd . 2015-09-23 14:44:13 -07:00
80dc7fb675 Pick random port on -p0 2015-09-23 14:38:16 -07:00
a3ed5277ef Make sure ZT_NO_TYPE_PUNNING also obeyed here. 2015-09-23 14:09:27 -07:00
2a527ea82e Fix for timer jitter problem. 2015-09-23 14:01:41 -07:00
367ffde00c Plumb through localInterfaceId to track local interfaces corresponding with remote addresses. 2015-09-23 13:49:56 -07:00
bbdb8eb0de more commenting and cleaning 2015-09-23 15:23:26 -04:00
b6a6346405 commenting and cleanup 2015-09-23 14:23:36 -04:00
4464fa5d39 Eliminate another warning. 2015-09-23 10:29:05 -07:00
86996d4315 Eliminate compiler warning. 2015-09-23 10:27:53 -07:00
07cef1bdb8 misc cleanup 2015-09-22 19:53:36 -04:00
69f006f641 . 2015-09-22 16:02:02 -07:00
d656e87395 Send a random small payload for NAT keepalives, since zero byte packets seem to fail to keep associations alive behind some NATs. 2015-09-22 15:58:00 -07:00
3cb8070980 it's alive! -- hooked up new fd-handling code 2015-09-22 18:44:54 -04:00
ff7ac0487b . 2015-09-22 15:16:38 -07:00
19c0923a86 Merge branch 'adamierymenko-dev' into netcon 2015-09-22 15:11:51 -07:00
6ce64c2557 Phy<> loses socketpair, gains raw FD monitoring. 2015-09-22 15:11:32 -07:00
3ed5edb295 fixed fd-transfer logic bug, needs new write-queue logic 2015-09-22 17:43:20 -04:00
c3dbae8d5e more debugs 2015-09-22 13:35:37 -04:00
b2494b53e6 adjusted output size for packets 2015-09-22 13:27:27 -04:00
f091a074d4 output lengths 2015-09-22 13:25:24 -04:00
f80d65286c more debug statements 2015-09-22 13:21:33 -04:00
0271e3d3ac . 2015-09-22 10:00:00 -07:00
00cb8dbda8 timer change 2015-09-22 12:48:53 -04:00
025069de7e timer change 2015-09-21 20:51:35 -04:00
86673bd6d6 fixed minor bugs and added debug outputs 2015-09-21 19:39:26 -04:00
ddf3d1f949 Controller side support for IPv6 assignment. 2015-09-18 13:35:00 -07:00
3664966340 Generate local IPv6 addresses from network IDs and addresses. 2015-09-17 21:30:32 -07:00
cb6864f04a updated nc_accept and lwip.so 2015-09-15 20:32:00 -04:00
701e1654a1 moved IP/netif allocation code 2015-09-15 19:06:16 -04:00
732de5bf7f some cleanup 2015-09-15 18:47:40 -04:00
11731af45a it's alive! 2015-09-15 18:27:52 -04:00
735ae9b369 debug changes 2015-09-15 15:41:57 -04:00
cb277f52e8 Merge branch 'netcon' of http://10.6.6.2/zerotier/zerotierone into netcon 2015-09-15 14:16:28 -04:00
8ea83c9548 netif code hooked up 2015-09-15 14:15:59 -04:00
610ab0750c Drop Sqlite-based Log table for now and switch to an in-memory log for recent activity. Log table gets too big on busy nodes. Should probably support push of events to some kind of event system later. 2015-09-15 10:59:23 -07:00
d06499a50c Merge branch 'adamierymenko-dev' of http://git.int.zerotier.com/zerotier/zerotierone into netcon 2015-09-14 12:00:03 -07:00
ef316ced3b Fix JSON. 2015-09-14 11:59:43 -07:00
0617b17534 Merge branch 'netcon' of http://git.int.zerotier.com/zerotier/zerotierone into netcon 2015-09-14 11:36:01 -07:00
f7d3e262a9 ifdef default assignments 2015-09-11 17:16:38 -07:00
8189b2ba91 retval fix 2015-09-11 19:29:35 -04:00
e73868bc5a various segfault fixes 2015-09-11 19:02:44 -04:00
6f0bc1f676 added debugs, fixed linux makefile 2015-09-11 18:22:41 -04:00
88898c68d7 Merge branch 'adamierymenko-dev' of http://git.int.zerotier.com/zerotier/zerotierone into netcon 2015-09-11 15:02:38 -07:00
cd005341c5 Extra statement to clean up Members -- cascade did not seem to work, possibly due to dual key. 2015-09-11 15:02:26 -07:00
bc666d0ab7 added pbuf alloc block 2015-09-11 15:26:39 -04:00
933b47389d Add Arp to netcon build. 2015-09-11 12:19:48 -07:00
a8d7a31327 Integrate arp into NetconEthernetTap. 2015-09-11 12:12:45 -07:00
c2226cf0df added TRACEs 2015-09-11 14:47:16 -04:00
5f6eb2ce98 Merge branch 'adamierymenko-dev' into netcon 2015-09-11 11:46:44 -07:00
c1a53a2653 ARP cache and responder agent code for use in netcon and iOS. 2015-09-11 11:45:04 -07:00
776f93e7be closeConnection / closeClient changes 2015-09-11 14:12:27 -04:00
5a5a513b18 small method changes 2015-09-11 14:00:42 -04:00
cc4a2bb0c3 filled out hendlers 2015-09-10 20:34:48 -04:00
e4dc46741f compiles, technically 2015-09-10 20:22:35 -04:00
20beafedc5 refactor almost complete 2015-09-10 20:02:13 -04:00
8d82ac5cc8 Merge branch 'adamierymenko-dev' into netcon 2015-09-10 15:56:15 -07:00
9dc2ef5549 Rename some stuff in Phy since it can be used with any stream socket. 2015-09-10 15:55:48 -07:00
cd3d77987c . 2015-09-10 15:52:24 -07:00
b11d429bc0 refactor in progress 2015-09-10 18:48:45 -04:00
e391bc004b refactor in progress 2015-09-10 18:19:43 -04:00
a35fa7ac93 Add expansion of netconf in _test field. 2015-09-10 15:14:10 -07:00
bebe3d7cfa Fix deadlock in test mode. 2015-09-10 14:47:04 -07:00
c1f1530d54 refactor in progress 2015-09-10 17:44:01 -04:00
1f7a41cff8 Fix to allowing identity to be populated if not present. 2015-09-10 14:37:34 -07:00
f4d3c995bc refactor in progress 2015-09-10 16:52:18 -04:00
637da383f5 Remove unnecessary accessors. 2015-09-10 13:22:44 -07:00
389ea272a0 Merge adamierymenko-dev 2015-09-10 13:20:00 -07:00
9a723be263 Add socketpair support to Phy. 2015-09-10 13:18:57 -07:00
3802d37d29 started refactor 2015-09-10 15:46:37 -04:00
750352836f initial commit 2015-09-10 13:56:01 -04:00
a43c3fbf2e Merge branch 'adamierymenko-dev' into netcon 2015-09-09 09:54:39 -07:00
4fbcad2468 Allow identity to be populated for newly inserted Member objects to permit transfer from old network controller and testing. 2015-09-08 13:02:42 -07:00
0d386f1c31 Add a bit of useful testing instrumentation to SqliteNetworkController. 2015-09-08 11:35:55 -07:00
85b90f122a Final std::map<> from Switch, and add some smallish default values for hash size. 2015-09-04 15:35:43 -07:00
3dba016a93 Almost done... very few std::map<>s remaining in any spot that matters. 2015-09-04 15:21:22 -07:00
db0369e9b8 Remove way-overkill multimap from Switch. 2015-09-04 14:56:39 -07:00
0ab3e49be9 Starting in on Switch... kill map in defrag queue, which will probably improve performance pretty decently under high load with lots of peers. 2015-09-04 14:44:22 -07:00
f116c4b9c0 ... and another ... 2015-09-04 14:24:31 -07:00
307e44f7c8 Two for one! (std::map removal) 2015-09-04 14:14:32 -07:00
d1341578d8 ... and another one! 2015-09-04 13:53:48 -07:00
7b8ce16057 Another std::map<> dies. 2015-09-04 13:42:19 -07:00
3a959a7763 Swap out std::map<> for Hashtable<> for main peer database in Topology. (ongoing std::map-ectomy) 2015-09-04 12:14:21 -07:00
cfd101c9b8 Add entries() to go with keys() for future use. 2015-09-04 11:50:12 -07:00
ca6ec120a9 Merge branch 'netcon' of http://git.int.zerotier.com/zerotier/zerotierone into netcon 2015-09-03 18:45:07 -07:00
88ba39b162 Merge branch 'adamierymenko-dev' into netcon 2015-09-03 18:44:57 -07:00
da9a720c3f Hash table bug fix, and add copy constructor and assignment operator for principle of least surprise. 2015-09-03 17:33:06 -07:00
10707c3673 build fix 2015-09-03 16:44:04 -07:00
b9d4b42f93 A few more fixes, ready to integrate main payload. 2015-09-03 16:05:18 -07:00
bf4cab5f2f Netcon build fixes. 2015-09-02 16:31:13 -07:00
1f4c667646 Netcon mode for Linux (in this branch, will make conditional later) 2015-09-02 16:15:22 -07:00
dfb08ec753 More netcon stuff, and Phy build fix. 2015-09-02 15:51:28 -07:00
4626175d11 Stub of NetconEthernetTap 2015-09-02 15:17:38 -07:00
4838cbc350 Unix domain sockets in Phy<> 2015-09-02 14:32:01 -07:00
53d98343b7 Merge branch 'master' into android-jni 2015-08-31 19:53:39 -07:00
73bedfcc01 ifdef default assignments 2015-08-29 17:54:30 -07:00
d5b48c90ed added a 512x512 app icon (for Play store) 2015-08-27 19:51:27 -07:00
ebfbb7f452 Merge branch 'master' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into android-jni 2015-08-27 19:31:46 -07:00
b11ffc9635 Integrate Hashtable into Multicaster, where @mwarning found heaviest std::map() overhead. 2015-08-27 16:17:21 -07:00
3947807b1f A simple and fast Hashtable, tested but not yet integrated with anything. 2015-08-27 15:36:13 -07:00
5db538d85e VERSION 1.0.5: Windows and Linux (upgrade) bug fixes
Version 1.0.5 is a very minor release. It includes a new build of the Windows
device driver that supports Windows Vista and 2008 Server, and a fix to prevent
an issue that could occur when updating Linux installations from old pre-1.0.3
versions to 1.0.3 or 1.0.4.

It also includes a few very minor fixes and improvements to the controller code,
which doesn't affect most users.

This second commit just bumps version.h. :)
2015-08-25 09:55:14 -07:00
a9176d7b62 VERSION 1.0.5: Windows and Linux (upgrade) bug fixes
Version 1.0.5 is a very minor release. It includes a new build of the Windows
device driver that supports Windows Vista and 2008 Server, and a fix to prevent
an issue that could occur when updating Linux installations from old pre-1.0.3
versions to 1.0.3 or 1.0.4.

It also includes a few very minor fixes and improvements to the controller code,
which doesn't affect most users.
2015-08-25 09:47:37 -07:00
b4487cefc9 Document rules requirement in controller. 2015-08-25 09:46:59 -07:00
867258de8b Document clock convenience field. 2015-08-25 09:44:21 -07:00
5fcef91278 Ignore old root-topology if present -- fix for upgrading on Linux and possibly elsewhere. 2015-08-25 09:42:37 -07:00
2aa1b5d9b7 Add clock helper field to both member and network to permit time duration calculation easily. 2015-08-24 12:44:07 -07:00
9a5be0a092 typo 2015-08-24 11:24:33 -07:00
4da794b389 Add authorizedMemberCount to controller network config records. 2015-08-19 11:43:56 -07:00
0a5429cab0 Lookup of member must be a left outer join in case the member is being manually inserted before we see the node. 2015-08-17 21:08:02 +00:00
7d676ad16a Merge branch 'adamierymenko-dev' into android-jni 2015-08-13 19:36:30 -07:00
b75bdedaee Manually set DeviceInstanceID since this registry key is missing on Windows Vista and Server 2008. 2015-08-13 15:52:54 -07:00
085734aaba Windows driver (NDIS6) rebuild using earlier DDK revision to allow driver to load in Windows 2008 Server and Windows Vista. Still issues with those platforms, but driver loads -- and shouldn't hurt newer versions (will test). 2015-08-13 15:18:48 -07:00
0fd6808e21 Merge branch 'master' into android-jni 2015-08-01 11:52:47 -07:00
bf193dd3cf VERSION 1.0.4: Stability, LAN, and NAT traversal improvements
ZeroTier One version 1.0.4 brings several improvements to stability,
connectivity between hosts on the same LAN, and NAT traversal.

Direct connectivity improvements:

 - ZeroTier One now opens port mappings using uPnP and/or NAT-PMP
   if they are available on your network. These are then made
   available to other (1.0.4 or newer) nodes. This should greatly
   improve direct connectivity success rates for users on networks
   that support port mapping. To build with this option, you must
   include ZT_USE_MINIUPNPC=1 on the make path. Pre-build binaries
   are included for many common architectures to make this easier.

 - A new message has been introduced whereby nodes can "push" IP
   address suggestions to other nodes. This is only done to nodes
   with whom you have a trust relationship, which right now means
   they are members of a network you've joined. The IP addresses
   sent include local interface addresses and possibly uPnP mappings
   if any are available. When nodes receive pushed IPs, they can
   attempt connectivity at these addresses. This greatly improves
   connectivity on local LANs, since the old broadcast mechanism
   proved too unreliable under many real world scenarios.

 - IPv6 addresses are also "pushed" via the aforementioned message,
   allowing direct connectivity over IPv6 if both hosts have an
   IPv6 address.

 - Some of the aggressive port-scanning NAT-t behavior has been
   removed, since this occasionally triggered intrusion alarms on
   some networks and proved ineffective in the field. uPnP will be
   a much bigger win, and is less "hacky."

 - The rate of (tiny) UDP keepalive packet generation was slightly
   increased. We were as surprised as you to learn that there are
   many NAT routers in the wild with timeouts as short as 20 seconds
   even though the RFC stipulates that they should be no shorter
   than two minutes (120 seconds).

All of these connectivity improvements rely upon a new message
introduced with 1.0.4, so they'll only work between 1.0.4 nodes.
Older methods of connectivity establishment will continue to work
with earlier versions.

Platform-specific improvements:

 - Many improvements have been made to Windows support and stability.
   The NDIS6 driver is now used exclusively. If you have ports that
   use NDIS5, these will automatically be re-created using the NDIS6
   driver. You may see a "select this network's type" notification
   after 1.0.4 upgrade for this reason.

 - The dependency on the external "devcon.exe" binary on Windows has
   been completely removed in favor of internal direct calls to the
   Windows setup API to add and remove network ports. These are done
   via dynamically loaded instances of the system setup DLLs to use
   the most recent setup API code on your system for improved
   compatibility.

 - This version is tested with Windows 10 release, and was confirmed
   to work on a clean install.

 - The ARM32/Raspbian build is now back to using Debian Wheezy for
   library backward compatibility (binary build only).

 - The Mac icon is now a bit smaller to look better in the dock.

 - The ui/ subfolder is now distributed with the Linux binary installer
   and packages. This means Linux users can navigate to the UI at
   http://127.0.0.1:9993/ and enter their authtoken.secret to use
   the GUI locally. (This port could also be accessed via SSH port
   forwarding or other mechanisms to administrate graphically from a
   remote system.)

Other improvements:

 - The new beta SQLite-backed controller microservice found in
   controller/ and built with the ZT_ENABLE_NETWORK_CONTROLLER=1 make
   option is now in a much more "working" state. Feel free to give
   it a try! If you tried it before, delete controller.db before
   starting the new version.

 - A few tweaks were made to the path selection logic in the hope of
   eliminating some flaky network behavior reported by users.

The next version of ZeroTier One will focus on performance and memory
footprint reduction, and may also include perfect forward security/secrecy
(a.k.a. PFS) once our design is finalized and reviewed.
2015-07-31 11:33:52 -07:00
facb009a1d Add security notice to auto-update info in -h output, and fix a missing paren. 2015-07-31 09:50:55 -07:00
8d09c37140 Remove a bit of redundant logic, and also announce MULTICAST_LIKEs to controllers (for future use). 2015-07-31 09:37:13 -07:00
f6ced547be Dead code removal. 2015-07-31 08:56:31 -07:00
c826cec1d4 Bring back _winPokeAHole() to dynamically allocate firewall exception. Shouldn't be needed but seems to help on Windows 8. 2015-07-30 17:52:35 -07:00
620562f7cf Because Windows, because Windows. Now it upgrades correctly from 1.0.1, including automatic driver update from NDIS5 to NDIS6. Also a bit more robust on creating new ports, just in case. 2015-07-30 17:00:57 -07:00
922d9657b9 Save enumeration of statically assigned IPs so they will always be reassigned on device "power cycle." 2015-07-30 14:10:32 -07:00
499b2dccad 1.0.4 installer GUID 2015-07-30 13:30:10 -07:00
1e3d5c4d87 Suppress icacls output on lockDownFile(). 2015-07-30 12:05:56 -07:00
6f46f0e0e1 Because Windows. 2015-07-30 11:57:48 -07:00
8169b35482 Kill the devcon.exe dependency by dynamically loading cfgmgr32, newdev, and setupapi and using these functions directly. 2015-07-30 11:31:38 -07:00
c9b4028cd3 Merge branch 'adamierymenko-dev' into android-jni 2015-07-29 20:13:32 -07:00
7cd3c419ee 1.0.4 release installer changes 2015-07-29 16:17:52 -07:00
fa03d50e90 Rebuild Mac UI wrapper with smaller icon and a small UI fix. 2015-07-29 15:58:16 -07:00
0dff741310 Add border around Mac icon so it looks better in Finder. 2015-07-29 15:53:05 -07:00
fcc5bf1e66 Go ahead and spec out controller DB support for AuthToken -- GitHub issue #211 -- even though full implementation won't make it into 1.0.4. 2015-07-29 15:09:23 -07:00
508d31513a Merge branch 'adamierymenko-dev' into android-jni 2015-07-28 19:18:33 -07:00
7578b56298 docs 2015-07-28 17:22:59 -07:00
2599b1bacc Add CLI support for /explicit/urls (automatically outputs JSON in this case), and some cleanup. 2015-07-28 17:10:56 -07:00
e3983f8a57 Get rid of -I on Mac and Linux since we include miniupnpc headers by direct path reference. 2015-07-28 16:51:46 -07:00
14264c2d6f Add miniupnpc builds for Windows, fix some Windows build warnings. 2015-07-28 16:50:18 -07:00
3c54187c40 Linux x86 libminiupnpc.a 2015-07-28 15:56:37 -07:00
7df4eb69b5 Linux x64 libminiupnpc.a 2015-07-24 17:49:56 -07:00
559e384130 Linux make support for libminiupnpc. 2015-07-28 15:37:18 -07:00
ebe5c526bb libminiupnpc.a for arm6l 2015-07-28 15:05:04 -07:00
5097aae716 Add miniupnpc to third party libs. 2015-07-28 14:50:24 -07:00
569c5e77fd Add binary build of libminiupnpc for Mac x64. 2015-07-28 14:48:26 -07:00
9c87decba6 Merge branch 'adamierymenko-dev' of http://git.int.zerotier.com/zerotier/zerotierone into adamierymenko-dev 2015-07-28 14:32:46 -07:00
fe6d5b1402 UPNP/NAT-PMP support with libminiupnpc (if built with it) -- GitHub issue #64 2015-07-28 14:32:02 -07:00
eea8d58afa docs,cleanup 2015-07-28 12:39:03 -07:00
21e6850722 Cancel NAT-t attempts if peer is no longer "alive" 2015-07-28 12:18:59 -07:00
5986d83738 Kill more kittens. 2015-07-28 12:04:14 -07:00
4564dd95ff Revert... no luck with any of that. 2015-07-28 12:00:50 -07:00
d2bfdfa6e7 Play with NAT-t tweaks some more. 2015-07-28 11:57:18 -07:00
b69afa010e Disable type punning on ARM by ifdef. 2015-07-28 11:50:01 -07:00
708aac1ea7 Remove some left over debug code, and fix attempt to send to self if we are an active bridge. 2015-07-28 11:43:09 -07:00
17bfd4d55e Add TRACE for NAT-t debugging. 2015-07-28 11:32:34 -07:00
b31071463c Try another NAT traversal improvement. 2015-07-28 11:28:47 -07:00
dda376c9eb Nuke some abandoned code. 2015-07-28 11:16:43 -07:00
40d5c79b62 Enable SO_NO_CHECK if available to skip UDP checksum on packet send for slight performance improvement. We do our own cryptographically secure authentication so UDP checksum is worthless. 2015-07-28 10:29:25 -07:00
1537109514 Merge branch 'master' into adamierymenko-dev 2015-07-28 09:40:54 -07:00
66c74f0ad9 Merge pull request #215 from nelsonjchen/patch-2
Update Application Mac Menu. Small MacGap leftover.
2015-07-28 09:39:42 -07:00
821f1f366e Fix to NAT escalation sequence. 2015-07-27 17:34:58 -07:00
e99eda4a4a Fix IP scoping bug, and disable remotely reported surface push... not helping. :( 2015-07-27 17:28:13 -07:00
fadb291962 Fix infinite loop typo. 2015-07-27 17:14:49 -07:00
f0003ea922 Push remote surface as reported by peers along with known interface direct paths to assist with (some) NAT traversal. (trying this, may back out if not effective) 2015-07-27 17:02:43 -07:00
e30ba3e138 Eliminate some aggressive port scanning NAT-t behavior that has proven ineffective. 2015-07-27 16:43:27 -07:00
7a15d8a7e3 Fix leaving of networks to actually call Network::destroy(). 2015-07-24 14:50:44 -07:00
dba91eaa09 Apply same Linux compiler-picker logic to Mac. 2015-07-24 13:17:41 -07:00
d57ea671d7 Add version to log. 2015-07-24 09:59:17 -07:00
d647a587a1 (1) Fix updating of network revision counter on member change.
(2) Go back to timestamp as certificate revision number. This is simpler
    and more robust than using the network revision number for this and
    forcing network revision fast-forward, which could cause some peers
    to fall off the horizon when you don't want them to.
2015-07-23 17:18:20 -07:00
a493fc23f4 Fix for make-linux: detect whether CC/CXX were explicitly overridden, and if not then use the gcc/clang selection logic. Otherwise ?= breaks this. 2015-07-23 13:05:18 -07:00
b3516c599b Add a rate limiting circuit breaker to the network controller to prevent flooding attacks and race conditions. 2015-07-23 10:10:17 -07:00
3ba54c7e35 Eliminate some poorly thought out optimizations from the netconf/controller interaction,
and go ahead and bump version to 1.0.4.

For a while in 1.0.3 -dev I was trying to optimize out repeated network controller
requests by using a ratcheting mechanism. If the client received a network config
that was indeed different from the one it had, it would respond by instantlly
requesting it again.

Not sure what I was thinking. It's fundamentally unsafe to respond to a message
with another message of the same type -- it risks a race condition. In this case
that's exactly what could happen.

It just isn't worth the added complexity to avoid a tiny, tiny amount of network
overhead, so I've taken this whole path out.

A few extra bytes every two minutes isn't worth fretting about, but as I recall
the reason for this optimization was to save CPU on the controller. This can be
achieved by just caching responses in memory *there* and serving those same
responses back out if they haven't changed.

I think I developed that 'ratcheting' stuff before I went full time on this. It's
hard to develop stuff like this without hours of sustained focus.
2015-07-23 09:50:10 -07:00
b41079ddf9 Update Application Mac Menu. Small MacGap leftover.
Hide ZeroTier One, not MacGap. 

Just a papercut.
2015-07-22 22:40:43 -07:00
e2a2993b18 Add a Log table to log queries for debugging and security logging. No JSON API support for querying the log yet, but will probably come via /network/###/member/###/log/... or something. 2015-07-22 14:01:49 -07:00
8ca885d27c Merge pull request #212 from keesbos/fix
Fix for output of empty (no members) network
2015-07-22 09:34:17 -07:00
bc0954381c Merge branch 'adamierymenko-dev' into android-jni 2015-07-21 17:53:39 -07:00
7c761dea72 Fix to member listing: I wanted an object with member IDs as keys and member revisions as values, not an array. 2015-07-21 14:12:22 -07:00
3f8a5b8b76 List members in the form of a hash of member ID and member revision so code can quickly detect which members have changed. 2015-07-21 13:38:59 -07:00
a061aa3d87 Remove "members" from Network record and instead enumerate members via specific query to /network/nwid/member sub-path. More RESTful, scalable, and compatible with how OnePoint code works. 2015-07-21 12:57:01 -07:00
b343eac10d Fix IP auto-assign bug due to missing subnet routes. 2015-07-21 12:42:43 -07:00
649a12472b Report controllerInstanceId in all objects so that controller resets can be easily detected by whatever is using the service. 2015-07-21 10:39:29 -07:00
d05e8a9772 Merge branch 'adamierymenko-dev' into android-jni 2015-07-20 19:51:58 -07:00
cac6be87ba Fix bug in rules JSON output. 2015-07-20 16:31:37 -07:00
38d34a7495 Proper handling of NULL entry for etherType in rules table. 2015-07-20 15:11:53 -07:00
fb4c3dd8d4 Fix string overwrite bug. 2015-07-20 14:31:33 -07:00
1ffd67e014 Get rid of false foreign key in Relay. 2015-07-20 14:28:30 -07:00
8c18c60c00 sp. 2015-07-17 15:30:13 -07:00
bca8886ff8 IP assignment pool range bug fix. 2015-07-17 15:09:28 -07:00
1f7bb67069 Fix some SQL and make instanceId more robustly random. 2015-07-17 13:09:53 -07:00
712e2785f2 Fix bad JSON in response. 2015-07-17 12:24:42 -07:00
5515909c1e Add a concept of an "instanceId" to the controller, which the OnePoint can use to determine whether it is the same running database instance it already knows. 2015-07-17 10:47:21 -07:00
5ef806c43c Fix addLocalInterfaceAddress call in OneService on Windows 2015-07-16 19:20:43 -07:00
1e8ead441c Merge branch 'adamierymenko-dev' into android-jni 2015-07-16 18:09:57 -07:00
0db7c94c90 Add memberRevision stuff to JSON output, and update docs. 2015-07-16 17:42:47 -07:00
99969b186b Add a concept of a member revision counter to networks. This can be used to select all members that have been added or changed since a given point. 2015-07-16 17:34:03 -07:00
f9f7de0ec7 Networks don't need their ID as a default name. 2015-07-14 15:54:56 -07:00
d27c14af48 Don't allow zero as a network number. 2015-07-14 12:32:57 -07:00
88949a750f Workaround for uclibc missing map::operator==() 2015-07-13 11:39:55 -07:00
547b1c6157 Add additional TRACE output in pushDirectPaths. 2015-07-13 10:35:33 -07:00
0b354803f3 Clean up some YAGNI issues with implementation of GitHub issue #180, and make best path choice aware of path rank. 2015-07-13 10:03:04 -07:00
0b9524f23d Merge branch 'adamierymenko-dev' of http://git.int.zerotier.com/zerotier/zerotierone into adamierymenko-dev 2015-07-13 09:30:02 -07:00
4bf3bcbd55 Fixes to PUSH_DIRECT_PATHS. 2015-07-13 09:29:51 -07:00
3f0eca72f7 ZT_TRACE build fix. 2015-07-13 08:36:22 -07:00
fe20f0d7cd Put back legacy code to listen for LAN announcements to support same network location with pre-1.0.4 clients. 2015-07-13 08:33:02 -07:00
d78e3bb307 Disable HTTP test in selftest since it works, and GitHub issue #207. 2015-07-13 07:42:20 -07:00
e45475c5b5 fixed a misspelling 2015-07-09 20:26:23 -07:00
a408e5f685 set ZT_NO_TYPE_PUNNING and -O3 for Android builds 2015-07-08 18:00:13 -07:00
f67ddb579d Merge branch 'adamierymenko-dev' into android-jni 2015-07-08 17:30:22 -07:00
a297e4a5bf Add build def ZT_NO_TYPE_PUNNING, which when defined disables type punning code that might cause unaligned access errors on architectures that care (e.g. Android/ARM) 2015-07-08 09:12:51 -07:00
1ad2cfeedf Merge branch 'adamierymenko-dev' into android-jni 2015-07-07 19:24:02 -07:00
412389ec75 Implement ERROR_UNWATNED_MULTICAST 2015-07-07 11:49:38 -07:00
cf6f30963c Kill a potential source of type punning BUS errors on Android, and besides that hack probably did not improve performance at all given the short lenghts of things compared with secureEq() 2015-07-07 10:59:59 -07:00
3f567a07ca Save a little bit of RAM by getting rid of overkill CMWC4096 non-crypto PRNG and replacing it with a simple non-crypto PRNG that just uses Salsa20. 2015-07-07 10:49:50 -07:00
41fc08b330 etherTypeName() is only used in Switch and only with ZT_TRACE 2015-07-07 10:06:05 -07:00
07ea4fd4f9 Fix potential bug in controller config request. 2015-07-07 10:02:48 -07:00
778c7e6e70 More cleanup to direct path push, comment fixes, etc. 2015-07-07 10:00:34 -07:00
c863ff3f02 A bunch of comments and cleanup, including some to yesterday's direct path pushing changes. Move path viability check to one place, and stop trying to use link-local addresses since they are not reliable. 2015-07-07 08:54:48 -07:00
f398952a6c Revert some bad docs in Packet -- I think we will still use that. Also rename addMembershipCertificate to more security-descriptive validateAndAddMembershipCertificate, give it a return value, and drop unused force parameter. 2015-07-07 08:14:41 -07:00
56285ec0d4 Another attempt at a fix for all the Windows driver coma issues. 2015-07-06 17:58:04 -07:00
25a067c8c3 Eliminate debug printf(). 2015-07-06 17:37:32 -07:00
91fa643131 Minor fix to Windows local adapter address enumeration. 2015-07-06 17:36:58 -07:00
6da9d2d36f Remove debug printf(). 2015-07-06 17:23:22 -07:00
f881cdd767 Add new .h file to VS build, and Windows side of local interface address enumeration. 2015-07-06 17:22:37 -07:00
84ba365c77 Fix bug in direct path push send. 2015-07-06 17:20:41 -07:00
f9f4dd5276 Fix FreeBSD regression -- gmake defaults g++ which does not exist. 2015-07-06 16:47:41 -07:00
cac55105c3 Fix a regression. 2015-07-06 16:40:23 -07:00
a87cd2d094 Unix side of local interface address awareness for GitHub issue #180. 2015-07-06 16:32:34 -07:00
235f4762b7 Plumbing for local interface addresses -- GitHub issue #180 2015-07-06 15:51:04 -07:00
79e9a8bcc2 Almost everything for GitHub issue #180 except direct path map setup. 2015-07-06 15:28:48 -07:00
fad9dff2db Almost all of GitHub issue #180 2015-07-06 15:05:04 -07:00
1632aec102 Check Network::isAllowed() always on multicast send. 2015-07-06 14:53:27 -07:00
255320e2a6 pushDirectPaths() implementation 2015-07-06 14:39:28 -07:00
93bb934d4e Some cleanup, docs, and Path -> Path > RemotePath refactor. 2015-07-06 14:08:13 -07:00
feddd946f9 For curiosity add Salsa20/8 to benchmarks. 2015-07-06 13:51:25 -07:00
6bfbc43e3c Include COM with EXT_FRAME in bridged case. 2015-07-06 12:46:27 -07:00
35b5dcf89d Kill debug line. 2015-07-06 12:39:20 -07:00
9743db3538 docs 2015-07-06 12:37:37 -07:00
e5f7c55c54 Documentation in Packet, more work on path push, and clean up ancient legacy support code in Switch. 2015-07-06 12:34:35 -07:00
df08c2cfab Merge pull request #203 from mwarning/loadlibs
rename LIBS to LDLIBS and make it accessible from outside
2015-07-06 09:01:38 -07:00
21cdfb96de rename LIBS to LDLIBS and make it accessible from outside 2015-07-06 00:09:03 +02:00
53c7f61f98 Fix for output of empty (no members) network 2015-07-05 13:27:27 +02:00
6d398beefd Merge branch 'adamierymenko-dev' into android-jni 2015-07-03 18:15:56 -07:00
ab34884e3e Set -O0
anything above that currently goes kaboom on ARM platforms
2015-07-03 18:14:50 -07:00
532f413472 Merge pull request #202 from mwarning/openwrt
allow environment variables to set/extend build variables
2015-07-03 14:28:53 -07:00
235d4aba9a allow environment variables to set/extend CC, CXX, CFLAGS and LDFLAGS 2015-07-03 23:21:23 +02:00
cfdf4e3a49 GitHub issue #171 -- separate CFLAGS and CXXFLAGS in Linux makefile 2015-07-02 09:13:56 -07:00
f19c3c51d3 Revert slow non-SSE Salsa20 modification since it did not fix Android/ARM issue. Also update Salsa20 comments and clean up a bit. 2015-07-02 09:00:00 -07:00
0b7cd2f40a change some build settings. add a lock 2015-07-01 20:26:14 -07:00
2a2e3b80b3 Merge branch 'adamierymenko-dev' into android-jni 2015-07-01 18:13:59 -07:00
f803dd5ff4 ... 2015-07-01 18:13:39 -07:00
7c9949eea3 For @glimberg -- a *possible* fix to the alignment headaches on Android/ARM. If this works we should find a define that can be used to enable it there since it will slow things down on non-x86 other architectures. 2015-07-01 12:29:23 -07:00
d853dbf2d8 Merge branch 'adamierymenko-dev' into android-jni 2015-06-30 19:23:23 -07:00
aee8e95d49 logging 2015-06-30 19:21:46 -07:00
0cbbcf2884 Rename VERB_CMA to the more descriptive VERB_PHYSICAL_ADDRESS_PUSH 2015-06-29 16:01:01 -07:00
30e4a188d0 ipLocalRoutes now exposed via network objects in JSON controller API, and documentation changes. 2015-06-29 15:34:26 -07:00
5c9411a671 Untested -- modifications to support IP ranges instead of ip/mask for IP assignment pools, also add portId to Rule for future use. 2015-06-29 14:52:09 -07:00
48a2ad032a (1) Both nodeId and portId in Rule can be NULL, (2) remove on delete cascade since rules should never mysteriously disappear from the rules table. If it let you delete a node with rules, that would be a UI or cleanup function bug. 2015-06-29 10:47:47 -07:00
f05e62deae DB schema changes: separate portId in rules, ranges in IP assignment pools. (No code changes yet so code is broken.) 2015-06-29 10:40:31 -07:00
dbee1b38b3 Fix semantics of std::unique() to actually remove duplicates (hidden memory leak?) 2015-06-29 10:21:28 -07:00
c9919cc5ba reflect changes to ZT1_PeerRole in JNI 2015-06-26 18:26:57 -07:00
9c26d10ea6 Merge branch 'adamierymenko-dev' into android-jni 2015-06-26 17:44:09 -07:00
3f71afd0fb Put multicast txQueue back to list. 2015-06-26 14:26:35 -07:00
221df51875 Add Kees Bos to AUTHORS :) 2015-06-26 13:04:52 -07:00
f33f3fcb72 Merge pull request #196 from keesbos/fixes
Fixes for controller
2015-06-26 13:02:33 -07:00
57c7992c78 GitHub issue #191 - kill intra-network multicast rate limits (which were not well supported or easily configurable anyway) -- this is really left over from the old collaborative multicast propagation algorithm. New algorithm (in for a while) has been sender-side replication in which sender "pays" all bandwidth, which intrinsically limits multicast. 2015-06-26 12:36:45 -07:00
c287ae4d1d Redo conversion of _networks to a vector. Just use a simple linear search and put the nwid in a pair with the pointer so linear search can be done without pointer chasing. This should be the fastest option for anything less than dozens of networks, and should save memory over the old map. 2015-06-26 11:38:31 -07:00
3eca5d9c29 Fix reporting of ipAssignments for ipv4 2015-06-26 07:22:30 +02:00
8a68624dae Fix cert verification check for self signed signatures 2015-06-26 07:22:13 +02:00
bfb152f53f configure the NDK to build all supported ABIs and package them up in the jar 2015-06-24 20:31:22 -07:00
759d71037e added Comparable interface to VirtualNetworkConfig so we can sort arrays containing it. 2015-06-23 23:03:02 -07:00
daebce4994 Merge pull request #192 from mwarning/replace_erase
replace vector::erase, was missed in a previous commit (ref #186)
2015-06-23 11:13:20 -07:00
def9cf2a6a replace vector::erase, was missed in a previous commit (ref #186) 2015-06-23 00:09:15 +02:00
4aa8449fe1 Merge branch '_networks_vector' of https://github.com/mwarning/ZeroTierOne into adamierymenko-dev 2015-06-22 10:34:55 -07:00
53aad7f6bd Merge pull request #189 from keesbos/bugfix-auth-member
Fixed member authorization bug and minor cleanup
2015-06-22 10:17:14 -07:00
787608b568 use _network function to reduce source code complexity 2015-06-20 16:34:19 +02:00
2b04ac5e9b replace _networks map by vector
_networks is usually quite small, using binary search on a vector might be faster comapred to std::map.
This is especially true when using uClibc++, which uses a list.
2015-06-20 16:25:21 +02:00
adf89901c4 dont consider multicast groups in VirtualNetworkConfig.equals() 2015-06-19 19:00:06 -07:00
50d4f66d73 Fixed member authorization bug and minor cleanup 2015-06-19 21:19:42 +02:00
7bae95836c Root server terminology cleanup, and tighten up a security check by checking full identity of peers instead of just address. 2015-06-19 10:23:25 -07:00
07f84a99b4 Rebuild properly signed root topology after supernode -> rootserver name change. 2015-06-19 09:52:45 -07:00
f89f02ce9e Merge pull request #187 from keesbos/fix-ipv4-assignment
Fix for ipv4 assignment
2015-06-19 09:08:06 -07:00
be4f08a548 Merge pull request #186 from mwarning/txQueue_vector
replace txQueue list by vector for faster memory access and less allo…
2015-06-18 15:42:12 -07:00
0073d0f694 replace txQueue list by vector for faster memory access and less allocations 2015-06-19 00:28:51 +02:00
16eae132fa Fix for ipv4 assignment 2015-06-18 19:14:52 +02:00
6fc150bddb Move js/ to ZeroTierIntegrations project. 2015-06-18 08:01:28 -07:00
dfdd46db80 Merge branch 'adamierymenko-dev' into android-jni 2015-06-17 18:42:23 -07:00
87bb0086de Almost certain fix for GitHub issue #184 on -dev 2015-06-17 12:46:12 -07:00
1d0654bd14 Merge pull request #182 from keesbos/rootserver
Renamed supernode to rootserver
2015-06-16 13:50:29 -07:00
463442eb6f Merge pull request #181 from keesbos/bugfix
Bugfixes
2015-06-16 13:50:13 -07:00
4affa10ca0 Fix 404 on creation of new network 2015-06-15 10:29:12 +02:00
2e1d363a86 Removed a superfluous cross join 2015-06-15 03:19:25 +02:00
1cbdae65fe Fix controller/network/*/member/*
Cross join works other than expected or something changed. The
_sGetMember2 returned too many rows. Replaced it with an explicit
join statement.
2015-06-15 03:19:25 +02:00
dcbae5f313 Bugfix controller get member info 2015-06-15 03:19:25 +02:00
c59c74ddda Merge branch 'adamierymenko-dev' into android-jni 2015-06-13 14:39:45 -07:00
abbcb0a12c Modified ant build script so that it can be integrated with Android Studio's build system 2015-06-13 14:38:04 -07:00
845955dea5 Add definition for VERB_CMA -- GitHub issue #180 2015-06-13 18:08:00 +02:00
8aa68cd5f1 Add new fields in operator== 2015-06-13 13:13:19 +02:00
edbc5d3588 Gateways support in NetworkConfig object. 2015-06-13 13:06:49 +02:00
96a58becf8 Gateways support in network controller schema and database (not implemented yet in client) toward GitHub issue #178 2015-06-13 11:34:31 +02:00
8a9715f183 Rename ruleId to ruleNo and optimize some indexes in Sqlite3 schema. 2015-06-13 10:05:34 +02:00
1b122cddbd Merge pull request #179 from keesbos/bugfix
Pickup return code from handleControlPlaneHttpGET and handleControlPlaneHttpPOST
2015-06-13 09:37:00 +02:00
42390e662b Pickup return code from handleControlPlaneHttpGET and handleControlPlaneHttpPOST 2015-06-13 03:14:06 +02:00
494681a482 This might be a final fix for GitHub issue #173 and possibly others: ACTIVELY detect borked port status on Windows and if any "cable unplugged" or other wacky states are detected whack the adapter (close and reopen). Tested adding a whole bunch of windows networks, removing, adding more, etc. and it seems to work very well! 2015-06-12 16:02:04 +02:00
dbf40f30f9 Merge pull request #177 from keesbos/linux-ui
Linux ui
2015-06-12 13:49:45 +02:00
dc50e8ae5b Add ui to /var/lib/zerotier (linux installer) 2015-06-11 17:56:54 +02:00
7a55c6b388 Return 404 on delete if network member is missing (controller) 2015-06-11 12:20:52 +02:00
c2ce018202 Return 404 on delete if network doesn't exist (controller) 2015-06-11 12:10:25 +02:00
0d0af07ce9 Get deletion of networks in controller going
Multiple statements in a sqlite3_prepare_v2 is not usable. Only
the first statement will be executed.

Since the schema now uses 'ON DELETE CASCADE', there's only
one statement needed.

If multiple statements are needed, there should be either multiple
sqlite3_prepare_v2 calls be used or the sqlite3_exec function.
2015-06-11 11:49:13 +02:00
de697a1c45 Change schema to enforce foreing keys
The foreign keys have 'ON DELETE CASCADE' to simplify the removal
of networks etc. (controller code)

Some unique constraints are replaced with a multi column primary
key.

To update an existing database:
 * install updated binaries
 * stop service
 * sqlite3 controller.db .dump | \
    egrep '((^PRAGMA)|(^BEGIN)|(^INSERT)|(^COMMIT))' | \
    grep -v 'schemaVersion' > data.sql
 * mv controller.db controller.db.backup
 * start service
 * stop service
 * sqlite3 controller.db < data.sql
 * start service
2015-06-11 11:35:25 +02:00
472206dfb2 Rename JniCache to JniLookup
Removed caching capabilities as the cached methods, fields, and objects appears to be broken on Android
2015-06-10 20:16:13 -07:00
7e84f5a7db killing whitespace 2015-06-09 23:24:54 -07:00
6889fcfc28 Looks like it was the JNI cash causing the crash.
Forcing it to look up classes and methods instead of caching them stopped the crashes in the GC.  Will investigate more later.
2015-06-09 23:24:47 -07:00
4dc0ff8f13 Replace calls to Get<Type>ArrayElements with GetPrimitiveArrayCritical.
This puts code accessing the data in a critical section so that the GC cannot run while JNI has access to the array.  This helps with stability somewhat, but I'm still getting some crashes in the GC
2015-06-09 23:12:44 -07:00
3013d90f57 ignore windows binary output 2015-06-09 22:38:31 -07:00
60da0e6cae Merge branch 'adamierymenko-dev' into android-jni 2015-06-09 19:38:47 -07:00
ced040c503 Logging and adding .equals() methods to MulticastGroup and VirtualNetworkCofnig 2015-06-09 19:38:05 -07:00
00aa115898 Allow double-close just in case in Phy<> 2015-06-09 16:30:44 +02:00
17ca5be4c1 Rework Phy<> to clean up _socks entries only in poll() to fix instability in proxy. 2015-06-09 16:27:11 +02:00
ab720a6f1e Fix for poll() in Phy<> with no sockets open. Only affects tcp-proxy. 2015-06-05 13:48:33 -07:00
e5e11c1b24 Update AUTHORS, change to MarkDown. 2015-06-04 11:58:49 -07:00
7cc64c5cb6 Might help to set the enabled field on a VirtualNetworkConfig object :) 2015-06-03 21:29:19 -07:00
b84dba3ecb more logging 2015-06-03 21:29:07 -07:00
bd7e4ab695 VERSION 1.0.3: public preview release
After many months of intense development, ZeroTier is proud to release version
1.0.3 of ZeroTier One.

This version focuses on under-the-hood and network level improvements to
prepare the way for more user-facing improvements in the months to come, as
well as new products built around the ZeroTier core.

1.0.3 contains a large number of changes, so we're not going to push it out
via our auto-update mechanism yet. We're going to update the download links
on the web site and let users try it out for a while first. If problems are
found, we'll do a 1.0.4 before we push it out to existing installations.

--
Important note for Linux users: we've decided to stop pushing auto-updates for
Linux, and this version's official Linux binaries are built without update
checking enabled. Linux is used mostly on servers, and based on user feedback
we've found that most users don't like anything auto-updating outside of the
normal package management channels. Instead, we'll be working over the next
few months to get ZeroTier One included in a number of upstream Linux
distributions. That way you'll be able to 'apt-get' or 'yum' install it and
stay up to date that way. Auto-updates will remain for Macintosh and Windows
users until/unless we can move to 'app store' deployment on those platforms.
--

Now for the change list. It's a big one!

NEW FEATURES and IMPROVEMENTS

 * Client support is in place for preferred relays on a per-network basis.
   This allows you to define statically assigned nodes that act as relays for
   indirect communication and connection setup for communication between peers
   on a given virtual network. If defined, they'll be used in preference to
   supernodes for this purpose. If they're offline, ZeroTier will fall back to
   global supernodes. This will require support on the web control panel for
   most users to use.

 * This version sends NAT "keepalive" packets every 20 seconds, which is
   similar to the behavior of most SIP phones. This should improve reliability
   behind NATs with short timeouts and certain cheap consumer NAT devices.

 * Improvements have been made to NAT traversal to traverse more symmetric
   NAT configurations, and to rate limit traversal attempts to avoid looking
   like a port scan.

 * New direct paths are now confirmed prior to use. This should improve
   reliability in cases where a NAT traversal attempt "half succeeds" by
   preventing the use of direct links that aren't actually usable.

 * A new geo-located TCP tunneling fallback implementation should improve
   performance for heavily firewalled users who can't use UDP.

 * ZeroTier now uses remotely reported accounts of your external IP address
   to detect changes in your network connectivity instead of relying on
   "fingerprinting" of the OS-level local network environment. This should
   improve reliability in cases where external routers have dynamic IPs or
   when changing between networks with different external IPs but similar
   internal addressing schemes. This should also improve reliability for
   use within virtual machines, since the external link address might change
   but the VM's link addresses will not.

 * We've eliminated the old Unix domain socket (or named pipe on Windows)
   control bus in favor of a local HTTP JSON API. It runs on 127.0.0.1
   port 9993 and can be accessed via standard HTTP. This improves
   interoperability with scripts and other tools and allows us to use
   HTML5 for the desktop UI component. See README.md in the service/
   subfolder of the source tree for JSON API documentation.

 * The old Qt GUI has been dropped in favor of a React-based HTML5 UI. The
   code for this is found in ui/, and if ui/ is present in the ZeroTier
   home folder the JSON API HTTP server will serve it on 127.0.0.1/9993.
   The Windows and Mac UIs are now web control wrappers which access this
   UI locally and automate the process of token lookup and login.

PACKAGING / INSTALLATION IMPROVEMENTS

 * The Macintosh version is now packaged as a .pkg file instead of the old
   .app that would download its components and bootstrap itself. Several
   Mac users had problems with this, so we made it a package instead.

 * The Windows installer now includes a cleaner driver installation module
   that installs the driver as part of the main MSI file instead of spawning
   a subprocess.

BUG FIXES

 * Windows now comes with an updated NDIS6 Ethernet tap device driver.
   If you still have the old NDIS5 driver installed you'll keep using it,
   so if you want to switch to the NDIS6 driver uninstall your old version
   and do a fresh install of the new one. NDIS5 is deprecated, so we are
   hoping an NDIS6 driver will fix a number of difficult to reproduce
   issues that some Windows users have reported. It will also likely
   improve performance.

 * Fixed a "pseudo" memory leak related to the old auto-update code. The
   amount of "committed" (but not used) memory would increase over time.
   Since this was not actual used memory it didn't cause real problems,
   but the issue is gone now.

 * A very rare threading deadlock was fixed.

 * Fix for Linux installer that would falsely recognize systemd on some
   Ubuntu systems.

DEEP UNDER THE HOOD

 * This version has been heavily refactored at the source code level! The
   node/ subfolder now contains the core ZeroTier network virtualization
   engine without any OS-specific or transport-specific code. This is in
   preparation for future plans around embedded devices, etc. There is now
   a public C-level API in include/ZeroTierOne.h that defines an interface
   to the node core.

 * A new network controller implementation is in 1.0.3 based on SQLite and
   the local JSON API control bus. IT HAS NOT BEEN HEAVILY TESTED YET, so we
   do not recommend using it in production until the next version. You are
   welcome to experiment with it.
2015-06-03 19:34:00 -07:00
ee1a008f2d Product code for 1.0.3 etc. 2015-06-03 18:53:54 -07:00
8fb9df9751 delete dead test code 2015-06-03 18:35:38 -07:00
4c687fca45 No auto-updates on BSD either. 2015-06-03 18:13:42 -07:00
753a80d419 Linux auto-update is going away. 2015-06-03 17:53:21 -07:00
7213a6cf0b Make max HTTP message size (max update size) larger since Windows MSI is about 8MB already. 2015-06-03 17:20:30 -07:00
9b0c8965bb Make status line in UI show "TUNNELED" if slow TCP tunneling mode is active. 2015-06-03 16:47:07 -07:00
7e647c5303 NOHUP-ify the child process on OSX auto-update. 2015-06-03 16:37:24 -07:00
fe87136870 Auto-update fix -- signature is in hex. 2015-06-03 16:25:16 -07:00
b897ec1efd Put version back to 1.0.3. 2015-06-03 16:19:44 -07:00
6a11c76248 Temporarily bump version to fake 1.0.99 to test auto-update within network. 2015-06-03 16:09:56 -07:00
3512402558 OSX .pkg files must be signed with productsign and an installer cert. 2015-06-02 19:17:39 -07:00
4fe12756d4 Get rid of "autoupdating" in Linux package names. 2015-06-02 17:14:18 -07:00
bf415bdeb9 docs 2015-06-02 17:05:31 -07:00
c5a3e80113 Linux installer tweaks, and Mac updater tweak. 2015-06-02 16:54:27 -07:00
806ea79f37 docs 2015-06-02 16:44:43 -07:00
cd58614c23 docs 2015-06-02 16:42:31 -07:00
0b68344fc8 docs 2015-06-02 16:41:57 -07:00
191b8f8164 docs 2015-06-02 16:39:21 -07:00
29e3437350 gcc not g++ for CC 2015-06-02 16:30:42 -07:00
65999611d7 Eliminate "which" dependency in Linux makefile. 2015-06-02 16:29:23 -07:00
9d49e8f237 docs 2015-06-02 16:24:44 -07:00
855d893c67 docs 2015-06-02 16:23:43 -07:00
a2690047bb docs 2015-06-02 16:16:14 -07:00
648efff1f6 Delete merge temp file. 2015-06-02 12:50:32 -07:00
3d6c1860ca Merge branch 'adamierymenko-dev' into android-jni 2015-06-02 12:49:36 -07:00
f0be5e814e Merge organized .gitignore 2015-06-02 12:49:32 -07:00
79efceb57b Organize .gitignore and merge stuff from Android-JNI branch. 2015-06-02 12:48:59 -07:00
b8f40c0b91 Yet another /Users/api path in packages script. 2015-06-02 12:01:00 -07:00
97dd8d864f Fix paths again in Mac pkg build. 2015-06-02 11:59:05 -07:00
1afd02df54 Path fix in Packages build file for Mac 2015-06-02 11:47:32 -07:00
fb0bf52b1b Fixed sending a port number of 0 to ZT1.
Fixed VirtualNetworkConfigFunction (creating array to send to Java)
Fixed the creating InetAddress instead of InetSocketAddress in virtual network config callback
2015-06-01 20:03:28 -07:00
74f7d5377d Enable ZT_TRACE and more verbose build output 2015-06-01 20:01:37 -07:00
a9a390a930 Apply @marning suggested SSE auto-detect to make builds easier on non-x86 platforms: aa2fd044cb 2015-06-01 19:43:06 -07:00
d7344871e6 Linux build fix. 2015-06-01 19:27:53 -07:00
aab17d9f1f Kill obsolete amSupernode method -- we now have no differing behaviors. 2015-06-01 19:18:26 -07:00
ecb6a1d84f docs 2015-06-01 19:12:20 -07:00
5341e32729 Fix to GitHub issue #140 -- network preferred relays. Also go ahead and allow RENDEZVOUS from regular peers. 2015-06-01 19:05:27 -07:00
960ceb4791 Rest of GitHub issue #140 implementation. 2015-06-01 17:50:44 -07:00
318c2f025b Call it _relays since there might be other kinds later. 2015-06-01 17:09:37 -07:00
5bc89034bc Always ping / contact network preferred relays (if any). 2015-06-01 16:53:58 -07:00
229195166a Add BackgroundResolver to Windows build. 2015-06-01 16:06:50 -07:00
b3b9af0dd8 Fix for GitHub issue #170 2015-06-01 11:56:15 -07:00
5015c0ae78 more logging 2015-05-28 21:03:37 -07:00
b6196a53de Fix DataStoreGetFunction. 2015-05-28 20:37:16 -07:00
58ca657da6 Use object arrays rather than ArrayList. JNI side 2015-05-28 20:36:54 -07:00
7822616966 Replace ArrayList instances with [] 2015-05-28 20:01:30 -07:00
e3feac17b1 Merge branch 'adamierymenko-dev' into android-jni 2015-05-27 20:43:30 -07:00
4c680e3126 LOTS more error checking and logging.
Running into a wall attempting to add items to an ArrayList from the JNI side
2015-05-27 20:42:54 -07:00
ea419c21d0 Fix installer path, add netconf option to make-linux. 2015-05-28 03:13:23 +00:00
502cd6921f Fix for GitHub issue #133, and move restart out of installer to address restart problem. Installer probably should NOT mess with the running service, since Linux servers are likely to be production. 2015-05-27 13:50:11 -07:00
09631ad382 fix datastore get call in JNI
Just delete the local reference rather than do an array delete.  Array delete was causing a crash on loading network config files.  Deleting the local ref works fine, though, as it still lets the JVM garbage collecter know that the native code is done with the array
2015-05-26 21:32:56 -07:00
2d67196667 added the android verbose log level and moved most jni debug messages to verbose 2015-05-26 21:31:34 -07:00
9755dad7ff add a missing break from a switch 2015-05-26 21:30:33 -07:00
adaf9cf32b still getting re-used to all the places you have to put access modifiers in Java 2015-05-26 20:03:47 -07:00
703c311e07 Merge branch 'adamierymenko-dev' into android-jni 2015-05-26 19:17:29 -07:00
e184aa4cb4 Clean old netconf-service from attic. 2015-05-26 18:16:12 -07:00
fbb990f8a3 Mac uninstall.sh update. 2015-05-26 14:36:04 -07:00
ff2272d59a Delete some temporary code. 2015-05-26 13:34:08 -07:00
c075e68c6c More work on ZT1 NodeJS API client library. 2015-05-26 13:32:47 -07:00
ecb1ee8e0d Renaming... 2015-05-26 09:03:39 -07:00
ba7809367a JS stuff reorg. 2015-05-26 09:01:58 -07:00
5e3c6d9e0d Some nodeJS work, and apply fix from GitHub issue #166 plus a small optimization to avoid repeated calls to _allMulticastGroups(). 2015-05-25 14:21:05 -07:00
d8ad555b9a Go ahead and add flags and invFlags to the Rule table. 2015-05-25 13:20:10 -07:00
d29f2ce858 Clean up attic/ 2015-05-25 11:55:27 -07:00
af1d29cc6f Remove obsolete method. 2015-05-25 11:54:32 -07:00
91f02d699e Right now only FreeBSD can use BSDEthernetTap, which will probably get renamed accordingly. NetBSD and OpenBSD do not support tap, only tun, so they will have to wait. 2015-05-25 11:11:37 -07:00
6e998efd15 fixing up data store stuff 2015-05-23 18:29:16 -07:00
5c2aaad365 Merge branch 'adamierymenko-dev' into android-jni 2015-05-23 13:34:21 -07:00
d8783b14eb Build fix. 2015-05-22 15:46:06 -07:00
6867922d9e typo 2015-05-22 15:33:33 -07:00
9774f789f2 TCP fallback tunneling is now working. That hurt more than expected. 2015-05-22 14:52:23 -07:00
cdec05af24 One second delay between NAT-t events. 2015-05-22 13:12:14 -07:00
196f27f1f0 Add delay to NAT-t escalation stuff to try to address GitHub issue #167 2015-05-22 13:11:55 -07:00
b388d9fdc9 TCP proxy should actually bind to its TCP port. Seems like a good idea. 2015-05-22 10:14:44 -07:00
1e043a3f66 Remove link desperation from java API 2015-05-21 19:34:19 -07:00
c430d88bd4 Merge branch 'adamierymenko-dev' into android-jni
Conflicts:
	.gitignore
2015-05-21 19:14:49 -07:00
50aedda54d Basic TCP fallback -- now to test. 2015-05-21 18:33:52 -07:00
d9006712f6 Completely factor out "desperation" from the core. I thought of a significantly simpler way to move all of this logic entirely into the containing service, liberating the core from any concern over the nature of its pipe to the outside world. 2015-05-21 15:58:26 -07:00
123ff28863 Build fix. 2015-05-21 15:24:58 -07:00
0f7dcb3ef2 Add some proxy debugging, and auto-resolve and periodically re-resolve TCP fallback tunnel hostname. 2015-05-21 15:22:41 -07:00
61021fc778 BackgroundResolver test. 2015-05-21 14:11:44 -07:00
2ad69237cf Background resolver. 2015-05-21 13:44:33 -07:00
82f6b3f550 Clean old update code out of Windows service wrapper. 2015-05-20 20:21:20 -07:00
905d2e91e5 Windows auto-update integration into OneService. 2015-05-20 20:17:56 -07:00
1213073916 Apple auto-update stuff, now for Windows. 2015-05-20 19:38:49 -07:00
b6698d8415 Ground work for reincorporating software updater for select platforms. 2015-05-20 16:35:33 -07:00
e285a6e75f . 2015-05-20 15:20:05 -07:00
6fc090eb00 Don't actually "power cycle" the interface except on startup. Doing that after we're running could lose IP configuration. 2015-05-20 14:21:14 -07:00
0caac25d28 . 2015-05-19 20:13:19 -07:00
dd70188643 Make tap driver even more defensive... seems to maybe fix the new network problem. Have to test a bit more. 2015-05-19 18:40:34 -07:00
c7eb5f0c81 Windows build warning removal, be more defensive in Windows tap driver code, and clean up service start/stop in installer. 2015-05-19 18:13:20 -07:00
68cb7ad4cd Few more fixes to installer firewall rule settings. 2015-05-19 16:31:00 -07:00
9682f50b15 Get rid of old _winPokeAHole() hack in one.cpp and use Advanced Installer to configure firewall rules (because we can now). 2015-05-19 16:26:41 -07:00
63cea7d337 Try to automatically enable access to http://127.0.0.1 in web wrapper if IE is in enhanced security mode. 2015-05-19 16:02:26 -07:00
44d1bd14bd Enable right-click menu for copy/paste/etc. in Windows UI wrapper. 2015-05-19 14:48:57 -07:00
b4a34cc105 Add 32-bit chained MSI for NDIS6 driver... now to go test on 32-bit Windows (clean). (And Windows 10, and Windows Server, and ...) 2015-05-19 13:01:55 -07:00
32588b3d84 A visit to the Windows house of pain:
(1) Yes, you *can* create a mixed 32/64 bit Windows MSI installer that installs drivers. All you have to do is... umm... create individual sub-MSI files for each driver (one for 32, one for 64) and then package those in the main MSI files as "chained" MSI installers. Each of these must only be considered a prerequisite on 32 or 64 bit machines, respectively.

(2) Upgrade Advanced Installer version, add rules to uninstall NDIS6 tap device on uninstall.

(3) Fix IE issue in UI code.
2015-05-18 20:30:54 -07:00
992438f054 Confirm leaving networks. 2015-05-18 16:02:37 -07:00
8c7a4efe1a Small cosmetic fix to bottom bar. 2015-05-18 15:56:18 -07:00
e0313455e7 Hide unneeded menus in MacGap. 2015-05-18 15:53:49 -07:00
ac629150ac Create symlinks in Mac postinst script. 2015-05-17 21:26:38 -07:00
89027d78ac Mac .pkg building using Packages (third party app) instead of old bootstrapping .app and installer script. 2015-05-17 21:24:02 -07:00
f48509d50c Mac script to get HTTP proxy settings -- will be used by Mac updater. 2015-05-17 20:28:09 -07:00
c76217c2d4 Delete old UI code -- officially dead. 2015-05-17 19:50:19 -07:00
2d700f644b Add signed binary build of Mac GUI wrapper. 2015-05-17 19:48:21 -07:00
c76b9d1340 Respect user home directory copies of authtoken.secret or ~/.zeroTierOneAuthToken in CLI like we do in GUI wrappers. 2015-05-17 19:13:22 -07:00
0e87002d78 BSDEthernetTap build fixes. 2015-05-17 18:31:41 -07:00
ddaf3ef347 Bring BSDEthernetTap into the current century. 2015-05-17 18:28:04 -07:00
2810cd7c15 Build fixes for G++, building without SQLite3 present, and warning removal. 2015-05-17 23:56:47 +00:00
0af18b164c /var/db is for all of xBSD 2015-05-17 16:06:29 -07:00
086f21ed70 Refactor and simplify controller integration with JSON API and OneService. 2015-05-17 15:51:07 -07:00
7649d6746b docs 2015-05-17 15:38:01 -07:00
0e00981059 docs 2015-05-17 14:01:25 -07:00
d41b6eb0c8 docs 2015-05-17 10:14:12 -07:00
651e67f2e5 Add a feature to generate a new network ID on POST. 2015-05-17 09:36:35 -07:00
e0090e56f4 Build fix on OSX -- cannot call SqliteNetworkController if not compiled in. 2015-05-16 18:59:11 -07:00
9a00366b18 Merge branch 'adamierymenko-dev' into android-jni 2015-05-16 18:55:19 -07:00
69ceb7e730 Basic controller JSON API seems to be working. 2015-05-16 17:12:29 -07:00
cf51961d52 . 2015-05-16 16:32:13 -07:00
c9fd8de007 . 2015-05-16 16:22:38 -07:00
a187d290f1 Fixes to control plane, API, eliminate problematic inheritance pattern, and start on a NodeJS class for talking to the network controller. 2015-05-16 16:09:28 -07:00
27c5f04d68 Add -U option to skip root check and permit run as non-privileged user. 2015-05-16 14:52:09 -07:00
d0935f667f Merge branch 'adamierymenko-dev' into android-jni 2015-05-16 14:35:35 -07:00
4be4908914 Fix some prepared statement problems. 2015-05-16 14:34:51 -07:00
38243e5eff OSX build fix 2015-05-16 14:07:15 -07:00
0bb92715f4 DELETE function in network controller JSON API, and a newIdentity convenience request in ControlPlane for scripted testing. 2015-05-16 13:42:53 -07:00
78769900a9 More network controller cleanup, and some features to permit scripted testing. 2015-05-16 12:50:42 -07:00
65a9a9a6f2 typo 2015-05-15 15:30:44 -07:00
e269846f84 Netconf docs, add clock field to status, simplify netconf a bit by eliminating caching for now. We will re-add if it is needed. 2015-05-15 15:20:12 -07:00
6d2376eb9c Controller API status message. 2015-05-15 09:41:45 -07:00
f693d4d0c8 Network controller cleanup and an extra sanity check. 2015-05-15 09:32:10 -07:00
0bdd56ebd6 A few revisions to PFS design. 2015-05-15 09:04:39 -07:00
d0e0f5dd12 Basic OpenBSD compile fixes -- still need to update BSDEthernetTap, will do that later. Should be able to re-use FreeBSD port for OpenBSD, but we will see. 2015-05-15 08:48:53 -07:00
e94518590d First stab of PFS design work with PKC security -- may not implement in 1.0.3 but stubbing out. 2015-05-14 17:41:05 -07:00
4a0280686c Merge branch 'adamierymenko-dev' into android-jni 2015-05-13 20:52:23 -07:00
a8835cd8b3 Some prep work to make room for perfect forward security (PFS). Will not affect existing clients. 2015-05-13 18:53:37 -07:00
bdce679d84 Should fix deadlock issue in GitHub issue #166 2015-05-13 16:55:18 -07:00
241f308334 Fix to tap reset code in Windows tap connector. 2015-05-08 16:49:08 -07:00
e744580b89 Fix a bunch of Windows tap issues. Turns out NDIS6 allowed us to ditch some NDIS5 cruft, but I did have to add one hack specific to that one instead. Seems reliable now. 2015-05-08 16:31:50 -07:00
1b895c45eb Make peer list font a bit smaller. 2015-05-08 15:04:01 -07:00
2158d26bd7 Show last unicast and multicast frames. 2015-05-08 15:01:05 -07:00
4565e9948f Now this works... Windows UI wrapper. Turns out there were workarounds, but IE does indeed suck. 2015-05-08 14:58:29 -07:00
c1e5c1c710 Fix some settings on WebControl implementation. 2015-05-08 14:51:24 -07:00
257187a284 Fixes for Windows WebControl. 2015-05-08 14:47:01 -07:00
8e888f8df9 Hmm... will this work? Very first child of <head> 2015-05-08 12:41:06 -07:00
8594e17f2b Move mac-ui into src/ 2015-05-08 12:35:41 -07:00
a40192a40b Scratch that wrapper... it was easy to make, but it turns out WebControl is IE4 (!!!?!). Also prefer NDIS5 to NDIS6 *if* NDIS5 is installed. We will no longer ship it, but this will make older installs use the same driver they are already using. Should ease upgrade. 2015-05-08 12:35:03 -07:00
92ca53e141 Add pre-build signed UI wrapper .exe. 2015-05-08 12:16:02 -07:00
a913f00670 Windows WebControl based wrapper for web UI. 2015-05-08 11:55:09 -07:00
b1164ed181 icons 2015-05-08 11:08:06 -07:00
c0caba8944 docs 2015-05-08 10:31:01 -07:00
0be3190d49 UI spacing tweaks. 2015-05-08 10:20:38 -07:00
bd2ce82ea6 Minify JS in UI, add Makefile. 2015-05-08 10:03:35 -07:00
a4a62be698 UI tweaks, get JSXTransformer out. 2015-05-08 09:39:07 -07:00
da45840e5a Merge branch 'adamierymenko-dev' into android-jni
Conflicts:
	.gitignore
2015-05-07 19:16:35 -07:00
4426899e8c Add support for local user account caching of authtoken.secret as in old UI -- this is now pretty much working. 2015-05-06 21:02:59 -07:00
d56e9fce41 Get user data out of repo. 2015-05-06 20:45:02 -07:00
5b54612d91 Pass authtoken in from user, and add a wrapper for web UI on Mac. 2015-05-06 20:41:51 -07:00
8130b2a0de Merge branch 'adamierymenko-dev' into android-jni 2015-05-06 20:24:01 -07:00
e58047eaa0 UI work... 2015-05-06 19:39:45 -07:00
03dbec960a UI tweaks 2015-05-06 17:42:29 -07:00
20b76d266d Merge branch 'adamierymenko-dev' into android-jni 2015-05-06 17:37:11 -07:00
4a2c46e008 Well that works... pretty web UI (currently only works on test node with hard-coded auth code... need to figure out how to plumb that) 2015-05-06 17:28:11 -07:00
a425bbc673 Renamed supernode to rootserver 2015-05-06 12:05:20 +02:00
b2b32e5969 Beginning of HTML+Bootstrap+React UI for new desktop client -- looking like it will be easier than retrofitting the old Qt client for the new API. 2015-05-05 20:53:30 -07:00
bdc5b3d3a5 Merge branch 'adamierymenko-dev' into android-jni 2015-05-04 20:12:26 -07:00
e28712555d build & package libZeroTierOneSDK.jnilib on Mac oS
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-05-04 20:04:44 -07:00
40f312a827 When we reset within scope, erase the other entries for that scope so we won't keep resetting the same scope repeatedly. 2015-05-04 19:02:36 -07:00
18ca6f34ff Always update timestamp. 2015-05-04 18:45:39 -07:00
59fa687830 Make timeout also apply to null check in iam() 2015-05-04 18:43:24 -07:00
e922324bc6 Stop inlining all the Packet armor/dearmor stuff to reduce binary bloat. This stuff is called all over the place. 2015-05-04 18:39:53 -07:00
b4b067bf12 So we need to keep track of external surface per reporter, since some NATs assign different external IPs for each external destination. Keeping just one known surface could create a race condition. 2015-05-04 18:34:30 -07:00
625ddf41a7 docs 2015-05-04 17:41:48 -07:00
af66f14761 Merge branch 'adamierymenko-dev' into android-jni 2015-05-04 16:47:18 -07:00
da254d967f Hack around GitHub issue #165 (?) 2015-05-04 14:11:54 -07:00
7054c365f2 put a read timeout on the socket 2015-05-02 18:34:47 -07:00
06ab338ecc added naive OneService implementation.
Does nothing but send packets to master nodes and listen for packets back.
2015-05-02 18:24:52 -07:00
ad6ec22857 DataStore now works 2015-05-02 18:22:56 -07:00
a9307693a6 Adding Data Store implementations for Android and normal Java 2015-05-02 17:32:12 -07:00
742c59a7c7 Refactor package name from com.zerotierone.sdk to com.zerotier.sdk 2015-05-02 16:54:00 -07:00
e79a6915ff ensure java is compiled for JVM 1.7. Android cant read .class files compiled for 1.8 2015-05-02 12:06:07 -07:00
818339f966 replace old direct calls to FindClass, GetMethodID, etc with calls that use the cache 2015-05-02 12:05:40 -07:00
079d248eab added a JniCache objectet for caching jclass, jmethodID, and jfieldID objects 2015-05-02 12:05:02 -07:00
9f2732d661 add the basedir to the ant buildfile 2015-05-02 10:16:10 -07:00
fb6b56a85f clean up unused imports 2015-05-01 18:27:34 -07:00
02b33e3763 Yeah it helps to byte swap the port back to little-endian before sending the port off to Java 2015-04-30 22:07:14 -07:00
b242886c33 Merge branch 'adamierymenko-dev' into android-jni 2015-04-30 21:51:05 -07:00
0a15eae00f Setup native build for Windows Java.
Still need to do Mac & Linux
2015-04-30 21:50:28 -07:00
75d7137025 added a class I found to load JNI code from within JAR files on non-android platforms.
That doesn't come for free, unlike android.
2015-04-30 21:50:05 -07:00
9279bac385 Fix deadlock in SelfAwareness by deferring reconnects. 2015-04-30 21:09:41 -07:00
105e1a016f Get rid of G++ compiler warning. 2015-04-30 20:41:25 -07:00
604576075e Add some missing includes that older G++ cares about. 2015-04-30 20:40:33 -07:00
52df59c552 Merge branch 'adamierymenko-dev' into android-jni
Conflicts:
	.gitignore
2015-04-30 19:19:45 -07:00
d3820049b8 Add reported external address to OK(HELLO) TRACE to verify SN behavior. 2015-04-30 18:25:31 -07:00
9eb7698f0e Learn external IP addresses on OK(HELLO) too. 2015-04-30 16:40:04 -07:00
5185103692 Fix to create-test-root-topology. 2015-04-30 16:13:17 -07:00
3ac23165c7 Kill old testnet -- was useful in its time, but Docker make running real test networks locally stupid easy and a more realistic simulation. 2015-04-30 16:04:17 -07:00
9a34fde8a5 Make sure identity.public exists and stays in sync, cleanup extra new in Node, and test script for local testnets. 2015-04-30 16:03:44 -07:00
918fc8884b Update mktopology so it works again and can easily be used to create test dictionaries. 2015-04-30 15:31:01 -07:00
f3d7c9d681 Helps to index the array when enumerating a C array. 2015-04-30 15:16:21 -07:00
226e0f8722 docs and Makefile for tcp-proxy 2015-04-30 10:56:45 -07:00
288d73a4ad A few more refinements to TCP code, ready to integrate with "desperation" stuff and test. 2015-04-30 10:47:27 -07:00
9464504e4a DataStoreGet and Put and EventListener appear to work 2015-04-29 21:20:50 -07:00
7e0cc28a89 Fixes for bugs pointed out by updating warnings 2015-04-29 19:29:35 -07:00
0a2d1e7a66 Ignore windows debug build files 2015-04-29 19:29:18 -07:00
9bf9670ff9 add more warnings to the JNI build 2015-04-29 19:14:52 -07:00
a9a3705877 TCP tunneling implementation -- not tested yet and no initiation yet. 2015-04-28 12:43:10 -07:00
5983b4367b jclass pointers aren't as cacheable as originally thought.
There is a way to do it.  We can try it later if we determine it's needed for performance reasons.  Otherwise, don't use static to cache them
2015-04-27 18:38:13 -07:00
d1ed269537 Switch to InetSockAddress instead of InetAddress so we can send the port # to java as well 2015-04-27 17:48:37 -07:00
73d68c0c98 Merge branch 'adamierymenko-dev' into android-jni 2015-04-27 17:24:55 -07:00
7dcde7503a For now just bind TCP to localhost, since we do not permit remote use of the control bus at all yet. 2015-04-26 18:15:40 -07:00
b9f7f75ddf TCP proxy for tunneling (desperation > 0). 2015-04-26 16:38:39 -07:00
a1005ca858 Do not unite() peers across different IP scopes as this would pretty much never work. 2015-04-26 16:03:16 -07:00
8c5ec54711 . 2015-04-26 14:05:36 -07:00
ab3f4d7539 Was thinking about this HTTP tunneling stuff but decided against for now. Stash unfinished code in attic/ 2015-04-26 14:05:13 -07:00
a1d6df4bf8 Starting on new external updater binary. 2015-04-26 10:01:07 -07:00
4c71e92a67 It's now possible to actually create a Node object in Java/Android!!! 2015-04-25 20:47:21 -07:00
3bdbc6390f Added logging to Android logcat 2015-04-25 20:46:56 -07:00
8a09e0ec3c added NodeException 2015-04-25 20:46:41 -07:00
db80070ccb fix strings pointing to enum fields in ResultCode java class 2015-04-25 19:19:58 -07:00
042f914dc5 If we could not recursively add ZeroTierOneSDK.jar to ZeroTierOneSDK.jar, that would be greeeaaaaat 2015-04-25 19:09:30 -07:00
ec45aeb42a Merge branch 'adamierymenko-dev' into android-jni 2015-04-25 18:59:52 -07:00
a86a0ab2b1 Package the Android native libraries right in the .jar file 2015-04-25 18:59:00 -07:00
29bb2a9004 fix for a previously renamed class 2015-04-25 18:58:43 -07:00
56f8160af8 generate javadocs for the Java SDK 2015-04-25 17:29:07 -07:00
7af1f3a79a attic cleanup 2015-04-25 17:25:06 -07:00
e78899fddf Rebuild and re-sign the x86 driver... previous attempt was somehow borked but this one loads on Win7/x86 fine. 2015-04-25 16:00:25 -07:00
9325535ced x86 version of signed NDIS6 driver. 2015-04-25 15:31:27 -07:00
720ac93ba9 Use NDIS6 driver preferentially if available. 2015-04-25 15:22:43 -07:00
42b4148876 NDIS6 driver signed x64 build (not fully tested yet, but committing work) 2015-04-25 14:52:02 -07:00
4b658d83bc Rename old driver to -ndis5. 2015-04-25 13:11:58 -07:00
d4c06e924d Do the same modifications to the NDIS 6 code base as were done to the old 5 driver: disable all the 'tun' functionality, and add the IOCTL for querying the multicast list at Ethernet (L2) level. 2015-04-25 12:21:08 -07:00
1ebe2ad920 NDIS6 driver with VS project to build -- builds correctly, not customized for ZT yet. 2015-04-24 23:31:51 -07:00
0d4283a3fa Cache jclass and jmethod instances for callbacks on the JniRef struct.
This is safe to cache as none of the instantiated callback interfaces can be changed once a Node object is created.
2015-04-24 20:34:36 -07:00
9c62ce9e6f implemented EventCallback
All callback methods are now implemented
2015-04-24 20:13:21 -07:00
f2eed5a65f implemented WirePacketSendFunction 2015-04-24 19:43:17 -07:00
5e1fb4e253 Realized that the jclass and jmethodID variables in the callbacks cannot be static
There's no guarantee that ALL calls to the callbacks will be on the same class as they're just interfaces and user defined
2015-04-24 19:35:18 -07:00
dc00ce4f44 added DataStorePutFunction implementation
updated  DataStorePutListener to also have an onDelete() method
2015-04-24 19:28:44 -07:00
53ebd5a9a5 don't need to pass buffer size because java arrays have a .length member 2015-04-24 19:14:59 -07:00
d5fc2b39aa implemented DataStoreGetFunction callback 2015-04-24 19:11:49 -07:00
4137246653 implemented VirtualNetworkFrameFunctionCallback 2015-04-24 18:49:52 -07:00
28168fa673 implement VirtualNetworkConfigFunctionCallback 2015-04-24 18:39:17 -07:00
99af0f3a88 moved creation of VirtualNetworkConfig objects to ZT1_jniutils
added implementation of networks() method
2015-04-24 18:20:10 -07:00
6f07a476a6 create and return the peer array 2015-04-24 18:06:26 -07:00
52a20b4b0f create PeerRole and PeerPhysicalPath objects 2015-04-24 17:58:59 -07:00
f3c29d3f0d rename PhysicalPeerPath -> PeerPhysicalPath to reflect C API 2015-04-24 17:58:31 -07:00
b3429481cd update build instructions
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-24 17:04:08 -07:00
0f808e11df Merge branch 'adamierymenko-dev' into android-jni 2015-04-24 16:48:48 -07:00
ce09e363dc Destroy tap devices on Windows 'leave'. 2015-04-24 16:31:19 -07:00
e2c65bf16a Bring Windows service code up to date and into sync. 2015-04-24 15:44:39 -07:00
0e31551349 Take winhttp out of lib list, since we don't use it anymore. 2015-04-24 15:15:14 -07:00
f5848972f9 Windows now builds and runs selftest correctly, and fixed a Windows (and possibly other platforms) issue in Phy<>. 2015-04-24 15:05:28 -07:00
54954f5b88 First pass of Windows cleanup and build fixes... 2015-04-24 13:35:17 -07:00
883a216d2a Build fixes. 2015-04-24 12:29:31 -07:00
1a65a79e57 set 'build' as the default ant target
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 23:14:09 -07:00
6dd3c07b25 removing unneeded jni headers
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 23:09:42 -07:00
1df6bc6bc3 just adjusting some alignment
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 23:09:30 -07:00
9ab7280703 added infrastructure for Node.peers() and Node.networks() functions
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 23:08:28 -07:00
7f6556eba0 node.networkConfig() now creates ArrayLists of multicast subscriptions and assigned addresses
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 22:48:56 -07:00
1bea940323 fix field ID signatures
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 22:47:56 -07:00
6ff2e6ecfe move findNode method back
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 22:46:54 -07:00
d66f2cd54d Node.networkConfig now only needs to populate the lists of assigned addresses and multicast subscriptions and then it's finished
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 21:43:16 -07:00
46adf870a1 move utility functions from anon namespace to ZT1_jniutils
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 21:39:07 -07:00
4906f8e848 added stub utility functions for creating ArrayLists, appending items to ArrayLists, creating InetAddress objects, and MulticastGroup objects
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 21:36:33 -07:00
fa9d42b7e5 finished the JNI implementation of the status() method on Node
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 20:52:47 -07:00
1a528aec76 don't require clean before build
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 20:34:59 -07:00
ffb9e2901e fix a build error
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 20:29:23 -07:00
407e2fc7de Added ant build script. Requires NDK_BUILD_LOC environment variable pointing to the ndk-build script
fixed compile erros in Node and VirutalNetworkConfig

Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 20:17:29 -07:00
667a103a6a added functions to create Event, and VirtualNetworkStatus objects
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 19:16:45 -07:00
32a35e6808 scaffolding for implementation of status() and networkConfig()
They should be able to be called, but will not return valid objects yet

Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 21:31:17 -07:00
34028aa7c8 Added implemenation for node.address()
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 21:30:37 -07:00
3ccaef88b7 Added implementation for Node.version()
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 21:29:45 -07:00
f5bb57d5aa fix call to networkConfig to pass the network id
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 21:28:42 -07:00
a1a35e0279 Can't instantiate enum objects. Fix createResultObject() function so that it still works properly
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 21:14:55 -07:00
1308f02b93 multicastSubscribe() and multicastUnsubscribe()
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 20:33:38 -07:00
b078d69372 join() and leave() functions
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 20:29:34 -07:00
e31e54483c added processBackgroundTasks function
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 20:25:35 -07:00
3c499777c8 added implementation for processWirePacket
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 20:21:12 -07:00
9c038d3ecd added a few missing function calls in the ZT1 Node API
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 19:36:46 -07:00
6187a91f4c delete the ZT1_Node object when calling Java_com_zerotierone_sdk_Node_node_1delete
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 19:29:45 -07:00
321b67c73c add a findNode() function to reduce copypasta
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 19:29:13 -07:00
5df253fa69 added implementation for processVirtualNetworkFrame
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 19:19:45 -07:00
3a6807d584 add assignedAddresses member to VirtualNetworConfig class
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 19:19:08 -07:00
787b4a8e50 * Change a few method signatures from java.lang.Long to long[] so that values can be passed back.
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 19:18:49 -07:00
b33e4af49f Merge branch 'adamierymenko-dev' into android-jni 2015-04-22 18:14:14 -07:00
5202fbdaf3 CRUD 2015-04-22 18:06:26 -07:00
103dcb072d CRUD 2015-04-21 19:49:04 -07:00
79f63ba30a Fix: make sure we do not assign broadcast address as an IP to new members. 2015-04-21 18:37:17 -07:00
71f006cbeb More CRUD, almost done... 2015-04-21 18:08:33 -07:00
e4046964f0 Forgot to run schema2c. 2015-04-21 16:50:02 -07:00
ddebe2d4c7 Network controller CRUD... :P 2015-04-21 16:41:35 -07:00
0c8051da15 Move JNI methods to the bottom of the class
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-20 20:44:31 -07:00
e0c8ddb65b call close() from the Node class's finalize method
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-20 20:36:59 -07:00
bd4049fdc0 Added JNI code for construction/destruction of ZT1_Node objects
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-20 20:33:42 -07:00
5f314f209e Updated Java Node class native methods to pass the node ID
This is so that we know which C-based ZT1_Node struct is being operated on

Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-20 20:32:29 -07:00
99a1a4e65b Generated header files for JNI
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-20 18:31:42 -07:00
ec3a1c87d1 first revision of the java API for ZeroTier One
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-20 18:27:15 -07:00
f40eb665c5 Add build files for compiling ZeroTier One SDK for Android targets
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-20 18:26:23 -07:00
ed107c4daf Network preferred relay stuff in netconf controller. 2015-04-20 17:47:12 -07:00
8a13cfdace Add per-network relays to NetworkConfig. 2015-04-20 17:14:16 -07:00
86c87875a7 OSUtils::resolve() 2015-04-20 16:07:38 -07:00
69076f8a45 Add per-network relay stuff to sqlite table schema. 2015-04-20 15:46:20 -07:00
60f05518aa (1) now builds and works on Linux, (2) fix a threading problem causing carsh on shutdown, (3) cleanup in selftest, re-enable Phy and Http tests. 2015-04-20 15:12:31 -07:00
740121504f Add a timestamp to netconf cache, fix some SQL queries in NC. 2015-04-17 15:21:53 -07:00
417f56de2f Add some TRACE instrumentation to external surface address awareness. 2015-04-17 12:19:01 -07:00
b51d00146b docs 2015-04-17 10:45:16 -07:00
8715242e7f build fix 2015-04-16 16:43:35 -07:00
895c32a0d2 Stash old software updater code, will refactor into separate utility. 2015-04-16 16:17:28 -07:00
489cc66b78 Don't need these files anymore. 2015-04-16 16:16:25 -07:00
ce77e67e00 docs 2015-04-16 16:15:25 -07:00
1f5700191f zerotier-cli suspiciously working... that didn't hurt *too* badly. 2015-04-16 16:12:10 -07:00
c4c5fa63d1 Almost done with JSON parsing for tabular output. 2015-04-16 15:51:56 -07:00
13d5073e5b CLI work and Makefile cleanup. 2015-04-16 15:07:58 -07:00
8333bf065e Basic CLI working with JSON output. Now to parse and support old tabular form. 2015-04-16 14:55:36 -07:00
53cbe485f0 Some cleanup, and bite the bullet and go ahead and write a simple Http client. Need a cross-platform built-in one to do cli right. 2015-04-16 14:13:44 -07:00
6c29e966dd Include a BSD licensed JSON parser for the CLI. 2015-04-16 12:27:51 -07:00
377367175c Update LZ4 in ext/ 2015-04-16 12:18:47 -07:00
12b4646ce8 Prettify JSON output. 2015-04-16 12:06:40 -07:00
4e5d2d2c72 Write a zerotier-one.port file to the home path to make CLI easy to write, and do a backward compatiable CLI in bash instead of as part of the executable. 2015-04-15 19:38:01 -07:00
21a7e774bb Wire API auth token stuff. 2015-04-15 19:14:12 -07:00
c301d8e438 Remove network/controller -- we will do this in Ruby instead since it will be part of the whole OnePoint project anyway. 2015-04-15 19:01:38 -07:00
d2503172d8 Add some additional detail to the peer record in CAPI and JSON control plane. 2015-04-15 19:00:26 -07:00
91ca238163 Compile fixes. 2015-04-15 18:47:38 -07:00
33c8d3c50b Compile fixes. 2015-04-15 18:36:32 -07:00
ea1859541c More cleanup, and fix for the extremely unlikely case of identity collision. 2015-04-15 18:32:25 -07:00
f7b1437154 Putting the main binary back together... 2015-04-15 17:00:26 -07:00
6369c264e2 Rename netconf to controller and NetworkConfigMaster to NetworkController for consistency. 2015-04-15 15:12:09 -07:00
871473255b Cleanup, drop 32-bit from Mac build flags since i386 is pretty thoroughly deprecated and dead on OSX. We will have to make our updater stop updating on any 32-bit Macs that might actually still be running ZT1. 2015-04-15 14:54:37 -07:00
a0f8685453 cleanup 2015-04-15 14:44:30 -07:00
8639538299 Rename One to OneService, create separate sources for other tools. 2015-04-15 14:42:26 -07:00
98bcc3d4b5 Disable a few noisy TRACEs, and limit how often we confirm new paths to avoid flooding. 2015-04-15 13:15:09 -07:00
1c9ca73065 Fix some deadlock issues, move awareness of broadcast subscription into core, other bug fixes. 2015-04-15 13:09:20 -07:00
508519b62a Tap driver load fix. 2015-04-14 19:21:56 -07:00
c9af603b9f Add beacon broadcasting back into Node. 2015-04-14 18:20:03 -07:00
aeb4b42ab3 Make tap itself handle remembering sticky device to nwid mappings. 2015-04-14 18:13:46 -07:00
67f1f1892f Bunch of tap stuff, IP address assignment hookups, etc. 2015-04-14 17:57:51 -07:00
e205e5fdfe Include tap device name in JSON output for network info. 2015-04-14 15:55:03 -07:00
347e98dcd2 Just return files from listDirectory() since that is all we need, fix network request on network restore logic, and remember saved networks in service/One 2015-04-14 15:32:05 -07:00
29a2175b7a Fix missed closedir() 2015-04-14 15:17:59 -07:00
49d31613b9 Fix some minor issues, now to reintegrate taps. 2015-04-14 15:16:04 -07:00
758b5caf94 Fix < logic. 2015-04-14 14:52:23 -07:00
6f4b30add8 Turns out you do have to unpack and compare sockaddr structures due to sin_len / sin6_len not present on all platforms and other junk. 2015-04-14 14:49:34 -07:00
1cfa67bbdd Bunch more control plane work, and shelve old UI -- React FTW. 2015-04-14 13:56:28 -07:00
a2605561af Basic control plane queries working. 2015-04-13 18:43:33 -07:00
b888e033c0 JSON control plane, almost done... 2015-04-13 18:12:45 -07:00
ff0eff4b7c Decided to back out of doing HTTP/TCP server *and* client within ZT itself. Instead we'll do the TCP tunneling endpoint as a separate little daemon. It will appear here shortly. 2015-04-13 12:27:29 -07:00
5c1262f324 Basic framework of HTTP server is there. 2015-04-10 19:36:29 -07:00
daef54ba32 HTTP server is in, and works. 2015-04-10 19:08:49 -07:00
5572b7ffb6 Simplify Phy<> to get rid of more indirections. 2015-04-10 17:07:06 -07:00
7576911951 Temporarily shelve testnet/ -- will resurrect self-contained testnet later perhaps, but probably will not by the time next version ships. Was mostly for debugging multicast anyway and that is now quite stable. 2015-04-10 11:42:02 -07:00
9e651b39e4 Add some TRACE around pinging (for now), and refactor service/One to just run in the foreground as some platforms may not require threads at all. 2015-04-10 11:40:45 -07:00
08a11a6f32 Since which tap to use is chosen statically at compile time and the factories are gone, there is now no need for inheritance or virtual methods (indirect calls) here. Should improve performance slightly to get rid of them. 2015-04-10 10:19:45 -07:00
5e331d6733 Restrict unite() to desperation==0 since NAT-t only works right now with direct links. 2015-04-10 10:13:50 -07:00
068d311ecc TRACE compile fixes, other fixes, and it basically works! It says HELLO. 2015-04-09 20:54:00 -07:00
38200cc6a5 Add data store functions to service/One, and shelve old main.cpp since it will get rebuilt. 2015-04-09 19:58:04 -07:00
6615a70027 Service code builds now. 2015-04-09 18:22:04 -07:00
46ecad451c Starting on new service/ code to encapsulate node/ with osdep/ stuff, and add a user pointer to the CAPI. 2015-04-09 18:14:27 -07:00
9342380146 docs 2015-04-09 11:27:23 -07:00
7192fe6d15 osdep/ compile fixes, and remove some lingering OS-specific stuff from node/Defaults 2015-04-08 19:03:30 -07:00
d761330465 No more tap factories. 2015-04-08 18:47:06 -07:00
ccc73b920e Node peer list function for CAPI, and some Peer cleanup. 2015-04-08 18:45:21 -07:00
d9e9b60a98 Node status and network list. 2015-04-08 18:25:40 -07:00
e34bc961db Add awareness of online status, and put old OS-dep utils in OSUtils. 2015-04-08 17:10:21 -07:00
0751eaabd8 Clean OS-dep stuff out of node/Utils. 2015-04-08 16:55:00 -07:00
12431ce95d Clean out attic. 2015-04-08 16:50:14 -07:00
4d5a6a25d3 Add events for packet decode errors, etc., and re-implement TRACE as an event. 2015-04-08 16:49:21 -07:00
9d9d0ef12c Rename StatusCallback to more descriptive EventCallback. 2015-04-08 16:07:47 -07:00
c894710ac1 Remove Logger.hpp references. 2015-04-08 16:00:48 -07:00
608b5ca13a . 2015-04-08 15:56:19 -07:00
37bd6fdb9c Move Logger to attic -- last bit of OS-specific stuff to get out of core. 2015-04-08 15:56:11 -07:00
7529d050c7 All of node/ now compiles again! 2015-04-08 15:42:23 -07:00
bf2ff964e1 Utils::now() removal and a bunch of compile fixes. 2015-04-08 15:26:45 -07:00
ee2f51f48e Make Toplogy use dataStoreXX() methods from Node, and get rid of old TCP stuff. 2015-04-08 15:12:04 -07:00
40bfe37a19 Use max of core or most recent path desperation for pings. 2015-04-08 14:58:23 -07:00
59af674e74 Announce multicast groups on multicast subscribe. 2015-04-07 19:35:16 -07:00
6de7996218 Math fix. 2015-04-07 19:32:26 -07:00
49f031ccb4 Tons of refactoring, change to desperation algorithm to use max of core or link, porting over core loop code from old Node.cpp to new CAPI version, etc. 2015-04-07 19:31:11 -07:00
9e55f882d3 Starting to port from old Node() -- identity generation. 2015-04-07 16:41:56 -07:00
8210ed4805 Implement read from object store. 2015-04-07 14:11:47 -07:00
0a90681849 Add ping(), and a logic fix in SelfAwareness. 2015-04-07 12:32:05 -07:00
24608d5ca3 Always use HELLO to contact, and we now confirm newly learned paths via a two-way handshake to prevent half-connects. 2015-04-07 12:22:33 -07:00
eae2c89b09 Mutex locking fix. 2015-04-07 11:58:41 -07:00
52c3b7c34e Implemented empirical determination of external addressing, paritioned per scope. 2015-04-07 11:56:10 -07:00
817824b88b Some external surface awareness work, and IP scope classification. 2015-04-07 10:57:59 -07:00
a2821e9000 Add code to check external surface against reported surface from other trusted peers, and also rename ExternalSurface to SelfAwareness because lulz. 2015-04-06 20:17:21 -07:00
76ad19f411 Use binary_search for multicast groups, which are kept in sorted order. 2015-04-06 19:41:55 -07:00
758bf949db Check for subscribed multicast groups should be able to check groups bridged behind me. 2015-04-06 19:34:36 -07:00
4e691c8e22 build fixes 2015-04-06 18:56:08 -07:00
6807ccd710 Don't need to announce on multicast leave. 2015-04-06 18:28:18 -07:00
51f46a009a Multicast group join/leave and group membership announcement. 2015-04-06 18:27:24 -07:00
8001b2c0cb Network now calls port config function as per new API. 2015-04-06 16:52:52 -07:00
a86300c58f Network build fixes and cleanup of remaining internal references to _tap 2015-04-06 15:47:57 -07:00
488f5bf977 More build fixes, and attic/ some stuff. 2015-04-06 15:14:54 -07:00
197d272287 More NAT strategy cleanup. 2015-04-06 15:08:45 -07:00
be4683a96d Get rid of random port strategy -- research does not support. 2015-04-06 15:03:08 -07:00
5f351f2f6b build fixes. 2015-04-06 14:55:40 -07:00
f4fd2d4971 Bring IncomingPacket into line with new changes. 2015-04-06 14:50:53 -07:00
a95f1e1418 Eliminate redundant SharedPtr assignment. 2015-04-03 17:01:07 -07:00
6eb9289367 Bunch more cleanup, improvements to NAT traversal logic, finished updating Switch. 2015-04-03 16:52:53 -07:00
ee0f56355b Send path simplification. 2015-04-03 13:14:37 -07:00
a69e1876f1 The concept of link desperation (escalating to less desirable transports) simplifies a ton of stuff. Loads of spaghetti logic can die since we no longer have to make these decisions down in the core. 2015-04-02 17:54:56 -07:00
5f51653f9c More cleanup. 2015-04-01 19:16:07 -07:00
0214dbc277 More cleanup. 2015-04-01 19:15:21 -07:00
1f28ce3980 Tons more refactoring: simplify Network, move explicit management of Tap out, redo COM serialization, etc. 2015-04-01 19:09:18 -07:00
49349470a0 ... 2015-04-01 16:27:14 -07:00
8130848020 More refactoring... and update the API a bit... turns out my strategy for reducing indirect function calls also increased memcpy()s which are more expensive. This is simpler and faster. 2015-04-01 14:59:44 -07:00
7ff0cab1b7 docs 2015-03-31 18:33:39 -07:00
b723855751 Refactoring... lalalala... 2015-03-31 18:17:11 -07:00
36eab4f1a9 Whole heap more cleanup and refactoring... 2015-03-31 17:53:34 -07:00
647ce82b86 Move more stuff into osdep/ -- node/ will not use threads directly. 2015-03-31 15:23:14 -07:00
e61a40a956 docs 2015-03-31 14:12:33 -07:00
a61acf36d2 osnet -> osdep 2015-03-31 14:11:21 -07:00
8990fb8267 osnet -> osdep 2015-03-31 14:10:02 -07:00
2c5dbecb3c More CAPI work, and move old control/ and old node/Node to attic. 2015-03-31 13:54:50 -07:00
fe94c9460b Phy is a better name than Wire, and other cleanup. 2015-03-31 11:52:10 -07:00
fe87c1db67 Work on new simplified C API -- required for embedded, language bindings, mobile (language bindings again), etc. 2015-03-30 19:46:07 -07:00
60158aa5dd Turns out that node/ likely has no business with or need for the system IP routing table. So shelve that code for now. 2015-03-30 17:48:48 -07:00
3c1a59fa24 Wire selftest, and passes all tests. 2015-03-30 15:37:44 -07:00
b6241f6cb1 Build fixes. 2015-03-30 13:21:35 -07:00
4445bfc869 Wire should be good to test. 2015-03-26 14:44:31 -07:00
8d409def74 More Wire cleanup/docs and minor fixes. 2015-03-24 13:45:31 -07:00
91810c5f44 A bit more cleanup and doc work on new select abstraction 2015-03-24 10:09:05 -07:00
64ea58d523 Most of new cleaner IO abstraction. 2015-03-23 17:07:47 -07:00
96737368aa Add MIT-licensed Joyent http-parser lib to ext/ for use with new control plane. 2015-03-20 13:32:31 -07:00
7ee1a1151f Add SqliteNetworkConfigMaster::DBC for external access to raw sqlite3 db. 2015-03-20 12:21:18 -07:00
a8a92c5b89 A whole lot of Sqlite netconf master work, and some fixes elsewhere in the code. 2015-03-18 16:10:48 -07:00
cea3f28155 DB init works now. 2015-03-17 16:27:52 -07:00
ba69240bcb Sqlite auto-init and version check. 2015-03-17 15:20:45 -07:00
49a2450e76 Include the Sqlite schema to auto-init the database. 2015-03-17 14:54:13 -07:00
278c8fd9f1 Wire up externally specified NetworkConfigMaster 2015-03-13 13:53:15 -07:00
61d89bd118 docs 2015-03-12 14:27:14 -07:00
1b0908fab2 Delete duplicate redis-schema.md 2015-03-12 14:04:21 -07:00
31bf0a4ea6 Netconf build fixes, schema, etc. 2015-03-12 14:03:53 -07:00
fab951e98a Sqlite schema for netconf. 2015-03-12 09:56:03 -07:00
ab211cf599 Changed my mind design-wise on netconf/ -- will embed using SQLite. This fits much better into the OnePoint plans. I am also officially sick of NoSQL, which in this cases forces you to invent things that SQL gives you for free. 2015-03-11 08:44:38 -07:00
badf260e1f Add historic protocol docs exhibit. 2015-03-02 06:50:42 -08:00
66f29f09da Make clean fixes. 2015-02-26 14:54:56 -08:00
ecffa9f5e7 Redis network config master work, and the beginnings of some actual unit test code. 2015-02-24 16:15:01 -08:00
b6fba5934a RedisNetworkConfigMaster in its own folder. Also fix some hex/decimal Redis database confusion. 2015-02-24 14:17:57 -08:00
78fc62d967 netconf/ is where Redis code lives 2015-02-24 12:41:24 -08:00
ff255a34de Make NetworkConfigMaster a plugin to get Redis and other non-endpoint code out of node/ 2015-02-24 12:28:58 -08:00
93012b0ee5 Re-incorporation: ZeroTier Networks -> ZeroTier, Inc. [Delaware] 2015-02-17 13:11:34 -08:00
89f0c948f8 Physical address change message verb. 2015-02-04 11:59:02 -08:00
eeed31b396 Ping supernodes on surface change, and also reset TCP flag. 2015-02-02 17:02:23 -08:00
b7148c107d Rip out network environment fingerprint. This will be replaced by constant monitoring of actual external address surface. 2015-02-02 16:40:57 -08:00
b1bf3f68c3 Drop support for legacy P5 multicast, as there are fewer than 1% of these remaining on the network. 2015-02-02 16:34:01 -08:00
37d23336ed Surface logic in Topology. 2015-02-02 16:23:26 -08:00
61cff47f5b Code to track externally visible address surface. 2015-02-02 15:24:05 -08:00
c30bf7957e Hash code method for InetAddress 2015-02-02 14:44:24 -08:00
d73a11b60b Add netconf build option to Mac build file too. 2015-01-13 16:45:23 -08:00
83227dc386 Now demote Amsterdam supernode. Appears to be having issues due to some sort of poor hosting provider performance. 2015-01-13 08:43:38 -08:00
fbc6ca28b7 Merge branch 'adamierymenko-dev' of ssh://earth.zerotier.net:55522/git/ZeroTierOne into adamierymenko-dev 2015-01-12 09:49:11 -08:00
72f926dc41 Add new faster supernode in Paris, France. 2015-01-12 09:22:37 -08:00
eab3ca1401 docs 2015-01-09 18:44:17 -05:00
c8c5d3b06e Create netconf master if redis options are in local.conf. 2015-01-09 18:25:41 -05:00
0b84c10ccc Add confirmation step to new netconf, with the caveat that it will be disabled for older netconf servers to avoid race. Also add some comments. 2015-01-09 16:35:20 -05:00
afea153a0b Build fixes. 2015-01-08 18:17:02 -05:00
64ba596e0b C++ network config master ready to test. 2015-01-08 14:27:55 -08:00
60fb28a90a Cleanup, new C++ netconf code is almost ready to test! 2015-01-06 17:16:54 -08:00
a369c69091 C++ netconf master Redis plumbing. 2015-01-06 13:45:10 -08:00
f043321281 Revised Redis schema. 2015-01-06 11:04:53 -08:00
b644d2a893 Add timestamp field to network config requests. 2015-01-05 17:51:50 -08:00
4e95384ad6 Cleanup, add tristate to config code in Network, and happy new year! 2015-01-05 17:47:59 -08:00
08ba2ff752 Upgrade LZ4. 2015-01-05 16:23:32 -08:00
efa0bab296 Stash old Node.JS netconf-service in attic/ 2015-01-05 16:20:20 -08:00
96e9a90e8e docs 2015-01-05 16:19:56 -08:00
87c599df5c Back out service message type -- YAGNI violation. 2015-01-05 15:52:02 -08:00
56cfe1d603 Strip out old Service code, add new service message type. 2015-01-05 11:47:22 -08:00
95e303d6f3 VERSION 1.0.2: Experimental FreeBSD support!
Version 1.0.2 brings experimental FreeBSD support. It has ONLY been tested
on FreeBSD 10 on an x64 system, and should be considered alpha for this
platform for now.

This version is not going to be pushed out to the entire world via software
update, and the binary version distributed for other platforms via the
zerotier.com web site will remain 1.0.1 as there are no other meaningful
user-facing changes. This is just an interim release to let FreeBSD users
try it out. If you find bugs, please enter them on GitHub or do a pull
request and fix them yourself.
2014-12-19 15:25:28 -08:00
ebb63cce70 Merge branch 'adamierymenko-dev' of ssh://earth.zerotier.net:55522/git/ZeroTierOne into adamierymenko-dev 2014-12-19 15:24:23 -08:00
f24283a674 VERSION 1.0.2: Experimental FreeBSD support!
Version 1.0.2 brings experimental FreeBSD support. It has ONLY been tested
on FreeBSD 10 on an x64 system, and should be considered alpha for this
platform for now.

This version is not going to be pushed out to the entire world via software
update, and the binary version distributed for other platforms via the
zerotier.com web site will remain 1.0.1 as there are no other meaningful
user-facing changes. This is just an interim release to let FreeBSD users
try it out. If you find bugs, please enter them on GitHub or do a pull
request and fix them yourself.
2014-12-19 15:20:47 -08:00
f60dfe4963 FreeBSD works, and some documentation fixes. 2014-12-19 15:18:20 -08:00
536bcf6505 FreeBSD builds! 2014-12-19 14:33:58 -08:00
1a02bcc9f5 Fork OSXEthernetTapFactory -> BSDEthernetTapFactory 2014-12-19 13:34:06 -08:00
d10abab786 Remove &s from restarts in installer -- probably part of the restart problem. 2014-12-16 12:32:53 -05:00
ff539c22f9 locallyValidate() is expensive -- stop doing it on every HELLO since in most cases we already know the identity and know it is valid 2014-12-16 09:29:40 -08:00
0324ef2a47 VERSION 1.0.1
This version is mostly a bug fix release. It fixes a bug that could cause
the service to crash on Windows while running the GUI application. It also
contains a number of fixes to the Linux installer and Linux support for
systemd-based init systems.

It also includes a minor tweak to the multicast algorithm. Version 1.0.0
sent multicasts in a deterministic order, while this version randomizes
the order. The vast majority of users will notice nothing, but this may result
in superior coverage for service announcements on very large networks. It's
a hard variation to test, so we're releasing like this to gather information
from users about the effect. Nothing will change on small networks, and
ordinary multicast functions like ARP and NDP should be unaffected.

The next version will likely focus on additional improvements to Microsoft
Windows support, since there are several known Windows issues in need of
attention. We're working on an NDIS6-based Tap driver that should address
the driver issues experienced by a small number of Windows 7 users.
2014-12-05 12:10:18 -08:00
cd2bf6f4b3 Stash make-freebsd.mk in attic/ to indicate that the FreeBSD port is not done net. Coming soon! 2014-12-05 09:36:16 -08:00
ad4923846a Add .autoupdating to Debian package version too. 2014-12-05 17:34:05 +00:00
83a6edd08e Make RPM version contain .autoupdating to indicate that it auto updates outside normal RPM channels. 2014-12-05 12:26:53 -05:00
58f2dc5cf3 RPM build support in buildinstaller.sh 2014-12-04 20:13:41 -05:00
3a786ccc17 Set Debian arch correctly on armv6l (armhf) 2014-12-04 22:38:49 +00:00
b3a9bfca4d Fix Debian package upgrade process. 2014-12-04 21:28:03 +00:00
03c7dc2b4c Add .service to unit name in uninstall too. 2014-12-04 00:16:10 +00:00
000eac5a2b Another systemd change... should fix problems on some systems. 2014-12-03 16:05:18 -08:00
62c31e70d4 Systemd permission fix in Linux installer. 2014-12-03 23:57:08 +00:00
1b6af7836e Don't restart ZeroTier One service if version has not changed. 2014-12-03 23:25:06 +00:00
638ae153cc fix service command, eliminate all uses of killall since it might be missing 2014-12-03 22:46:44 +00:00
059aaae7a9 Preinst and postinst Debian scripts. 2014-12-03 22:09:17 +00:00
4bf2fa3edb Basic Debian package support in buildinstaller.sh 2014-12-03 21:40:33 +00:00
149dbff3ea Windows Visual Studio meaningless-warning-ectomy. 2014-12-02 16:50:53 -08:00
c030294bf5 Clean up some unused Windows files. 2014-12-02 16:43:01 -08:00
30e82a4d9c Fix network enumeration buffer size bug -- reported by user Neal Symms via LiveAgent 2014-12-02 12:53:30 -08:00
8c64046a53 docs 2014-11-26 14:59:43 -08:00
04e4c5263e Remove more legacy code -- just doing the supernode redist for old multicast is now good enough given the small number of legacy nodes left. 2014-11-26 13:39:57 -08:00
4303376ba6 cleanup and docs 2014-11-26 13:30:00 -08:00
cda61fe2d9 docs and cleanup 2014-11-26 13:14:18 -08:00
0f505411cf Enable legacy multicast in Constants. 2014-11-25 14:12:33 -08:00
15d3e383e6 Add ZT_SUPPORT_LEGACY_MULTICAST ifdef to enable the legacy code to all be toggled. 2014-11-25 12:46:51 -08:00
6888c6482c Re-enable legacy multicast distribution -- still too many pre1.0.0 nodes online. 2014-11-24 10:37:34 -08:00
d772639cc6 Multicast code cleanup. 2014-11-24 10:05:16 -08:00
acac88cf77 A few more tweaks to MC algo... 2014-11-23 14:00:27 -08:00
0bcac1fd79 Add a bunch of high-resolution try/catch safety in Node main loop to attempt to snare gremlin. 2014-11-21 11:54:06 -08:00
959f611a65 Fix thinko in multicast changes... works now! 2014-11-21 11:27:53 -08:00
7619b0ecbd Send multicasts in random order.
This should not affect most users, but on large networks it should cause service
announcements to work a lot better. This is the result of a prolonged discussion
with a user about the visibility of game servers on a large network. The old
multicast algorithm was de-facto randomized due to its distributed nature, while
the new algorithm is more deterministic. This will restore some randomization
beyond limit-overflow conditions.

It won't affect small networks at all.
2014-11-21 10:50:27 -08:00
0c85b4ef5f Tweak to symmetric NAT buster to add one to the number of ports above the current one it attempts. 2014-11-20 13:42:18 -08:00
ee9e6a3c6b Change path selection logic to exclude non-fixed and non-active paths -- possible fix for "NAT traversal coma" issue. Also fix a typo. 2014-11-20 13:20:16 -08:00
7b6f10e859 Optimization: we don't need to verify signatures on certs if they're certs we already have and have verified. 2014-11-13 12:40:51 -08:00
c61e9c0ef9 Prevent "software laser" in legacy multicast support. Already hotpatched in supernodes. 2014-11-13 14:21:06 -05:00
b1b37d9d72 Increase paltry listen() backlog size to prevent Linux kernel syn flood fallback (only really affects supernodes). 2014-11-12 14:05:03 -08:00
1bd5a1ebcd Make selftest build and run on FreeBSD 10 with gmake 2014-11-04 11:20:38 -08:00
14e4ffd15f VERSION 1.0.0
ZeroTier 1.0.0 brings a number of under the hood improvements and bug
fixes. These include but are not limited to:

 * A simpler, faster multicast algorithm that places full burden
   for multicast propagation on the sender. This results in better
   fairness without CPU-intensive signature/verify on every packet,
   lower latency for intra-data-center SDN operations, and avoids
   distributed burdens that are intrinsically unfriendly to mobile
   clients subject to wake frequency limits and battery life
   constraints. In the future this may be augmented to allow
   optimized delivery to multiple recipients at the same site via
   federation.

 * Significant code reorg to move toward mobile support (iOS, Android)
   and future SDK packaging.

 * A number of efficiency and stability improvements.

 * Bug fixes for Linux and ARM users.

 * Improved NAT traversal, including limited support for port
   numbering scheme guessing to traverse some symmetric NATs.

Upgrade from 0.9.x is not required but is strongly recommended. Older
clients using the old multicast algorithm are presently supported via
legacy hooks, and these may go away at some point in the future. We'll
monitor the status of the network and try to keep legacy support around
as long as people need it, but it'll probably be pulled once 95%+ of
clients are 1.0.0 or newer.

The next versions will bring further bug fixes, improved user experience,
more enterprise-grade features for intra-data-center use, and more!
2014-10-30 12:49:16 -07:00
16461eca1f docs 2014-10-30 12:47:26 -07:00
8f29f19e98 Fix for UI client. 2014-10-30 00:12:45 -07:00
5ca20da7af Windows service fix -- it helps if we actually launch the control socket thing. 2014-10-29 23:57:54 -07:00
8bd9f7d51d Build fix for UI and mac. 2014-10-29 19:54:24 -07:00
0e84eb3852 Back off default multicast limit just a little. 2014-10-29 18:25:24 -07:00
4923ab2945 Windows build fix, set up Windows solution with new layout. 2014-10-29 17:40:23 -07:00
4c59497b95 Linux build fixes for testnet. 2014-10-29 16:32:24 -07:00
5484cf4309 More cleanup, and fix a bug in Multicaster::gather() 2014-10-29 16:24:19 -07:00
22d8aa4dc9 Moderate efficiency improvement on multicast gather result parsing, and go ahead and keep track of total known peers. 2014-10-29 15:26:32 -07:00
95f421024a Code cleanup, and fix some unsafe pointer handling in Network. 2014-10-29 13:57:37 -07:00
f65b48d447 Thread sync bug... 2014-10-28 17:29:45 -07:00
5bb854e504 Fix a nasty bug introduced in packet fragmentation a while back during refactoring, and a few other things related to multicast. 2014-10-28 17:25:34 -07:00
faff84e63a docs 2014-10-28 16:14:05 -07:00
9a5f6f020f docs 2014-10-28 15:53:11 -07:00
4dec598fb8 Make multicast gather slightly more aggressive, and add total to list command in testnet. 2014-10-28 15:33:10 -07:00
3e948fcd93 .... aaaaaaand multicast testnet functionsa are in! 2014-10-28 15:06:43 -07:00
8aa75321e2 docs 2014-10-28 14:46:15 -07:00
ffbf0781fe docs 2014-10-28 14:27:21 -07:00
e4966c7a07 docs 2014-10-28 14:25:44 -07:00
ac23f74547 docs 2014-10-28 14:24:07 -07:00
fa60463da5 docs 2014-10-28 14:23:39 -07:00
3d85a615fb NULL dereference on still-initializing node bug fix in status query commands, and doc updates. 2014-10-28 14:17:39 -07:00
f873881a0d Helps to use a proper multithreaded queue instead of ugly plebian hackery. 2014-10-28 12:28:45 -07:00
934a575a74 Testnet seems to work a bit better now... 2014-10-27 18:23:10 -07:00
fe7b429866 ... 2014-10-27 17:32:37 -07:00
295f6a20e0 Testnet works! sort of... 2014-10-27 14:25:00 -07:00
6a94a4a51b Testnet WIP 2014-10-27 09:03:38 -07:00
8672ca9cf8 Prep for real tests like alltoall. 2014-10-24 17:29:09 -07:00
a75a7547b4 Deadlock fix... 2014-10-24 17:11:23 -07:00
3857116724 More testnet work. 2014-10-24 16:35:06 -07:00
5c7cd53f13 Testnet sort of works! spins up supernodes. 2014-10-24 08:48:44 -07:00
4fbb098daa Testnet work... getting there! 2014-10-23 16:46:09 -07:00
0a195e7bc0 Some work on simulated net... 2014-10-22 09:52:29 -07:00
ae228ade8c Starting on simulated socket manager. 2014-10-21 17:00:25 -07:00
4a5756e7fb cleanup 2014-10-21 16:21:45 -07:00
29ba34ab7c Kill old testnet stuff, update main.cpp for new SocketManager abstraction. 2014-10-21 15:33:35 -07:00
2436e22f46 More work on abstracting socket manager. 2014-10-21 15:18:50 -07:00
128a131070 About halfway there in refactoring to support pluggable SocketManager. 2014-10-21 14:26:10 -07:00
6bc9a938cf Move socket manager implementation into osnet/ 2014-10-21 11:25:31 -07:00
0e47f13f14 Simplify locking semantics some more to address a deadlock. 2014-10-21 10:42:04 -07:00
7c0f5e97e1 Don't need to check peer version for every item in txQueue since there is only one peer. 2014-10-19 15:20:19 -07:00
0fd562bebc One more Windows build fix. 2014-10-19 13:10:23 -07:00
8730d30575 Now for some clang compile fixes... 2014-10-19 13:07:50 -07:00
babf3787c6 Switch VS2012 build back to real, not self-test. 2014-10-19 12:58:13 -07:00
74f36f5dc0 Windows build fixes. 2014-10-19 12:56:39 -07:00
2eeb3dee9e Merge branch 'adamierymenko-dev' of ssh://shub-niggurath.zerotier.com:222/git/ZeroTierOne into adamierymenko-dev 2014-10-18 15:02:03 +02:00
4951e5e1b5 This is a --strategy=ours merge to allow adamierymenko-dev to replace
the current content of detached-network-test. This is ready for another
test in 'headless' mode.

Merge branch 'detached-network-test' into adamierymenko-dev
2014-10-18 15:00:47 +02:00
6429c51ec7 Merge branch 'detached-network-test' into adamierymenko-dev 2014-10-18 14:57:04 +02:00
a8bd8fff93 Make several changes to eliminate potential deadlock or recursive lock conditions, and add back rescan of multicast groups on network startup. 2014-10-14 16:38:27 -07:00
a94b0e6a43 Get rid of rescanMulticastGroups() in Network thread since this can deadlock... the fact that this can happen is probably bad design. 2014-10-14 15:58:03 -07:00
7a37326cc0 Fix sleeper bug that probably did nothing in setSupernodes(). 2014-10-14 14:59:17 -07:00
42d644a57e More fixes to legacy support, and to a potential issue on quit. 2014-10-14 12:37:35 -07:00
023cac4ebb Add -g to optimized crypto code in ZT_DEBUG=1 build mode. 2014-10-14 10:22:27 -07:00
2416491cbc Permanently retire peers.persist, but make iddb.d always enabled instead since identities are what we really want to cache. 2014-10-13 14:12:51 -07:00
6e23986bb3 Another build fix. 2014-10-13 13:09:02 -07:00
1921e28c5f Build fix. 2014-10-13 12:35:43 -07:00
52314dcdf6 GitHub issue #111 2014-10-13 11:47:14 -07:00
d8d4aace42 Fix for init.d/zerotier-one (again) 2014-10-13 12:55:16 -04:00
05309037a8 Yank potentially costly support for TTL out of UdpSocket since we dont use this anymore. 2014-10-13 09:37:17 -07:00
7943414c89 Part two of fix to GitHub issue #118 -- need to test thoroughly though. 2014-10-13 08:15:00 -07:00
c7c545bf6c Fix for part one of GitHub issue #118 2014-10-13 08:11:19 -07:00
6316011024 Make crypto and compression build optimized in debug, and also try disabling peers.persist -- might ship this way as it seems more trouble than its worth. 2014-10-12 11:42:49 -07:00
8b0846d077 Delete bunch of commented out code. 2014-10-11 16:53:21 -07:00
0d017c043f Stop persisting last announcement time since Multicaster is volatile. Also some more legacy multicast fixes. 2014-10-11 16:26:02 -07:00
c2aac69a9f Fixes to legacy peer support. 2014-10-11 15:49:31 -07:00
a9c6913f12 . 2014-10-11 10:38:52 -07:00
e071c05f1b Add a sanity limit to legacy multicast repeater function in supernode-mode nodes, and change netconf-master to issue multicast limit (ml) instead of old p5 stuff. 2014-10-10 14:59:07 -07:00
03dc823ad7 (1) Back off a little on default max multicast limit since 128 is pretty bandwidth heavy, (2) add a little to default multicast rate limit since new MC algo is fairerererer, (3) decided not to involve netconf masters in multicast so take that out of list of who gets LIKEs. 2014-10-10 12:55:06 -07:00
1774e615a1 <= MTU 2014-10-10 09:09:56 -07:00
56f8f8aa24 Return self in GATHER requests if self is a member of multicast group, and reinstate legacy support. 2014-10-09 18:32:05 -07:00
4941c8a1f3 New multicast bug fixes, TRACE improvements, and temporarily disable legacy multicast for debugging purposes. 2014-10-09 17:58:31 -07:00
d5e0f7e3e4 Reorg multicast packet, and a whole bunch of refactoring around the pushing of certificates of membership. 2014-10-09 12:42:25 -07:00
620e64c58f Supernode propagation of legacy multicast frames was brokezored. 2014-10-09 09:03:12 -07:00
b809dad94a Bug fix in zerotier-cli (Unix) 2014-10-07 16:16:22 -07:00
b13845e528 . 2014-10-07 15:26:12 -07:00
3f15752f73 Add IPv4 address assignment to ffffffffffffffff test network. 2014-10-07 14:34:00 -07:00
cb6fd3afb3 g++ compiler warning fix 2014-10-07 13:18:08 -07:00
7788a3d45d . 2014-10-06 14:56:49 -07:00
923c325a40 Add another private-testnet root topology debug option using 10.0.0.1 as the supernode. 2014-10-06 13:19:04 -07:00
87f1b1b1e3 Bug fix in new multicast frame handler, handling of old "P5" multicast frames in new way. 2014-10-06 13:16:16 -07:00
ab22feba9a Bump version to 1.0.0, add legacy support code to Multicaster to not send new frame to known-to-be-old peers. 2014-10-05 10:34:25 -07:00
10c196df50 Send a VERB_P5_MULTICAST_FRAME to the supernode for each multicast -- for now. This will allow supernodes to echo these down to pre-1.0.0 peers. 2014-10-04 13:46:29 -07:00
2c8321be1f Pull logic to always send new multicasts to supernode since we need to do that differently, re-add support for active bridges, and remove some gratuitous use of std::set where not needed. 2014-10-04 13:15:02 -07:00
62da7e67b6 Add some rate limiting to implicit gathers, and always send multicasts to at least one supernode so they can broadcast to old peers (temporary). 2014-10-03 22:30:10 -07:00
e7c81ef34e Turns out that needed to be a list after all. Also clean up Multicaster::gather(). 2014-10-03 22:03:19 -07:00
3f7e7e8a88 Do not multicast to self. 2014-10-03 18:42:41 -07:00
496109fdcc Announce multicast group changes on network rescanMulticastGroups() 2014-10-03 18:27:42 -07:00
aad344bb84 Add test network support to Network. 2014-10-03 16:14:34 -07:00
13fc20b0ee Add inject (undocumented in help) to NodeControlService. 2014-10-03 15:59:49 -07:00
351db7f1a0 Plumb injectPacketFromHost through to API. 2014-10-03 14:49:11 -07:00
6ab7b1b915 Add local-testnet clean script, and make a really ugly hacky fix in main.c for the -q option. (All that personality stuff needs to be rewritten. Yuck.) 2014-10-03 13:41:52 -07:00
f853bc6a86 Fix root topology override 2014-10-03 13:19:13 -07:00
d7189dd6c7 . 2014-10-03 13:06:13 -07:00
5fc3c0812a run-local-testnet script 2014-10-03 13:02:36 -07:00
67aa23530b More work on adding testnet and user-mode capabilities for local network simulation. 2014-10-03 11:59:50 -07:00
2a58c3fb98 Root topology testnet stuff... will ship this so people can easily run the local testnet app. 2014-10-03 09:36:39 -07:00
96fa3f7550 Work on in-place testnet support. 2014-10-02 16:33:08 -07:00
1109046782 Last steps before test: parse OK(MULTICAST_GATHER) and OK(MULTICAST_FRAME) 2014-10-02 13:50:37 -07:00
49dc47ff38 Make multicast gathering a bit smarter. 2014-10-02 11:35:37 -07:00
dee86e2448 But since we are now using middle 3 bits we can assign sane values for the cipher suite enum. 2014-10-02 11:13:53 -07:00
17da733f97 Gotta support old encrypted flag, move cipher spec to middle 3 bits... due to some shortsighted design early-on. In the future this can die once there are no old peers. 2014-10-02 11:08:59 -07:00
23836d4c11 Change "encrypted" flag to full cipher suite selector. Go ahead and reserve AES256-GCM which might be added in the future. 2014-10-02 10:54:34 -07:00
e53d208ea4 Improve security posture by eliminating non-const data() accessor from Buffer. 2014-10-02 10:06:29 -07:00
e8c5495b61 Yes, zero my secret key data. Yes I really, really mean it. 2014-10-02 09:08:31 -07:00
28646eee0a A bit more IncomingPacket cleanup... almost ready to test, just need OK() handling. 2014-10-01 16:29:52 -07:00
e1882b614b Some cleanup, Multicaster now sends multicasts as it gets additional members. 2014-10-01 14:05:25 -07:00
ae082c3cb8 Yay... now everything compiles! Getting close to testing on this. Still have not added backward compatibility support for relaying of multicasts to 0.9.X clients yet but that will be easy. Will test with heterogenous 1.0.0 clients only first. 2014-10-01 12:41:48 -07:00
ea6124dd2f IncomingPacket builds! 2014-09-30 17:33:20 -07:00
b41437780b Add origin to new MULTICAST_FRAME, move security check for certs into Network to remove redundant code and bug-proneness, more work on IncomingPacket... 2014-09-30 17:26:34 -07:00
2659427864 Multicaster needs to be global, not per-network, and a bunch of other stuff. 2014-09-30 16:28:25 -07:00
8607aa7c3c Everything in for new multicast except IncomingPacket parsing... 2014-09-30 08:38:03 -07:00
ed0ba49502 A few more revisions to new multicast verbs. 2014-09-26 14:18:25 -07:00
2d41055bdc Some Network code cleanup. 2014-09-26 12:23:43 -07:00
027060dad1 Most of new multicast code builds... now on to packet parsing. 2014-09-25 22:13:31 -07:00
0778332747 . 2014-09-25 22:08:52 -07:00
9e186bbd89 . 2014-09-25 15:57:43 -07:00
050a0ce85d . 2014-09-25 15:08:29 -07:00
6c87f9f765 Rename MulticastTopology to Multicaster -- same name as old multicast controller but different code. More descriptive though. 2014-09-24 14:02:16 -07:00
81b12b6826 Rename the ubiquitous _r pointer to RuntimeEnvironment to RR just to be a little more consistent about using _ to denote private member variables. 2014-09-24 13:53:03 -07:00
431476e2e4 Some more multicast algo work... 2014-09-24 13:45:58 -07:00
557801a09e Rename PacketDecoder to much more descriptive IncomingPacket 2014-09-24 09:04:09 -07:00
9180a30986 . 2014-09-24 09:01:58 -07:00
61d0f27d2a Make MulticastTopology have its own mutex. 2014-09-23 10:26:30 -07:00
c49e253e21 . 2014-09-22 15:03:16 -07:00
954f9cbc13 Yet more WIP on mulitcast algo... 2014-09-22 13:18:24 -07:00
d9abd4d9be Work on defining new direct broadcast multicast algorithm. 2014-09-18 18:28:14 -07:00
d37c3ad30f VERSION 0.9.3: unreleased update with some fixes for Pi users
This version is being tagged and bagged, despite the fact that it's not
going to be released and won't be merged into master until 1.0.0 is ready.

It contains several Linux build fixes, a fix for a unix domain socket resource
leak, and build fixes for the Raspberry Pi.
2014-09-18 13:40:58 -07:00
4708231046 Fix for GitHub issue #122 and other fixes 2014-09-18 10:01:30 -07:00
924f030994 docs 2014-09-18 09:41:12 -07:00
6b76cac6cf Back off from thrashing shutdownIfUnreadableCheck, fix bug in control service. 2014-09-17 14:19:58 -07:00
2762db8408 More work on control bus refactor... 2014-09-17 12:54:39 -07:00
edff13dcae More control/ refactoring 2014-09-17 09:50:49 -07:00
e22fae2397 it compiles again! 2014-09-16 15:47:00 -07:00
73dd9d3b74 Make sure open() has third argument 2014-09-16 08:58:49 -07:00
8d2e20ede6 Get rid of __align stuff in Salsa20 -- not portable, does not seem to help much on newer chips. 2014-09-16 08:53:18 -07:00
5c1c70a604 cleanup 2014-09-16 08:19:39 -07:00
fb22ef053b Move rest of NodeControl stuff out of node/ and into control/ 2014-09-15 16:32:55 -07:00
4ba4269344 cleanup 2014-09-15 09:45:57 -07:00
2dcf584834 rename ipc/ to control/ 2014-09-15 09:44:29 -07:00
13aba7640b refactoring for SDK 2014-09-15 09:43:57 -07:00
2e46bb4264 build fixes 2014-09-13 14:15:26 -07:00
1d37204a37 Refactoring in progress... pardon our dust... 2014-09-12 16:57:37 -07:00
6b4346d1ac work in progress on API refactor 2014-09-10 17:16:40 -07:00
ea0f836ef1 Turns out we do want to propagate packets unauthenticated in the supernode case. This is fine. 2014-09-08 14:33:12 -04:00
b8729de9da Temporarily DISABLE multicast authentication (doing in branch, will reenable in dev) 2014-09-08 08:25:06 -07:00
4e9280fc7a Rip out dead "firewall opener" code, replace in pipeline with anti-symmetric-NAT tactics. 2014-09-05 16:23:24 -07:00
d02ecfb288 IP assignment and change cleanup -- leave IPs that were never configured via ZT static assignment alone. 2014-09-05 15:35:09 -07:00
3afc629ac5 Bit of network config parser cleanup. 2014-09-05 14:56:11 -07:00
6e1339fedf Remove zerotier-idtool symlink on mac uninstall.sh 2014-09-05 11:39:54 -07:00
7d4b6767eb Old-school GCC build fix -- make sure __GCC__ is defined 2014-09-05 17:48:59 +00:00
93f9b4392d Enable configuration of multicast algorithm parameters in netconf 2014-09-04 14:25:07 -07:00
6df9546742 Fix for missing broadcast address on Linux Ethernet taps. 2014-09-04 13:36:25 -04:00
4dbeb97eb9 docs 2014-09-03 16:50:06 -07:00
34349d1a61 docs 2014-09-03 16:48:02 -07:00
6497a4a0f6 initdb changes 2014-09-03 19:15:53 -04:00
b8d29cb6ba Some netconf-service renames and add initdb script for user use. 2014-09-03 20:04:58 +00:00
e77e224171 bin2c warning removed 2014-09-03 12:25:28 -07:00
dcea212e40 Add noupdate flag in root topologies, add ability for mktopology to read from a template. 2014-09-03 11:56:36 -07:00
644db7a04a Let people build installers for any machine type on Linux, just canonicalize the x86 and x86_64 types. 2014-08-27 20:15:41 -04:00
00b16f6aa6 Fix for GitHub issue #110 -- failure to bind IPv6 now non-fatal 2014-08-27 20:09:56 -04:00
1952db5069 Only enable SSE Salsa20 on x86 and x86_64 Linux 2014-08-27 20:01:24 -04:00
6f8364ba59 VERSION 0.9.2:
The primary focus of this version is better integration with the
Microsoft Windows operating system.

Virtual networks should now be detected as "real" networks. For
each network, a message box should pop up the first time the network
is detected and classified allowing the user to choose its services
and security designation. On Windows 7 this is "work," "home," or
"public." On Windows 8 it's a simple choice of whether or not to
enable file and printer sharing and other services.

Several bugs have been fixed. Among these are a Windows threading
issue, several minor threading deadlock issues that could manifest
if rapidly adding and removing networks, and a command line interface
issue. The network list now shows the network MAC address as well,
a UI oversight in previous versions. A vectorized SSE implementation
of Salsa20 is now included for improved encrypt/decrypt performance.

The sending of low-TTL "firewall opener" packets has been disabled
in this version, since they may not be necessary and may harm NAT
traversal in some configurations. We will measure the effectiveness
of NAT traversal and see if this change improves performance in the
field.

Finally, this version obsoletes both the Tokyo and Sydney supernodes
in favor of a single larger supernode in Singapore. This decision was
made on the basis of bandwidth costs-- both Tokyo and Sydney are
significantly more expensive. We'd like to keep the basic service free,
so keeping bandwidth costs for relaying low is important. Since NAT
traversal works well and is constantly being improved, most users will
not see a speed decrease from this. Some Chinese users may see
improved performance since Singapore may be closer than Tokyo to many
Chinese cities.

The next major releases will focus on better Macintosh platform integration,
further improvements to NAT traversal, and UI improvements.
2014-08-22 12:05:56 -07:00
eadff71d37 Another fix to Network life cycle. 2014-08-21 18:07:27 -07:00
af62a6cade Forgot to uncomment secret debug #define of death. 2014-08-21 17:49:46 -07:00
de4e29288d Fix for crazy Windows threading bug... repeatedly adding and removing a network now doesn't leave networks in limbo. 2014-08-21 17:49:05 -07:00
44d58ee871 Change 1.1.1.1 pseudo-IP used for default route hack to 25.255.255.254, since 1.1.1.1 is from a now-in-use IPv4 block while 25.0.0.0/8 is still unrouted. It can be changed in the future without impacting anything, since Windows keys off the MAC not the IP to classify networks. 2014-08-21 08:26:39 -07:00
9d5819ff44 Version bump to 0.9.2 -- preparing for release... 2014-08-20 18:29:27 -07:00
08d7fe0432 Fix for GitHub issue #102 2014-08-20 12:36:11 -07:00
9f2571cc01 Some UI fixes for Windows. 2014-08-20 10:22:30 -07:00
b4b2e2ed9f ... 2014-08-19 18:21:21 -07:00
17ebd0afc7 Disable service management in UI -- installer should automatically start service and this is annoying for testing purposes. 2014-08-19 18:14:50 -07:00
351b7f3a09 UI stuff and sign .dmg on build. 2014-08-19 17:42:17 -07:00
721625d512 Add MAC to listnetworks, and some other make stuff. 2014-08-19 14:11:02 -07:00
282114e96c Makefile changes, and make Topology::getBestSupernode() return the "next" supernode if I am a supernode. Also some comment cleanup. 2014-08-19 10:09:21 -07:00
95d123cfc2 Do HttpClient refactoring for Windows. 2014-08-18 14:34:04 -07:00
f5cbb45ab9 Increase sleep/wake detection threshold... might want to switch to using native interfaces to really detect this in the future since this is not 100% reliable. 2014-08-18 10:13:25 -04:00
b7b9b9c0b7 Add "make debug" to make building debug one-offs easier (Linux). 2014-08-18 10:07:03 -04:00
715afc0314 Default to built-in root topology if signature check fails (instead of exiting) 2014-08-16 14:01:25 -07:00
f281886bfd Small thread safety fix in HttpClient. 2014-08-16 13:32:33 -07:00
4f0fcc582e Refactor HttpClient a bit. 2014-08-16 09:08:52 -07:00
aa59cfd545 Web request part of supernode resync (not quite done, needs test) 2014-08-15 23:37:35 -04:00
f696299cfc docs 2014-08-15 12:59:49 -04:00
b0719eacf9 Add encrypt/decrypt to attic. 2014-08-15 12:59:07 -04:00
c2187c8759 (1) distribute default root-topology in new dictionary format, (2) bump peer serialization version to force obsolescence of old supernodes, (3) stop outputting a log message every time we poll for software updates 2014-08-14 19:52:22 -04:00
56296f96db Regenerate root topology dictionary with field fix. 2014-08-14 18:54:53 -04:00
be6b61b1bc Accept supernode dictionaries in Topology, also fix (unused) field name in one of these. 2014-08-14 18:06:18 -04:00
f8d4611d15 (1) Tweak LAN locator beacon frequencies, (2) Windows virtual networks
now show up as *real* networks and prompt the user to set their
location and firewall status (public, private, home/work, etc.).

The hack used to achieve #2 should not be examined by children or those
suffering from epilepsy or heart conditions.
2014-08-12 17:20:34 -07:00
f25bd41a03 Some fixes to firewall config code. 2014-08-08 15:53:27 -07:00
fe3ad5e2cc Fix a Windows bug in refactored tap code, and always make sure we have a firewall exception rule on startup. 2014-08-08 14:57:13 -07:00
502ea66f15 Kill ugly old getSecureRandom() and replace with simple wrapper for Windows CAPI and *nix /dev/urandom, and some build fixes. 2014-08-08 11:53:55 -07:00
673aab5ba2 Fix an oversight in signed dictionaries: the timestamp and signing identity should themselves be part of the signature. Also include the raw dictionary in addition to the bin2c version in root-topology/ 2014-08-08 12:46:00 -04:00
77457cbff1 Windows compile fixes, compiler warning fix, unfreed memory fix in main.c (though it would not have mattered since program exits immediately after). 2014-08-07 19:08:41 -07:00
db0d17cebb Change topology URL to something prettier. 2014-08-07 20:27:05 -04:00
dd58006d65 Rename topology/ to be more descriptive, and some more updates. 2014-08-07 20:21:07 -04:00
f0ebb0b0f1 More root topology stuff. 2014-08-07 20:14:24 -04:00
8c9d3146df make clean fix 2014-08-07 18:46:04 -04:00
117f977ce3 mktopology for making new signed topology root server dictionaries 2014-08-07 18:45:11 -04:00
d8e5d9d6e8 Singapore supernode -- its baaaack 2014-08-07 21:19:34 +00:00
1f5feb75fb LinuxEthernetTap refactor. 2014-08-07 20:40:23 +00:00
05031ff938 Linux build stuff. 2014-08-07 13:05:17 -04:00
adfb71fa6b Compile for for TRACE, remove old TESTNET cruft. 2014-08-07 08:49:43 -07:00
37341048a9 Silence kextload/kextunload output, error handling improvements. 2014-08-07 08:41:57 -07:00
b3491f9de1 ifdef out Unix-only output redirect function on Windows 2014-08-07 06:36:46 -07:00
80fc584923 Fix for GitHub issue #97 2014-08-07 06:35:54 -07:00
b7389995f4 Make install scripts also symlink zerotier-idtool script, and doc updates. 2014-08-07 06:25:01 -07:00
92d9ad4a7f Some tap interface changes and integration into main.cpp for *nix systems. 2014-08-06 16:24:30 -07:00
8a804b5257 (1) Disable firewall openers (its easy to re-enable), (2) Do some prep work for making supernode topology hot-updatable. 2014-08-05 14:05:50 -07:00
e3c5ada3a7 Add signatures to Dictionary, and fix unhex() API in Utils to be a little safer. 2014-08-05 09:56:49 -07:00
7adf0eac7e Windows Ethernet tap refactoring complete. 2014-08-04 21:48:59 -07:00
df0a8e8450 Linux routing table now works. 2014-07-31 20:13:29 -04:00
526435859f Newly broken out OSX tap driver builds now. 2014-07-31 15:13:48 -07:00
98d426e1d5 Path fixes in osnet/ stuff 2014-07-31 14:31:32 -07:00
b80c229d87 Tons of code cleanup, refactor Network to use EthernetTapFactory, probably also fix GitHub issue #90 2014-07-31 14:09:32 -07:00
9b93141dd0 Upgrade LZ4 to latest version. 2014-07-30 15:34:15 -07:00
59ebc9d41e docs 2014-07-28 09:10:56 -07:00
f0199d6770 Windows routing table interface (untested). 2014-07-28 09:08:56 -07:00
f2d372545a Salsa20 SSE Windows build fix -- turns out you can't be as loose with SSE intrinsics in Visual Studio 2014-07-26 20:07:38 -07:00
9809511c4c Another rename... 2014-07-26 13:11:45 -07:00
538e8a86c8 Move node/osdep/ to sys/ 2014-07-26 13:10:41 -07:00
27aa6ea44e Linux routing table support work. 2014-07-25 16:16:05 -04:00
7475c4047e A bunch more osdep/ work... 2014-07-23 09:14:53 -07:00
5e58a7d54a Split UnixEthernetTap by platform to get rid of ifdef spaghetti. 2014-07-21 09:18:33 -07:00
6a174483d8 Ethernet tap factory interface. 2014-07-18 17:26:08 -07:00
a76d9d4408 Move OS-dependent implementations of generic interfaces to osdep/ in preparation for TapFactory refactor. 2014-07-17 17:19:18 -07:00
1189f4a568 Set/delete functionality in BSD routing table. 2014-07-17 17:17:59 -07:00
51766e6549 BSD routing table works... that hurt much worse than it should have. 2014-07-17 13:08:37 -07:00
d315156733 BSD routing table implementation work. 2014-07-16 15:13:53 -07:00
4c4675e3ac Cleanup, add __BSD__ 2014-07-15 20:49:13 -07:00
49ef980ecf Scale back Salsa20 benchmark a bit to not take too long on slow boxes. 2014-07-15 21:02:56 -04:00
12692c551e SSE optimized Salsa20 -- anywhere from 20% to 50% faster than plain C version 2014-07-15 17:56:09 -07:00
00f9305ad8 Routing table base class. 2014-07-15 13:48:42 -07:00
0097949ba9 . 2014-07-15 12:32:06 -07:00
1b33a9e807 . 2014-07-15 12:21:24 -07:00
4a0b33561c Starting to define system network stack interface. 2014-07-13 12:57:30 -07:00
96faaa85cf VERSION 0.9.1: bug fixes and experimental bridging support
This version fixes several bugs including an issue with networks that have
EtherType filtering disabled, a file permission issue that affected non-English
versions of Windows, a multicast propagation bug that caused multicasts to
be dropped more often than they should be, and an issue with IP auto-configuration.

It also introduces experimental support for bridging between physical and virtual
networks, a much-requested and powerful ability that's been planned from the start.
ZeroTier One can now replace the functionality of ordinary VPNs, link multiple
offices into a single LAN, and connect virtual machine backplanes in the cloud to
physical networks at home, among other things.

Bridging support isn't "officially" out yet, since the web UI part is still
in development. But when that is done, an official announcement will be
made on the blog and users can try it out. So far bridging has only
been tested under Linux with the Linux kernel's native bridging driver.
YMMV on other platforms. Try it out and let us know by filing bugs at GitHub
or e-mailing them to "contact@zerotier.com".
2014-07-03 13:32:53 -07:00
f82c7006ea Leave IP addresses alone instead of deleting them from tap if they are not members of any of the networks under management. 2014-07-02 15:59:08 -07:00
681af253ef Fix for GitHub issue #88 - actually do in the code what the web UI expects it to do. 2014-07-01 09:27:33 -07:00
88bdb81791 Keep track of basic aliveness for peers regardless if direct or indirect connectivity and use this for multicast propagation. Also consolidate adding of active bridges via the same functor as regular multicast next hops. 2014-06-30 11:31:04 -07:00
458f6ae7c3 Only add active bridges to top of MC propagation list if they are alive. Otherwise a dead active bridge might kill multicast for us. 2014-06-26 18:13:48 -07:00
999e963533 Fix for network not found in netconf. 2014-06-27 00:47:07 +00:00
5336f2600a Send ACCESS_DENIED if network not found. 2014-06-26 17:38:33 -07:00
38433e85bf More little stuff in crypto code. 2014-06-26 17:23:10 -07:00
c3cbc92757 Some crypto comment fixes. 2014-06-26 17:15:20 -07:00
45a1e048bb Add enabled/disabled status to network. 2014-06-26 17:05:07 -07:00
40bd460b1c Some comment revisions and additional sanity checks. 2014-06-23 08:19:41 -07:00
ae7143d693 Comments and cleanup. 2014-06-21 12:19:10 -07:00
aead1050fb Bridging (GitHub issue #68) does indeed work! Just needed to fix a packet size thinko. 2014-06-21 12:29:33 -04:00
6e485833ef . 2014-06-21 12:25:10 -04:00
be0a8ec1f1 . 2014-06-21 12:16:25 -04:00
11e1f7a3fb . 2014-06-21 12:01:26 -04:00
0b0d5fabac Bridging #68 should work now! 2014-06-21 11:59:08 -04:00
35aa0921ee . 2014-06-21 11:47:26 -04:00
2f8936181c Debug code -- temporary. 2014-06-21 08:36:23 -07:00
4c3fb8cf10 Don't list node as an active bridge if it's not authorized. (Wouldn't work anyway.) 2014-06-20 16:04:53 -07:00
c3cea55493 Some cleanup in PacketDecoder. 2014-06-18 09:00:53 -07:00
5d467f0f45 Some TRACE improvements and comment revs. 2014-06-18 08:25:30 -07:00
2162a419e3 Some logging fixes. 2014-06-17 13:52:55 -07:00
f15271f31f Get rid of pointer type punning warning/issue on g++. 2014-06-17 15:54:35 -04:00
9d6488c31a Typo fix. 2014-06-16 20:41:23 +00:00
adc922d7fb Support for bridging fields in netconf. 2014-06-16 13:26:46 -07:00
cf4700bc26 Simplify network briding modes -- we only need passive toggle and active bridge list, not three mode types. Also change isOpen to isPublic for terminology consistency. 2014-06-14 20:24:19 +00:00
367b5439e1 Run icacls.exe twice, once for each change - GitHub issue #71 2014-06-14 12:52:06 -07:00
6802da457e Bridging pretty much ready to test! Got Switch all wired up. Also fix a latent probably-never-triggered bug in MULTICAST_FRAME handling. GitHub issue #68 2014-06-13 21:06:34 -07:00
5682f0b772 Some more bridging work... wiring up in Switch - GitHub issue #68 2014-06-13 17:49:33 -07:00
08b7bb3c7a Network memory for bridge-side multicast groups that we learn - GitHub issue #68 2014-06-13 14:06:34 -07:00
d6a4f8d77b Add flags to EXT_FRAME for better future proofness. 2014-06-12 11:40:30 -07:00
c30f9832b0 Packet decoder work for EXT_FRAME for bridging - GitHub issue #68 2014-06-10 21:41:34 -07:00
d44e1349d8 Bridge routing table - GitHub issue #68 2014-06-10 17:18:59 -07:00
6f831d5370 Bridging fields in Redis schema for netconf master. 2014-06-10 15:51:54 -07:00
4e1f49258b Bridging in NetworkConfig - GitHub Issue #68 2014-06-10 15:47:20 -07:00
fb31f93c52 Protocol messages for bridging. GitHub issue #68 2014-06-10 15:25:15 -07:00
f720f04fa0 Installer updates from 0.9.0 release -- only useful to me. 2014-05-29 20:23:25 -07:00
7a56c3c396 VERSION 0.9.0: upgrade required!
Version 0.9.0 adds a network-wide toggle for blanket broadcast (ff:ff:ff:ff:ff:ff), contains changes for compatibility with the new web site and netconf server code, and most importantly introduces unique non-conflicting MAC address schemes on a per-virtual-network basis.

The MAC address change is necessary to support bridging, which is the next major feature to be added. It's not absolutely required, but it makes sure that things work properly in the (probably very rare) case that two virtual networks happen to be directly or indirectly bridged together.

The MAC change means that 0.9.0 is a required update. Clients not updating will find themselves unable to communicate with older versions. The underlying protocol is the same, but MAC address resolution and routing will not work properly. Those running binary releases will be updated automatically, while those running from source must download and rebuild.

This version also fixes two minor security issues, including one involving file permissions on non-English Windows versions.
2014-05-29 17:53:30 -07:00
994565bdeb Fix for GitHub issue #71 2014-05-29 15:06:05 -07:00
67498e576c Delete some obsolete stuff. 2014-05-29 18:36:17 +00:00
eae130467b Build fix for Windows setsockopt(). 2014-05-29 11:22:35 -07:00
f764cf8d31 Make UDP send and receive buffers as big as possible to reduce packet loss. 2014-05-28 12:17:43 -07:00
49247180dc Add lastSeen and identity to member record if not present. 2014-05-28 01:32:27 +00:00
914bebba31 Re-enable exit on stream close in netconf service. 2014-05-27 15:59:09 +00:00
4b773b61f5 Netconf fixes. 2014-05-24 00:10:23 +00:00
657f6ae342 Don't transmit broadcasts if enableBroadcast is false on a network. 2014-05-23 19:52:39 -04:00
2861229558 Windows build fixes for MAC changes (in tap driver), some comments and cleanup in MAC.hpp. 2014-05-23 16:21:57 -07:00
f939d0ee62 Upgrade AIP for new version of Advanced Installer, bump to 0.9.0. 2014-05-23 16:08:05 -07:00
77c58e741d GitHub issue #58 - options after path on command line were ignored, fixed. 2014-05-23 15:21:28 -07:00
66a38a9e7c Default for private should be true. 2014-05-23 15:15:44 -07:00
31ddc49da2 GitHub issue #67 2014-05-23 15:13:34 -07:00
317995b921 Fixed for Linux tap for GitHub Issue #69 2014-05-23 17:35:35 -04:00
beb7b5bbe5 GitHub Issue #69 - make MAC assignment schema differ between virtual networks. 2014-05-23 14:32:31 -07:00
05f5755bb1 Allow Redis DB# select. 2014-05-23 00:35:11 +00:00
cfd92cb18d Remove old netconf code. 2014-05-22 21:05:49 +00:00
2456d3a197 Node redis module update. 2014-05-22 21:05:08 +00:00
f0b821f880 . 2014-05-21 02:48:58 +00:00
319f9a9346 Netconf testing and fixes. 2014-05-20 20:05:11 +00:00
596e5dd583 Another sanity check on filename for GitHub issue #72 2014-05-19 16:16:34 +00:00
b958a2d30c Redis schema updates and fix for GitHub issue #72 2014-05-19 16:13:42 +00:00
e270887391 Some Redis schema changes. 2014-05-14 17:48:50 +00:00
986773cc9c ZT_USE_TESTNET define in makefiles. 2014-05-09 11:52:53 -07:00
ecbcc9eb2c TESTNET supernodes need different addresses. 2014-05-09 11:45:38 -07:00
1ad29fe31f Merge branch 'adamierymenko-dev' of ssh://shub-niggurath.zerotier.com:222/git/ZeroTierOne into adamierymenko-dev 2014-05-09 15:40:08 +00:00
42f6aae259 More netconf work... set ZT_HOME and chdir there on service launch. 2014-05-09 15:39:51 +00:00
de485ad900 Add testnet ports and ZT_USE_TESTNET define for contacting the test.zerotier.com net instead of the live net. 2014-05-08 17:53:22 -07:00
99c5fae9da Make Service communicate via empty-line-delimited Dictionary objects instead of the old size prefix way. 2014-05-08 21:27:59 +00:00
98f0418fb9 A little more cleanup in node code. 2014-05-08 00:47:46 +00:00
d7977fa3e1 Make certificate of membership works in node code! 2014-05-08 00:22:20 +00:00
1e6475fad6 Clean out unused netconf fields, rename a few, work on new netconf server. 2014-05-08 00:11:50 +00:00
d5f95b721d Yet more work on netconf master, add redis docs. 2014-05-07 02:45:15 +00:00
ae2eeff5c6 . 2014-05-06 00:24:21 +00:00
08da4b8c7b Add mkcom functionality to zerotier-idtool for use by new NodeJS netconf-master code. 2014-05-06 00:15:21 +00:00
0ba0c6d04d New netconf... 2014-05-06 00:05:11 +00:00
93f24ea86a Some work on new netconf service... 2014-05-05 22:11:21 +00:00
f8eae84e15 Retire old netconf mess. 2014-05-05 15:05:11 +00:00
7831c4bfef Cleanup, dead code removal, some pretty insignificant security stuff that's based on recommendations. 2014-04-18 00:14:12 -07:00
5f45977e3e Update GitHub README 2014-04-16 11:40:48 -07:00
d187ec82d4 Adding supernode yig.zerotier.com (Sydney, Australia) and removing mi-go.zerotier.com (Singapore) due to real-world usage data. 2014-04-15 14:37:19 -07:00
42c3474223 VERSION 0.8.2
This version fixes a few more issues with TCP tunneling including GitHub issue #63.
It also adds automatic announcement and location of peers on physical LANs (GitHub
issue #56) which should greatly improve performance if you happen to be on the same
LAN or WiFi network as another peer. It can take 60 seconds or so for this to occur,
but it should.
2014-04-10 22:46:17 -07:00
aee742e767 More toward GitHub issue #56 2014-04-10 16:30:15 -07:00
c9294c1a78 Prevent recursive transit of ZeroTier packets, toward GitHub issue #56 2014-04-10 14:22:25 -07:00
b117ff5435 Probable fix for GitHub issue #63 - do not unite() if either path is TCP, since doing so can result in asymmetric failed NAT-t over UDP if one side has a firewall that permits outgoing UDP but not incoming. 2014-04-10 11:17:54 -07:00
119ef5ecbf More logic cleanup and some documentation / comment improvements. 2014-04-10 10:00:20 -07:00
8fb442d81a Yet more cleanup to TCP logic, this time adding a master switch and adding UDP preference in send(). 2014-04-09 17:08:35 -07:00
73153b89b4 Some cleanup, and use best (not first) UDP addresses for NAT-t VERB_RENDEZVOUS computation. 2014-04-09 16:00:25 -07:00
d9836adbf6 .... aaaaaand... GitHub issue #61 was caused by the fact that we were no longer deleting taps on Windows! 2014-04-09 15:34:03 -07:00
420edf23ad Was not closing _shutdownSignalPipe in UnixEthernetTap either... 2014-04-09 15:32:37 -07:00
6c5f6feb5e Set close-on-exec in attempt to head off GitHub issue #61 2014-04-09 15:22:08 -07:00
a1c1c82b0d VERSION 0.8.1
This, quick on the heels of 0.8.0, fixes the fact that TCP tunneling was
broken. :)

There was a bug that only manifested in some cases, and not on my testnet.
I took the opportunity to clean up some of that logic generally. I need a
better testnet, but that will have to wait until we exit beta and hopefully
I can earn a little bit of money off this. A better testnet will require
a big beefy virtualization box or two to run hundreds to thousands of KVMs.

Also fixed a tiny cosmetic issue on Windows. Other than that no changes.
2014-04-09 13:03:33 -07:00
83a0d988ec Text point size readjustment not needed on child windows in Windows? 2014-04-09 12:19:46 -07:00
a8c12369fd More tweaks to TCP logic for GitHub issue #60 2014-04-09 12:10:05 -07:00
28a6d328a5 Some adjustments to TCP logic for GitHub issue #60 2014-04-09 11:55:24 -07:00
dd404b8ba3 VERSION 0.8.0
This version introduces a major new feature requested by several users,
both via the user survey and otherwise: TCP tunneling.

If you are not able to communicate over UDP/9993, ZeroTier One will switch to
TCP connections to ZeroTier's supernodes. This is always slower than UDP, but
will allow you to communicate behind all but the most extremely restrictive
firewalls. This TCP traffic travels over port 443 and looks like HTTPS (SSL)
traffic (though it isn't), since that port is almost always open.

This also fixes several minor bugs and attempts to improve the robustness of
Windows tap driver management. Several users have reported spurious issues
with the Windows tap device, though I was unable to reproduce any of these with
clean VMs. (Tried Windows 7 and 8.1, both x86 and x64. No luck.) But I tried
to beef up the tap code anyway in the hopes of catching it. It now tries a lot
harder to make sure the tap is up and running.

There was some significant under the hood refactoring in support of TCP, so
this was a non-trivial change.

I bumped the version to 0.8 to indicate that more and more features are being
crossed off the list as we approach 1.0 and exit from beta. After this, the next
major feature will be LAN announcement to find direct paths to peers on the
same physical LAN. But assuming that 0.8.0 goes smoothly, I am going to divert
attention to the web site. A new design is coming that is much cleaner, sharper,
and easier to use.

Thank you all for all your excellent feedback! We're well on the way to a killer
product that makes conventional VPNs and other kludges obsolete.
2014-04-08 22:38:51 -07:00
1c636afe3f Fix typo. 2014-04-08 16:43:36 -07:00
48a1799f49 More Windows tap cleanup... seems solid. We'll see. 2014-04-08 16:10:48 -07:00
bf24de43fe Windows tap: be REAL REAL REAL PARANOID. Wake up sheeple. 2014-04-08 15:47:33 -07:00
76d9ea911d Another Qt build fix... need the right tap driver in build just to make symbols work even though UI doesn't use that code. 2014-04-08 14:16:45 -07:00
ff773def26 Remove EthernetTap.cpp from UI build project. 2014-04-08 13:59:31 -07:00
5abfb11813 Some installer stuff, complete refactoring of Windows side of newly split tap driver. Seems to work. Now to see if the cleanup we did here gets rid of the zombie tap device issue on Windows. 2014-04-08 12:00:21 -07:00
0b8d6c7f4a Builds and runs on Unix with EthernetTap changes, now for Windows... and for what we did this for: a refactor of the Windows tap connector. 2014-04-07 15:39:33 -07:00
6c60305a96 Split EthernetTap into subclasses, work in progress... 2014-04-07 14:47:39 -07:00
19c4d82512 Intaller upgrade and stuff, fix to Windows service for new Node API changes. 2014-04-04 16:59:02 -07:00
e11149bcae Fix network widget spacer issue on Windows. 2014-04-04 12:25:48 -07:00
fe85426df6 A few more tweaks to TCP failover... seems to be switching back and forth pretty well now! 2014-04-03 17:12:34 -07:00
158002d2d1 Tweak some timings and stuff. 2014-04-03 16:19:41 -07:00
c96d3ebf8c Such ping logic. So edge case. 2014-04-03 14:36:52 -07:00
b1088a6bd7 Make Unix domain sockets mode 0777 so that properly authorized non-privileged users can access them (if they have auth token). 2014-04-02 17:21:26 -07:00
f0223490be Make GUI work with new control client API, make control client look for user authtoken.secret if system unreadable. 2014-04-02 17:12:04 -07:00
81e5690410 More tweaks to TCP failover logic. Such edge case. 2014-04-02 17:32:47 -04:00
700a450806 More tweaks to algorithm for determining when to fail over to TCP, and stop supernodes from resynchronizing unless explicitly ordered. 2014-04-01 18:39:10 -07:00
0e1fc06a6f The remove paths on send fail thing in Peer.cpp was not well thought out, and there is no point in mallocing the TCP write buffer. 2014-04-01 15:55:05 -07:00
c3b41c289d Resynchronize on startup. 2014-04-01 14:12:54 -07:00
6ab95e0391 Get : out of Path.toString() since this will conflict with : in IPv6 IPs. 2014-04-01 08:52:52 -07:00
67b3fa9311 Clean up main.o in Linux make clean. 2014-03-31 22:38:46 -07:00
316e8d1939 Build fix. 2014-03-31 22:30:08 -07:00
f13493edb2 Oops... turns out we need to differentiate incoming from outgoing TCP and indeed learn incoming TCP paths. Otherwise the recipient of a TCP connection does not know to reply via TCP! Heh. 2014-03-31 22:23:55 -07:00
595b386afc Increase maximum packet fragments to make room for huge multicasts with certificates of membership tagged onto them. This likely will not actually increase the number of fragments in practice much, since these are then subsequently compressed. But the buffer needs to be allocated with room for them, otherwise these packets get dropped with a range_error exception internally. 2014-03-31 14:53:33 -07:00
8e587ae481 Clean dead paths from peers. 2014-03-31 11:41:14 -07:00
acb056e3b1 Small readability fix. 2014-03-28 21:04:15 -07:00
5ef2c6fd6f Add TCP/443 to all supernodes in Defaults. 2014-03-28 15:51:19 -07:00
1a0572d7e7 Remove UDP-breaking debug code. 2014-03-28 13:58:18 -07:00
7957ab6b1d Windows uses exceptfds to report failed async connect() in select(). TCP now done on Windows (I think). 2014-03-28 13:37:21 -07:00
e8b613e625 TCP connections work on Windows now. 2014-03-28 12:26:33 -07:00
9c68a343f6 Reduce some TRACE noise. 2014-03-27 18:57:20 -07:00
881ff08269 Make multiple attempts to open the tap device on Windows. 2014-03-27 18:50:10 -07:00
e3239d23f4 Windows build fix. 2014-03-27 18:39:58 -07:00
f9c92b0351 Build fix from merge. 2014-03-27 18:24:57 -07:00
b73c36acbf Merge branch 'adamierymenko-dev' of ssh://shub-niggurath.zerotier.com:222/git/ZeroTierOne into adamierymenko-dev 2014-03-27 18:23:02 -07:00
181369964f Make TCP optional, rename port constant. 2014-03-27 18:22:53 -07:00
d2c5d71502 Finally fixed TCP sockets. 2014-03-27 17:42:02 -07:00
c231510f8b More TCP-related fixes and tweaks to ping timing, resynchronize, and startup. 2014-03-27 17:02:52 -07:00
2ac56fd120 Fix TCP connection accumulation problem, still having issues with TCP tunneling. 2014-03-26 17:59:45 -07:00
e6b23059ac Change the way TCP failover is invoked. 2014-03-26 16:44:58 -07:00
04169b5150 If I want it to pick the first, actually picking the first is helpful. 2014-03-26 15:44:24 -07:00
daaec84c6b Add TCP channel support for supernode list, make Peer pick the first path if all paths are equally dead. 2014-03-26 15:35:15 -07:00
73c1d43f2f Crank down default multicast preload and max balance just a little bit... should not impact non-lame protocols. 2014-03-25 21:48:16 -07:00
ab5a460177 Apply multicast rate limits on a network to ourselves and do not send multicasts that would exceed limits, for GitHub issue #55 2014-03-25 21:38:54 -07:00
67a85221d5 WINDOWS IS SUFFERING 2014-03-25 17:31:03 -07:00
328be8f846 Make Windows build, add (untested) Windows named pipe based IPC code. 2014-03-25 08:37:08 -07:00
d9b91758e0 Fix command line interface. 2014-03-21 14:58:35 -07:00
4e26ade2df Fix deadlock in refactored code. 2014-03-21 14:31:10 -07:00
8d3eb1a258 A few renamings to be consistent. 2014-03-21 14:18:35 -07:00
33ad3deaee Builds with new Path code. 2014-03-21 13:46:55 -07:00
ba3f04deed Work in progress: refactoring paths, adding TCP fallback. 2014-03-20 20:07:35 -07:00
45e823d27c Reworking of paths in Peer work-in-progress, and TCP connect support in SocketManager. Also add FD_SETSIZE checking for the default select implementation of sockets. 2014-03-20 18:49:33 -07:00
70b736f440 Put mac back to release default build flags. 2014-03-20 14:44:13 -07:00
97e6b38144 MULTICAST_FRAME TRACE improvements. 2014-03-20 14:24:15 -07:00
7a45ff460d More deadlock fixes in new I/O. 2014-03-20 14:00:05 -07:00
6f5a4d7e29 Fix blocking socket issues in new socket I/O code. 2014-03-20 13:21:58 -07:00
4d0ad9abb6 Fix TRACE bug and new UDP socket code issue. 2014-03-19 23:10:34 -07:00
15e8c18106 Bug fixes. 2014-03-19 22:01:32 -07:00
1c555e4b96 command bus fix 2014-03-19 16:59:23 -07:00
6fdb360e2a More IPC work. 2014-03-19 16:05:03 -07:00
0d847d9410 More build fixes. 2014-03-19 15:29:00 -07:00
abc82d6a52 IPC changes and SocketManager changes all build! 2014-03-19 13:56:48 -07:00
acf7d70d24 Integrate IPC stuff into NodeConfig. 2014-03-19 08:20:09 -07:00
3be4c38946 IPC stuff for Unix. 2014-03-18 18:44:44 -07:00
6a1bd52854 New IPC work... 2014-03-18 17:19:32 -07:00
0b75992737 Everything but the local config bus... blech. 2014-03-18 14:33:57 -07:00
91fef21973 More ripping out of old condition stuff. 2014-03-18 12:21:22 -07:00
dc0f3559be Rip out old condition and Demarc stuff... 2014-03-18 12:00:15 -07:00
bb25128406 TCP socket. 2014-03-18 11:53:53 -07:00
bf5d8de999 More new socket I/O work... 2014-03-17 16:29:53 -07:00
1a0a6755b1 UDP socket implementation. 2014-03-17 16:18:44 -07:00
8adbbe092d Drop old Demarc.cpp code. 2014-03-17 15:15:02 -07:00
bd749e040d Compile fixes. 2014-03-17 15:14:22 -07:00
7e80d7e551 Bunch of work in progress on new socket multiplexer and plumbing for TCP jailbreaking... Don't try to build, won't yet. 2014-03-17 09:05:43 -07:00
ce09d00679 Security improvements to Linux build flags mirroring OSX improvements. 2014-03-11 11:50:04 -07:00
dbd7a06ea9 Enable PIE to allow ASLR (security) 2014-03-11 10:56:38 -07:00
74c2e644a9 Change -O4 to -O3 -flto on OSX for new clang (should work with older one too) 2014-03-11 10:18:39 -07:00
dfee7e0389 VERSION 0.7.2: first Windows release!
Version 0.7.2 marks the first release of ZeroTier One for Windows. Binaries will be
released to a few select testers at first, then to the whole world. Installation from
MSI and auto-update appear to be working. So far Windows 7 and 8 and Windows Server
2008 or newer are supported. Vista has issues so it's not supported at the moment,
and may not be since nobody seems to use it (according to Google Analytics).
2014-03-07 15:20:37 -08:00
60f25ccdf9 Some text changes, remove unused modules from installer project. 2014-03-07 14:25:24 -08:00
2b0dbead17 Disable Vista in installer. 2014-03-06 15:32:30 -08:00
d0b506c12b Fix crash on uninitialized taps. 2014-03-06 15:11:08 -08:00
742261c7fc (1) Fix menu bar item font size on Windows, (2) fix for possible Windows EthernetTap infinite loop while enumerating registry. 2014-03-06 14:06:31 -08:00
939cdc82a2 VERSION 0.7.1: small Linux compile fix on g++, does not merit new release 2014-03-05 15:40:31 -08:00
805 changed files with 182453 additions and 40741 deletions

3
.dockerignore Normal file
View File

@ -0,0 +1,3 @@
.git/
build/
!build/zerotier

46
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,46 @@
---
name: Bug report
about: Create a report to help us improve
---
**Alternative, faster ways to get help**
If you have just started using ZeroTier, here are some places to get help:
- my.zerotier.com has a _Community_ tab. It's a live chat with other users and the developers.
- [ZeroTier Knowledge Base](https://zerotier.atlassian.net/wiki/spaces/SD/overview)
- www.zerotier.com has a Contact Us button
- email contact@zerotier.com
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Create a Network '...'
2. Install zerotier-one '....'
3. '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots or console output to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. Mac, Linux, Windows, BSD]
- OS/Distribution Version
- ZeroTier Version [e.g. 1.2.4]
- Hardware [e.g. raspberry pi 3]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Version [e.g. 1.2.4]
**Additional context**
Add any other context about the problem here.
- ZeroTier Network Configuration
- Router Config
- Firewall Config (try turning the firewall off)
- General Network Environment: [ e.g Home, University Campus, Corporate LAN ]

View File

@ -0,0 +1,17 @@
---
name: Feature request
about: Suggest an idea for this project
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

55
.gitignore vendored Executable file → Normal file
View File

@ -1,34 +1,39 @@
/ext/llvm-g++-Xcode4.6.2
/ext/llvm-g++-Xcode4.6.2.tar.bz2
/zerotier-*
/ZeroTierUI/*.user
*.o
/build
/cmake-build-debug
/cmake-build-release
/core/version.h
/.idea
/.ide-*
.DS_Store
.Trashes
*.swp
._*
*~
*~.nib
*.secret
.Apple*
*.dSYM
/netconf-service/netconf-test
/netconf-service/netconf.service
/ipch
/windows/ZeroTierOne.sdf
/windows/ZeroTierOne.v11.suo
/windows/x64
/windows/Win32
/windows/*/x64
/windows/*/Win32
/windows/ZeroTierOne/Release
/windows/ZeroTierOneService/obj
/windows/ZeroTierOneService/bin
/windows/Build
/ext/installfiles/windows/ZeroTier One-SetupFiles
/ext/installfiles/windows/Prerequisites
Thumbs.db
@eaDir
.vscode
__pycache__
*.log
*.bak
*.opensdf
*.user
*.cache
*.obj
*.tlog
/build-*
/ZeroTierOneInstaller-*
.qmake.stash
*.pid
*.pkg
*.o
*.o-*
*.core
*.deb
*.rpm
*.autosave
/ZeroTier One.dmg
*.tmp
.depend
node_modules
*.vcxproj.backup
/*.db
/*.opendb

61
AUTHORS.md Normal file
View File

@ -0,0 +1,61 @@
# 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 / libzt<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/LZ4.cpp
* Home page: http://code.google.com/p/lz4/
* License: BSD 2-clause
* C++11 json (nlohmann/json) by Niels Lohmann
* Files: ext/json/*
* Home page: https://github.com/nlohmann/json
* License: MIT
* tap-windows6 by the OpenVPN project
* Files: windows/TapDriver6/*
* Home page: https://github.com/OpenVPN/tap-windows6/
* License: GNU GPL v2
* 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: public domain
* cpp-httplib by yhirose
* Files: ext/cpp-httplib/*
* Home page: https://github.com/yhirose/cpp-httplib
* License: MIT

View File

@ -1,21 +0,0 @@
ZeroTier One is designed and written by Adam Ierymenko, with a few bug
fixes and other contributions from other users. Information about all
contributors can be found on the GitHub home page at:
https://github.com/zerotier/ZeroTierOne
ZeroTier One includes the following third party code:
* LZ4 compression algorithm by Yann Collet (BSD license)
http://code.google.com/p/lz4/
* TunTapOSX by Mattias Nissler (forked for ZT1) (BSD license)
http://tuntaposx.sourceforge.net
* tap-windows by the OpenVPN project (forked for ZT1) (GPL)
https://github.com/OpenVPN/tap-windows
* Salsa20 stream cipher, Curve25519 elliptic curve cipher, Ed25519
digital signature algorithm, and Poly1305 MAC algorithm, all by
Daniel J. Bernstein (public domain)
http://cr.yp.to/

View File

@ -1,37 +0,0 @@
Building ZeroTier One on different platforms:
(See RUNNING.txt for what to do next.)
Developers note: there is currently no management of dependencies on *nix
platforms, so you should make clean ; make if you change a header. Will
do this eventually.
-- Linux
Just type 'make'. You'll need gcc and g++ installed, but ZeroTier One requires
no other third party libraries beyond the standard libc, libstdc++, and libm.
-- MacOS
make
If you are building ext/tap-mac you will need a different version of the
OSX gcc compiler chain than what currently ships (clang). We've got a copy
available here:
http://download.zerotier.com/dev/llvm-g++-Xcode4.6.2.tar.bz2
Un-tar this into ext/ (it's excluded in .gitignore) and then 'make' in
ext/tap-mac/tuntap/src/tap.
Most users should not need to build tap-mac, since a binary is included
in ext/bin.
To build the UI you will need Qt version 5.0 or later. The Qt home must
be symbolically linked into "Qt" in the parent directory of the ZeroTier
One source tree. Then you can type "make mac-ui" and the UI should build.
You can also load the UI in Qt Creator and build/test it that way.
-- Windows
Here be dragons.

346
CMakeLists.txt Normal file
View File

@ -0,0 +1,346 @@
cmake_minimum_required (VERSION 3.8)
cmake_policy(SET CMP0048 NEW)
if(${CMAKE_VERSION} VERSION_LESS 3.15)
cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
else()
cmake_policy(VERSION 3.15)
endif()
set(ZEROTIER_VERSION_MAJOR 1 CACHE INTERNAL "")
set(ZEROTIER_VERSION_MINOR 9 CACHE INTERNAL "")
set(ZEROTIER_VERSION_REVISION 0 CACHE INTERNAL "")
set(ZEROTIER_VERSION_BUILD 0 CACHE INTERNAL "")
project(zerotier
VERSION ${ZEROTIER_VERSION_MAJOR}.${ZEROTIER_VERSION_MINOR}.${ZEROTIER_VERSION_REVISION}.${ZEROTIER_VERSION_BUILD}
DESCRIPTION "ZeroTier Network Hypervisor"
LANGUAGES CXX C)
if(NOT PACKAGE_STATIC)
find_program(
GO go
HINTS "/usr/local/go/bin" "/usr/bin" "/usr/local/bin" "C:/go/bin"
)
if(NOT GO)
message(FATAL_ERROR "Golang not found")
else(NOT GO)
message(STATUS "Found Golang at ${GO}")
endif(NOT GO)
set(default_build_type "Release")
if(WIN32)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_SYSTEM_VERSION "7" CACHE STRING INTERNAL FORCE)
else(WIN32)
if(APPLE)
set(CMAKE_CXX_STANDARD 17)
else(APPLE)
set(CMAKE_CXX_STANDARD 11)
endif(APPLE)
endif(WIN32)
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING "Choose the type of build." FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()
option(BUILD_CENTRAL_CONTROLLER "Build ZeroTier Central Controller" OFF)
if(BUILD_CENTRAL_CONTROLLER)
find_package(PkgConfig REQUIRED)
if(APPLE)
set(CMAKE_PREFIX_PATH
${CMAKE_PREFIX_PATH}
/usr/local/opt/libpq
/usr/local/lib
)
endif(APPLE)
find_package(PostgreSQL REQUIRED)
pkg_check_modules(hiredis REQUIRED IMPORTED_TARGET hiredis)
add_subdirectory(controller/thirdparty/redis-plus-plus-1.1.1)
set(redispp_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/controller/thirdparty/redis-plus-plus-1.1.1/src/sw)
set(redispp_STATIC_LIB redispp_static)
endif(BUILD_CENTRAL_CONTROLLER)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions(-DZT_DEBUG)
endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
if(WIN32)
message("++ Setting Windows Compiler Flags ${CMAKE_BUILD_TYPE}")
add_definitions(-DNOMINMAX)
add_compile_options(
-Wall
-Wno-deprecated
-Wno-unused-function
-Wno-format
$<$<CONFIG:DEBUG>:-g>
$<$<CONFIG:DEBUG>:-O0>
$<$<CONFIG:RELEASE>:-O3>
$<$<CONFIG:RELEASE>:-ffast-math>
$<$<CONFIG:RELWITHDEBINFO>:-O3>
$<$<CONFIG:RELWITHDEBINFO>:-g>
)
set(GOFLAGS
-a
-trimpath
)
if(BUILD_32BIT)
set(CMAKE_SYSTEM_PROCESSOR "x86" CACHE STRING "system processor")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" CACHE STRING "c++ flags")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32" CACHE STRING "c flags")
set(GOARCH "GOARCH=386" CACHE STRING "go architecture")
add_compile_options(
-m32
)
add_link_options(
-m32
)
endif(BUILD_32BIT)
else(WIN32)
set(GOFLAGS
-trimpath
-buildmode=pie
)
if(APPLE)
message("++ Setting MacOS Compiler Flags ${CMAKE_BUILD_TYPE}")
set(MACOS_VERSION_MIN "10.12")
add_compile_options(
-Wall
-Wno-deprecated
-Wno-unused-function
-mmacosx-version-min=${MACOS_VERSION_MIN}
$<$<CONFIG:DEBUG>:-g>
$<$<CONFIG:DEBUG>:-O0>
$<$<CONFIG:RELEASE>:-Ofast>
$<$<CONFIG:RELEASE>:-ffast-math>
$<$<CONFIG:RELEASE>:-fPIE>
$<$<CONFIG:RELEASE>:-flto>
$<$<CONFIG:RELWITHDEBINFO>:-O1>
$<$<CONFIG:RELWITHDEBINFO>:-fPIE>
$<$<CONFIG:RELWITHDEBINFO>:-g>
)
add_link_options(
-mmacosx-version-min=${MACOS_VERSION_MIN}
$<$<CONFIG:RELEASE>:-flto>
)
set(GOFLAGS
${GOFLAGS}
-a
-ldflags '-w -extldflags \"-Wl,-undefined -Wl,dynamic_lookup\"'
)
else(APPLE)
message("++ Setting Linux/BSD/Posix Compiler Flags (${CMAKE_BUILD_TYPE})")
add_compile_options(
-Wall
-Wno-deprecated
-Wno-unused-function
-Wno-format
$<$<CONFIG:DEBUG>:-g>
$<$<CONFIG:DEBUG>:-O0>
$<$<CONFIG:RELEASE>:-O3>
$<$<CONFIG:RELEASE>:-ffast-math>
$<$<CONFIG:RELEASE>:-fPIE>
$<$<CONFIG:RELWITHDEBINFO>:-O3>
$<$<CONFIG:RELWITHDEBINFO>:-fPIE>
$<$<CONFIG:RELWITHDEBINFO>:-g>
)
option(BUILD_32BIT "Force building as 32-bit binary" OFF)
option(BUILD_STATIC "Build statically linked executable" OFF)
option(BUILD_ARM_V5 "Build ARMv5" OFF)
option(BUILD_ARM_V6 "Build ARMv6" OFF)
if(BUILD_ARM_V5 AND BUILD_ARM_V6)
message(FATAL_ERROR "BUILD_ARM_V5 and BUILD_ARM_V6 are mutually exclusive!")
endif(BUILD_ARM_V5 AND BUILD_ARM_V6)
if(BUILD_32BIT)
set(CMAKE_SYSTEM_PROCESSOR "x86" CACHE STRING "system processor")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" CACHE STRING "c++ flags")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32" CACHE STRING "c flags")
set(GOARCH "GOARCH=386" CACHE STRING "go architecture")
add_compile_options(
-m32
)
endif(BUILD_32BIT)
if(BUILD_STATIC)
add_link_options(
-static
)
set(CMAKE_EXE_LINKER_FLAGS "-static ${CMAKE_EXE_LINKER_FLAGS}")
set(GOFLAGS
${GOFLAGS}
-a
-tags osusergo,netgo
-ldflags '-w -extldflags \"-static -Wl,-unresolved-symbols=ignore-all\"'
)
else(BUILD_STATIC)
set(GOFLAGS
${GOFLAGS}
-a
-ldflags '-w -extldflags \"-Wl,-unresolved-symbols=ignore-all\"'
)
endif(BUILD_STATIC)
if(BUILD_ARM_V5)
set(GOARM "GOARM=5")
endif(BUILD_ARM_V5)
if(BUILD_ARM_V6)
set(GOARM "GOARM=6")
endif(BUILD_ARM_V6)
endif(APPLE)
endif(WIN32)
if (
CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "amd64" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "AMD64" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "X86_64" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "x64" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "X64"
)
message("++ Adding flags for processor ${CMAKE_SYSTEM_PROCESSOR}")
add_compile_options(-maes -mrdrnd -mpclmul -msse -msse2)
endif()
if (
CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "arm64" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "AARCH64"
)
message("++ Adding flags for processor ${CMAKE_SYSTEM_PROCESSOR}")
add_compile_options(-march=armv8-a+aes+crypto -mtune=generic -mstrict-align)
endif()
set(GO_BUILD_TAGS)
if(BUILD_CENTRAL_CONTROLLER)
add_definitions(-DZT_CONTROLLER_USE_LIBPQ=1)
set(GO_BUILD_TAGS -tags central)
endif(BUILD_CENTRAL_CONTROLLER)
add_subdirectory(core)
add_subdirectory(controller)
add_subdirectory(osdep)
add_subdirectory(serviceiocore)
file(GLOB go_src
${CMAKE_SOURCE_DIR}/cmd/*.go
${CMAKE_SOURCE_DIR}/cmd/cmd/*.go
${CMAKE_SOURCE_DIR}/pkg/zerotier/*.go
)
file(GLOB go_zt_service_tests_cmd_src
${CMAKE_SOURCE_DIR}/cmd/zt_service_tests/*.go
)
if(WIN32)
set(GO_EXE_NAME "zerotier.exe")
set(GO_SERVICE_TESTS_EXE_NAME "zt_service_tests.exe")
set(GO_EXTRA_LIBRARIES "-lstdc++ -lwsock32 -lws2_32 -liphlpapi -lole32 -loleaut32 -lrpcrt4 -luuid")
else(WIN32)
set(GO_EXE_NAME "zerotier")
set(GO_SERVICE_TESTS_EXE_NAME "zt_service_tests")
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
set(GO_EXTRA_LIBRARIES "-lstdc++")
if(BUILD_ARM_V5)
set(GO_EXTRA_LIBRARIES
${GO_EXTRA_LIBRARIES}
"-latomic"
)
endif(BUILD_ARM_V5)
else()
set(GO_EXTRA_LIBRARIES "-lc++" "-lm")
endif()
endif(WIN32)
add_custom_target(
zt_service_tests ALL
BYPRODUCTS ${CMAKE_BINARY_DIR}/zt_service_tests
SOURCES ${go_src} ${go_zt_service_tests_cmd_src}
COMMAND ${CMAKE_COMMAND} -E env ${GOARCH} ${GOARM} CGO_ENABLED=1 CGO_CFLAGS=\"-O3\" CGO_LDFLAGS=\"$<TARGET_FILE:zt_core> $<TARGET_FILE:zt_controller> $<TARGET_FILE:zt_service_io_core> $<TARGET_FILE:zt_osdep> ${GO_EXTRA_LIBRARIES}\" ${GO} build -mod=vendor ${GOFLAGS} -o ${CMAKE_BINARY_DIR}/${GO_SERVICE_TESTS_EXE_NAME} ${go_zt_service_tests_cmd_src}
COMMENT "Compiling zt_service_tests (Go/cgo self-tests)..."
)
add_dependencies(zt_service_tests zt_osdep zt_core zt_controller zt_service_io_core)
add_custom_target(
zerotier ALL
BYPRODUCTS ${CMAKE_BINARY_DIR}/zerotier
SOURCES ${go_src}
COMMAND ${CMAKE_COMMAND} -E env ${GOARCH} ${GOARM} CGO_ENABLED=1 CGO_CFLAGS=\"-O3\" CGO_LDFLAGS=\"$<TARGET_FILE:zt_core> $<TARGET_FILE:zt_controller> $<TARGET_FILE:zt_service_io_core> $<TARGET_FILE:zt_osdep> ${GO_EXTRA_LIBRARIES}\" ${GO} build -mod=vendor ${GOFLAGS} -o ${CMAKE_BINARY_DIR}/${GO_EXE_NAME} ${CMAKE_SOURCE_DIR}/cmd/zerotier/zerotier.go
COMMENT "Compiling Go Code..."
)
add_dependencies(zerotier zt_osdep zt_core zt_controller zt_service_io_core)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/zerotier DESTINATION bin)
else(NOT PACKAGE_STATIC)
if(BUILD_32BIT)
set(CMAKE_SYSTEM_PROCESSOR "x86" CACHE STRING "system processor")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" CACHE STRING "c++ flags")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32" CACHE STRING "c flags")
add_compile_options(
-m32
)
endif(BUILD_32BIT)
set(STATIC_BINARY ${CMAKE_BINARY_DIR}/zerotier)
set(IMPORTED_LOCATION ${CMAKE_BINARY_DIR})
add_executable(zerotier IMPORTED GLOBAL)
install(PROGRAMS ${STATIC_BINARY} DESTINATION bin)
endif(NOT PACKAGE_STATIC)
# Linux packaging
if("${CMAKE_SYSTEM_NAME}" EQUAL "Linux")
if(IS_DIRECTORY /lib/systemd/system)
install(
FILES ${CMAKE_CURRENT_SOURCE_DIR}/packaging/debian/zerotier.service
DESTINATION /lib/systemd/system
)
elseif(IS_DIRECTORY /usr/lib/systemd/system)
install(
FILES ${CMAKE_CURRENT_SOURCE_DIR}/packaging/debian/zerotier.service
DESTINATION /usr/lib/systemd/system
)
else()
install(
FILES ${CMAKE_CURRENT_SOURCE_DIR}/packaging/debian/zerotier.init
DESTINATION /etc/init.d
)
endif()
endif()
if("${ZT_PACKAGE_FORMAT}" MATCHES "DEB")
include(packaging/debian.cmake)
elseif("${ZT_PACKAGE_FORMAT}" MATCHES "RPM")
include(packaging/rpm.cmake)
else()
endif()

12
COPYING Normal file
View File

@ -0,0 +1,12 @@
ZeroTier One, an endpoint server for the ZeroTier virtual network layer.
Copyright © 20132020 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 :

502
Jenkinsfile vendored Normal file
View File

@ -0,0 +1,502 @@
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")
}
environment {
PATH = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
}
agent none
stages {
stage ("Build") {
steps {
script {
def tasks = [:]
tasks << buildStaticBinaries()
tasks << buildDebianNative()
tasks << buildCentosNative()
tasks << buildMacOS()
tasks << buildWindows()
tasks << buildFreeBSD()
parallel tasks
}
}
}
stage ("Package Static") {
steps {
script {
parallel packageStatic()
}
}
}
}
}
def buildMacOS() {
def tasks = [:]
tasks << getTasks(['mac'],['amd64'], {unused1, unused2 ->
def myNode = {
env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
node ('mac') {
dir("build") {
checkout scm
sh 'make'
}
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}
}
return myNode
})
return tasks
}
def buildWindows() {
def tasks = [:]
tasks << getTasks(['windows'], ['amd64', 'i386'], { unused1, platform ->
def myNode = {
node ('windows') {
env.SHELL = 'C:/Windows/System32/cmd.exe'
dir ("build") {
checkout scm
dir ("build") {
withEnv(["PATH=C:\\TDM-GCC-64\\bin;C:\\WINDOWS;C:\\Windows\\system32;C:\\CMake\\bin;C:\\Go\\bin"]) {
def cmakeFlags = ""
if (platform == "i386") {
cmakeFlags = '-DBUILD_32BIT=1'
}
bat """
cmake -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release ${cmakeFlags} ..
mingw32-make -j8
"""
}
}
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}
}
}
return myNode
})
return tasks
}
def buildFreeBSD() {
def tasks = [:]
tasks << getTasks(['freebsd12'], ['amd64'], { unused1, unused2 ->
def myNode = {
node ('freebsd12') {
dir('build') {
checkout scm
sh 'make setup'
dir('build') {
sh 'make -j4'
}
}
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}
}
return myNode
})
return tasks
}
def buildStaticBinaries() {
def tasks = [:]
def dist = ["alpine"]
def archs = []
if (params.BUILD_ALL == true) {
archs = ["arm64", "amd64", "i386", "armhf", "ppc64le", "s390x"]
} else {
archs = ["amd64", "i386"]
}
tasks << getTasks(dist, archs, { distro, platform ->
def myNode = {
node ('linux-build') {
env.PATH = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
dir ("build") {
checkout scm
}
def runtime = docker.image("ztbuild/${distro}-${platform}:latest")
runtime.inside {
dir("build") {
def cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1"'
if (platform == "i386") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1"'
} else if (platform == "armhf") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1 -DBUILD_ARM_V6=1"'
}
sh "${cmakeFlags} make"
dir("build") {
sh "mv zerotier zerotier-static-${platform}"
stash includes: 'zerotier-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 centos7 = ["centos7"]
def centos7Arch = ["i386"]
tasks << getTasks(centos7, centos7Arch, { distro, arch ->
def myNode = {
node ('linux-build') {
env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
dir ("build") {
checkout scm
}
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
runtime.inside {
dir("build") {
unstash "static-${arch}"
sh "mkdir -p build"
sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier"
sh 'CMAKE_ARGS="-DBUILD_32BIT=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=RPM" make setup'
dir("build") {
sh 'make package -j4 VERBOSE=1'
}
sh "mkdir -p ${distro}"
sh "cp -av build/*.rpm ${distro}/"
archiveArtifacts artifacts: "${distro}/*.rpm", onlyIfSuccessful: true
}
}
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}
}
return myNode
})
if (params.BUILD_ALL == true) {
def s390xStatics = ["clefos", "debian-buster", "debian-sid", "debian-bullseye", "debian-stretch", "ubuntu-bionic", "ubuntu-eoan", "ubuntu-focal"]
def s390x = ["s390x"]
tasks << getTasks(s390xStatics, s390x , { distro, arch ->
def myNode = {
node ('linux-build') {
env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
dir ("build") {
checkout scm
}
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
def pkgFormat = "DEB"
if (distro == "clefos") {
pkgFormat = "RPM"
}
runtime.inside {
dir("build/") {
unstash "static-${arch}"
sh "mkdir -p build"
sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier"
sh "CMAKE_ARGS=\"-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=${pkgFormat}\" make setup"
dir("build") {
sh 'make package -j4 VERBOSE=1'
}
sh "mkdir -p ${distro}"
sh "cp -av build/*.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", "amd64", "i386"]
} else {
debianJessieArch = ["amd64", "i386"]
}
tasks << getTasks(debianJessie, debianJessieArch, { distro, arch ->
def myNode = {
node ('linux-build') {
env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
dir ("build") {
checkout scm
}
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
runtime.inside {
dir('build/') {
def cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"'
if (arch == "i386") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"'
} else if (arch == "armel") {
cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"'
} else if (arch == "armhf") {
cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"'
}
unstash "static-${arch}"
sh "mkdir -p build"
sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier"
sh "${cmakeFlags} make setup"
dir("build") {
sh 'make package -j4 VERBOSE=1'
}
sh "mkdir -p ${distro}"
sh "cp -av build/*.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", "arm64", "ppc64le"]
} else {
ubuntuTrustyArch = ["i386", "amd64"]
}
tasks << getTasks(ubuntuTrusty, ubuntuTrustyArch, { distro, arch ->
def myNode = {
node ('linux-build') {
env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
dir ("build") {
checkout scm
}
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
runtime.inside {
dir('build/') {
def cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"'
if (arch == "i386") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"'
} else if (arch == "armel") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"'
} else if (arch == "armhf") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"'
}
unstash "static-${arch}"
sh "mkdir -p build"
sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier"
sh "${cmakeFlags} make setup"
dir("build") {
sh 'make package -j4 VERBOSE=1'
}
sh "mkdir -p ${distro}"
sh "cp -av build/*.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", "amd64", "i386"]
} else {
debianWheezyArchs = ["amd64", "i386"]
}
tasks << getTasks(debianJessie, debianJessieArch, { distro, arch ->
def myNode = {
node ('linux-build') {
env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
dir ("build") {
checkout scm
}
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
runtime.inside {
dir('build/') {
def cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"'
if (arch == "i386") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"'
} else if (arch == "armel") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"'
} else if (arch == "armhf") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"'
}
unstash "static-${arch}"
sh "mkdir -p build"
sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier"
sh "${cmakeFlags} make setup"
dir("build") {
sh 'make package -j4 VERBOSE=1'
}
sh "mkdir -p ${distro}"
sh "cp -av build/*.deb ${distro}/"
archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true
}
}
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}
}
return myNode
})
return tasks
}
def buildDebianNative() {
def tasks = [:]
def debian = ["debian-buster" , "debian-stretch", "debian-sid", "debian-bullseye"]
def debianArchs = []
if (params.BUILD_ALL) {
debianArchs = ["ppc64le", "i386", "armhf", "armel", "arm64", "amd64"]
} else {
debianArchs = ["amd64", "i386"]
}
def build = { distro, arch ->
def myNode = {
node ('linux-build') {
env.PATH = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
dir ("build") {
checkout scm
}
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
runtime.inside {
def cmakeFlags = 'CMAKE_ARGS="-DZT_PACKAGE_FORMAT=DEB"'
if (arch == "i386") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DZT_PACKAGE_FORMAT=DEB"'
} else if (arch == "armel") {
cmakeFlags = 'CMAKE_ARGS="-DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"'
} else if (arch == "armhf") {
cmakeFlags = 'CMAKE_ARGS="-DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"'
}
dir("build") {
sh "${cmakeFlags} make setup"
dir("build") {
sh "make package -j4 VERBOSE=1"
}
}
sh "mkdir -p ${distro}"
sh "mv build/build/*.deb ${distro}"
archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}
}
}
return myNode
}
tasks << getTasks(debian, debianArchs, 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"]
} else {
ubuntuArchs = ["i386", "amd64"]
}
tasks << getTasks(ubuntu, ubuntuArchs, build)
def ubuntuFocal = ["ubuntu-focal"]
def ubuntuFocalArchs = []
if (params.BUILD_ALL == true) {
ubuntuFocalArchs = ["amd64", "arm64", "ppc64le"]
} else {
ubuntuFocalArchs = ["amd64"]
}
tasks << getTasks(ubuntuFocal, ubuntuFocalArchs, 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') {
env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
dir ("build") {
checkout scm
}
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
runtime.inside {
dir("build") {
if (distro == 'centos7' && arch == 'amd64') {
sh 'source scl_source enable devtoolset-8 llvm-toolset-7 && CMAKE_ARGS="-DZT_PACKAGE_FORMAT=RPM" make setup'
} else {
sh 'CMAKE_ARGS="-DZT_PACKAGE_FORMAT=RPM" make setup'
}
dir ("build") {
if (distro == 'centos7' && arch == 'amd64') {
sh 'source scl_source enable devtoolset-8 llvm-toolset-7 && make package -j4 VERBOSE=1'
} else {
sh 'make package -j4 VERBOSE=1'
}
}
}
sh "mkdir -p ${distro}"
sh "cp -av build/build/*.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
}

View File

@ -1,13 +1,149 @@
ZeroTier One is licensed under the terms of the GNU General Public License
version 3, which are available here:
-----------------------------------------------------------------------------
http://gplv3.fsf.org/
Business Source License 1.1
Modification and redistribution of ZeroTier One is permitted in source form.
Binary distribution is permitted provided all copyright notices remain
intact and any modifications to the source code are also distributed.
License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.
"Business Source License" is a trademark of MariaDB Corporation Ab.
ZeroTier One may not be embedded into any closed-source application (e.g. via
linking), nor may closed-source derivatives be created, without a separately
negotiated license from ZeroTier Networks LLC. See the terms of the GPLv3 for
details.
-----------------------------------------------------------------------------
Parameters
Licensor: ZeroTier, Inc.
Licensed Work: ZeroTier Network Virtualization Engine
The Licensed Work is (c)2013-2020 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 Derivative 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 Licenses 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 Licenses 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.

View File

@ -1,11 +1,31 @@
# Common makefile -- loads make rules for each platform
BUILDDIR := build
TIMESTAMP=$(shell date +"%Y%m%d%H%M")
OSTYPE=$(shell uname -s)
.PHONY: all
ifeq ($(OSTYPE),Darwin)
include make-mac.mk
endif
all: setup
cd ${BUILDDIR} && $(MAKE) -j4 VERBOSE=1
ifeq ($(OSTYPE),Linux)
include make-linux.mk
endif
setup:
mkdir -p ${BUILDDIR} && cd ${BUILDDIR} && cmake .. -DCMAKE_BUILD_TYPE=Release ${CMAKE_ARGS}
setup-debug:
mkdir -p ${BUILDDIR} && cd ${BUILDDIR} && cmake .. -DCMAKE_BUILD_TYPE=Debug ${CMAKE_ARGS}
debug:
mkdir -p ${BUILDDIR} && cd ${BUILDDIR} && cmake .. -DCMAKE_BUILD_TYPE=Debug ${CMAKE_ARGS} && $(MAKE)
central-controller:
mkdir -p ${BUILDDIR} && cd ${BUILDDIR} && cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_CENTRAL_CONTROLLER=1 ${CMAKE_ARGS} && $(MAKE) -j4
central-controller-debug:
mkdir -p ${BUILDDIR} && cd ${BUILDDIR} && cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_CENTRAL_CONTROLLER=1 ${CMAKE_ARGS} && $(MAKE) -j4
central-controller-docker:
docker build -t registry.zerotier.com/zerotier-central/ztcentral-controller:${TIMESTAMP} -f controller/central-docker/Dockerfile .
clean:
rm -rf ${BUILDDIR}
distclean:
rm -rf ${BUILDDIR}

108
README.md
View File

@ -1,14 +1,108 @@
ZeroTier One
ZeroTier - Global Area Networking
======
ZeroTier One creates flat virtual Ethernet networks of almost unlimited size. [Visit ZeroTier Networks on the web](https://www.zerotier.com/) for more information.
ZeroTier is a smart programmable Ethernet switch for planet Earth. It allows all networked devices, VMs, containers, and applications to communicate as if they all reside in the same physical data center or cloud region.
Follow the [ZeroTier blog](http://blog.zerotier.com/) and the [GitHub project](https://github.com/zerotier/ZeroTierOne) to stay up to date.
This is accomplished by combining a cryptographically addressed and secure peer to peer network (termed VL1) with an Ethernet emulation layer somewhat similar to VXLAN (termed VL2). Our VL2 Ethernet virtualization layer includes advanced enterprise SDN features like fine grained access control rules for network micro-segmentation and security monitoring.
Auto-updating binary packages that install easily [can be found here.](https://www.zerotier.com/download.html) If you want to build from source, clone this repository and see BUILDING.txt and RUNNING.txt.
All ZeroTier traffic is encrypted end-to-end using secret keys that only you control. Most traffic flows peer to peer, though we offer free (but slow) relaying for users who cannot establish peer to peer connetions.
Once you are up and running, you can [create an account on the network control panel](https://www.zerotier.com/networks.html) if you want to create a private network or you can join [Earth](https://www.zerotier.com/earth.html) by running (on Linux and Mac) `sudo ./zerotier-cli join 8056c2e21c000001`.
The goals and design principles of ZeroTier are inspired by among other things the original [Google BeyondCorp](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43231.pdf) paper and the [Jericho Forum](https://en.wikipedia.org/wiki/Jericho_Forum) with its notion of "deperimeterization."
Note that this won't work if your firewall does not allow outbound UDP. It must allow two way UDP conversations on port 9993 at a minimum.
Visit [ZeroTier's site](https://www.zerotier.com/) for more information and [pre-built binary packages](https://www.zerotier.com/download/). Apps for Android and iOS are available for free in the Google Play and Apple app stores.
ZeroTier One is licensed under the GNU General Public License version 3. You are free to use, modify, or redistribute it under the terms of that license. If you would like to embed ZeroTier One in a closed source product or create a closed source derivative product, contact ZeroTier Networks LLC.
ZeroTier is licensed under the [BSL version 1.1](https://mariadb.com/bsl11/). See [LICENSE.txt](LICENSE.txt) and the [ZeroTier pricing page](https://www.zerotier.com/pricing) for details. ZeroTier is free to use internally in businesses and academic institutions and for non-commercial purposes. Certain types of commercial use such as building closed-source apps and devices based on ZeroTier or offering ZeroTier network controllers and network management as a SaaS service require a commercial license.
A small amount of third party code is also included in ZeroTier and is not subject to our BSL license. See [AUTHORS.md] for a list of third party code, where it is included, and the licenses that apply to it. All of the third party code in ZeroTier is liberally licensed (MIT, BSD, Apache, public domain, etc.).
### Getting Started
Everything in the ZeroTier world is controlled by two types of identifier: 40-bit/10-digit *ZeroTier addresses* and 64-bit/16-digit *network IDs*. These identifiers are easily distinguished by their length. A ZeroTier address identifies a node or "device" (laptop, phone, server, VM, app, etc.) while a network ID identifies a virtual Ethernet network that can be joined by devices.
ZeroTier addresses can be thought of as port numbers on an enormous planet-wide enterprise Ethernet smart switch supporting VLANs. Network IDs are VLAN IDs to which these ports may be assigned. A single port can be assigned to more than one VLAN.
A ZeroTier address looks like `8056c2e21c` and a network ID looks like `8056c2e21c000001`. Network IDs are composed of the ZeroTier address of that network's primary controller and an arbitrary 24-bit ID that identifies the network on this controller. Network controllers are roughly analogous to SDN controllers in SDN protocols like [OpenFlow](https://en.wikipedia.org/wiki/OpenFlow), though as with the analogy between VXLAN and VL2 this should not be read to imply that the protocols or design are the same. You can use our convenient and inexpensive SaaS hosted controllers at [my.zerotier.com](https://my.zerotier.com/) or [run your own controller](controller/) if you don't mind messing around with JSON configuration files or writing scripts to do so.
### Project Layout
The base path contains the ZeroTier One service main entry point (`one.cpp`), self test code, makefiles, etc.
- `artwork/`: icons, logos, etc.
- `attic/`: old stuff and experimental code that we want to keep around for reference.
- `controller/`: the reference network controller implementation, which is built and included by default on desktop and server build targets.
- `debian/`: files for building Debian packages on Linux.
- `doc/`: manual pages and other documentation.
- `ext/`: third party libraries, binaries that we ship for convenience on some platforms (Mac and Windows), and installation support files.
- `include/`: include files for the ZeroTier core.
- `java/`: a JNI wrapper used with our Android mobile app. (The whole Android app is not open source but may be made so in the future.)
- `macui/`: a Macintosh menu-bar app for controlling ZeroTier One, written in Objective C.
- `node/`: the ZeroTier virtual Ethernet switch core, which is designed to be entirely separate from the rest of the code and able to be built as a stand-alone OS-independent library. Note to developers: do not use C++11 features in here, since we want this to build on old embedded platforms that lack C++11 support. C++11 can be used elsewhere.
- `osdep/`: code to support and integrate with OSes, including platform-specific stuff only built for certain targets.
- `rule-compiler/`: JavaScript rules language compiler for defining network-level rules.
- `service/`: the ZeroTier One service, which wraps the ZeroTier core and provides VPN-like connectivity to virtual networks for desktops, laptops, servers, VMs, and containers.
- `windows/`: Visual Studio solution files, Windows service code, and the Windows task bar app UI.
### Build and Platform Notes
To build on Mac and Linux just type `make`. On FreeBSD and OpenBSD `gmake` (GNU make) is required and can be installed from packages or ports. For Windows there is a Visual Studio solution in `windows/'.
- **Mac**
- Xcode command line tools for OSX 10.8 or newer are required.
- **Linux**
- The minimum compiler versions required are GCC/G++ 4.9.3 or CLANG/CLANG++ 3.4.2. (Install `clang` on CentOS 7 as G++ is too old.)
- Linux makefiles automatically detect and prefer clang/clang++ if present as it produces smaller and slightly faster binaries in most cases. You can override by supplying CC and CXX variables on the make command line.
- **Windows**
- Windows 7 or newer is supported. This *may* work on Vista but isn't officially supported there. It will not work on Windows XP.
- We build with Visual Studio 2017. Older versions may not work. Clang or MinGW will also probably work but may require some makefile hacking.
- **FreeBSD**
- GNU make is required. Type `gmake` to build.
- **OpenBSD**
- There is a limit of four network memberships on OpenBSD as there are only four tap devices (`/dev/tap0` through `/dev/tap3`).
- GNU make is required. Type `gmake` to build.
Typing `make selftest` will build a *zerotier-selftest* binary which unit tests various internals and reports on a few aspects of the build environment. It's a good idea to try this on novel platforms or architectures.
### Running
Running *zerotier-one* with -h will show help.
On Linux and BSD you can start the service with:
sudo ./zerotier-one -d
A home folder for your system will automatically be created.
The service is controlled via the JSON API, which by default is available at 127.0.0.1 port 9993. We include a *zerotier-cli* command line utility to make API calls for standard things like joining and leaving networks. The *authtoken.secret* file in the home folder contains the secret token for accessing this API. See README.md in [service/](service/) for API documentation.
Here's where home folders live (by default) on each OS:
* **Linux**: `/var/lib/zerotier-one`
* **FreeBSD** / **OpenBSD**: `/var/db/zerotier-one`
* **Mac**: `/Library/Application Support/ZeroTier/One`
* **Windows**: `\ProgramData\ZeroTier\One` (That's for Windows 7. The base 'shared app data' folder might be different on different Windows versions.)
Running ZeroTier One on a Mac is the same, but OSX requires a kernel extension. We ship a signed binary build of the ZeroTier tap device driver, which can be installed on Mac with:
sudo make install-mac-tap
This will create the home folder for Mac, place *tap.kext* there, and set its modes correctly to enable ZeroTier One to manage it with *kextload* and *kextunload*.
### Basic Troubleshooting
For most users, it just works.
If you are running a local system firewall, we recommend adding a rule permitting UDP port 9993 inbound and outbound. If you installed binaries for Windows this should be done automatically. Other platforms might require manual editing of local firewall rules depending on your configuration.
The Mac firewall can be found under "Security" in System Preferences. Linux has a variety of firewall configuration systems and tools. If you're using Ubuntu's *ufw*, you can do this:
sudo ufw allow 9993/udp
On CentOS check `/etc/sysconfig/iptables` for IPTables rules. For other distributions consult your distribution's documentation. You'll also have to check the UIs or documentation for commercial third party firewall applications like Little Snitch (Mac), McAfee Firewall Enterprise (Windows), etc. if you are running any of those. Some corporate environments might have centrally managed firewall software, so you might also have to contact IT.
ZeroTier One peers will automatically locate each other and communicate directly over a local wired LAN *if UDP port 9993 inbound is open*. If that port is filtered, they won't be able to see each others' LAN announcement packets. If you're experiencing poor performance between devices on the same physical network, check their firewall settings. Without LAN auto-location peers must attempt "loopback" NAT traversal, which sometimes fails and in any case requires that every packet traverse your external router twice.
Users behind certain types of firewalls and "symmetric" NAT devices may not able able to connect to external peers directly at all. ZeroTier has limited support for port prediction and will *attempt* to traverse symmetric NATs, but this doesn't always work. If P2P connectivity fails you'll be bouncing UDP packets off our relay servers resulting in slower performance. Some NAT router(s) have a configurable NAT mode, and setting this to "full cone" will eliminate this problem. If you do this you may also see a magical improvement for things like VoIP phones, Skype, BitTorrent, WebRTC, certain games, etc., since all of these use NAT traversal techniques similar to ours.
If a firewall between you and the Internet blocks ZeroTier's UDP traffic, you will fall back to last-resort TCP tunneling to rootservers over port 443 (https impersonation). This will work almost anywhere but is *very slow* compared to UDP or direct peer to peer connectivity.
Additional help [can be found in our knowledge base](https://zerotier.atlassian.net/wiki/spaces/SD/overview).

270
RELEASE-NOTES.md Normal file
View File

@ -0,0 +1,270 @@
ZeroTier Release Notes
======
# Version 1.9.0 (2.0 beta)
Version 2.0 is a very significant release with many changes. It remains backward compatibility to version 1.4.0 (and possibly earlier versions but this is not guaranteed) but makes numerous local and behavioral changes that should be reviewed before upgrading production systems.
After this release we're going to be working to get to a more frequent, less extreme, more "agile" release cadence.
Protocol changes:
* Trusted paths have been completely removed. The new AES mode is so fast on CPUs with AES acceleration that much of the rationale for this is gone, and this feature was never used much to begin with due to inconvenience and obvious security concerns. Environments using trusted paths will need to upgrade all nodes at once.
* The symmetric encryption algorithm and mode is now AES-GMAC-SIV, a variation of AES-GCM using the same primitives but offering superior security bounds and behavior under non-ideal conditions. It's also a lot faster than Salsa20/12 and Poly1305 on CPUs with AES acceleration (almost all desktops, laptops, and newer routers and phones). Salsa20/12 with Poly1305 is still supported for communication with older versions and small devices that lack AES acceleration.
* A new identity type (1) has been introduced that contains both Curve25519 and NIST P-384 public key types, but classic type 0 remains the default for new identities for now. ECDH key agreement between V1 identities uses both keys and hashes the resulting secrets to yield security equal to the best of the two, but V1 identities can also agree with V0 identities using only their Curve25519 component.
* Roots can now be joined and left like networks in a much more convenient way, and the old "moon" and "planet" terminology is deprecated.
* A new peer to peer multicast algorithm has been introduced that offers much better scalability and better performance, especially when the physical network itself is hub-and-spoke with many low latency peers connected by higher latency WAN links.
* Forward secrecy is finally supported via periodic re-keying using ephemeral asymmetric keys. Both Curve25519 and NIST P-384 keys are used with secrets being hashed to provide security equal to the stronger of the two curves.
* As part of forward secrecy implementation peers now always exchange HELLO messages even if they don't have a direct path.
* Compression is only enabled for control packets as almost all data packets are largely un-compressable.
* New NAT traversal tricks have been added, such as (ab)use of port 500.
Code changes:
* Migrated from GNU make to cmake for easier cross platform builds and simplified build files.
* The core network hypervisor has been significantly refactored, almost amounting to a partial rewrite.
* Critical packet handling paths have been streamlined with unnecessary memcpy() steps removed.
* Host service code has been completely rewritten in Go. Packet handling code remains in C++, but Go offers superior developer productivity when it comes to implementing more complex local service and local API features. Go imposes a little bit more memory overhead but not much and has been tuned to minimize memory use.
User interface:
* Command line interface has been redesigned and rewritten. Old commands names are supported but their output will be different.
Other things:
* The V2 design, protocol, and cryptographic primitives (AES-GMAC-SIV) have been security audited by [Trail of Bits](https://www.trailofbits.com), and the code is being audited as well prior to full 2.0 release.
---
# Older version release notes
# 2019-08-30 -- Version 1.4.6
* Update default root list to latest
* ARM32 platform build and flag fixes
* Add a clarification line to LICENSE.txt
* Fix license message in CLI
* Windows service now looks for service command line arguments
* Fixed a bug that could cause excessive queued multicasts
# 2019-08-23 -- Version 1.4.4
* Change license from GPL3 to BSL 1.1, see LICENSE.txt
* Fix an issue with the "ipauth" rule and auto-generated unforgeable IPv6 addresses
* Fix socket/bind errors setting IPs and routes on Linux
# 2019-08-12 -- Version 1.4.2
* Fix high CPU use bug on some platforms
* Fix issues with PostgreSQL controller DB (only affects Central)
* Restore backward compatibility with MacOS versions prior to 10.13
# 2019-07-29 -- Version 1.4.0
### Major Changes
* Mac version no longer requires a kernel extension, instead making use of the [feth interfaces](https://apple.stackexchange.com/questions/337715/fake-ethernet-interfaces-feth-if-fake-anyone-ever-seen-this).
* Added support for concurrent multipath (multiple paths at once) with traffic weighting by link quality and faster recovery from lost links.
* Added under-the-hood support for QoS (not yet exposed) that will eventually be configurable via our rules engine.
### Minor Changes and Bug Fixes
* Experimental controller DB driver for [LF](https://github.com/zerotier/lf) to store network controller data (LFDB.cpp / LFDB.hpp).
* Modified credential push and direct path push timings and algorithms to somewhat reduce "chattiness" of the protocol when idle. More radical background overhead reductions will have to wait for the 2.x line.
* Removed our beta/half-baked integration of Central with the Windows UI. We're going to do a whole new UI of some kind in the future at least for Windows and Mac.
* Fixed stack overflow issues on Linux versions using musl libc.
* Fixed some alignment problems reported on ARM and ARM64, but some reports we could not reproduce so please report any issues with exact chip, OS/distro, and ZeroTier version in use.
* Fixed numerous other small issues and bugs such as ARM alignment issues causing crashes on some devices.
* Windows now sets the adapter name such that it is consistent in both the Windows UI and command line utilities.
# 2018-07-27 -- Version 1.2.12
* Fixed a bug that caused exits to take a long time on Mac due to huge numbers of redundant attempts to delete managed routes.
* Fixed a socket limit problem on Windows that caused the ZeroTier service to run out of sockets, causing the UI and CLI to be unable to access the API.
* Fixed a threading bug in the ZeroTier Core, albeit one that never manifested on the regular ZeroTier One service/client.
* Fixed a bug that could cause the service to crash if an authorized local client accessed an invalid URL via the control API. (Not exploitable since you needed admin access anyway.)
# 2018-05-08 -- Version 1.2.10
* Fix bug loading `moons.d/` files for federated root operation.
* Fix compile problem with ZT_DEBUG on some versions of `clang`
* Fix slow network startup bug related to loading of `networks.d/` cache files
# 2018-04-27 -- Version 1.2.8
* Linux version once again builds with PIE (position independent executable) flags
* Fixed bug in zerotier-idtool file sign and verify
* Fixed minor OSX app typo
* Merged alpha NetBSD support (mostly untested, so YMMV)
* Merged several minor typo and one-liner bug fixes
# 2018-04-17 -- Version 1.2.6
* Features and Core Improvements
* Path selection has been overhauled to improve path stability, simplify code, and prepare for multi-path and trunking in the next major release.
* This version introduces remote tracing for remote diagnostics. Network controllers can set a node (usually the controller itself) to receive remote tracing events from all members of the network or from select members. Events are only sent if they pertain to a given network for security reasons.
* Multicast replication can now be done by designated multicast replicators on a network (flagged as such at the controller) rather than by the sender. Most users won't want this, but it's useful for specialized use cases on hub-and-spoke networks and for low-power devices.
* Cryptographic performance improvements on several platforms.
* Multithreaded performance improvements throughout the code base, including the use of an inline lightweight spinlock for low-contention resources.
* Bugs fixed
* Disappearing routes on Mac (GitHub issue #600)
* Route flapping and path instability in some dual-stack V4/V6 networks
* Blacklist (in local.conf) doesn't work reliably (GitHub issue #656)
* Connection instabilities due to unsigned integer overflows in timing comparisons (use int64_t instead of uint64_t)
* Binaries don't run on some older or lower-end 32-bit ARM chips (build problem)
* ARM NEON crypto code crashes (build problem)
* Fixed some lock ordering issues revealed by "valgrind" tool
* The "zerotier-idtool" command could not be accessed from "zerotier-one" via command line switch
* Leaking sockets on some platforms when uPnP/NAT-PMP is enabled
* Fixed two very rare multithreading issues that were only observed on certain systems
* Platform-Specific Changes
* MacOS
* Installer now loads the kernel extension right away so that High Sierra users will see the prompt to authorize it. This is done in the "Security & Privacy" preference pane and must be done directly on the console (not via remote desktop). On High Sierra and newer kexts must be authorized at the console via security settings system preferences pane.
* Windows
* The Windows installer should now install the driver without requiring a special prompt in most cases. This should make it easier for our packages to be accepted into and updated in the Chocolatey repository and should make it easier to perform remote installs across groups of machines using IT management and provisioning tools.
* The Windows official packages are now signed with an EV certificate (with hardware key).
* The Windows UI can now log into ZeroTier Central and join networks via the Central API.
* The `zerotier-idtool` command should now work on Windows without ugly hacks.
* Upgraded the installer version.
* Made a few changes to hopefully fix sporadic "will not uninstall" problems, though we cannot duplicate these issues ourselves.
* Linux
* Device names are now generated deterministically based on network IDs for all newly joined networks.
* Android
* Multicast now works on Android in most cases! Android apps can send and receive multicast and subscribe to multicast group IPs. Note that in some cases the app must bind to the specific correct interface for this to work.
* IPv6 can be disabled in UI for cases where it causes problems.
# 2017-04-20 -- Version 1.2.4
* Managed routes are now only bifurcated for the default route. This is a change in behavior, though few people will probably notice. Bifurcating all managed routes was causing more trouble than it was worth for most users.
* Up to 2X crypto speedup on x86-64 (except Windows, which will take some porting) and 32-bit ARM platforms due to integration of fast assembly language implementations of Salsa20/12 from the [supercop](http://bench.cr.yp.to/supercop.html) code base. These were written by Daniel J. Bernstein and are in the public domain. My Macbook Pro (Core i5 2.8ghz) now does almost 1.5GiB/sec Salsa20/12 per core and a Raspberry Pi got a 2X boost. 64-bit ARM support and Windows support will take some work but should not be too hard.
* Refactored code that manages credentials to greatly reduce memory use in most cases. This may also result in a small performance improvement.
* Reworked and simplified path selection and priority logic to fix path instability and dead path persistence edge cases. There have been some sporadic reports of persistent path instabilities and dead paths hanging around that take minutes to resolve. These have proven difficult to reproduce in house, but hopefully this will fix them. In any case it seems to speed up path establishment in our tests and it makes the code simpler and more readable.
* Eliminated some unused cruft from the code around path management and in the peer class.
* Fixed an issue causing build problems on some MIPS architecture systems.
* Fixed Windows forgetting routes on sleep/wake or in some other circumstances. (GitHub issue #465)
# 2017-03-17 -- Version 1.2.2
* A bug causing unreliable multicast propagation (GitHub issue #461).
* A crash in ARM binaries due to a build chain and flags problem.
* A bug in the network controller preventing members from being listed (GitHub issue #460).
# 2017-03-14 -- Version 1.2.0
Version 1.2.0 is a major milestone release representing almost nine months of work. It includes our rules engine for distributed network packet filtering and security monitoring, federated roots, and many other architectural and UI improvements and bug fixes.
## New Features in 1.2.0
### The ZeroTier Rules Engine
The largest new feature in 1.2.0, and the product of many months of work, is our advanced network rules engine. With this release we achieve traffic control, security monitoring, and micro-segmentation capability on par with many enterprise SDN solutions designed for use in advanced data centers and corporate networks.
Rules allow you to filter packets on your network and vector traffic to security observers. Security observation can be performed in-band using REDIRECT or out of band using TEE.
Tags and capabilities provide advanced methods for implementing fine grained permission structures and micro-segmentation schemes without bloating the size and complexity of your rules table.
See the [rules engine announcement blog post](https://www.zerotier.com/blog/?p=927) for an in-depth discussion of theory and implementation. The [manual](https://www.zerotier.com/manual.shtml) contains detailed information on rule, tag, and capability use, and the `rule-compiler/` subfolder of the ZeroTier source tree contains a JavaScript function to compile rules in our human-readable rule definition language into rules suitable for import into a network controller. (ZeroTier Central uses this same script to compile rules on [my.zerotier.com](https://my.zerotier.com/).)
### Root Server Federation
It's now possible to create your own root servers and add them to the root server pool on your nodes. This is done by creating what's called a "moon," which is a signed enumeration of root servers and their stable points on the network. Refer to the [manual](https://www.zerotier.com/manual.shtml) for instructions.
Federated roots achieve a number of things:
* You can deploy your own infrastructure to reduce dependency on ours.
* You can deploy roots *inside your LAN* to ensure that network connectivity inside your facility still works if the Internet goes down. This is the first step toward making ZeroTier viable as an in-house SDN solution.
* Roots can be deployed inside national boundaries for countries with data residency laws or "great firewalls." (As of 1.2.0 there is still no way to force all traffic to use these roots, but that will be easy to do in a later version.)
* Last but not least this makes ZeroTier somewhat less centralized by eliminating any hard dependency on ZeroTier, Inc.'s infrastructure.
Our roots will of course remain and continue to provide zero-configuration instant-on deployment, a secure global authority for identities, and free traffic relaying for those who can't establish peer to peer connections.
### Local Configuration
An element of our design philosophy is "features are bugs." This isn't an absolute dogma but more of a guiding principle. We try as hard as we can to avoid adding features, especially "knobs" that must be tweaked by a user.
As of 1.2.0 we've decided that certain knobs are unavoidable, and so there is now a `local.conf` file that can be used to configure them. See the ZeroTier One documentation for these. They include:
* Blacklisting interfaces you want to make sure ZeroTier doesn't use for network traffic, such as VPNs, slow links, or backplanes designated for only certain kinds of traffic.
* Turning uPnP/NAT-PMP on or off.
* Configuring software updates on Windows and Mac platforms.
* Defining trusted paths (the old trusted paths file is now deprecated)
* Setting the ZeroTier main port so it doesn't have to be changed on the command line, which is very inconvenient in many cases.
### Improved In-Band Software Updates
A good software update system for Windows and Mac clients has been a missing feature in previous versions. It does exist but we've been shy about using it so far due to its fragility in some environments.
We've greatly improved this mechanism in 1.2.0. Not only does it now do a better job of actually invoking the update, but it also transfers updates in-band using the ZeroTier protocol. This means it can work in environments that do not allows http/https traffic or that force it through proxies. There's also now an update channel setting: `beta` or `release` (the default).
Software updates are authenticated three ways:
1. ZeroTier's own signing key is used to sign all updates and this signature is checked prior to installation. ZeroTier, Inc.'s signatures are performed on an air-gapped machine.
2. Updates for Mac and Windows are signed using Apple and Microsoft (DigiCert EV) keys and will not install unless these signatures are also valid.
3. The new in-band update mechanism also authenticates the source of the update via ZeroTier's built-in security features. This provides transport security, while 1 and 2 provide security of the update at rest.
Updates are now configurable via `local.conf`. There are three options: `disable`, `download`, and `apply`. The third (apply) is the default for official builds on Windows and Mac, making updates happen silently and automatically as they do for popular browsers like Chrome and Firefox. Updates are disabled by default on Linux and other Unix-type systems as these are typically updated through package managers.
### Path Link Quality Awareness
Version 1.2.0 is now aware of the link quality of direct paths with other 1.2.0 nodes. This information isn't used yet but is visible through the JSON API. (Quality always shows as 100% with pre-1.2.0 nodes.) Quality is measured passively with no additional overhead using a counter based packet loss detection algorithm.
This information is visible from the command line via `listpeers`:
200 listpeers XXXXXXXXXX 199.XXX.XXX.XXX/9993;10574;15250;1.00 48 1.2.0 LEAF
200 listpeers XXXXXXXXXX 195.XXX.XXX.XXX/45584;467;7608;0.44 290 1.2.0 LEAF
The first peer's path is at 100% (1.00), while the second peer's path is suffering quite a bit of packet loss (0.44).
Link quality awareness is a precursor to intelligent multi-path and QoS support, which will in future versions bring us to feature parity with SD-WAN products like Cisco iWAN.
### Security Improvements
Version 1.2.0 adds anti-DOS (denial of service) rate limits and other hardening for improved resiliency against a number of denial of service attack scenarios.
It also adds a mechanism for instantaneous credential revocation. This can be used to revoke certificates of membership instantly to kick a node off a network (for private networks) and also to revoke capabilities and tags. The new controller sends revocations by default when a peer is de-authorized.
Revocations propagate using a "rumor mill" peer to peer algorithm. This means that a controller need only successfully send a revocation to at least one member of a network with connections to other active members. At this point the revocation will flood through the network peer to peer very quickly. This helps make revocations more robust in the face of poor connectivity with the controller or attempts to incapacitate the controller with denial of service attacks, as well as making revocations faster on huge networks.
### Windows and Macintosh UI Improvements (ZeroTier One)
The Mac has a whole new UI built natively in Objective-C. It provides a pulldown similar in appearance and operation to the Mac WiFi task bar menu.
The Windows UI has also been improved and now provides a task bar icon that can be right-clicked to manage networks. Both now expose managed route and IP permissions, allowing nodes to easily opt in to full tunnel operation if you have a router configured on your network.
### Ad-Hoc Networks
A special kind of public network called an ad-hoc network may be accessed by joining a network ID with the format:
ffSSSSEEEE000000
| | | |
| | | Reserved for future use, must be 0
| | End of port range (hex)
| Start of port range (hex)
Reserved ZeroTier address prefix indicating a controller-less network
Ad-hoc networks are public (no access control) networks that have no network controller. Instead their configuration and other credentials are generated locally. Ad-hoc networks permit only IPv6 UDP and TCP unicast traffic (no multicast or broadcast) using 6plane format NDP-emulated IPv6 addresses. In addition an ad-hoc network ID encodes an IP port range. UDP packets and TCP SYN (connection open) packets are only allowed to destination ports within the encoded range.
For example `ff00160016000000` is an ad-hoc network allowing only SSH, while `ff0000ffff000000` is an ad-hoc network allowing any UDP or TCP port.
Keep in mind that these networks are public and anyone in the entire world can join them. Care must be taken to avoid exposing vulnerable services or sharing unwanted files or other resources.
### Network Controller (Partial) Rewrite
The network controller has been largely rewritten to use a simple in-filesystem JSON data store in place of SQLite, and it is now included by default in all Windows, Mac, Linux, and BSD builds. This means any desktop or server node running ZeroTier One can now be a controller with no recompilation needed.
If you have data in an old SQLite3 controller we've included a NodeJS script in `controller/migrate-sqlite` to migrate data to the new format. If you don't migrate, members will start getting `NOT_FOUND` when they attempt to query for updates.
## Major Bug Fixes in 1.2.0
* **The Windows HyperV 100% CPU bug is FINALLY DEAD**: This long-running problem turns out to have been an issue with Windows itself, but one we were triggering by placing invalid data into the Windows registry. Microsoft is aware of the issue but we've also fixed the triggering problem on our side. ZeroTier should now co-exist quite well with HyperV and should now be able to be bridged with a HyperV virtual switch.
* **Segmentation faults on musl-libc based Linux systems**: Alpine Linux and some embedded Linux systems that use musl libc (a minimal libc) experienced segmentation faults. These were due to a smaller default stack size. A work-around that sets the stack size for new threads has been added.
* **Windows firewall blocks local JSON API**: On some Windows systems the firewall likes to block 127.0.0.1:9993 for mysterious reasons. This is now fixed in the installer via the addition of another firewall exemption rule.
* **UI crash on embedded Windows due to missing fonts**: The MSI installer now ships fonts and will install them if they are not present, so this should be fixed.
## Other Improvements in 1.2.0
* **Improved dead path detection**: ZeroTier is now more aggressive about expiring paths that do not seem to be active. If a path seems marginal it is re-confirmed before re-use.
* **Minor performance improvements**: We've reduced unnecessary memcpy's and made a few other performance improvements in the core.
* **Linux static binaries**: For our official packages (the ones in the download.zerotier.com apt and yum repositories) we now build Linux binaries with static linking. Hopefully this will stop all the bug reports relating to library inconsistencies, as well as allowing our deb packages to run on a wider variety of Debian-based distributions. (There are far too many of these to support officially!) The overhead for this is very small, especially since we built our static versions against musl-libc. Distribution maintainers are of course free to build dynamically linked versions for inclusion into distributions; this only affects our official binaries.

View File

@ -1,74 +0,0 @@
This guide is for those building and running from source. See BUILDING.txt
first.
The wiki at GitHub contains several pages that are probably also of interest:
https://github.com/zerotier/ZeroTierOne/wiki
--- MacOS
On Mac, the default ZeroTier home is:
/Library/Application Support/ZeroTier/One
ZeroTier ships with a kernel extension for its own tap device, which it
stores in the above directory. To install this, type:
sudo make install-mac-tap
This will create the ZeroTier One home above if it does not exist and install
the kext there. Note that the kext must be owned by root:wheel. The make
rule for install-mac-tap takes care of that.
Next, simply run the binary. It must be run as root to open the tap device.
If run with no options, it will use the default home directory above.
sudo ./zerotier-one &
--- LINUX
On Linux, the default ZeroTier home is:
/var/lib/zerotier-one
Just type:
sudo mkdir /var/lib/zerotier-one
sudo ./zerotier-one &
Your system must have the Linux tun/tap driver available (tun). All tested
distributions so far ship with this driver as a module that will load
automatically.
UDP port 9993 must be open in your local firewall for this to work properly.
How to do this varies by Linux distribution.
- Opening port 9993 on Ubuntu
Follow the Ubuntu documentation about UFW https://help.ubuntu.com/community/UFW
Check if your UFW is active.
sudo ufw status verbose
If it is active, open UDP port 9993
sudo ufw allow 9993/udp
You should now be able to ping and browse earth.zerotier.net
--- WINDOWS
A windows port is in progress.
--- ONCE IT'S RUNNING:
To use the command line interface, see this guide:
https://github.com/zerotier/ZeroTierOne/wiki/Command-Line-Interface
If you want to test by joining the Earth network, try:
sudo ./zerotier-cli join 8056c2e21c000001
An interface called 'zt0' should appear and should get an IP address in
the 28.0.0.0/7 range (28.* or 29.*) within a few seconds or so. Then try
pinging earth.zerotier.net or navigating to http://earth.zerotier.net/ in
a web browser.

View File

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9">
<dict>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>CFBundleIconFile</key>
<string>zt1icon.icns</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleGetInfoString</key>
<string>ZeroTier One (Mac GUI)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleExecutable</key>
<string>ZeroTier One</string>
<key>CFBundleIdentifier</key>
<string>com.zerotier.ZeroTierOne</string>
</dict>
</plist>

View File

@ -1,9 +0,0 @@
REM If you're an OSS user and want to run this batch file, edit to change the path to Qt.
REM Start Visual Studio command prompt and run this from within the ZeroTierUI subfolder.
CD ..
MKDIR build-ZeroTierUI-win32-release
CD build-ZeroTierUI-win32-release
C:\Qt\5.2.1\Src\qtbase\bin\qmake.exe ..\ZeroTierUI\ZeroTierUI.pro
nmake clean
nmake

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

View File

@ -1,120 +0,0 @@
QT += core gui widgets network
TARGET = "ZeroTier One"
TEMPLATE = app
win32:RC_FILE = ZeroTierUI.rc
win32:LIBS += winhttp.lib Iphlpapi.lib ws2_32.lib advapi32.lib Shell32.lib Rpcrt4.lib
win32:QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\"
mac:ICON = zt1icon.icns
mac:QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
mac:QMAKE_INFO_PLIST = Info.plist
mac:LIBS += -framework Cocoa
SOURCES += main.cpp \
mainwindow.cpp \
aboutwindow.cpp \
../node/C25519.cpp \
../node/CertificateOfMembership.cpp \
../node/Defaults.cpp \
../node/Demarc.cpp \
../node/EthernetTap.cpp \
../node/HttpClient.cpp \
../node/Identity.cpp \
../node/InetAddress.cpp \
../node/Logger.cpp \
../node/Multicaster.cpp \
../node/Network.cpp \
../node/NetworkConfig.cpp \
../node/Node.cpp \
../node/NodeConfig.cpp \
../node/Packet.cpp \
../node/PacketDecoder.cpp \
../node/Peer.cpp \
../node/Poly1305.cpp \
../node/Salsa20.cpp \
../node/Service.cpp \
../node/SHA512.cpp \
../node/SoftwareUpdater.cpp \
../node/Switch.cpp \
../node/SysEnv.cpp \
../node/Topology.cpp \
../node/UdpSocket.cpp \
../node/Utils.cpp \
../ext/lz4/lz4.c \
../ext/lz4/lz4hc.c \
networkwidget.cpp \
installdialog.cpp \
licensedialog.cpp \
onetimedialog.cpp
HEADERS += mainwindow.h \
aboutwindow.h \
../node/Node.hpp \
../node/Utils.hpp \
../node/Defaults.hpp \
../node/Address.hpp \
../node/Array.hpp \
../node/AtomicCounter.hpp \
../node/BandwidthAccount.hpp \
../node/Buffer.hpp \
../node/C25519.hpp \
../node/CertificateOfMembership.hpp \
../node/CMWC4096.hpp \
../node/Condition.hpp \
../node/Constants.hpp \
../node/Demarc.hpp \
../node/Dictionary.hpp \
../node/EthernetTap.hpp \
../node/HttpClient.hpp \
../node/Identity.hpp \
../node/InetAddress.hpp \
../node/Logger.hpp \
../node/MAC.hpp \
../node/Multicaster.hpp \
../node/MulticastGroup.hpp \
../node/Mutex.hpp \
../node/Network.hpp \
../node/NetworkConfig.hpp \
../node/NodeConfig.hpp \
../node/NonCopyable.hpp \
../node/Packet.hpp \
../node/PacketDecoder.hpp \
../node/Peer.hpp \
../node/Poly1305.hpp \
../node/RuntimeEnvironment.hpp \
../node/Salsa20.hpp \
../node/Service.hpp \
../node/SHA512.hpp \
../node/SharedPtr.hpp \
../node/SoftwareUpdater.hpp \
../node/Switch.hpp \
../node/SysEnv.hpp \
../node/Thread.hpp \
../node/Topology.hpp \
../node/UdpSocket.hpp \
../ext/lz4/lz4.h \
../ext/lz4/lz4hc.h \
networkwidget.h \
installdialog.h \
mac_doprivileged.h \
licensedialog.h \
main.h \
onetimedialog.h
FORMS += mainwindow.ui \
aboutwindow.ui \
networkwidget.ui \
installdialog.ui \
licensedialog.ui \
quickstartdialog.ui \
onetimedialog.ui
RESOURCES += \
resources.qrc
mac:OBJECTIVE_SOURCES += \
mac_doprivileged.mm
OTHER_FILES += \
stylesheet.css

View File

@ -1 +0,0 @@
IDI_ICON1 ICON DISCARDABLE "zt1icon.ico"

View File

@ -1,254 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>AboutWindow</class>
<widget class="QDialog" name="AboutWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>508</width>
<height>261</height>
</rect>
</property>
<property name="windowTitle">
<string>About ZeroTier One</string>
</property>
<property name="windowIcon">
<iconset resource="resources.qrc">
<normaloff>:/img/zt1icon.png</normaloff>:/img/zt1icon.png</iconset>
</property>
<property name="sizeGripEnabled">
<bool>true</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item>
<widget class="QWidget" name="widget" native="true">
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="iconLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>128</width>
<height>128</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>128</width>
<height>128</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="pixmap">
<pixmap resource="resources.qrc">:/img/zt1icon.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::NoTextInteraction</set>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="frame_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="aboutTextLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="alignment">
<set>Qt::AlignHCenter|Qt::AlignTop</set>
</property>
<property name="textInteractionFlags">
<set>Qt::NoTextInteraction</set>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_2" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Ok</set>
</property>
<property name="centerButtons">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="resources.qrc"/>
</resources>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>AboutWindow</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>AboutWindow</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -1,219 +0,0 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
* Copyright (C) 2011-2014 ZeroTier Networks LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* --
*
* ZeroTier may be used and distributed under the terms of the GPLv3, which
* are available at: http://www.gnu.org/licenses/gpl-3.0.html
*
* If you would like to embed ZeroTier into a commercial application or
* redistribute it in a modified binary form, please contact ZeroTier Networks
* LLC. Start here: http://www.zerotier.com/
*/
#include "installdialog.h"
#include "mainwindow.h"
#include "ui_installdialog.h"
#include "../node/Constants.hpp"
#include "../node/Defaults.hpp"
#include "../node/SoftwareUpdater.hpp"
#ifdef __UNIX_LIKE__
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#endif
#ifdef __APPLE__
#include "mac_doprivileged.h"
#endif
#include <QMainWindow>
#include <QMessageBox>
#include <QByteArray>
#include <QSslSocket>
#include <QFile>
#include <QDir>
#include <QProcess>
InstallDialog::InstallDialog(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::InstallDialog),
nam(new QNetworkAccessManager(this)),
phase(FETCHING_NFO)
{
ui->setupUi(this);
QObject::connect(nam,SIGNAL(finished(QNetworkReply*)),this,SLOT(on_networkReply(QNetworkReply*)));
const char *nfoUrl = ZeroTier::ZT_DEFAULTS.updateLatestNfoURL.c_str();
if (!*nfoUrl) {
QMessageBox::critical(this,"Download Failed","Download failed: internal error: no update URL configured in build!",QMessageBox::Ok,QMessageBox::NoButton);
QApplication::exit(1);
return;
}
QNetworkReply *reply = nam->get(QNetworkRequest(QUrl(nfoUrl)));
QObject::connect(reply,SIGNAL(downloadProgress(qint64,qint64)),this,SLOT(on_downloadProgress(qint64,qint64)));
}
InstallDialog::~InstallDialog()
{
delete ui;
}
void InstallDialog::on_networkReply(QNetworkReply *reply)
{
reply->deleteLater();
if (reply->error() != QNetworkReply::NoError) {
QMessageBox::critical(this,"Download Failed",QString("Download failed: ") + reply->errorString() + "\n\nAre you connected to the Internet?",QMessageBox::Ok,QMessageBox::NoButton);
QApplication::exit(1);
} else {
if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute) == 200) {
QByteArray installerData(reply->readAll());
switch(phase) {
case FETCHING_NFO: {
unsigned int vMajor = 0,vMinor = 0,vRevision = 0;
installerData.append((char)0);
const char *err = ZeroTier::SoftwareUpdater::parseNfo(installerData.data(),vMajor,vMinor,vRevision,signedBy,signature,url);
if (err) {
QMessageBox::critical(this,"Download Failed","Download failed: there is a problem with the software update web site.\nTry agian later. (invalid .nfo file)",QMessageBox::Ok,QMessageBox::NoButton);
QApplication::exit(1);
return;
}
phase = FETCHING_INSTALLER;
reply = nam->get(QNetworkRequest(QUrl(url.c_str())));
QObject::connect(reply,SIGNAL(downloadProgress(qint64,qint64)),this,SLOT(on_downloadProgress(qint64,qint64)));
} break;
case FETCHING_INSTALLER: {
if (!ZeroTier::SoftwareUpdater::validateUpdate(installerData.data(),installerData.length(),signedBy,signature)) {
QMessageBox::critical(this,"Download Failed","Download failed: there is a problem with the software update web site. Try agian later. (downloaded data failed signature check)",QMessageBox::Ok,QMessageBox::NoButton);
QApplication::exit(1);
return;
}
#ifdef __APPLE__
{
std::string homePath(QDir::homePath().toStdString());
QString zt1Caches(QDir::homePath() + "/Library/Caches/ZeroTier/One");
QDir::root().mkpath(zt1Caches);
std::string instPath((zt1Caches + "/ZeroTierOneInstaller").toStdString());
std::string tmpPath((zt1Caches + "/inst.sh").toStdString());
int outfd = ::open(instPath.c_str(),O_CREAT|O_TRUNC|O_WRONLY,0755);
if (outfd <= 0) {
QMessageBox::critical(this,"Download Failed",QString("Installation failed: unable to write to ")+instPath.c_str(),QMessageBox::Ok,QMessageBox::NoButton);
QApplication::exit(1);
return;
}
if (::write(outfd,installerData.data(),installerData.length()) != installerData.length()) {
QMessageBox::critical(this,"Installation Failed",QString("Installation failed: unable to write to ")+instPath.c_str(),QMessageBox::Ok,QMessageBox::NoButton);
QApplication::exit(1);
return;
}
::close(outfd);
chmod(instPath.c_str(),0755);
FILE *scr = fopen(tmpPath.c_str(),"w");
if (!scr) {
QMessageBox::critical(this,"Installation Failed","Cannot write script to temporary Library/Caches/ZeroTier/One folder.",QMessageBox::Ok,QMessageBox::NoButton);
QApplication::exit(1);
return;
}
fprintf(scr,"#!/bin/bash\n");
fprintf(scr,"export PATH=\"/bin:/usr/bin:/sbin:/usr/sbin\"\n");
fprintf(scr,"'%s'\n",instPath.c_str());
fprintf(scr,"if [ -f '/Library/Application Support/ZeroTier/One/authtoken.secret' ]; then\n");
fprintf(scr," mkdir -p '%s/Library/Application Support/ZeroTier/One'\n",homePath.c_str());
fprintf(scr," chown %d '%s/Library/Application Support/ZeroTier'\n",(int)getuid(),homePath.c_str());
fprintf(scr," chgrp %d '%s/Library/Application Support/ZeroTier'\n",(int)getgid(),homePath.c_str());
fprintf(scr," chmod 0700 '%s/Library/Application Support/ZeroTier'\n",homePath.c_str());
fprintf(scr," chown %d '%s/Library/Application Support/ZeroTier/One'\n",(int)getuid(),homePath.c_str());
fprintf(scr," chgrp %d '%s/Library/Application Support/ZeroTier/One'\n",(int)getgid(),homePath.c_str());
fprintf(scr," chmod 0700 '%s/Library/Application Support/ZeroTier/One'\n",homePath.c_str());
fprintf(scr," cp -f '/Library/Application Support/ZeroTier/One/authtoken.secret' '%s/Library/Application Support/ZeroTier/One/authtoken.secret'\n",homePath.c_str());
fprintf(scr," chown %d '%s/Library/Application Support/ZeroTier/One/authtoken.secret'\n",(int)getuid(),homePath.c_str());
fprintf(scr," chgrp %d '%s/Library/Application Support/ZeroTier/One/authtoken.secret'\n",(int)getgid(),homePath.c_str());
fprintf(scr," chmod 0600 '%s/Library/Application Support/ZeroTier/One/authtoken.secret'\n",homePath.c_str());
fprintf(scr,"fi\n");
fprintf(scr,"exit 0\n");
fclose(scr);
chmod(tmpPath.c_str(),0755);
macExecutePrivilegedShellCommand((std::string("'")+tmpPath+"' >>/dev/null 2>&1").c_str());
unlink(tmpPath.c_str());
unlink(instPath.c_str());
// Restart the binary with whatever updates may have occurred
std::string appPath(QCoreApplication::applicationFilePath().toStdString());
execl(appPath.c_str(),appPath.c_str(),(const char *)0);
// We only make it here if execl() fails
QMessageBox::critical(this,"Re-Launch Failed","An error occurred re-launching ZeroTier One.app. Try launching it manually.",QMessageBox::Ok,QMessageBox::NoButton);
QApplication::exit(1);
return;
}
#endif
} break;
}
ui->progressBar->setMinimum(0);
ui->progressBar->setMaximum(100);
ui->progressBar->setValue(0);
} else {
QMessageBox::critical(this,"Download Failed",QString("Download failed: HTTP status code ") + reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toString(),QMessageBox::Ok,QMessageBox::NoButton);
QApplication::exit(1);
}
}
}
void InstallDialog::on_InstallDialog_rejected()
{
QApplication::exit();
}
void InstallDialog::on_cancelButton_clicked()
{
QApplication::exit();
}
void InstallDialog::on_downloadProgress(qint64 bytesReceived,qint64 bytesTotal)
{
if (bytesTotal <= 0) {
ui->progressBar->setValue(0);
ui->progressBar->setMinimum(0);
ui->progressBar->setMaximum(0);
} else {
double pct = ((double)bytesReceived / (double)bytesTotal) * 100.0;
if (pct > 100.0)
pct = 100.0;
ui->progressBar->setMinimum(0);
ui->progressBar->setMaximum(100);
ui->progressBar->setValue((int)pct);
}
}

View File

@ -1,124 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>InstallDialog</class>
<widget class="QMainWindow" name="InstallDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>547</width>
<height>231</height>
</rect>
</property>
<property name="windowTitle">
<string>Install ZeroTier One Service</string>
</property>
<property name="windowIcon">
<iconset resource="resources.qrc">
<normaloff>:/img/zt1icon.png</normaloff>:/img/zt1icon.png</iconset>
</property>
<widget class="QWidget" name="centralWidget">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item>
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>Since this is your first time running ZeroTier One on this computer, the virtual Ethernet service must be downloaded and installed.
Please wait while the service downloads, then you will be prompted to enter an administrator password to install it.</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="margin">
<number>10</number>
</property>
<property name="textInteractionFlags">
<set>Qt::NoTextInteraction</set>
</property>
</widget>
</item>
<item>
<widget class="QProgressBar" name="progressBar">
<property name="maximum">
<number>0</number>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="cancelButton">
<property name="text">
<string>Cancel and Exit</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
<resources>
<include location="resources.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -1,42 +0,0 @@
#include <stdio.h>
#include <stdlib.h>
#include "main.h"
#include "licensedialog.h"
#include "ui_licensedialog.h"
#include "../node/Constants.hpp"
LicenseDialog::LicenseDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::LicenseDialog)
{
ui->setupUi(this);
#ifdef __WINDOWS__
QWidgetList widgets = this->findChildren<QWidget*>();
foreach(QWidget *widget, widgets) {
QFont font(widget->font());
font.setPointSizeF(font.pointSizeF() * 0.75);
widget->setFont(font);
}
#endif
}
LicenseDialog::~LicenseDialog()
{
delete ui;
}
void LicenseDialog::on_buttonBox_accepted()
{
settings->setValue("acceptedLicenseV1",true);
settings->sync();
this->setResult(QDialog::Accepted);
}
void LicenseDialog::on_buttonBox_rejected()
{
::exit(0);
}

View File

@ -1,27 +0,0 @@
#ifndef LICENSEDIALOG_H
#define LICENSEDIALOG_H
#include <QDialog>
namespace Ui {
class LicenseDialog;
}
class LicenseDialog : public QDialog
{
Q_OBJECT
public:
explicit LicenseDialog(QWidget *parent = 0);
~LicenseDialog();
private slots:
void on_buttonBox_accepted();
void on_buttonBox_rejected();
private:
Ui::LicenseDialog *ui;
};
#endif // LICENSEDIALOG_H

View File

@ -1,256 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>LicenseDialog</class>
<widget class="QDialog" name="LicenseDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>534</width>
<height>333</height>
</rect>
</property>
<property name="windowTitle">
<string>ZeroTier One</string>
</property>
<property name="windowIcon">
<iconset resource="resources.qrc">
<normaloff>:/img/zt1icon.png</normaloff>:/img/zt1icon.png</iconset>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item>
<widget class="QLabel" name="label">
<property name="font">
<font>
<pointsize>14</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Do you agree to the terms of the license agreement?</string>
</property>
</widget>
</item>
<item>
<widget class="QTextEdit" name="licenseDisplayTextEdit">
<property name="undoRedoEnabled">
<bool>false</bool>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
<property name="html">
<string notr="true">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;title&gt;GNU General Public License v3.0 - GNU Project - Free Software Foundation (FSF)&lt;/title&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'.Lucida Grande UI'; font-size:13pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:14px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:large; font-weight:600;&quot;&gt;GNU GENERAL PUBLIC LICENSE&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Version 3, 29 June 2007 &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Copyright © 2007 Free Software Foundation, Inc. &amp;lt;&lt;a href=&quot;http://fsf.org/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://fsf.org/&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;preamble&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:large; font-weight:600;&quot;&gt;P&lt;/span&gt;&lt;span style=&quot; font-size:large; font-weight:600;&quot;&gt;reamble&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The GNU General Public License is a free, copyleft license for software and other kinds of works. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The precise terms and conditions for copying, distribution and modification follow. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;terms&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:large; font-weight:600;&quot;&gt;T&lt;/span&gt;&lt;span style=&quot; font-size:large; font-weight:600;&quot;&gt;ERMS AND CONDITIONS&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;section0&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;. Definitions.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;“This License” refers to version 3 of the GNU General Public License. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;A “covered work” means either the unmodified Program or a work based on the Program. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;section1&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;. Source Code.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The Corresponding Source for a work in source code form is that same work. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;section2&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;. Basic Permissions.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;section3&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;. Protecting Users' Legal Rights From Anti-Circumvention Law.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;section4&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;. Conveying Verbatim Copies.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;section5&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;. Conveying Modified Source Versions.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: &lt;/p&gt;
&lt;ul style=&quot;margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;&quot;&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;a) The work must carry prominent notices stating that you modified it, and giving a relevant date. &lt;/li&gt;
&lt;li style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. &lt;/li&gt;
&lt;li style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. &lt;/li&gt;
&lt;li style=&quot; margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. &lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;section6&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;. Conveying Non-Source Forms.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: &lt;/p&gt;
&lt;ul style=&quot;margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;&quot;&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. &lt;/li&gt;
&lt;li style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. &lt;/li&gt;
&lt;li style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. &lt;/li&gt;
&lt;li style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. &lt;/li&gt;
&lt;li style=&quot; margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. &lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;section7&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;7&lt;/span&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;. Additional Terms.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: &lt;/p&gt;
&lt;ul style=&quot;margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;&quot;&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or &lt;/li&gt;
&lt;li style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or &lt;/li&gt;
&lt;li style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or &lt;/li&gt;
&lt;li style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;d) Limiting the use for publicity purposes of names of licensors or authors of the material; or &lt;/li&gt;
&lt;li style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or &lt;/li&gt;
&lt;li style=&quot; margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. &lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;section8&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;. Termination.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;section9&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;9&lt;/span&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;. Acceptance Not Required for Having Copies.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;section10&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;0. Automatic Licensing of Downstream Recipients.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;section11&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;1. Patents.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;section12&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;2. No Surrender of Others' Freedom.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;section13&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;3. Use with the GNU Affero General Public License.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;section14&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;4. Revised Versions of this License.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;section15&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;5. Disclaimer of Warranty.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;section16&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;6. Limitation of Liability.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;section17&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot; font-size:medium; font-weight:600;&quot;&gt;7. Interpretation of Sections 15 and 16.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;END OF TERMS AND CONDITIONS &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a name=&quot;howto&quot;&gt;&lt;/a&gt;&lt;span style=&quot; font-size:large; font-weight:600;&quot;&gt;H&lt;/span&gt;&lt;span style=&quot; font-size:large; font-weight:600;&quot;&gt;ow to Apply These Terms to Your New Programs&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Courier New,courier';&quot;&gt; &amp;lt;one line to give the program's name and a brief idea of what it does.&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Courier New,courier';&quot;&gt; Copyright (C) &amp;lt;year&amp;gt; &amp;lt;name of author&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Courier New,courier';&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Courier New,courier';&quot;&gt; This program is free software: you can redistribute it and/or modify&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Courier New,courier';&quot;&gt; it under the terms of the GNU General Public License as published by&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Courier New,courier';&quot;&gt; the Free Software Foundation, either version 3 of the License, or&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Courier New,courier';&quot;&gt; (at your option) any later version.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Courier New,courier';&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Courier New,courier';&quot;&gt; This program is distributed in the hope that it will be useful,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Courier New,courier';&quot;&gt; but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Courier New,courier';&quot;&gt; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Courier New,courier';&quot;&gt; GNU General Public License for more details.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Courier New,courier';&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Courier New,courier';&quot;&gt; You should have received a copy of the GNU General Public License&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Courier New,courier';&quot;&gt; along with this program. If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Also add information on how to contact you by electronic and paper mail. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Courier New,courier';&quot;&gt; &amp;lt;program&amp;gt; Copyright (C) &amp;lt;year&amp;gt; &amp;lt;name of author&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Courier New,courier';&quot;&gt; This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Courier New,courier';&quot;&gt; This is free software, and you are welcome to redistribute it&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Courier New,courier';&quot;&gt; under certain conditions; type `show c' for details. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see &amp;lt;&lt;a href=&quot;http://www.gnu.org/licenses/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://www.gnu.org/licenses/&lt;/span&gt;&lt;/a&gt;&amp;gt;. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read &amp;lt;&lt;a href=&quot;http://www.gnu.org/philosophy/why-not-lgpl.html&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://www.gnu.org/philosophy/why-not-lgpl.html&lt;/span&gt;&lt;/a&gt;&amp;gt;. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::No|QDialogButtonBox::Yes</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="resources.qrc"/>
</resources>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>LicenseDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>LicenseDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -1,12 +0,0 @@
#ifndef mac_doprivileged_h
#define mac_doprivileged_h
#ifdef __APPLE__
// commandAndArgs can contain only single-tic quotes and should redirect its
// stdout and stderr somewhere...
bool macExecutePrivilegedShellCommand(const char *commandAndArgs);
#endif
#endif

View File

@ -1,24 +0,0 @@
#include <string.h>
#include <stdio.h>
#include "mac_doprivileged.h"
#undef slots
#include <Cocoa/Cocoa.h>
bool macExecutePrivilegedShellCommand(const char *commandAndArgs)
{
char tmp[32768];
snprintf(tmp,sizeof(tmp),"do shell script \"%s\" with administrator privileges\n",commandAndArgs);
tmp[32767] = (char)0;
NSString *scriptApple = [[NSString alloc] initWithUTF8String:tmp];
NSAppleScript *as = [[NSAppleScript alloc] initWithSource:scriptApple];
NSDictionary *err = nil;
[as executeAndReturnError:&err];
[as release];
[scriptApple release];
return (err == nil);
}

View File

@ -1,194 +0,0 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
* Copyright (C) 2011-2014 ZeroTier Networks LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* --
*
* ZeroTier may be used and distributed under the terms of the GPLv3, which
* are available at: http://www.gnu.org/licenses/gpl-3.0.html
*
* If you would like to embed ZeroTier into a commercial application or
* redistribute it in a modified binary form, please contact ZeroTier Networks
* LLC. Start here: http://www.zerotier.com/
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "mainwindow.h"
#include "installdialog.h"
#include "licensedialog.h"
#include <QApplication>
#include <QDir>
#include <QString>
#include <QFont>
#include <QMessageBox>
#include "../node/Constants.hpp"
#include "../node/Defaults.hpp"
// Uncomment for testing to disable making sure Windows service is running
//#define DISABLE_WINDOWS_SERVICE_MANAGEMENT
#ifdef __WINDOWS__
#include <WinSock2.h>
#include <windows.h>
#include "../windows/ZeroTierOne/ZeroTierOneService.h"
#ifndef DISABLE_WINDOWS_SERVICE_MANAGEMENT
// Returns true if started or already running, false if failed or not installed
static bool startWindowsService()
{
SERVICE_STATUS ssSvcStatus;
SC_HANDLE schSCManager = NULL;
SC_HANDLE schService = NULL;
schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
if (schSCManager == NULL)
return false;
schService = OpenServiceA(schSCManager, ZT_SERVICE_NAME, SERVICE_QUERY_STATUS | SERVICE_START);
if (schService == NULL) {
CloseServiceHandle(schSCManager);
return false;
}
int tries = 0;
bool running = true;
for(;;) {
memset(&ssSvcStatus,0,sizeof(ssSvcStatus));
if ((++tries > 20)||(!QueryServiceStatus(schService,&ssSvcStatus))) {
running = false;
break;
}
if (ssSvcStatus.dwCurrentState == SERVICE_RUNNING) {
break;
} else if (ssSvcStatus.dwCurrentState == SERVICE_START_PENDING) {
Sleep(500);
continue;
}
StartService(schService,0,NULL);
Sleep(500);
}
CloseServiceHandle(schService);
CloseServiceHandle(schSCManager);
return running;
}
#endif // !DISABLE_WINDOWS_SERVICE_MANAGEMENT
#endif // __WINDOWS__
// Globally visible settings for the app
QSettings *settings = (QSettings *)0;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
#ifdef __WINDOWS__
// Start up Winsock2
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);
}
#endif
{
QFile qss(":css/stylesheet.css");
qss.open(QFile::ReadOnly);
QString style(qss.readAll());
a.setStyleSheet(style);
}
#ifdef __APPLE__
// If service isn't installed, download and install it
if (!QFile::exists("/Library/Application Support/ZeroTier/One/zerotier-one")) {
// InstallDialog is an alternative main window. It will re-launch the app
// when done.
InstallDialog id;
id.setStyleSheet(a.styleSheet());
id.show();
return a.exec();
}
{
// Put QSettings here because this is one of the writable directories allowed
// in Apple's app store sandbox specs. We might end up in app store someday.
QString zt1AppSupport(QDir::homePath() + "/Library/Application Support/ZeroTier/One");
QDir::root().mkpath(zt1AppSupport);
settings = new QSettings(zt1AppSupport + "/ui.ini",QSettings::IniFormat);
}
#else // on non-Apple boxen put it in the standard place using the default format
settings = new QSettings("ZeroTier Networks","ZeroTier One");
#endif
if (!settings->value("acceptedLicenseV1",false).toBool()) {
LicenseDialog ld;
ld.setStyleSheet(a.styleSheet());
ld.exec();
}
#if defined(__WINDOWS__) && !defined(DISABLE_WINDOWS_SERVICE_MANAGEMENT)
{
bool winSvcInstalled = false;
while (!startWindowsService()) {
if (winSvcInstalled) {
// Service was installed and subsequently failed to start again, so
// something is wrong!
QMessageBox::critical((QWidget *)0,"Service Not Available","Unable to locate or start ZeroTier One service. There may be a problem with the installation. Try installing from the .msi file again or e-mail contact@zerotier.com if you cannot install. (Error: service failed to start)",QMessageBox::Ok);
return 1;
}
#ifdef _WIN64
BOOL is64Bit = TRUE;
#else
BOOL is64Bit = FALSE;
IsWow64Process(GetCurrentProcess(),&is64Bit);
#endif
std::string exe(ZeroTier::ZT_DEFAULTS.defaultHomePath + "\\zerotier-one_");
exe.append((is64Bit == TRUE) ? "x64.exe" : "x86.exe");
if (QFile::exists(exe.c_str())) {
STARTUPINFOA si;
PROCESS_INFORMATION pi;
memset(&si,0,sizeof(si));
memset(&pi,0,sizeof(pi));
if (CreateProcessA(NULL,const_cast <LPSTR>((exe + " -I").c_str()),NULL,NULL,FALSE,CREATE_NO_WINDOW|CREATE_NEW_PROCESS_GROUP,NULL,NULL,&si,&pi)) {
WaitForSingleObject(pi.hProcess,INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
winSvcInstalled = true;
}
}
if (!winSvcInstalled) {
// Service failed to install -- installation problem like missing .exe
QMessageBox::critical((QWidget *)0,"Service Not Available","Unable to locate or start ZeroTier One service. There may be a problem with the installation. Try installing from the .msi file again or e-mail contact@zerotier.com if you cannot install. (Error: service not installed)",QMessageBox::Ok);
return 1;
}
}
}
#endif
MainWindow w;
w.show();
return a.exec();
}

View File

@ -1,9 +0,0 @@
#ifndef MAIN_H
#define MAIN_H
#include <QSettings>
#include <QMainWindow>
extern QSettings *settings;
#endif // MAIN_H

View File

@ -1,408 +0,0 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
* Copyright (C) 2011-2014 ZeroTier Networks LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* --
*
* ZeroTier may be used and distributed under the terms of the GPLv3, which
* are available at: http://www.gnu.org/licenses/gpl-3.0.html
*
* If you would like to embed ZeroTier into a commercial application or
* redistribute it in a modified binary form, please contact ZeroTier Networks
* LLC. Start here: http://www.zerotier.com/
*/
#include <string>
#include <map>
#include <set>
#include <vector>
#include <stdexcept>
#include <utility>
#include <QClipboard>
#include <QMutex>
#include <QCoreApplication>
#include <QDir>
#include <QFile>
#include <QMessageBox>
#include <QDebug>
#include <QProcess>
#include <QStringList>
#include <QVBoxLayout>
#include <QScrollBar>
#include <QEventLoop>
#include <QFont>
#include "main.h"
#include "mainwindow.h"
#include "aboutwindow.h"
#include "networkwidget.h"
#include "ui_mainwindow.h"
#include "ui_quickstartdialog.h"
#ifdef __APPLE__
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include "mac_doprivileged.h"
#endif
// Globally visible
ZeroTier::Node::LocalClient *zeroTierClient = (ZeroTier::Node::LocalClient *)0;
// Main window instance for app
QMainWindow *mainWindow = (MainWindow *)0;
// Handles message from ZeroTier One service
static void handleZTMessage(void *arg,unsigned long id,const char *line)
{
static std::map< unsigned long,std::vector<std::string> > ztReplies;
static QMutex ztReplies_m;
ztReplies_m.lock();
if (*line) {
ztReplies[id].push_back(std::string(line));
ztReplies_m.unlock();
} else { // empty lines conclude transmissions
std::map< unsigned long,std::vector<std::string> >::iterator r(ztReplies.find(id));
if (r != ztReplies.end()) {
// The message is packed into an event and sent to the main window where
// the actual parsing code lives.
MainWindow::ZTMessageEvent *event = new MainWindow::ZTMessageEvent(r->second);
ztReplies.erase(r);
ztReplies_m.unlock();
QCoreApplication::postEvent(mainWindow,event); // must post since this may be another thread
} else ztReplies_m.unlock();
}
}
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
pollServiceTimerId(-1)
{
mainWindow = this;
ui->setupUi(this);
if (ui->networkListWidget->verticalScrollBar())
ui->networkListWidget->verticalScrollBar()->setSingleStep(8);
#ifdef __APPLE__
QWidgetList widgets = this->findChildren<QWidget*>();
foreach(QWidget *widget, widgets)
widget->setAttribute(Qt::WA_MacShowFocusRect,false);
#endif
#ifdef __WINDOWS__
QWidgetList widgets = this->findChildren<QWidget*>();
foreach(QWidget *widget, widgets) {
if ((typeid(*widget) != typeid(ui->menuBar))&&(typeid(*widget) != typeid(ui->menuFile))) {
QFont font(widget->font());
font.setPointSizeF(font.pointSizeF() * 0.75);
widget->setFont(font);
}
}
#endif
ui->noNetworksLabel->setVisible(true);
ui->noNetworksLabel->setText("Connecting to Service...");
ui->bottomContainerWidget->setVisible(false);
ui->networkListWidget->setVisible(false);
this->firstTimerTick = true;
this->pollServiceTimerId = this->startTimer(200);
this->cyclesSinceResponseFromService = 0;
}
MainWindow::~MainWindow()
{
delete ui;
delete zeroTierClient;
zeroTierClient = (ZeroTier::Node::LocalClient *)0;
mainWindow = (MainWindow *)0;
}
void MainWindow::timerEvent(QTimerEvent *event) // event can be null since code also calls this directly
{
if (this->isHidden())
return;
if (this->pollServiceTimerId < 0)
return;
if (this->firstTimerTick) {
this->firstTimerTick = false;
this->killTimer(this->pollServiceTimerId);
if (!settings->value("shown_quickStart",false).toBool()) {
on_actionQuick_Start_triggered();
settings->setValue("shown_quickStart",true);
settings->sync();
}
this->pollServiceTimerId = this->startTimer(1500);
}
if (!zeroTierClient) {
std::string authToken;
if (!ZeroTier::Utils::readFile(ZeroTier::Node::LocalClient::authTokenDefaultUserPath().c_str(),authToken)) {
#ifdef __APPLE__
if (QFile::exists("/Library/Application Support/ZeroTier/One/zerotier-one")) {
// Authorize user by copying auth token into local home directory
QMessageBox::information(this,"Authorization Needed","Administrator privileges are required to allow the current user to control ZeroTier One on this computer. (You only have to do this once.)",QMessageBox::Ok,QMessageBox::NoButton);
std::string homePath(QDir::homePath().toStdString());
QString zt1Caches(QDir::homePath() + "/Library/Caches/ZeroTier/One");
QDir::root().mkpath(zt1Caches);
std::string tmpPath((zt1Caches + "/auth.sh").toStdString());
FILE *scr = fopen(tmpPath.c_str(),"w");
if (!scr) {
QMessageBox::critical(this,"Cannot Authorize","Unable to authorize this user to administrate ZeroTier One. (Cannot write to temporary Library/Caches/ZeroTier/One folder.)",QMessageBox::Ok,QMessageBox::NoButton);
QApplication::exit(1);
return;
}
fprintf(scr,"#!/bin/bash\n");
fprintf(scr,"export PATH=\"/bin:/usr/bin:/sbin:/usr/sbin\"\n");
fprintf(scr,"if [ -f '/Library/Application Support/ZeroTier/One/authtoken.secret' ]; then\n");
fprintf(scr," mkdir -p '%s/Library/Application Support/ZeroTier/One'\n",homePath.c_str());
fprintf(scr," chown %d '%s/Library/Application Support/ZeroTier'\n",(int)getuid(),homePath.c_str());
fprintf(scr," chgrp %d '%s/Library/Application Support/ZeroTier'\n",(int)getgid(),homePath.c_str());
fprintf(scr," chmod 0700 '%s/Library/Application Support/ZeroTier'\n",homePath.c_str());
fprintf(scr," chown %d '%s/Library/Application Support/ZeroTier/One'\n",(int)getuid(),homePath.c_str());
fprintf(scr," chgrp %d '%s/Library/Application Support/ZeroTier/One'\n",(int)getgid(),homePath.c_str());
fprintf(scr," chmod 0700 '%s/Library/Application Support/ZeroTier/One'\n",homePath.c_str());
fprintf(scr," cp -f '/Library/Application Support/ZeroTier/One/authtoken.secret' '%s/Library/Application Support/ZeroTier/One/authtoken.secret'\n",homePath.c_str());
fprintf(scr," chown %d '%s/Library/Application Support/ZeroTier/One/authtoken.secret'\n",(int)getuid(),homePath.c_str());
fprintf(scr," chgrp %d '%s/Library/Application Support/ZeroTier/One/authtoken.secret'\n",(int)getgid(),homePath.c_str());
fprintf(scr," chmod 0600 '%s/Library/Application Support/ZeroTier/One/authtoken.secret'\n",homePath.c_str());
fprintf(scr,"fi\n");
fprintf(scr,"exit 0\n");
fclose(scr);
chmod(tmpPath.c_str(),0755);
macExecutePrivilegedShellCommand((std::string("'")+tmpPath+"' >>/dev/null 2>&1").c_str());
unlink(tmpPath.c_str());
}
#endif
if (!ZeroTier::Utils::readFile(ZeroTier::Node::LocalClient::authTokenDefaultUserPath().c_str(),authToken)) {
if (!ZeroTier::Utils::readFile(ZeroTier::Node::LocalClient::authTokenDefaultSystemPath().c_str(),authToken)) {
QMessageBox::critical(this,"Cannot Authorize","Unable to authorize this user to administrate ZeroTier One. (Did you enter your password correctly?)",QMessageBox::Ok,QMessageBox::NoButton);
QApplication::exit(1);
return;
}
}
}
zeroTierClient = new ZeroTier::Node::LocalClient(authToken.c_str(),0,&handleZTMessage,this);
}
if (++this->cyclesSinceResponseFromService >= 3) {
if (this->cyclesSinceResponseFromService == 3)
QMessageBox::warning(this,"Service Not Running","Can't connect to the ZeroTier One service. Is it running?",QMessageBox::Ok);
ui->noNetworksLabel->setVisible(true);
ui->noNetworksLabel->setText("Connecting to Service...");
ui->bottomContainerWidget->setVisible(false);
ui->networkListWidget->setVisible(false);
}
zeroTierClient->send("info");
zeroTierClient->send("listnetworks");
zeroTierClient->send("listpeers");
}
void MainWindow::customEvent(QEvent *event)
{
ZTMessageEvent *m = (ZTMessageEvent *)event; // only one custom event type so far
if (m->ztMessage.size() == 0)
return;
this->cyclesSinceResponseFromService = 0;
std::vector<std::string> hdr(ZeroTier::Node::LocalClient::splitLine(m->ztMessage[0]));
if (hdr.size() < 2)
return;
if (hdr[0] != "200")
return;
if (hdr[1] == "info") {
if (hdr.size() >= 3)
this->myAddress = hdr[2].c_str();
if (hdr.size() >= 4)
this->myStatus = hdr[3].c_str();
if (hdr.size() >= 5)
this->myVersion = hdr[4].c_str();
} else if (hdr[1] == "listnetworks") {
std::map< std::string,std::vector<std::string> > newNetworks;
for(unsigned long i=1;i<m->ztMessage.size();++i) {
std::vector<std::string> l(ZeroTier::Node::LocalClient::splitLine(m->ztMessage[i]));
// 200 listnetworks <nwid> <name> <status> <config age> <type> <dev> <ips>
if ((l.size() == 9)&&(l[2].length() == 16))
newNetworks[l[2]] = l;
}
if (newNetworks != networks) {
networks = newNetworks;
for (bool removed=true;removed;) {
removed = false;
for(int r=0;r<ui->networkListWidget->count();++r) {
NetworkWidget *nw = (NetworkWidget *)ui->networkListWidget->itemWidget(ui->networkListWidget->item(r));
if (!networks.count(nw->networkId())) {
ui->networkListWidget->setVisible(false); // HACK to prevent an occasional crash here, discovered through hours of shotgun debugging... :P
delete ui->networkListWidget->takeItem(r);
removed = true;
break;
}
}
}
ui->networkListWidget->setVisible(true);
std::set<std::string> alreadyDisplayed;
for(int r=0;r<ui->networkListWidget->count();++r) {
NetworkWidget *nw = (NetworkWidget *)ui->networkListWidget->itemWidget(ui->networkListWidget->item(r));
if (networks.count(nw->networkId()) > 0) {
alreadyDisplayed.insert(nw->networkId());
std::vector<std::string> &l = networks[nw->networkId()];
nw->setNetworkName(l[3]);
nw->setStatus(l[4],l[5]);
nw->setNetworkType(l[6]);
nw->setNetworkDeviceName(l[7]);
nw->setIps(l[8]);
}
}
for(std::map< std::string,std::vector<std::string> >::iterator nwdata(networks.begin());nwdata!=networks.end();++nwdata) {
if (alreadyDisplayed.count(nwdata->first) == 0) {
std::vector<std::string> &l = nwdata->second;
NetworkWidget *nw = new NetworkWidget((QWidget *)0,nwdata->first);
nw->setNetworkName(l[3]);
nw->setStatus(l[4],l[5]);
nw->setNetworkType(l[6]);
nw->setNetworkDeviceName(l[7]);
nw->setIps(l[8]);
QListWidgetItem *item = new QListWidgetItem();
item->setSizeHint(nw->sizeHint());
ui->networkListWidget->addItem(item);
ui->networkListWidget->setItemWidget(item,nw);
}
}
}
} else if (hdr[1] == "listpeers") {
this->numPeers = 0;
for(unsigned long i=1;i<m->ztMessage.size();++i) {
std::vector<std::string> l(ZeroTier::Node::LocalClient::splitLine(m->ztMessage[i]));
if ((l.size() >= 5)&&((l[3] != "-")||(l[4] != "-")))
++this->numPeers; // number of direct peers online -- check for active IPv4 and/or IPv6 address
}
}
if (!ui->networkListWidget->count()) {
ui->noNetworksLabel->setText("You Have Not Joined Any Networks");
ui->noNetworksLabel->setVisible(true);
} else ui->noNetworksLabel->setVisible(false);
if (!ui->bottomContainerWidget->isVisible())
ui->bottomContainerWidget->setVisible(true);
if (!ui->networkListWidget->isVisible())
ui->networkListWidget->setVisible(true);
if (this->myAddress.size())
ui->addressButton->setText(this->myAddress);
else ui->addressButton->setText(" ");
QString st(this->myStatus);
st += ", v";
st += this->myVersion;
st += ", ";
st += QString::number(this->numPeers);
st += " direct links to peers";
ui->statusLabel->setText(st);
}
void MainWindow::on_joinNetworkButton_clicked()
{
QString toJoin(ui->networkIdLineEdit->text());
ui->networkIdLineEdit->setText(QString());
if (!zeroTierClient) // sanity check
return;
if (toJoin.size() != 16) {
QMessageBox::information(this,"Invalid Network ID","The network ID you entered was not valid. Enter a 16-digit hexadecimal network ID, like '8056c2e21c000001'.",QMessageBox::Ok,QMessageBox::NoButton);
return;
}
zeroTierClient->send((QString("join ") + toJoin).toStdString());
}
void MainWindow::on_actionAbout_triggered()
{
AboutWindow *about = new AboutWindow(this);
about->show();
}
void MainWindow::on_networkIdLineEdit_textChanged(const QString &text)
{
QString newText;
for(QString::const_iterator i(text.begin());i!=text.end();++i) {
switch(i->toLatin1()) {
case '0': newText.append('0'); break;
case '1': newText.append('1'); break;
case '2': newText.append('2'); break;
case '3': newText.append('3'); break;
case '4': newText.append('4'); break;
case '5': newText.append('5'); break;
case '6': newText.append('6'); break;
case '7': newText.append('7'); break;
case '8': newText.append('8'); break;
case '9': newText.append('9'); break;
case 'a': newText.append('a'); break;
case 'b': newText.append('b'); break;
case 'c': newText.append('c'); break;
case 'd': newText.append('d'); break;
case 'e': newText.append('e'); break;
case 'f': newText.append('f'); break;
case 'A': newText.append('a'); break;
case 'B': newText.append('b'); break;
case 'C': newText.append('c'); break;
case 'D': newText.append('d'); break;
case 'E': newText.append('e'); break;
case 'F': newText.append('f'); break;
default: break;
}
}
if (newText.size() > 16)
newText.truncate(16);
ui->networkIdLineEdit->setText(newText);
}
void MainWindow::on_addressButton_clicked()
{
QApplication::clipboard()->setText(this->myAddress);
}
void MainWindow::on_actionQuick_Start_triggered()
{
Ui::QuickstartDialog qd;
QDialog *qdd = new QDialog(this);
qd.setupUi(qdd);
qdd->setModal(false);
qdd->show();
}

View File

@ -1,100 +0,0 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
* Copyright (C) 2011-2014 ZeroTier Networks LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* --
*
* ZeroTier may be used and distributed under the terms of the GPLv3, which
* are available at: http://www.gnu.org/licenses/gpl-3.0.html
*
* If you would like to embed ZeroTier into a commercial application or
* redistribute it in a modified binary form, please contact ZeroTier Networks
* LLC. Start here: http://www.zerotier.com/
*/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QEvent>
#include <QString>
#include <QShowEvent>
#include <QTimerEvent>
#include <QSettings>
#include <map>
#include <vector>
#include <string>
#include "../node/Constants.hpp"
#include "../node/Node.hpp"
#include "../node/Utils.hpp"
namespace Ui {
class MainWindow;
}
// Globally visible instance of local client for communicating with ZT1
// Can be null if not connected, or will point to current
extern ZeroTier::Node::LocalClient *zeroTierClient;
// Globally visible pointer to main app window
extern QMainWindow *mainWindow;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
// Event used to pass messages from the Node::LocalClient thread to the
// main window to update network lists and stats.
class ZTMessageEvent : public QEvent
{
public:
ZTMessageEvent(const std::vector<std::string> &m) :
QEvent(QEvent::User),
ztMessage(m) {}
std::vector<std::string> ztMessage;
};
explicit MainWindow(QWidget *parent = 0);
virtual ~MainWindow();
protected:
virtual void timerEvent(QTimerEvent *event);
virtual void customEvent(QEvent *event);
private slots:
void on_joinNetworkButton_clicked();
void on_actionAbout_triggered();
void on_networkIdLineEdit_textChanged(const QString &text);
void on_addressButton_clicked();
void on_actionQuick_Start_triggered();
private:
Ui::MainWindow *ui;
QString myAddress;
QString myStatus;
QString myVersion;
bool firstTimerTick;
int pollServiceTimerId;
unsigned int numPeers;
unsigned int cyclesSinceResponseFromService;
std::map< std::string,std::vector<std::string> > networks;
};
#endif // MAINWINDOW_H

View File

@ -1,306 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>720</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>ZeroTier One</string>
</property>
<property name="windowIcon">
<iconset resource="resources.qrc">
<normaloff>:/img/zt1icon.png</normaloff>:/img/zt1icon.png</iconset>
</property>
<widget class="QWidget" name="centralWidget">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="noNetworksLabel">
<property name="font">
<font>
<pointsize>16</pointsize>
</font>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="text">
<string>You Have Not Joined Any Networks</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="margin">
<number>25</number>
</property>
<property name="textInteractionFlags">
<set>Qt::NoTextInteraction</set>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="networkListWidget">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="autoScroll">
<bool>false</bool>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::NoSelection</enum>
</property>
<property name="verticalScrollMode">
<enum>QAbstractItemView::ScrollPerPixel</enum>
</property>
<property name="spacing">
<number>0</number>
</property>
<property name="uniformItemSizes">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="bottomContainerWidget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QToolButton" name="addressButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Courier</family>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="statusTip">
<string>Your 10-digit ZeroTier address; click to copy to clipboard.</string>
</property>
<property name="text">
<string notr="true">----------</string>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextOnly</enum>
</property>
<property name="class" stdset="0">
<string notr="true">clickToCopy</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="statusLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="statusTip">
<string>Your network connection status.</string>
</property>
<property name="text">
<string/>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="networkIdLineEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Courier</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>Enter a hexadecimal network ID to join a network.</string>
</property>
<property name="maxLength">
<number>16</number>
</property>
<property name="frame">
<bool>true</bool>
</property>
<property name="placeholderText">
<string>(Network ID)</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="joinNetworkButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Courier</family>
<pointsize>16</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="statusTip">
<string>Join this network.</string>
</property>
<property name="text">
<string notr="true">+</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>720</width>
<height>22</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<widget class="QMenu" name="menuHelp">
<property name="title">
<string>Help</string>
</property>
<addaction name="actionAbout"/>
<addaction name="actionQuick_Start"/>
</widget>
<widget class="QMenu" name="menuFile">
<property name="title">
<string>File</string>
</property>
<addaction name="separator"/>
<addaction name="actionExit"/>
</widget>
<addaction name="menuFile"/>
<addaction name="menuHelp"/>
</widget>
<widget class="QStatusBar" name="statusBar">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
</widget>
<action name="actionAbout">
<property name="text">
<string>About</string>
</property>
</action>
<action name="actionExit">
<property name="text">
<string>Exit</string>
</property>
</action>
<action name="actionQuick_Start">
<property name="text">
<string>Quick Start</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources>
<include location="resources.qrc"/>
</resources>
<connections>
<connection>
<sender>actionExit</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>close()</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>333</x>
<y>149</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -1,179 +0,0 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
* Copyright (C) 2011-2014 ZeroTier Networks LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* --
*
* ZeroTier may be used and distributed under the terms of the GPLv3, which
* are available at: http://www.gnu.org/licenses/gpl-3.0.html
*
* If you would like to embed ZeroTier into a commercial application or
* redistribute it in a modified binary form, please contact ZeroTier Networks
* LLC. Start here: http://www.zerotier.com/
*/
#include "networkwidget.h"
#include "mainwindow.h"
#include "ui_networkwidget.h"
#include "onetimedialog.h"
#include "main.h"
#include <QClipboard>
#include <QString>
#include <QStringList>
#include <QCoreApplication>
#include <QProcess>
#include <QList>
#include <QMessageBox>
#include <QFont>
#include "../node/Constants.hpp"
NetworkWidget::NetworkWidget(QWidget *parent,const std::string &nwid) :
QWidget(parent),
ui(new Ui::NetworkWidget),
networkIdStr(nwid),
publicWarningShown(false)
{
ui->setupUi(this);
ui->networkIdButton->setText(QString(nwid.c_str()));
QFontMetrics fm(ui->ipListWidget->font());
int lineHeight = ui->ipListWidget->spacing() + fm.height();
ui->ipListWidget->setMinimumHeight(lineHeight * 4);
ui->ipListWidget->setMaximumHeight(lineHeight * 4);
#ifdef __APPLE__
QWidgetList widgets = this->findChildren<QWidget*>();
foreach(QWidget* widget, widgets)
widget->setAttribute(Qt::WA_MacShowFocusRect,false);
#endif
#ifdef __WINDOWS__
QWidgetList widgets = this->findChildren<QWidget*>();
foreach(QWidget *widget, widgets) {
QFont font(widget->font());
font.setPointSizeF(font.pointSizeF() * 0.75);
widget->setFont(font);
}
#endif
}
NetworkWidget::~NetworkWidget()
{
delete ui;
}
void NetworkWidget::setStatus(const std::string &status,const std::string &age)
{
ui->statusLabel->setText(QString(status.c_str()));
if (status == "OK")
ui->ageLabel->setText(QString("[") + age.c_str() + "s ago]");
else ui->ageLabel->setText(QString());
}
void NetworkWidget::setNetworkName(const std::string &name)
{
if (name == "?") {
ui->nameLabel->setText("... waiting ...");
ui->nameLabel->setEnabled(false);
} else {
ui->nameLabel->setText(QString(name.c_str()));
ui->nameLabel->setEnabled(true);
}
}
void NetworkWidget::setNetworkType(const std::string &type)
{
ui->networkTypeLabel->setText(QString(type.c_str()));
if (type == "?")
ui->networkTypeLabel->setStatusTip("Waiting for configuration...");
else if (type == "public") {
if ((!publicWarningShown)&&(!settings->value("shown_publicWarning",false).toBool())) {
publicWarningShown = true;
OneTimeDialog *d = new OneTimeDialog(mainWindow,"shown_publicWarning","Security Notice","Security Notice:"ZT_EOL_S""ZT_EOL_S"You have joined a public network. Anyone can join these. We recommend making sure that your system's automatic software updates are enabled and turning off any shared network services that you do not want people to access.");
d->setModal(false);
d->show();
}
ui->networkTypeLabel->setStatusTip("This network can be joined by anyone in the world.");
} else if (type == "private")
ui->networkTypeLabel->setStatusTip("This network is private; only authorized peers can join.");
else ui->networkTypeLabel->setStatusTip("Unknown network type.");
}
void NetworkWidget::setNetworkDeviceName(const std::string &dev)
{
ui->deviceLabel->setText(QString(dev.c_str()));
}
void NetworkWidget::setIps(const std::string &commaSeparatedList)
{
QStringList ips(QString(commaSeparatedList.c_str()).split(QChar(','),QString::SkipEmptyParts));
if (commaSeparatedList == "-")
ips.clear();
QStringList tmp;
ips.sort();
for(QStringList::iterator i(ips.begin());i!=ips.end();++i) {
QString ipOnly(*i);
int slashIdx = ipOnly.indexOf('/');
if (slashIdx > 0)
ipOnly.truncate(slashIdx);
tmp.append(ipOnly);
}
ips = tmp;
for(QStringList::iterator i(ips.begin());i!=ips.end();++i) {
if (ui->ipListWidget->findItems(*i,Qt::MatchCaseSensitive).size() == 0)
ui->ipListWidget->addItem(*i);
}
for(int i=0;i<ui->ipListWidget->count();++i) {
QListWidgetItem *item = ui->ipListWidget->item(i);
if (!ips.contains(item->text()))
ui->ipListWidget->removeItemWidget(item);
}
}
const std::string &NetworkWidget::networkId()
{
return networkIdStr;
}
void NetworkWidget::on_leaveNetworkButton_clicked()
{
if (QMessageBox::question(this,"Leave Network?",QString("Are you sure you want to leave network '") + networkIdStr.c_str() + "'?",QMessageBox::No,QMessageBox::Yes) == QMessageBox::Yes) {
this->setEnabled(false);
zeroTierClient->send((QString("leave ") + networkIdStr.c_str()).toStdString());
}
}
void NetworkWidget::on_networkIdButton_clicked()
{
QApplication::clipboard()->setText(ui->networkIdButton->text());
}
void NetworkWidget::on_ipListWidget_itemActivated(QListWidgetItem *item)
{
if (item)
QApplication::clipboard()->setText(item->text());
}
void NetworkWidget::on_ipListWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
{
if (current)
QApplication::clipboard()->setText(current->text());
}

View File

@ -1,68 +0,0 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
* Copyright (C) 2011-2014 ZeroTier Networks LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* --
*
* ZeroTier may be used and distributed under the terms of the GPLv3, which
* are available at: http://www.gnu.org/licenses/gpl-3.0.html
*
* If you would like to embed ZeroTier into a commercial application or
* redistribute it in a modified binary form, please contact ZeroTier Networks
* LLC. Start here: http://www.zerotier.com/
*/
#ifndef NETWORK_H
#define NETWORK_H
#include <string>
#include <QWidget>
#include <QListWidgetItem>
namespace Ui {
class NetworkWidget;
}
class NetworkWidget : public QWidget
{
Q_OBJECT
public:
explicit NetworkWidget(QWidget *parent = 0,const std::string &nwid = std::string());
virtual ~NetworkWidget();
void setStatus(const std::string &status,const std::string &age);
void setNetworkName(const std::string &name);
void setNetworkType(const std::string &type);
void setNetworkDeviceName(const std::string &dev);
void setIps(const std::string &commaSeparatedList);
const std::string &networkId();
private slots:
void on_leaveNetworkButton_clicked();
void on_networkIdButton_clicked();
void on_ipListWidget_itemActivated(QListWidgetItem *item);
void on_ipListWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
private:
Ui::NetworkWidget *ui;
std::string networkIdStr;
bool publicWarningShown;
};
#endif // NETWORK_H

View File

@ -1,560 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>NetworkWidget</class>
<widget class="QWidget" name="NetworkWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>580</width>
<height>253</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Network</string>
</property>
<property name="class" stdset="0">
<string notr="true">networkListItem</string>
</property>
<layout class="QHBoxLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>2</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>2</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWidget" name="leftWidget" native="true">
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="spacing">
<number>2</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWidget" name="widget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>4</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QToolButton" name="networkIdButton">
<property name="font">
<font>
<family>Courier</family>
<pointsize>13</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="statusTip">
<string>Hexadecimal network ID; click to copy to clipboard.</string>
</property>
<property name="text">
<string notr="true">----------------</string>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextOnly</enum>
</property>
<property name="class" stdset="0">
<string notr="true">clickToCopy</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>[</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="textInteractionFlags">
<set>Qt::NoTextInteraction</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="nameLabel">
<property name="font">
<font>
<pointsize>13</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="statusTip">
<string>This network's short name.</string>
</property>
<property name="text">
<string>networkname</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="textInteractionFlags">
<set>Qt::NoTextInteraction</set>
</property>
<property name="class" stdset="0">
<string notr="true">networkName</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="font">
<font>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>]</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="textInteractionFlags">
<set>Qt::NoTextInteraction</set>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="networkStatsWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QFormLayout" name="formLayout">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::ExpandingFieldsGrow</enum>
</property>
<property name="rowWrapPolicy">
<enum>QFormLayout::DontWrapRows</enum>
</property>
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="formAlignment">
<set>Qt::AlignHCenter|Qt::AlignTop</set>
</property>
<property name="horizontalSpacing">
<number>4</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
<property name="leftMargin">
<number>4</number>
</property>
<property name="topMargin">
<number>4</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>4</number>
</property>
<item row="2" column="0">
<widget class="QLabel" name="label_5">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Type:</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="networkTypeLabel">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="statusTip">
<string>What kind of network? Public or private?</string>
</property>
<property name="text">
<string>?</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Status:</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_4">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Device:</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QWidget" name="widget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="spacing">
<number>12</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="statusLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="statusTip">
<string>Status of this network.</string>
</property>
<property name="text">
<string>?</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="ageLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="statusTip">
<string>How recently did this network refresh its settings?</string>
</property>
<property name="text">
<string>[0s ago]</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="textInteractionFlags">
<set>Qt::NoTextInteraction</set>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>1</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="deviceLabel">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="statusTip">
<string>The name of the network device on your system.</string>
</property>
<property name="text">
<string>?</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="rightWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
<underline>false</underline>
</font>
</property>
<property name="styleSheet">
<string notr="true">padding: 0.1em 0 0.1em 0;</string>
</property>
<property name="text">
<string>IP Addresses</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="ipListWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="font">
<font>
<family>Courier</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>IP addresses assigned to this interface; click to copy to clipboard.</string>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="showDropIndicator" stdset="0">
<bool>false</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="horizontalScrollMode">
<enum>QAbstractItemView::ScrollPerPixel</enum>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
<property name="class" stdset="0">
<string notr="true">ipAddressList</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="leaveButtonContainerWidget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>1</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QToolButton" name="leaveNetworkButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="statusTip">
<string>Leave this network.</string>
</property>
<property name="text">
<string>Leave Network</string>
</property>
<property name="class" stdset="0">
<string notr="true">leaveNetworkButton</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>ipListWidget</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

View File

@ -1,37 +0,0 @@
#include "onetimedialog.h"
#include "ui_onetimedialog.h"
#include "main.h"
OneTimeDialog::OneTimeDialog(QWidget *parent,const char *propName,const QString &title,const QString &message) :
QDialog(parent),
ui(new Ui::OneTimeDialog)
{
ui->setupUi(this);
ui->label->setText(message);
this->setWindowTitle(title);
_propName = propName;
#ifdef __WINDOWS__
QWidgetList widgets = this->findChildren<QWidget*>();
foreach(QWidget *widget, widgets) {
QFont font(widget->font());
font.setPointSizeF(font.pointSizeF() * 0.75);
widget->setFont(font);
}
#endif
}
OneTimeDialog::~OneTimeDialog()
{
delete ui;
}
void OneTimeDialog::on_pushButton_clicked()
{
if (_propName) {
settings->setValue(_propName,ui->checkBox->isChecked());
settings->sync();
}
this->close();
}

View File

@ -1,26 +0,0 @@
#ifndef ONETIMEDIALOG_H
#define ONETIMEDIALOG_H
#include <QDialog>
namespace Ui {
class OneTimeDialog;
}
class OneTimeDialog : public QDialog
{
Q_OBJECT
public:
explicit OneTimeDialog(QWidget *parent = 0,const char *propName = (const char *)0,const QString &title = QString(),const QString &message = QString());
~OneTimeDialog();
private slots:
void on_pushButton_clicked();
private:
Ui::OneTimeDialog *ui;
const char *_propName;
};
#endif // ONETIMEDIALOG_H

View File

@ -1,99 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>OneTimeDialog</class>
<widget class="QDialog" name="OneTimeDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>496</width>
<height>197</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="margin">
<number>12</number>
</property>
<property name="textInteractionFlags">
<set>Qt::NoTextInteraction</set>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>12</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>12</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item>
<widget class="QCheckBox" name="checkBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Don't Show This Message Again</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>OK</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,170 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>QuickstartDialog</class>
<widget class="QDialog" name="QuickstartDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>480</height>
</rect>
</property>
<property name="windowTitle">
<string>Quick Start</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QScrollArea" name="scrollArea">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>785</width>
<height>800</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label">
<property name="styleSheet">
<string notr="true">background: #000000;</string>
</property>
<property name="text">
<string/>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="pixmap">
<pixmap resource="resources.qrc">:/img/ZT1GUI.png</pixmap>
</property>
<property name="scaledContents">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<widget class="QWidget" name="widget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item>
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Select Help -&gt; Quick Start to see this screen again.</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="textInteractionFlags">
<set>Qt::NoTextInteraction</set>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>702</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="okButton">
<property name="text">
<string>OK</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="resources.qrc"/>
</resources>
<connections>
<connection>
<sender>okButton</sender>
<signal>clicked()</signal>
<receiver>QuickstartDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>753</x>
<y>457</y>
</hint>
<hint type="destinationlabel">
<x>399</x>
<y>239</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -1,9 +0,0 @@
<RCC>
<qresource prefix="/img">
<file>zt1icon.png</file>
<file>ZT1GUI.png</file>
</qresource>
<qresource prefix="/css">
<file>stylesheet.css</file>
</qresource>
</RCC>

View File

@ -1,106 +0,0 @@
QToolButton {
margin: 0;
padding: 2px;
text-align: center;
background: palette(button);
color: palette(button-text);
border: 1px solid transparent;
}
QToolButton:focus {
border: 1px solid #000000;
}
QToolButton:hover {
background: palette(highlight);
color: palette(highlight-text);
}
QToolButton:pressed {
border: 1px solid #000000;
}
QToolButton.clickToCopy {
padding: 0;
margin: 0;
border: 0;
background: transparent;
color: palette(link);
}
QToolButton.clickToCopy:focus {
text-decoration: underline;
}
QToolButton.clickToCopy:hover {
text-decoration: underline;
}
QToolButton.clickToCopy:pressed {
background: transparent;
}
QToolButton.leaveNetworkButton {
margin: 0 4px 3px 0;
}
QMainWindow {
background: palette(dark);
}
QListWidget {
background: transparent;
padding: 0;
margin: 0;
border: 0;
}
QListWidget::item {
background: palette(base);
margin: 1px 0 1px 0;
}
QListWidget.ipAddressList {
background: palette(button);
margin: 0 4px 4px 0;
}
QListWidget.ipAddressList::item {
background: transparent;
color: palette(link);
border-bottom: 1px solid transparent;
}
QListWidget.ipAddressList::item:selected {
background: transparent;
border-top: 0;
border-left: 0;
border-right: 0;
border-bottom: 1px solid transparent;
}
QListWidget.ipAddressList::item:hover {
border-bottom: 1px solid palette(link);
}
QStatusBar {
background: palette(button);
}
QLabel.networkName {
padding: 0;
margin: 0;
}
#networkIdButton {
padding: 0.2em 0 0 0;
}
#joinNetworkButton {
margin: 1px;
padding: 0;
}
#noNetworksLabel {
background: transparent;
color: #ffffff;
}
#networkListWidget {
background: palette(dark);
margin: 0 0 2px 0;
}
#bottomContainerWidget {
background: palette(base);
}

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

BIN
artwork/AppIcon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
artwork/AppIcon@2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
artwork/AppIcon@3x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
artwork/AppIcon_20x20.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 621 B

BIN
artwork/AppIcon_29x29.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
artwork/AppIcon_40x40.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
artwork/AppIcon_58x58.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
artwork/AppIcon_60x60.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
artwork/AppIcon_80x80.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
artwork/AppIcon_87x87.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
artwork/AppIcon_90x90.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
artwork/AppIcon_iPad@2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
artwork/ZeroTierIcon.icns Normal file

Binary file not shown.

BIN
artwork/ZeroTierIcon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

BIN
artwork/ZeroTierIcon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

37
artwork/logo.html Normal file
View File

@ -0,0 +1,37 @@
<html>
<head>
<style type="text/css">
html,body {
background: #aaaaaa;
margin: 0;
padding: 0;
font-family: "Helvetica";
font-weight: bold;
font-size: 12pt;
height: 100%;
width: 100%;
}
div.icon {
background: #ffb354;
color: #000000;
font-size: 150pt;
border-radius: 2.5rem;
display: inline-block;
width: 1.3em;
height: 1.3em;
padding: 0;
margin: 0;
line-height: 1.4em;
vertical-align: middle;
text-align: center;
}
</style>
</head>
<body>
<br><br><br><br><br><br>
<!-- Yes, our logo is a Unicode character. It sort of just turned out that way. -->
<center>
<div class="icon">&#x23c1;</div>
</center>
</body>
</html>

View File

@ -1,408 +0,0 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
* Copyright (C) 2011-2014 ZeroTier Networks LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* --
*
* ZeroTier may be used and distributed under the terms of the GPLv3, which
* are available at: http://www.gnu.org/licenses/gpl-3.0.html
*
* If you would like to embed ZeroTier into a commercial application or
* redistribute it in a modified binary form, please contact ZeroTier Networks
* LLC. Start here: http://www.zerotier.com/
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <algorithm>
#include "RuntimeEnvironment.hpp"
#include "Logger.hpp"
#include "Filter.hpp"
#include "Utils.hpp"
namespace ZeroTier {
const char *const Filter::UNKNOWN_NAME = "(unknown)";
const Range<unsigned int> Filter::ANY;
static inline Range<unsigned int> __parseRange(char *r)
throw(std::invalid_argument)
{
char *saveptr = (char *)0;
unsigned int a = 0;
unsigned int b = 0;
unsigned int fn = 0;
for(char *f=Utils::stok(r,"-",&saveptr);(f);f=Utils::stok((char *)0,"-",&saveptr)) {
if (*f) {
switch(fn++) {
case 0:
if (*f != '*')
a = b = (unsigned int)strtoul(f,(char **)0,10);
break;
case 1:
if (*f != '*')
b = (unsigned int)strtoul(f,(char **)0,10);
break;
default:
throw std::invalid_argument("rule range must be <int>, <int>-<int>, or *");
}
}
}
return Range<unsigned int>(a,b);
}
Filter::Rule::Rule(const char *s)
throw(std::invalid_argument)
{
char *saveptr = (char *)0;
char tmp[256];
if (!Utils::scopy(tmp,sizeof(tmp),s))
throw std::invalid_argument("rule string too long");
unsigned int fn = 0;
for(char *f=Utils::stok(tmp,";",&saveptr);(f);f=Utils::stok((char *)0,";",&saveptr)) {
if (*f) {
switch(fn++) {
case 0:
_etherType = __parseRange(f);
break;
case 1:
_protocol = __parseRange(f);
break;
case 2:
_port = __parseRange(f);
break;
default:
throw std::invalid_argument("rule string has unknown extra fields");
}
}
}
if (fn != 3)
throw std::invalid_argument("rule string must contain 3 fields");
}
bool Filter::Rule::operator()(unsigned int etype,const void *data,unsigned int len) const
throw(std::invalid_argument)
{
if ((!_etherType)||(_etherType(etype))) { // ethertype is ANY, or matches
// Ethertype determines meaning of protocol and port
switch(etype) {
case ZT_ETHERTYPE_IPV4:
if (len > 20) {
if ((!_protocol)||(_protocol(((const uint8_t *)data)[9]))) { // protocol is ANY or match
if (!_port) // port is ANY
return true;
// Don't match on fragments beyond fragment 0. If we've blocked
// fragment 0, further fragments will fall on deaf ears anyway.
if ((Utils::ntoh(((const uint16_t *)data)[3]) & 0x1fff))
return false;
// Internet header length determines where data begins, in multiples of 32 bits
unsigned int ihl = 4 * (((const uint8_t *)data)[0] & 0x0f);
switch(((const uint8_t *)data)[9]) { // port's meaning depends on IP protocol
case ZT_IPPROTO_ICMP:
// For ICMP, port is ICMP type
return _port(((const uint8_t *)data)[ihl]);
case ZT_IPPROTO_TCP:
case ZT_IPPROTO_UDP:
case ZT_IPPROTO_SCTP:
case ZT_IPPROTO_UDPLITE:
// For these, port is destination port. Protocol designers were
// nice enough to put the field in the same place.
return _port(((const uint16_t *)data)[(ihl / 2) + 1]);
default:
// port has no meaning for other IP types, so ignore it
return true;
}
return false; // no match on port
}
} else throw std::invalid_argument("undersized IPv4 packet");
break;
case ZT_ETHERTYPE_IPV6:
if (len > 40) {
int nextHeader = ((const uint8_t *)data)[6];
unsigned int pos = 40;
while ((pos < len)&&(nextHeader >= 0)&&(nextHeader != 59)) { // 59 == no next header
fprintf(stderr,"[rule] V6: start header parse, header %.2x pos %d\n",nextHeader,pos);
switch(nextHeader) {
case 0: // hop-by-hop options
case 60: // destination options
case 43: // routing
case 135: // mobility (mobile IPv6 options)
if (_protocol((unsigned int)nextHeader))
return true; // match if our goal was to match any of these
nextHeader = ((const uint8_t *)data)[pos];
pos += 8 + (8 * ((const uint8_t *)data)[pos + 1]);
break;
case 44: // fragment
if (_protocol(44))
return true; // match if our goal was to match fragments
nextHeader = ((const uint8_t *)data)[pos];
pos += 8;
break;
case ZT_IPPROTO_AH: // AH
return _protocol(ZT_IPPROTO_AH); // true if AH is matched protocol, otherwise false since packet will be IPsec
case ZT_IPPROTO_ESP: // ESP
return _protocol(ZT_IPPROTO_ESP); // true if ESP is matched protocol, otherwise false since packet will be IPsec
case ZT_IPPROTO_ICMPV6:
// Only match ICMPv6 if we've selected it specifically
if (_protocol(ZT_IPPROTO_ICMPV6)) {
// Port is interpreted as ICMPv6 type
if ((!_port)||(_port(((const uint8_t *)data)[pos])))
return true;
}
break;
case ZT_IPPROTO_TCP:
case ZT_IPPROTO_UDP:
case ZT_IPPROTO_SCTP:
case ZT_IPPROTO_UDPLITE:
// If we encounter any of these, match if protocol matches or is wildcard as
// we'll consider these the "real payload" if present.
if ((!_protocol)||(_protocol(nextHeader))) {
if ((!_port)||(_port(((const uint16_t *)data)[(pos / 2) + 1])))
return true; // protocol matches or is ANY, port is ANY or matches
}
break;
default: {
char foo[128];
Utils::snprintf(foo,sizeof(foo),"unrecognized IPv6 header type %d",(int)nextHeader);
throw std::invalid_argument(foo);
}
}
fprintf(stderr,"[rule] V6: end header parse, next header %.2x, new pos %d\n",nextHeader,pos);
}
} else throw std::invalid_argument("undersized IPv6 packet");
break;
default:
// For other ethertypes, protocol and port are ignored. What would they mean?
return true;
}
}
return false;
}
std::string Filter::Rule::toString() const
{
char buf[128];
std::string s;
switch(_etherType.magnitude()) {
case 0:
s.push_back('*');
break;
case 1:
Utils::snprintf(buf,sizeof(buf),"%u",_etherType.start);
s.append(buf);
break;
default:
Utils::snprintf(buf,sizeof(buf),"%u-%u",_etherType.start,_etherType.end);
s.append(buf);
break;
}
s.push_back(';');
switch(_protocol.magnitude()) {
case 0:
s.push_back('*');
break;
case 1:
Utils::snprintf(buf,sizeof(buf),"%u",_protocol.start);
s.append(buf);
break;
default:
Utils::snprintf(buf,sizeof(buf),"%u-%u",_protocol.start,_protocol.end);
s.append(buf);
break;
}
s.push_back(';');
switch(_port.magnitude()) {
case 0:
s.push_back('*');
break;
case 1:
Utils::snprintf(buf,sizeof(buf),"%u",_port.start);
s.append(buf);
break;
default:
Utils::snprintf(buf,sizeof(buf),"%u-%u",_port.start,_port.end);
s.append(buf);
break;
}
return s;
}
Filter::Filter(const char *s)
throw(std::invalid_argument)
{
char tmp[16384];
if (!Utils::scopy(tmp,sizeof(tmp),s))
throw std::invalid_argument("filter string too long");
char *saveptr = (char *)0;
unsigned int fn = 0;
for(char *f=Utils::stok(tmp,",",&saveptr);(f);f=Utils::stok((char *)0,",",&saveptr)) {
try {
_rules.push_back(Rule(f));
++fn;
} catch (std::invalid_argument &exc) {
char tmp[256];
Utils::snprintf(tmp,sizeof(tmp),"invalid rule at index %u: %s",fn,exc.what());
throw std::invalid_argument(tmp);
}
}
std::sort(_rules.begin(),_rules.end());
}
std::string Filter::toString() const
{
std::string s;
for(std::vector<Rule>::const_iterator r(_rules.begin());r!=_rules.end();++r) {
if (s.length() > 0)
s.push_back(',');
s.append(r->toString());
}
return s;
}
void Filter::add(const Rule &r)
{
for(std::vector<Rule>::iterator rr(_rules.begin());rr!=_rules.end();++rr) {
if (r == *rr)
return;
}
_rules.push_back(r);
std::sort(_rules.begin(),_rules.end());
}
const char *Filter::etherTypeName(const unsigned int etherType)
throw()
{
switch(etherType) {
case ZT_ETHERTYPE_IPV4: return "ETHERTYPE_IPV4";
case ZT_ETHERTYPE_ARP: return "ETHERTYPE_ARP";
case ZT_ETHERTYPE_RARP: return "ETHERTYPE_RARP";
case ZT_ETHERTYPE_ATALK: return "ETHERTYPE_ATALK";
case ZT_ETHERTYPE_AARP: return "ETHERTYPE_AARP";
case ZT_ETHERTYPE_IPX_A: return "ETHERTYPE_IPX_A";
case ZT_ETHERTYPE_IPX_B: return "ETHERTYPE_IPX_B";
case ZT_ETHERTYPE_IPV6: return "ETHERTYPE_IPV6";
}
return UNKNOWN_NAME;
}
const char *Filter::ipProtocolName(const unsigned int ipp)
throw()
{
switch(ipp) {
case ZT_IPPROTO_ICMP: return "IPPROTO_ICMP";
case ZT_IPPROTO_IGMP: return "IPPROTO_IGMP";
case ZT_IPPROTO_TCP: return "IPPROTO_TCP";
case ZT_IPPROTO_UDP: return "IPPROTO_UDP";
case ZT_IPPROTO_GRE: return "IPPROTO_GRE";
case ZT_IPPROTO_ESP: return "IPPROTO_ESP";
case ZT_IPPROTO_AH: return "IPPROTO_AH";
case ZT_IPPROTO_ICMPV6: return "IPPROTO_ICMPV6";
case ZT_IPPROTO_OSPF: return "IPPROTO_OSPF";
case ZT_IPPROTO_IPIP: return "IPPROTO_IPIP";
case ZT_IPPROTO_IPCOMP: return "IPPROTO_IPCOMP";
case ZT_IPPROTO_L2TP: return "IPPROTO_L2TP";
case ZT_IPPROTO_SCTP: return "IPPROTO_SCTP";
case ZT_IPPROTO_FC: return "IPPROTO_FC";
case ZT_IPPROTO_UDPLITE: return "IPPROTO_UDPLITE";
case ZT_IPPROTO_HIP: return "IPPROTO_HIP";
}
return UNKNOWN_NAME;
}
const char *Filter::icmpTypeName(const unsigned int icmpType)
throw()
{
switch(icmpType) {
case ZT_ICMP_ECHO_REPLY: return "ICMP_ECHO_REPLY";
case ZT_ICMP_DESTINATION_UNREACHABLE: return "ICMP_DESTINATION_UNREACHABLE";
case ZT_ICMP_SOURCE_QUENCH: return "ICMP_SOURCE_QUENCH";
case ZT_ICMP_REDIRECT: return "ICMP_REDIRECT";
case ZT_ICMP_ALTERNATE_HOST_ADDRESS: return "ICMP_ALTERNATE_HOST_ADDRESS";
case ZT_ICMP_ECHO_REQUEST: return "ICMP_ECHO_REQUEST";
case ZT_ICMP_ROUTER_ADVERTISEMENT: return "ICMP_ROUTER_ADVERTISEMENT";
case ZT_ICMP_ROUTER_SOLICITATION: return "ICMP_ROUTER_SOLICITATION";
case ZT_ICMP_TIME_EXCEEDED: return "ICMP_TIME_EXCEEDED";
case ZT_ICMP_BAD_IP_HEADER: return "ICMP_BAD_IP_HEADER";
case ZT_ICMP_TIMESTAMP: return "ICMP_TIMESTAMP";
case ZT_ICMP_TIMESTAMP_REPLY: return "ICMP_TIMESTAMP_REPLY";
case ZT_ICMP_INFORMATION_REQUEST: return "ICMP_INFORMATION_REQUEST";
case ZT_ICMP_INFORMATION_REPLY: return "ICMP_INFORMATION_REPLY";
case ZT_ICMP_ADDRESS_MASK_REQUEST: return "ICMP_ADDRESS_MASK_REQUEST";
case ZT_ICMP_ADDRESS_MASK_REPLY: return "ICMP_ADDRESS_MASK_REPLY";
case ZT_ICMP_TRACEROUTE: return "ICMP_TRACEROUTE";
case ZT_ICMP_MOBILE_HOST_REDIRECT: return "ICMP_MOBILE_HOST_REDIRECT";
case ZT_ICMP_MOBILE_REGISTRATION_REQUEST: return "ICMP_MOBILE_REGISTRATION_REQUEST";
case ZT_ICMP_MOBILE_REGISTRATION_REPLY: return "ICMP_MOBILE_REGISTRATION_REPLY";
}
return UNKNOWN_NAME;
}
const char *Filter::icmp6TypeName(const unsigned int icmp6Type)
throw()
{
switch(icmp6Type) {
case ZT_ICMP6_DESTINATION_UNREACHABLE: return "ICMP6_DESTINATION_UNREACHABLE";
case ZT_ICMP6_PACKET_TOO_BIG: return "ICMP6_PACKET_TOO_BIG";
case ZT_ICMP6_TIME_EXCEEDED: return "ICMP6_TIME_EXCEEDED";
case ZT_ICMP6_PARAMETER_PROBLEM: return "ICMP6_PARAMETER_PROBLEM";
case ZT_ICMP6_ECHO_REQUEST: return "ICMP6_ECHO_REQUEST";
case ZT_ICMP6_ECHO_REPLY: return "ICMP6_ECHO_REPLY";
case ZT_ICMP6_MULTICAST_LISTENER_QUERY: return "ICMP6_MULTICAST_LISTENER_QUERY";
case ZT_ICMP6_MULTICAST_LISTENER_REPORT: return "ICMP6_MULTICAST_LISTENER_REPORT";
case ZT_ICMP6_MULTICAST_LISTENER_DONE: return "ICMP6_MULTICAST_LISTENER_DONE";
case ZT_ICMP6_ROUTER_SOLICITATION: return "ICMP6_ROUTER_SOLICITATION";
case ZT_ICMP6_ROUTER_ADVERTISEMENT: return "ICMP6_ROUTER_ADVERTISEMENT";
case ZT_ICMP6_NEIGHBOR_SOLICITATION: return "ICMP6_NEIGHBOR_SOLICITATION";
case ZT_ICMP6_NEIGHBOR_ADVERTISEMENT: return "ICMP6_NEIGHBOR_ADVERTISEMENT";
case ZT_ICMP6_REDIRECT_MESSAGE: return "ICMP6_REDIRECT_MESSAGE";
case ZT_ICMP6_ROUTER_RENUMBERING: return "ICMP6_ROUTER_RENUMBERING";
case ZT_ICMP6_NODE_INFORMATION_QUERY: return "ICMP6_NODE_INFORMATION_QUERY";
case ZT_ICMP6_NODE_INFORMATION_RESPONSE: return "ICMP6_NODE_INFORMATION_RESPONSE";
case ZT_ICMP6_INV_NEIGHBOR_SOLICITATION: return "ICMP6_INV_NEIGHBOR_SOLICITATION";
case ZT_ICMP6_INV_NEIGHBOR_ADVERTISEMENT: return "ICMP6_INV_NEIGHBOR_ADVERTISEMENT";
case ZT_ICMP6_MLDV2: return "ICMP6_MLDV2";
case ZT_ICMP6_HOME_AGENT_ADDRESS_DISCOVERY_REQUEST: return "ICMP6_HOME_AGENT_ADDRESS_DISCOVERY_REQUEST";
case ZT_ICMP6_HOME_AGENT_ADDRESS_DISCOVERY_REPLY: return "ICMP6_HOME_AGENT_ADDRESS_DISCOVERY_REPLY";
case ZT_ICMP6_MOBILE_PREFIX_SOLICITATION: return "ICMP6_MOBILE_PREFIX_SOLICITATION";
case ZT_ICMP6_MOBILE_PREFIX_ADVERTISEMENT: return "ICMP6_MOBILE_PREFIX_ADVERTISEMENT";
case ZT_ICMP6_CERTIFICATION_PATH_SOLICITATION: return "ICMP6_CERTIFICATION_PATH_SOLICITATION";
case ZT_ICMP6_CERTIFICATION_PATH_ADVERTISEMENT: return "ICMP6_CERTIFICATION_PATH_ADVERTISEMENT";
case ZT_ICMP6_MULTICAST_ROUTER_ADVERTISEMENT: return "ICMP6_MULTICAST_ROUTER_ADVERTISEMENT";
case ZT_ICMP6_MULTICAST_ROUTER_SOLICITATION: return "ICMP6_MULTICAST_ROUTER_SOLICITATION";
case ZT_ICMP6_MULTICAST_ROUTER_TERMINATION: return "ICMP6_MULTICAST_ROUTER_TERMINATION";
case ZT_ICMP6_RPL_CONTROL_MESSAGE: return "ICMP6_RPL_CONTROL_MESSAGE";
}
return UNKNOWN_NAME;
}
} // namespace ZeroTier

View File

@ -1,284 +0,0 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
* Copyright (C) 2011-2014 ZeroTier Networks LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* --
*
* ZeroTier may be used and distributed under the terms of the GPLv3, which
* are available at: http://www.gnu.org/licenses/gpl-3.0.html
*
* If you would like to embed ZeroTier into a commercial application or
* redistribute it in a modified binary form, please contact ZeroTier Networks
* LLC. Start here: http://www.zerotier.com/
*/
#ifndef _ZT_FILTER_HPP
#define _ZT_FILTER_HPP
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <vector>
#include <utility>
#include <stdexcept>
#include "Range.hpp"
/* Ethernet frame types that might be relevant to us */
#define ZT_ETHERTYPE_IPV4 0x0800
#define ZT_ETHERTYPE_ARP 0x0806
#define ZT_ETHERTYPE_RARP 0x8035
#define ZT_ETHERTYPE_ATALK 0x809b
#define ZT_ETHERTYPE_AARP 0x80f3
#define ZT_ETHERTYPE_IPX_A 0x8137
#define ZT_ETHERTYPE_IPX_B 0x8138
#define ZT_ETHERTYPE_IPV6 0x86dd
/* IP protocols we might care about */
#define ZT_IPPROTO_ICMP 0x01
#define ZT_IPPROTO_IGMP 0x02
#define ZT_IPPROTO_TCP 0x06
#define ZT_IPPROTO_UDP 0x11
#define ZT_IPPROTO_GRE 0x2f
#define ZT_IPPROTO_ESP 0x32
#define ZT_IPPROTO_AH 0x33
#define ZT_IPPROTO_ICMPV6 0x3a
#define ZT_IPPROTO_OSPF 0x59
#define ZT_IPPROTO_IPIP 0x5e
#define ZT_IPPROTO_IPCOMP 0x6c
#define ZT_IPPROTO_L2TP 0x73
#define ZT_IPPROTO_SCTP 0x84
#define ZT_IPPROTO_FC 0x85
#define ZT_IPPROTO_UDPLITE 0x88
#define ZT_IPPROTO_HIP 0x8b
/* IPv4 ICMP types */
#define ZT_ICMP_ECHO_REPLY 0
#define ZT_ICMP_DESTINATION_UNREACHABLE 3
#define ZT_ICMP_SOURCE_QUENCH 4
#define ZT_ICMP_REDIRECT 5
#define ZT_ICMP_ALTERNATE_HOST_ADDRESS 6
#define ZT_ICMP_ECHO_REQUEST 8
#define ZT_ICMP_ROUTER_ADVERTISEMENT 9
#define ZT_ICMP_ROUTER_SOLICITATION 10
#define ZT_ICMP_TIME_EXCEEDED 11
#define ZT_ICMP_BAD_IP_HEADER 12
#define ZT_ICMP_TIMESTAMP 13
#define ZT_ICMP_TIMESTAMP_REPLY 14
#define ZT_ICMP_INFORMATION_REQUEST 15
#define ZT_ICMP_INFORMATION_REPLY 16
#define ZT_ICMP_ADDRESS_MASK_REQUEST 17
#define ZT_ICMP_ADDRESS_MASK_REPLY 18
#define ZT_ICMP_TRACEROUTE 30
#define ZT_ICMP_MOBILE_HOST_REDIRECT 32
#define ZT_ICMP_MOBILE_REGISTRATION_REQUEST 35
#define ZT_ICMP_MOBILE_REGISTRATION_REPLY 36
/* IPv6 ICMP types */
#define ZT_ICMP6_DESTINATION_UNREACHABLE 1
#define ZT_ICMP6_PACKET_TOO_BIG 2
#define ZT_ICMP6_TIME_EXCEEDED 3
#define ZT_ICMP6_PARAMETER_PROBLEM 4
#define ZT_ICMP6_ECHO_REQUEST 128
#define ZT_ICMP6_ECHO_REPLY 129
#define ZT_ICMP6_MULTICAST_LISTENER_QUERY 130
#define ZT_ICMP6_MULTICAST_LISTENER_REPORT 131
#define ZT_ICMP6_MULTICAST_LISTENER_DONE 132
#define ZT_ICMP6_ROUTER_SOLICITATION 133
#define ZT_ICMP6_ROUTER_ADVERTISEMENT 134
#define ZT_ICMP6_NEIGHBOR_SOLICITATION 135
#define ZT_ICMP6_NEIGHBOR_ADVERTISEMENT 136
#define ZT_ICMP6_REDIRECT_MESSAGE 137
#define ZT_ICMP6_ROUTER_RENUMBERING 138
#define ZT_ICMP6_NODE_INFORMATION_QUERY 139
#define ZT_ICMP6_NODE_INFORMATION_RESPONSE 140
#define ZT_ICMP6_INV_NEIGHBOR_SOLICITATION 141
#define ZT_ICMP6_INV_NEIGHBOR_ADVERTISEMENT 142
#define ZT_ICMP6_MLDV2 143
#define ZT_ICMP6_HOME_AGENT_ADDRESS_DISCOVERY_REQUEST 144
#define ZT_ICMP6_HOME_AGENT_ADDRESS_DISCOVERY_REPLY 145
#define ZT_ICMP6_MOBILE_PREFIX_SOLICITATION 146
#define ZT_ICMP6_MOBILE_PREFIX_ADVERTISEMENT 147
#define ZT_ICMP6_CERTIFICATION_PATH_SOLICITATION 148
#define ZT_ICMP6_CERTIFICATION_PATH_ADVERTISEMENT 149
#define ZT_ICMP6_MULTICAST_ROUTER_ADVERTISEMENT 151
#define ZT_ICMP6_MULTICAST_ROUTER_SOLICITATION 152
#define ZT_ICMP6_MULTICAST_ROUTER_TERMINATION 153
#define ZT_ICMP6_RPL_CONTROL_MESSAGE 155
namespace ZeroTier {
class RuntimeEnvironment;
/**
* A simple Ethernet frame level filter
*
* This doesn't specify actions, since it's used as a deny filter. The rule
* in ZT1 is "that which is not explicitly prohibited is allowed." (Except for
* ethertypes, which are handled by a whitelist.)
*/
class Filter
{
public:
/**
* Value returned by etherTypeName, etc. on unknown
*
* These static methods return precisely this, so a pointer equality
* check will work.
*/
static const char *const UNKNOWN_NAME;
/**
* An empty range as a more idiomatic way of specifying a wildcard match
*/
static const Range<unsigned int> ANY;
/**
* A filter rule
*/
class Rule
{
public:
Rule()
throw() :
_etherType(),
_protocol(),
_port()
{
}
/**
* Construct a rule from a string-serialized value
*
* @param s String formatted rule, such as returned by toString()
* @throws std::invalid_argument String formatted rule is not valid
*/
Rule(const char *s)
throw(std::invalid_argument);
/**
* Construct a new rule
*
* @param etype Ethernet type or empty range for ANY
* @param prot Protocol or empty range for ANY (meaning depends on ethertype, e.g. IP protocol numbers)
* @param prt Port or empty range for ANY (only applies to some protocols)
*/
Rule(const Range<unsigned int> &etype,const Range<unsigned int> &prot,const Range<unsigned int> &prt)
throw() :
_etherType(etype),
_protocol(prot),
_port(prt)
{
}
inline const Range<unsigned int> &etherType() const throw() { return _etherType; }
inline const Range<unsigned int> &protocol() const throw() { return _protocol; }
inline const Range<unsigned int> &port() const throw() { return _port; }
/**
* Test this rule against a frame
*
* @param etype Type of ethernet frame
* @param data Ethernet frame data
* @param len Length of ethernet frame
* @return True if rule matches
* @throws std::invalid_argument Frame invalid or not parseable
*/
bool operator()(unsigned int etype,const void *data,unsigned int len) const
throw(std::invalid_argument);
/**
* Serialize rule as string
*
* @return Human readable representation of rule
*/
std::string toString() const;
inline bool operator==(const Rule &r) const throw() { return ((_etherType == r._etherType)&&(_protocol == r._protocol)&&(_port == r._port)); }
inline bool operator!=(const Rule &r) const throw() { return !(*this == r); }
inline bool operator<(const Rule &r) const
throw()
{
if (_etherType < r._etherType)
return true;
else if (_etherType == r._etherType) {
if (_protocol < r._protocol)
return true;
else if (_protocol == r._protocol) {
if (_port < r._port)
return true;
}
}
return false;
}
inline bool operator>(const Rule &r) const throw() { return (r < *this); }
inline bool operator<=(const Rule &r) const throw() { return !(r < *this); }
inline bool operator>=(const Rule &r) const throw() { return !(*this < r); }
private:
Range<unsigned int> _etherType;
Range<unsigned int> _protocol;
Range<unsigned int> _port;
};
Filter() {}
/**
* @param s String-serialized filter representation
*/
Filter(const char *s)
throw(std::invalid_argument);
/**
* @return Comma-delimited list of string-format rules
*/
std::string toString() const;
/**
* Add a rule to this filter
*
* @param r Rule to add to filter
*/
void add(const Rule &r);
inline bool operator()(unsigned int etype,const void *data,unsigned int len) const
throw(std::invalid_argument)
{
for(std::vector<Rule>::const_iterator r(_rules.begin());r!=_rules.end();++r) {
if ((*r)(etype,data,len))
return true;
}
return false;
}
static const char *etherTypeName(const unsigned int etherType)
throw();
static const char *ipProtocolName(const unsigned int ipp)
throw();
static const char *icmpTypeName(const unsigned int icmpType)
throw();
static const char *icmp6TypeName(const unsigned int icmp6Type)
throw();
private:
std::vector<Rule> _rules;
};
} // namespace ZeroTier
#endif

View File

@ -0,0 +1,33 @@
ZeroTier Official Release Steps
======
This is mostly for ZeroTier internal use, but others who want to do builds might find it helpful.
Note: Many of these steps will require GPG and other signing keys that are kept in cold storage and must be mounted.
# Bumping the Version and Preparing Installers
The version must be incremented in all of the following files:
/version.h
/zerotier-one.spec
/debian/changelog
/ext/installfiles/mac/ZeroTier One.pkgproj
/ext/installfiles/windows/ZeroTier One.aip
/windows/WinUI/AboutView.xaml
The final .AIP file can only be edited on Windows with [Advanced Installer Enterprise](http://www.advancedinstaller.com/). In addition to incrementing the version be sure that a new product code is generated. (The "upgrade code" GUID on the other hand must never change.)
# Building for Supported Platforms
## Macintosh
Mac's easy. Just type:
make official
You will need [Packages](http://s.sudre.free.fr/Software/Packages/about.html) and our release signing key in the keychain.
## Windows
First load the Visual Studio solution and rebuild the UI and ZeroTier One in both x64 and i386 `Release` mode. Then load [Advanced Installer Enterprise](http://www.advancedinstaller.com/), check that the version is correct, and build. The build will fail if any build artifacts are missing, and Windows must have our product singing key (from DigiCert) available to sign the resulting MSI file. The MSI must then be tested on at least a few different CLEAN Windows VMs to ensure that the installer is valid and properly signed.

119
attic/PeerList.hpp Normal file
View File

@ -0,0 +1,119 @@
/*
* Copyright (c)2013-2020 ZeroTier, Inc.
*
* Use of this software is governed by the Business Source License included
* in the LICENSE.TXT file in the project's root directory.
*
* Change Date: 2025-01-01
*
* On the date above, in accordance with the Business Source License, use
* of this software will be governed by version 2.0 of the Apache License.
*/
/****/
#ifndef ZT_PEERLIST_HPP
#define ZT_PEERLIST_HPP
#include "Constants.hpp"
#include "SharedPtr.hpp"
#include "Peer.hpp"
namespace ZeroTier {
/**
* A list of peers
*
* This is a simple vector optimized for the case where there will almost always
* be zero or one element. In that case it doesn't allocate. If there's more than
* one element, it will grow to include all elements.
*
* It's used to return lookups in Topology where there will almost always be zero
* or one peers returned but where there technically (but very rarely) can be more.
*/
class PeerList
{
public:
ZT_INLINE PeerList() noexcept:
m_onePeer(),
m_peers(&m_onePeer),
m_peerCount(0)
{}
ZT_INLINE PeerList(const PeerList &pl)
{
const unsigned int pc = pl.m_peerCount;
if (likely(pc <= 1)) {
m_onePeer = pl.m_onePeer;
m_peers = &m_onePeer;
} else {
m_peers = new SharedPtr<Peer>[pc];
for (unsigned int i = 0;i < pc;++i)
m_peers[i] = pl.m_peers[i];
}
m_peerCount = pc;
}
ZT_INLINE ~PeerList()
{
if (unlikely(m_peers != &m_onePeer))
delete[] m_peers;
}
ZT_INLINE PeerList &operator=(const PeerList &pl)
{
if (&pl != this) {
if (unlikely(m_peers != &m_onePeer))
delete[] m_peers;
if (likely(pl.m_peerCount <= 1)) {
m_onePeer = pl.m_onePeer;
m_peers = &m_onePeer;
} else {
m_onePeer.zero();
m_peers = new SharedPtr<Peer>[pl.m_peerCount];
for (unsigned int i = 0;i < pl.m_peerCount;++i)
m_peers[i] = pl.m_peers[i];
}
m_peerCount = pl.m_peerCount;
}
return *this;
}
/**
* Resize the peer list to store a given number of members
*
* To populate the list, this must be called first followed by each member
* being set with the [] operator. List content after this call is undefined
* and may contain old data if the object is being re-used.
*
* @param s New size of list
*/
ZT_INLINE void resize(const unsigned int s)
{
if (unlikely(m_peers != &m_onePeer))
delete[] m_peers;
m_peerCount = s;
if (likely(s <= 1)) {
m_peers = &m_onePeer;
} else {
m_peers = new SharedPtr<Peer>[s];
}
}
ZT_INLINE SharedPtr <Peer> &operator[](const unsigned int i) noexcept
{ return m_peers[i]; }
ZT_INLINE const SharedPtr <Peer> &operator[](const unsigned int i) const noexcept
{ return m_peers[i]; }
ZT_INLINE unsigned int size() const noexcept
{ return m_peerCount; }
private:
SharedPtr <Peer> m_onePeer;
SharedPtr <Peer> *m_peers;
unsigned int m_peerCount;
};
} // namespace ZeroTier
#endif

View File

@ -1,2 +0,0 @@
This directory is for old code that isn't used but we don't want to lose
track of, and for anything else random like debug scripts.

View File

@ -1,123 +0,0 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
* Copyright (C) 2011-2014 ZeroTier Networks LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* --
*
* ZeroTier may be used and distributed under the terms of the GPLv3, which
* are available at: http://www.gnu.org/licenses/gpl-3.0.html
*
* If you would like to embed ZeroTier into a commercial application or
* redistribute it in a modified binary form, please contact ZeroTier Networks
* LLC. Start here: http://www.zerotier.com/
*/
#ifndef _ZT_RANGE_HPP
#define _ZT_RANGE_HPP
namespace ZeroTier {
/**
* A range of numeric values
*
* @tparam T Type, can be any numeric value (int, float, double, etc.)
*/
template<typename T>
class Range
{
public:
/**
* Construct an empty range
*/
Range()
throw() :
start(0),
end(0)
{
}
/**
* @param s Starting value (inclusive)
* @param e Ending value (exclusive)
*/
Range(T s,T e)
throw() :
start(s),
end(e)
{
}
/**
* Construct a range containing from n to n+1 (thus only n for integers)
*
* @param n Number to contain
*/
Range(T n)
throw() :
start(n),
end(n+1)
{
}
/**
* @return end - start
*/
inline T magnitude() const
throw()
{
return (end - start);
}
/**
* @return True if range contains something (magnitude is nonzero)
*/
inline operator bool() const
throw()
{
return (end > start);
}
/**
* @param v Value to test
* @return True if value is between start (inclusive) and end (exclusive)
*/
inline bool operator()(const T &v) const
throw()
{
return ((v >= start)&&(v < end));
}
inline bool operator==(const Range &r) const throw() { return ((start == r.start)&&(end == r.end)); }
inline bool operator!=(const Range &r) const throw() { return (!(*this == r)); }
inline bool operator<(const Range &r) const throw() { return ((start < r.start) ? true : ((start == r.start) ? (end < r.end) : false)); }
inline bool operator>(const Range &r) const throw() { return (r < *this); }
inline bool operator<=(const Range &r) const throw() { return !(r < *this); }
inline bool operator>=(const Range &r) const throw() { return !(*this < r); }
/**
* Start of range (may be modified directly)
*/
T start;
/**
* End of range (may be modified directly)
*/
T end;
};
} // namespace ZeroTier
#endif

View File

@ -0,0 +1,26 @@
# Dockerfile for ZeroTier Central Controllers
FROM centos:7 as builder
MAINTAINER Adam Ierymekno <adam.ierymenko@zerotier.com>, Grant Limberg <grant.limberg@zerotier.com>
ARG git_branch=master
RUN yum update -y
RUN yum install -y https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
RUN yum -y install epel-release && yum -y update && yum clean all
RUN yum groupinstall -y "Development Tools"
RUN yum install -y bash postgresql10 postgresql10-devel libpqxx-devel glibc-static libstdc++-static clang jemalloc jemalloc-devel
RUN git clone http://git.int.zerotier.com/zerotier/ZeroTierOne.git
RUN if [ "$git_branch" != "master" ]; then cd ZeroTierOne && git checkout -b $git_branch origin/$git_branch; fi
RUN ldconfig
RUN cd ZeroTierOne && make central-controller
FROM centos:7
COPY --from=builder /ZeroTierOne/zerotier-one /usr/local/bin/zerotier-one
RUN chmod a+x /usr/local/bin/zerotier-one
ADD ext/central-controller-docker/main.sh /
RUN chmod a+x /main.sh
ENTRYPOINT /main.sh

View File

@ -0,0 +1,3 @@
# ZeroTier Central Controller Docker Image
Dockerfile & startup script for use with [ZeroTier Central](https://my.zerotier.com). Not intended for public use.

View File

@ -0,0 +1,80 @@
#!/bin/bash
if [ -z "$ZT_IDENTITY_PATH" ]; then
echo '*** FAILED: ZT_IDENTITY_PATH environment variable is not defined'
exit 1
fi
if [ -z "$ZT_DB_HOST" ]; then
echo '*** FAILED: ZT_DB_HOST environment variable not defined'
exit 1
fi
if [ -z "$ZT_DB_PORT" ]; then
echo '*** FAILED: ZT_DB_PORT environment variable not defined'
exit 1
fi
if [ -z "$ZT_DB_NAME" ]; then
echo '*** FAILED: ZT_DB_NAME environment variable not defined'
exit 1
fi
if [ -z "$ZT_DB_USER" ]; then
echo '*** FAILED: ZT_DB_USER environment variable not defined'
exit 1
fi
if [ -z "$ZT_DB_PASSWORD" ]; then
echo '*** FAILED: ZT_DB_PASSWORD environment variable not defined'
exit 1
fi
RMQ=""
if [ "$ZT_USE_RABBITMQ" == "true" ]; then
if [ -z "$RABBITMQ_HOST" ]; then
echo '*** FAILED: RABBITMQ_HOST environment variable not defined'
exit 1
fi
if [ -z "$RABBITMQ_PORT" ]; then
echo '*** FAILED: RABBITMQ_PORT environment variable not defined'
exit 1
fi
if [ -z "$RABBITMQ_USERNAME" ]; then
echo '*** FAILED: RABBITMQ_USERNAME environment variable not defined'
exit 1
fi
if [ -z "$RABBITMQ_PASSWORD" ]; then
echo '*** FAILED: RABBITMQ_PASSWORD environment variable not defined'
exit 1
fi
RMQ=", \"rabbitmq\": {
\"host\": \"${RABBITMQ_HOST}\",
\"port\": ${RABBITMQ_PORT},
\"username\": \"${RABBITMQ_USERNAME}\",
\"password\": \"${RABBITMQ_PASSWORD}\"
}"
fi
mkdir -p /var/lib/zerotier-one
pushd /var/lib/zerotier-one
ln -s $ZT_IDENTITY_PATH/identity.public identity.public
ln -s $ZT_IDENTITY_PATH/identity.secret identity.secret
popd
DEFAULT_PORT=9993
echo "{
\"settings\": {
\"portMappingEnabled\": true,
\"softwareUpdate\": \"disable\",
\"interfacePrefixBlacklist\": [
\"inot\",
\"nat64\"
],
\"controllerDbPath\": \"postgres:host=${ZT_DB_HOST} port=${ZT_DB_PORT} dbname=${ZT_DB_NAME} user=${ZT_DB_USER} password=${ZT_DB_PASSWORD} sslmode=prefer sslcert=${DB_CLIENT_CERT} sslkey=${DB_CLIENT_KEY} sslrootcert=${DB_SERVER_CA}\"
${RMQ}
}
}
" > /var/lib/zerotier-one/local.conf
export GLIBCXX_FORCE_NEW=1
export GLIBCPP_FORCE_NEW=1
export LD_PRELOAD="/usr/lib64/libjemalloc.so"
exec /usr/local/bin/zerotier-one -p${ZT_CONTROLLER_PORT:-$DEFAULT_PORT} /var/lib/zerotier-one

9
attic/cycle_controllers.sh Executable file
View File

@ -0,0 +1,9 @@
#!/usr/bin/env bash
CONTROLLERS=`kubectl get pods -o=name | grep controller | sed "s/^.\{4\}//"`
for c in ${CONTROLLERS[@]}
do
kubectl delete pod ${c}
sleep 30
done

116
attic/debian/changelog Normal file
View File

@ -0,0 +1,116 @@
zerotier-one (1.4.6) unstable; urgency=medium
* Update default root server list
* Fix build flags on "armhf" (32-bit ARM) platforms for better
compatibility with Pi Zero and other devices.
* Fix license text in one.cpp.
* Add a clarification to LICENSE.txt.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Fri, 30 Aug 2019 01:00:00 -0700
zerotier-one (1.4.4) unstable; urgency=medium
* See https://github.com/zerotier/ZeroTierOne for release notes.
* License changed to BSL 1.1
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Fri, 23 Aug 2019 01:00:00 -0700
zerotier-one (1.4.2-2) unstable; urgency=medium
* See https://github.com/zerotier/ZeroTierOne for release notes.
* This is a new build that fixes a binary build issue with containers and SELinux
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Thu, 04 Aug 2019 01:00:00 -0700
zerotier-one (1.4.2) unstable; urgency=medium
* See https://github.com/zerotier/ZeroTierOne for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Thu, 04 Aug 2019 01:00:00 -0700
zerotier-one (1.4.0) unstable; urgency=medium
* See https://github.com/zerotier/ZeroTierOne for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Thu, 29 Jul 2019 01:00:00 -0700
zerotier-one (1.2.12) unstable; urgency=medium
* See https://github.com/zerotier/ZeroTierOne for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Tue, 25 Jul 2018 01:00:00 -0700
zerotier-one (1.2.10) unstable; urgency=medium
* See https://github.com/zerotier/ZeroTierOne for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Tue, 08 May 2018 01:00:00 -0700
zerotier-one (1.2.8) unstable; urgency=medium
* See https://github.com/zerotier/ZeroTierOne for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Tue, 27 Apr 2018 01:00:00 -0700
zerotier-one (1.2.6) unstable; urgency=medium
* See https://github.com/zerotier/ZeroTierOne for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Tue, 17 Apr 2018 01:00:00 -0700
zerotier-one (1.2.4) unstable; urgency=medium
* See https://github.com/zerotier/ZeroTierOne for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Mon, 24 Mar 2017 01:00:00 -0700
zerotier-one (1.2.2) unstable; urgency=medium
* See https://github.com/zerotier/ZeroTierOne for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Fri, 17 Mar 2017 01:00:00 -0700
zerotier-one (1.2.0) unstable; urgency=medium
* See https://github.com/zerotier/ZeroTierOne for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Tue, 14 Mar 2017 09:08:00 -0700
zerotier-one (1.1.14) unstable; urgency=medium
* See https://github.com/zerotier/ZeroTierOne for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Tue, 21 Jul 2016 07:14:12 -0700
zerotier-one (1.1.12) unstable; urgency=medium
* See https://github.com/zerotier/ZeroTierOne for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Tue, 12 Jul 2016 03:02:22 -0700
zerotier-one (1.1.10) unstable; urgency=medium
* See https://github.com/zerotier/ZeroTierOne for release notes.
* ZeroTier Debian packages no longer depend on http-parser since its ABI is too unstable.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Tue, 12 Jul 2016 12:29:00 -0700
zerotier-one (1.1.8) unstable; urgency=low
* See https://github.com/zerotier/ZeroTierOne for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Fri, 08 Jul 2016 01:56:00 -0700
zerotier-one (1.1.6) unstable; urgency=medium
* First Debian release on ZeroTier, Inc. private apt repository.
* See https://github.com/zerotier/ZeroTierOne for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Fri, 24 Jun 2016 10:00:00 -0700
zerotier-one (1.1.5) UNRELEASED; urgency=medium
* Development package -- first clean Debian packaging test.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Wed, 08 Jun 2016 10:05:01 -0700

1
attic/debian/compat Normal file
View File

@ -0,0 +1 @@
8

19
attic/debian/control Normal file
View File

@ -0,0 +1,19 @@
Source: zerotier-one
Maintainer: Adam Ierymenko <adam.ierymenko@zerotier.com>
Section: net
Priority: optional
Standards-Version: 3.9.6
Build-Depends: debhelper (>= 9)
Vcs-Git: git://github.com/zerotier/ZeroTierOne
Vcs-Browser: https://github.com/zerotier/ZeroTierOne
Homepage: https://www.zerotier.com/
Package: zerotier-one
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, iproute2, adduser, libstdc++6
Homepage: https://www.zerotier.com/
Description: ZeroTier network virtualization service
ZeroTier One lets you join ZeroTier virtual networks and
have them appear as tun/tap ports on your system. See
https://www.zerotier.com/ for instructions and
documentation.

View File

@ -0,0 +1,19 @@
Source: zerotier-one
Maintainer: Adam Ierymenko <adam.ierymenko@zerotier.com>
Section: net
Priority: optional
Standards-Version: 3.9.4
Build-Depends: debhelper
Vcs-Git: git://github.com/zerotier/ZeroTierOne
Vcs-Browser: https://github.com/zerotier/ZeroTierOne
Homepage: https://www.zerotier.com/
Package: zerotier-one
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, iproute, libstdc++6
Homepage: https://www.zerotier.com/
Description: ZeroTier network virtualization service
ZeroTier One lets you join ZeroTier virtual networks and
have them appear as tun/tap ports on your system. See
https://www.zerotier.com/ for instructions and
documentation.

18
attic/debian/copyright Normal file
View File

@ -0,0 +1,18 @@
Format: http://dep.debian.net/deps/dep5
Upstream-Name: zerotier-one
Source: https://github.com/zerotier/ZeroTierOne
Files: *
Copyright: 2011-2016 ZeroTier, Inc.
License: ZeroTier BSL 1.1
License: ZeroTier BSL 1.1
Copyright (c)2019 ZeroTier, Inc.
Use of this software is governed by the Business Source License included
in the LICENSE.TXT file in the project's root directory.
Change Date: 2023-01-01
On the date above, in accordance with the Business Source License, use
of this software will be governed by version 2.0 of the Apache License.

11
attic/debian/postinst Normal file
View File

@ -0,0 +1,11 @@
#!/bin/sh -e
case "$1" in
configure)
if ! id zerotier-one >>/dev/null 2>&1; then
useradd --system --user-group --home-dir /var/lib/zerotier-one --no-create-home zerotier-one
fi
;;
esac
#DEBHELPER#

16
attic/debian/rules Executable file
View File

@ -0,0 +1,16 @@
#!/usr/bin/make -f
CFLAGS=-O3 -fstack-protector-strong
CXXFLAGS=-O3 -fstack-protector-strong
%:
dh $@ --with systemd
override_dh_auto_build:
make -j 4
override_dh_systemd_start:
dh_systemd_start --restart-after-upgrade
override_dh_installinit:
dh_installinit --name=zerotier-one -- defaults

16
attic/debian/rules.static Normal file
View File

@ -0,0 +1,16 @@
#!/usr/bin/make -f
CFLAGS=-O3 -fstack-protector-strong
CXXFLAGS=-O3 -fstack-protector-strong
%:
dh $@ --with systemd
override_dh_auto_build:
# make -j 2
override_dh_systemd_start:
dh_systemd_start --restart-after-upgrade
override_dh_installinit:
dh_installinit --name=zerotier-one -- defaults

11
attic/debian/rules.wheezy Executable file
View File

@ -0,0 +1,11 @@
#!/usr/bin/make -f
CFLAGS=-O3 -fstack-protector
CXXFLAGS=-O3 -fstack-protector
%:
dh $@
override_dh_auto_build:
make -j 2

View File

@ -0,0 +1,11 @@
#!/usr/bin/make -f
CFLAGS=-O3 -fstack-protector
CXXFLAGS=-O3 -fstack-protector
%:
dh $@
override_dh_auto_build:
# make -j 2

View File

@ -0,0 +1 @@
3.0 (quilt)

View File

@ -0,0 +1,4 @@
[zerotier-one]
title=ZeroTier One
description=A planetary Ethernet switch
ports=9993/udp

View File

@ -0,0 +1,49 @@
#!/bin/sh
### BEGIN INIT INFO
# Provides: zerotier-one
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: ZeroTier One network virtualization service
### END INIT INFO
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DESC="zerotier-one daemon"
NAME=zerotier-one
DAEMON=/usr/sbin/zerotier-one
PIDFILE=/var/lib/zerotier-one/zerotier-one.pid
SCRIPTNAME=/etc/init.d/"$NAME"
EXTRA_OPTS=-d
test -f $DAEMON || exit 0
. /lib/lsb/init-functions
case "$1" in
start) log_daemon_msg "Starting ZeroTier One" "zerotier-one"
start_daemon -p $PIDFILE $DAEMON $EXTRA_OPTS
log_end_msg $?
;;
stop) log_daemon_msg "Stopping ZeroTier One" "zerotier-one"
killproc -p $PIDFILE $DAEMON
RETVAL=$?
[ $RETVAL -eq 0 ] && [ -e "$PIDFILE" ] && rm -f $PIDFILE
log_end_msg $RETVAL
;;
restart) log_daemon_msg "Restarting ZeroTier One" "zerotier-one"
$0 stop
$0 start
;;
reload|force-reload) log_daemon_msg "Reloading ZeroTier One" "zerotier-one"
log_end_msg 0
;;
status)
status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
;;
*) log_action_msg "Usage: /etc/init.d/cron {start|stop|status|restart|reload|force-reload}"
exit 2
;;
esac
exit 0

View File

@ -1,9 +1,10 @@
[Unit]
Description=ZeroTier One
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/var/lib/zerotier-one/zerotier-one
ExecStart=/usr/sbin/zerotier-one
Restart=always
KillMode=process

View File

@ -0,0 +1,14 @@
description "ZeroTier One upstart startup script"
author "Adam Ierymenko <adam.ierymenko@zerotier.com>"
start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]
respawn
respawn limit 2 300
#pre-start script
#end script
exec /usr/sbin/zerotier-one

BIN
attic/doc/2015-GCM-SIV.pdf Normal file

Binary file not shown.

BIN
attic/doc/AES-GMAC-SIV.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

6
attic/doc/README.md Normal file
View File

@ -0,0 +1,6 @@
Manual Pages and Other Documentation
=====
Use "./build.sh" to build the manual pages.
You'll need either NodeJS/npm installed (script will then automatically install the npm *marked-man* package) or */usr/bin/ronn*. The latter is a Ruby program packaged on some distributions as *rubygem-ronn* or *ruby-ronn* or installable as *gem install ronn*. The Node *marked-man* package and *ronn* from rubygems are two roughly equivalent alternatives for compiling MarkDown into roff/man format.

149
attic/doc/SECURITY.md Normal file
View File

@ -0,0 +1,149 @@
ZeroTier security and cryptographic design
=======
(c)2020 ZeroTier, Inc.
Author(s): Adam Ierymenko <adam@zerotier.com>
# Introduction
This document describes the core components of ZeroTier's cryptographic and security architecture. It focuses primarily on version 2.0 and only briefly touches on v1.x constructions that are being phased out.
The intended audience for this document is developers, auditors, and security professionals wishing to understand ZeroTier's design from a security posture point of view. It's also written to serve as the basis for professional security audits of the ZeroTier protocol and code base.
## High-Level Protocol Design
ZeroTier's protocol is split into two conceptual layers that we term **VL1** and **VL2**.
VL1 stands for *virtual layer 1* and is a cryptographically addressed secure global peer-to-peer network responsible for moving packets between ZeroTier nodes. It's a virtual analogue of the physical wire or radio transciever in an Ethernet or WiFi network respectively. Think of it as a gigantic wire closet for planet Earth.
VL2 stands for *virtual layer 2* and is a full Ethernet emulation layer incorporating cryptographic certificate and token based access control. It is similar (but not identical) to other Ethernet virtualization protocols like VXLAN. VL2 is conceptually separate from VL1 but for the sake of simplicity and ease of use leverages VL1's cryptographic infrastructure for its own authentication needs.
## VL1 Asymmetric Cryptography: Identities, and Addressing
VL1 peers are cryptographically addressed, meaning addresses are strongly bound to public keys. Cryptographic addressing is extremely convenient in peer-to-peer networks as it leverages authenticated (AEAD) encryption to implicity authenticate endpoint addresses.
A ZeroTier identity is comprised of one or more cryptographic public keys and a short **ZeroTier address** derived from a hash of those keys. In addition to this short address there also exists a longer fingerprint in the form of a SHA-384 hash of identity public key(s).
#### Identity Types and Corresponding Algorithms
* **Type 0** (v1.x and v2.x): one Curve25519 key for elliptic curve Diffie-Hellman and one Ed25519 key for Ed25519 signatures, with the address and fingerprint computed from a hash of both.
* **Type 1** (v2.x only): Curve25519, Ed25519, and NIST P-384 public keys, with the latter being used for signatures (the Ed25519 key is still there but is presently unused) and with *both* Curve25519 and NIST P-384 being used for elliptic curve Diffie-Hellman key agreement. In key agreement the resulting raw secret keys are hashed together using SHA-384 to combine them and yield a single session key.
Session keys resulting from identity key exchange and agreement are *long-lived keys* that remain static for the lifetime of a particular pair of identities. A different mechanism is used for ephemeral key negotiation.
#### ZeroTier Addresses and Identity Fingerprints
In the simplest form of cryptographic addressing, keys are used directly as addresses throughout the system. Unfortunately even public key cryptosystems with short keys like Curve25519 still result in string representations that are prohibitively long for human beings to type. ZeroTier mitigates this usability problem by using a short hash of the public key termed a **ZeroTier address** to refer to a peer's full identity. This short address is also used at the wire level to reduce the size of the packet header. Peers may request full identities based on addresses from from root servers.
ZeroTier addresses are very short: only 40 bits or 10 hexadecimal digits, e.g. `89e92ceee5.` This makes them convenient to type, but such a short hash would in a naive implementation introduce a significant risk that an attacker could create a duplicate identity with a different key pair but the same address. With 40 bits an intentional collision would require only an average of about 549,755,813,888 attempts for a 50% chance of colliding. If an attempt requires 0.5ms of CPU time on a typical contemporary desktop or server CPU, this would require about 3,000 CPU-days. Since this type of search is easy to parallelize, it would take only a few days for someone with access to a few thousand CPU cores.
To provide this short hash with a larger security margin, an intentionally slow one-way "hashcash" or "proof of work" function is required during identity generation. This work function is slow to compute but fast to verify, and an address is not valid unless its work checks out. This gives identity address derivation the following costs:
* Type 1 identities: an average of about 500ms per key pair per typical 2.4ghz CPU core, requiring around 3 million CPU-days to reach a 50% collision probability.
* Type 2 identities: an average of about one second per key pair per typical 2.4ghz CPU core, requiring around 6.3 million CPU-days to reach a 50% collision probability.
While too costly for the vast majority of attackers, this cost may not be prohibitive to a nation-state level attacker or to a criminal with significant funds and/or access to a very large "botnet." It's also possible that FPGA, GPU, or ASIC acceleration could be leveraged to decrease this time in a manner similar to what's been accomplished in the area of cryptocurrency mining.
Fingerprints are full SHA-384 hashes of identity public keys. In base32-encoding they look like this:
```
bzg7fc3sn46fzyxcxw2ev4c4m2u5fyisb3o4wz5hfmvexbzwk6et3fsglkdcn6nnjobxi3bq7hgxqox3n4u4k
```
These are too large to type but not to copy/paste, store in databases, or use in scripts and APIs.
Once a device has joined a network, network controllers will remember and check its full identity or identity fingerprint (depending on implementation) rather than just the device's ZeroTier address.
## VL1 Wire Protocol
ZeroTier's wire protocol is packet based with packets having the following format:
```
[0:8] 64-bit packet ID and cryptographic nonce
[8:13] 40-bit destination ZeroTier address
[13:18] 40-bit source ZeroTier address
[18:19] 8-bit cleartext flags, cipher, and hop count (bits: FFCCCHHH)
[19:27] 64-bit message authentication code (MAC)
-- BEGIN ENCRYPTED SECTION --
[27:28] 8-bit inner flags and 5-bit protocol verb (bits: FFFVVVVV)
[28:...] Verb-specific packet payload
```
All fields (both those that remain cleartext and those that are encrypted) in a packet are authenticated except for the last three "hops" bits of the combined flags/cipher/hops field. These are masked to zero during MAC computation and verification. This is because the hops field is the only field that can be modified by third party peers in transit. It's incremented whenever a packet is forwarded by a root server or connectivity-assisting peer and is checked against a limit to prevent infinite forwarding loops.
Packets can be up to 16,384 bytes in size. Since the most common transport is UDP and this transport does not reliably support fragmentation, ZeroTier implements its own packet fragmentation and re-assembly scheme using fragments with the following wire format:
```
[0:8] 64-bit packet ID of packet of which this is a fragment
[8:13] 40-bit destination ZeroTier address
[13:14] 0xff here indicates a fragment since addresses cannot start with this byte
[14:15] 4-bit total fragments and 4-bit fragment number (bits: TTTTNNNN)
[15:16] 5 reserved bits, 3-bit hop count (bits: rrrrrHHH)
[16:...] Fragment data
```
A fragmented packet is indicated by the presence of the flag 0x40 in its cleartext flags field. If this flag is present the receiver must expect the receipt of one or more fragments in addition to the packet's header and first fragment. The total number of fragments expected is not contained in the header but will be contained within each subsequent fragment. If a fragment is received prior to its head, it's held in the event that its head arrives as the protocol does support out of order receipt of fragments.
Fragmentation can be effectively ignored from a security point of view (with the exception of denial of service concerns, which are mitigated by way of limits and heuristics in the code) since packet message authentication codes are checked at the packet level. Any improperly fragmented packet will fail cryptographic MAC check and be discarded.
*Legacy: In v1.x the packet ID and nonce field was assigned from a counter maintained to avoid duplicate nonce assignment and the MAC field was the first 64 bits of a Poly1305 MAC of the packet. The overall construction was identical in form to the NaCl Salsa20/Poly1305 "secret box" construction in which the first 32 bytes of Salsa20 output are used as a one-time Poly1305 key for each packet.*
In v2.x the packet ID and MAC field are in reality a single split 128-bit encrypted nonce and MAC field. See AES-GMAC-SIV below.
## Symmetric Encryption: AES-GMAC-SIV
**This is a draft and may change based on peer review and feedback.**
In v1.x there is a risk of nonce re-use due in part to the small size of the MAC and in part to the way ZeroTier is used. More specifically the risk arises when ZeroTier VMs are cloned or ZeroTier is used on small devices that have the potential to lack both accurate timekeeping and native strong random sources.
Salsa20 was used in v1.x since at the time the protocol was initially designed AES acceleration was not available on most mobile phones, embedded chips, and small ARM processors such as those use on Raspberry Pi and similar devices. This is no longer the case.
For v2.x our design has three objectives:
- Make use of FIPS140-compliant cryptographic primitives that would be available in a FIPS140-ceritified library (e.g. a FIPS build of crypto++ or openssl libcrypto), and use them in a way that could pass FIPS/NIST/NSA review.
- Use AES with hardware acceleration for extremely high performance processors with AES hardware acceleration, which is most non-trivial CPUs today.
- Incorporate some form of nonce-reuse-resistance to reduce the risk of duplicate nonces when virtual machines are cloned or on small devices, and to mitigate the short MAC.
The proposed AES-GMAC-SIV construction attempts to achieve all these objectives by using GMAC combined with AES-CTR (both FIPS140 primitives) in a way that achieves the security bounds and characteristics of AES-GCM-SIV but could be certified as FIPS compliant. The design is almost identical to another proposed mode called AES-GCM-SIV except that GMAC is used "as-is" for FIPS-certifiability reasons.
#### AES-GMAC-SIV Session Setup
For each new session key, derive two sub-keys **K0** and **K1** using a key derivation function such as KBKDF-HMAC-SHA384.
#### AES-GMAC-SIV Encryption
<img src="AES-GMAC-SIV.png">
As with all other SIV (synthetic IV) modes of operation, encryption requires two passes. Since messages are small in our system it's very likely that the second pass would be operating on data already in CPU L0 cache, reducing the additional overhead of this two-pass requirement.
1. Generate a new unique 64-bit packet ID in the same manner as v1.x.
2. Expand this 64-bit ID to a 96-bit AES-GMAC nonce by padding the remainder with the size of the packet in bytes and the direction of communication (sender > recipient or recipient > sender). This adds a small amount of additional entropy taken from characteristics of the packet.
3. Using session sub-key **K0** compute AES-GMAC(K0, plaintext) to yield a 128-bit GMAC tag.
4. Take the first 64 bits of this 128-bit GMAC tag and append it to the 64-bit packet ID generated in step 1 to yield a 128-bit combined nonce+MAC field.
5. Obtain a 128-bit AES-CTR nonce by encrypting this 128-bit combined nonce+MAC field as a single AES block using **K1**. This is done because GMAC alone is not a cryptographic PRF (pseudo-random function) and we want to ensure that we destroy any algebraic structure before using it with AES-CTR.
6. Using the encrypted nonce+MAC field as a 128-bit nonce, encrypt the encrypted section of the packet with AES-CTR. This is also done using **K1**, meaning that the first block of CTR padding data is actually AES(K1,AES(K1,nonce+MAC)).
7. Encrypt the 128-bit AES-CTR nonce again as a single AES block using **K0** to yield a final encrypted 128-bit combined nonce and MAC. *(Question for peer review: does this step have any attack-mitigating value? AES-CTR does not require that its nonce/IV be a secret.)*
8. Split this final encrypted nonce+IV into two 64-bit chunks, replacing the packet ID with one and placing the other in the packet MAC field.
#### AES-GMAC-SIV Decryption
Unlike encryption, SIV decryption can be performed in a single pass if there is a performance benefit to doing so.
1. Re-combine the packet ID and MAC fields into a single 128-bit block.
2. Decrypt this block with AES using **K0** to yield the AES-CTR nonce.
3. Decrypt the packet using AES-CTR with **K1**.
4. Decrypt the 128-bit AES-CTR nonce field *again* as a single AES block using **K1** to obtain the original packet nonce and 64-bit truncated GMAC tag.
5. Expand the 64-bit packet ID / nonce into a 96-bit GMAC nonce as in encryption step 2.
6. Compute AES-GMAC(K0,plaintext) as in encryption step 3.
7. Verify that the first 64 bytes of the resulting GMAC tag equals the tag (last 64 bits) obtained in decryption step 4 and discard the packet if they do not match.
#### Discussion
Most standard stream cipher modes such as AES-GCM or Salsa20/Poly1305 require that message nonce/IV values are never duplicated for the same session key. Since these stream modes generate key streams that are simply XORed with message plaintext, nonce duplication reveals the plaintext of both messages for which the nonce is duplicated due to the commutativity of the XOR operation. It may also allow the MAC (GMAC or Poly1305) itself to be attacked in such a way as to enable message forgery.
SIV modes mitigate these attacks by making the actual cryptographic nonce used for stream encryption dependent on the content of the message. If a nonce is repeated when two messages differ, ciphertext will still be unique unless a MAC collision also occurs. The chance of this is quite small, only 1/2^64 in our system for any given pair of repeated nonce values. If a repeated nonce occurs and both messages are the same, the protocol will leak only the fact that a message was repeated. The actual plaintext and MAC are not compromised.
Our AES-GMAC-SIV mode is almost identical to a proposed mode called [AES-GCM-SIV](https://cyber.biu.ac.il/aes-gcm-siv/). The proposed AES-GCM-SIV mode uses a variant of GMAC called POLYVAL with very minor performance improvements while ours retains standard GMAC for compatibility with existing standards and libraries. We call our mode AES-GMAC-SIV to distinguish it.
*Question for peer review: both GMAC and AES-CTR are FIPS140 approved primitives, and the use of AES-CTR with an approved MAC is permitted. Is it actually feasible that this could be FIPS certified if it were documented in a correct and "strategic" way? It would be described as GMAC authenticated AES-CTR with the CTR IV being constructed via keyed hash (AES) from an initial plaintext IV and a "salt" taken from the MAC, or some similar description.*

42
attic/doc/build.sh Executable file
View File

@ -0,0 +1,42 @@
#!/bin/bash
export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin
if [ ! -f zerotier-cli.1.md ]; then
echo 'This script must be run from the doc/ subfolder of the ZeroTier tree.'
fi
rm -f *.1 *.2 *.8
if [ -e /usr/bin/ronn -o -e /usr/local/bin/ronn ]; then
# Use 'ronn' which is available as a package on many distros including Debian
ronn -r zerotier-cli.1.md
ronn -r zerotier-idtool.1.md
ronn -r zerotier-one.8.md
else
# Use 'marked-man' from npm
NODE=/usr/bin/node
if [ ! -e $NODE ]; then
if [ -e /usr/bin/nodejs ]; then
NODE=/usr/bin/nodejs
elif [ -e /usr/local/bin/node ]; then
NODE=/usr/local/bin/node
elif [ -e /usr/local/bin/nodejs ]; then
NODE=/usr/local/bin/nodejs
else
echo 'Unable to find ronn or node/npm -- cannot build man pages!'
exit 1
fi
fi
if [ ! -f node_modules/marked-man/bin/marked-man ]; then
echo 'Installing npm package "marked-man" -- MarkDown to ROFF converter...'
npm install marked-man
fi
$NODE node_modules/marked-man/bin/marked-man zerotier-cli.1.md >zerotier-cli.1
$NODE node_modules/marked-man/bin/marked-man zerotier-idtool.1.md >zerotier-idtool.1
$NODE node_modules/marked-man/bin/marked-man zerotier-one.8.md >zerotier-one.8
fi
exit 0

View File

@ -0,0 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: GPGTools - https://gpgtools.org
mQINBFdQq7oBEADEVhyRiaL8dEjMPlI/idO8tA7adjhfvejxrJ3Axxi9YIuIKhWU
5hNjDjZAiV9iSCMfJN3TjC3EDA+7nFyU6nDKeAMkXPbaPk7ti+Tb1nA4TJsBfBlm
CC14aGWLItpp8sI00FUzorxLWRmU4kOkrRUJCq2kAMzbYWmHs0hHkWmvj8gGu6mJ
WU3sDIjvdsm3hlgtqr9grPEnj+gA7xetGs3oIfp6YDKymGAV49HZmVAvSeoqfL1p
pEKlNQ1aO9uNfHLdx6+4pS1miyo7D1s7ru2IcqhTDhg40cHTL/VldC3d8vXRFLIi
Uo2tFZ6J1jyQP5c1K4rTpw3UNVne3ob7uCME+T1+ePeuM5Y/cpcCvAhJhO0rrlr0
dP3lOKrVdZg4qhtFAspC85ivcuxWNWnfTOBrgnvxCA1fmBX+MLNUEDsuu55LBNQT
5+WyrSchSlsczq+9EdomILhixUflDCShHs+Efvh7li6Pg56fwjEfj9DJYFhRvEvQ
7GZ7xtysFzx4AYD4/g5kCDsMTbc9W4Jv+JrMt3JsXt2zqwI0P4R1cIAu0J6OZ4Xa
dJ7Ci1WisQuJRcCUtBTUxcYAClNGeors5Nhl4zDrNIM7zIJp+GfPYdWKVSuW10mC
r3OS9QctMSeVPX/KE85TexeRtmyd4zUdio49+WKgoBhM8Z9MpTaafn2OPQARAQAB
tFBaZXJvVGllciwgSW5jLiAoWmVyb1RpZXIgU3VwcG9ydCBhbmQgUmVsZWFzZSBT
aWduaW5nIEtleSkgPGNvbnRhY3RAemVyb3RpZXIuY29tPokCNwQTAQoAIQUCV1Cr
ugIbAwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRAWVxmII+UqYViGEACnC3+3
lRzfv7f7JLWo23FSHjlF3IiWfYd+47BLDx706SDih1H6Qt8CqRy706bWbtictEJ/
xTaWgTEDzY/lRalYO5NAFTgK9h2zBP1t8zdEA/rmtVPOWOzd6jr0q3l3pKQTeMF0
6g+uaMDG1OkBz6MCwdg9counz6oa8OHK76tXNIBEnGOPBW375z1O+ExyddQOHDcS
IIsUlFmtIL1yBa7Q5NSfLofPLfS0/o2FItn0riSaAh866nXHynQemjTrqkUxf5On
65RLM+AJQaEkX17vDlsSljHrtYLKrhEueqeq50e89c2Ya4ucmSVeC9lrSqfyvGOO
P3aT/hrmeE9XBf7a9vozq7XhtViEC/ZSd1/z/oeypv4QYenfw8CtXP5bW1mKNK/M
8xnrnYwo9BUMclX2ZAvu1rTyiUvGre9fEGfhlS0rjmCgYfMgBZ+R/bFGiNdn6gAd
PSY/8fP8KFZl0xUzh2EnWe/bptoZ67CKkDbVZnfWtuKA0Ui7anitkjZiv+6wanv4
+5A3k/H3D4JofIjRNgx/gdVPhJfWjAoutIgGeIWrkfcAP9EpsR5swyc4KuE6kJ/Y
wXXVDQiju0xE1EdNx/S1UOeq0EHhOFqazuu00ojATekUPWenNjPWIjBYQ0Ag4ycL
KU558PFLzqYaHphdWYgxfGR+XSgzVTN1r7lW87kCDQRXUKu6ARAA2wWOywNMzEiP
ZK6CqLYGZqrpfx+drOxSowwfwjP3odcK8shR/3sxOmYVqZi0XVZtb9aJVz578rNb
e4Vfugql1Yt6w3V84z/mtfj6ZbTOOU5yAGZQixm6fkXAnpG5Eer/C8Aw8dH1EreP
Na1gIVcUzlpg2Ql23qjr5LqvGtUB4BqJSF4X8efNi/y0hj/GaivUMqCF6+Vvh3GG
fhvzhgBPku/5wK2XwBL9BELqaQ/tWOXuztMw0xFH/De75IH3LIvQYCuv1pnM4hJL
XYnpAGAWfmFtmXNnPVon6g542Z6c0G/qi657xA5vr6OSSbazDJXNiHXhgBYEzRrH
napcohTQwFKEA3Q4iftrsTDX/eZVTrO9x6qKxwoBVTGwSE52InWAxkkcnZM6tkfV
n7Ukc0oixZ6E70Svls27zFgaWbUFJQ6JFoC6h+5AYbaga6DwKCYOP3AR+q0ZkcH/
oJIdvKuhF9zDZbQhd76b4gK3YXnMpVsj9sQ9P23gh61RkAQ1HIlGOBrHS/XYcvpk
DcfIlJXKC3V1ggrG+BpKu46kiiYmRR1/yM0EXH2n99XhLNSxxFxxWhjyw8RcR6iG
ovDxWAULW+bJHjaNJdgb8Kab7j2nT2odUjUHMP42uLJgvS5LgRn39IvtzjoScAqg
8I817m8yLU/91D2f5qmJIwFI6ELwImkAEQEAAYkCHwQYAQoACQUCV1CrugIbDAAK
CRAWVxmII+UqYWSSEACxaR/hhr8xUIXkIV52BeD+2BOS8FNOi0aM67L4fEVplrsV
Op9fvAnUNmoiQo+RFdUdaD2Rpq+yUjQHHbj92mlk6Cmaon46wU+5bAWGYpV1Uf+o
wbKw1Xv83Uj9uHo7zv9WDtOUXUiTe/S792icTfRYrKbwkfI8iCltgNhTQNX0lFX/
Sr2y1/dGCTCMEuA/ClqGKCm9lIYdu+4z32V9VXTSX85DsUjLOCO/hl9SHaelJgmi
IJzRY1XLbNDK4IH5eWtbaprkTNIGt00QhsnM5w+rn1tO80giSxXFpKBE+/pAx8PQ
RdVFzxHtTUGMCkZcgOJolk8y+DJWtX8fP+3a4Vq11a3qKJ19VXk3qnuC1aeW7OQF
j6ISyHsNNsnBw5BRaS5tdrpLXw6Z7TKr1eq+FylmoOK0pIw5xOdRmSVoFm4lVcI5
e5EwB7IIRF00IFqrXe8dCT0oDT9RXc6CNh6GIs9D9YKwDPRD/NKQlYoegfa13Jz7
S3RIXtOXudT1+A1kaBpGKnpXOYD3w7jW2l0zAd6a53AAGy4SnL1ac4cml76NIWiF
m2KYzvMJZBk5dAtFa0SgLK4fg8X6Ygoo9E0JsXxSrW9I1JVfo6Ia//YOBMtt4XuN
Awqahjkq87yxOYYTnJmr2OZtQuFboymfMhNqj3G2DYmZ/ZIXXPgwHx0fnd3R0Q==
=JgAv
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -0,0 +1 @@
'\" -*- coding: utf-8 -*-

83
attic/doc/zerotier-cli.1 Normal file
View File

@ -0,0 +1,83 @@
.TH "ZEROTIER\-CLI" "1" "December 2016" "" ""
.SH "NAME"
\fBzerotier-cli\fR \- control local ZeroTier virtual network service
.SH SYNOPSIS
.P
\fBzerotier\-cli\fP [\-switches] <command> [arguments]
.SH DESCRIPTION
.P
\fBzerotier\-cli\fR provides a simple command line interface to the local JSON API of the ZeroTier virtual network endpoint service zerotier\-one(8)\.
.P
By default \fBzerotier\-cli\fR must be run as root or with \fBsudo\fP\|\. If you want to allow an unprivileged user to use \fBzerotier\-cli\fR to control the system ZeroTier service, you can create a local copy of the ZeroTier service authorization token in the user's home directory:
.P
.RS 2
.nf
sudo cp /var/lib/zerotier\-one/authtoken\.secret /home/user/\.zeroTierOneAuthToken
chown user /home/user/\.zeroTierOneAuthToken
chmod 0600 /home/user/\.zeroTierOneAuthToken
.fi
.RE
.P
(The location of ZeroTier's service home may differ by platform\. See zerotier\-one(8)\.)
.P
Note that this gives the user the power to connect or disconnect the system to or from any virtual network, which is a significant permission\.
.P
\fBzerotier\-cli\fR has several command line arguments that are visible in \fBhelp\fP output\. The two most commonly used are \fB\-j\fP for raw JSON output and \fB\-D<path>\fP to specify an alternative ZeroTier service working directory\. Raw JSON output is easier to parse in scripts and also contains verbose details not present in the tabular output\. The \fB\-D<path>\fP option specifies where the service's zerotier\-one\.port and authtoken\.secret files are located if the service is not running at the default location for your system\.
.SH COMMANDS
.RS 0
.IP \(bu 2
\fBhelp\fP:
Displays \fBzerotier\-cli\fR help\.
.IP \(bu 2
\fBinfo\fP:
Shows information about this device including its 10\-digit ZeroTier address and apparent connection status\. Use \fB\-j\fP for more verbose output\.
.IP \(bu 2
\fBlistpeers\fP:
This command lists the ZeroTier VL1 (virtual layer 1, the peer to peer network) peers this service knows about and has recently (within the past 30 minutes or so) communicated with\. These are not necessarily all the devices on your virtual network(s), and may also include a few devices not on any virtual network you've joined\. These are typically either root servers or network controllers\.
.IP \(bu 2
\fBlistnetworks\fP:
This lists the networks your system belongs to and some information about them, such as any ZeroTier\-managed IP addresses you have been assigned\. (IP addresses assigned manually to ZeroTier interfaces will not be listed here\. Use the standard network interface commands to see these\.)
.IP \(bu 2
\fBjoin\fP:
To join a network just use \fBjoin\fP and its 16\-digit hex network ID\. That's it\. Then use \fBlistnetworks\fP to see the status\. You'll either get a reply from the network controller with a certificate and other info such as IP assignments, or you'll get "access denied\." In this case you'll need the administrator of this network to authorize your device by its 10\-digit device ID (visible with \fBinfo\fP) on the network's controller\.
.IP \(bu 2
\fBleave\fP:
Leaving a network is as easy as joining it\. This disconnects from the network and deletes its interface from the system\. Note that peers on the network may hang around in \fBlistpeers\fP for up to 30 minutes until they time out due to lack of traffic\. But if they no longer share a network with you, they can't actually communicate with you in any meaningful way\.
.RE
.SH EXAMPLES
.P
Join "Earth," ZeroTier's big public party line network:
.P
.RS 2
.nf
$ sudo zerotier\-cli join 8056c2e21c000001
$ sudo zerotier\-cli listnetworks
( wait until you get an Earth IP )
$ ping earth\.zerotier\.net
( you should now be able to ping our Earth test IP )
.fi
.RE
.P
Leave "Earth":
.P
.RS 2
.nf
$ sudo zerotier\-cli leave 8056c2e21c000001
.fi
.RE
.P
List VL1 peers:
.P
.RS 2
.nf
$ sudo zerotier\-cli listpeers
.fi
.RE
.SH COPYRIGHT
.P
(c)2011\-2016 ZeroTier, Inc\. \-\- https://www\.zerotier\.com/ \-\- https://github\.com/zerotier
.SH SEE ALSO
.P
zerotier\-one(8), zerotier\-idtool(1)

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