Compare commits

...
391 Commits
Author SHA1 Message Date
Adam Ierymenko 7ea2354540 Merge branch 'master' of github.com:zerotier/ZeroTierOne 2022-04-27 17:10:19 -04:00
Adam Ierymenko 760bba67e7 Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2022-04-27 14:12:10 -04:00
Adam Ierymenko 1fe3a4402d 1.8.9 Windows installer stuff 2022-04-27 14:11:48 -04:00
Adam Ierymenko 166c7978ee ALMOST compiles for ARM64 Windows, only remaining barrier is ring in zeroidc. 2022-04-27 12:19:42 -04:00
Joseph Henry 4f80e79886 Add QNAP build scripts 2022-04-26 15:04:19 -07:00
Adam Ierymenko b47a2c9ac5 Forgot to bump Debian version. 2022-04-26 17:38:57 -04:00
Joseph Henry 1a5274b86b Add Asustor build scripts 2022-04-26 08:33:48 -07:00
Joseph Henry 66236e91a2 Style fix 2022-04-26 08:26:45 -07:00
Joseph Henry 36475aebc7 Merge branch 'erikh-fix-cargo-root' 2022-04-25 20:39:22 -07:00
Joseph Henry acd1f24a3f Add Western Digital apkg build scripts 2022-04-25 17:47:58 -07:00
Joseph Henry a74532fa0b Move Snap and Synology packaging to new pkg dir 2022-04-25 17:47:15 -07:00
Erik Hollensbe 59d4aef7c2 Fix cargo home directory (was previously hard-coded to /root)
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
2022-04-25 15:52:39 -07:00
Adam Ierymenko dfb291090d release notes 2022-04-25 17:09:14 -04:00
Grant Limberg dac32f863e fix deadlock on sso network leave 2022-04-25 14:00:04 -07:00
Adam Ierymenko f3b56d3d94 More simplification of Debian control 2022-04-25 15:21:29 -04:00
Adam Ierymenko eb95a427fa 1.8.9 version bump 2022-04-25 13:24:24 -04:00
Joseph Henry f16299b10b Add credit line to release notes 2022-04-21 09:50:18 -07:00
Adam Ierymenko 76bce44280 Build fix. 2022-04-19 21:30:36 -04:00
Adam Ierymenko ee0a194b25 Several more SSO/OIDC related fixes, and bump version to 1.8.9. 2022-04-19 21:29:11 -04:00
Adam Ierymenko ef08346a74 Fix a possible excessive memory use issue in controller and clean up a bunch of COM handling and other code in the normal node. 2022-04-19 19:59:54 -04:00
Adam Ierymenko fe0068da52 A bit more auth cleanup in the local node. 2022-04-19 16:34:46 -04:00
Adam Ierymenko cd70fefc5e Clean up some credential push stuff. 2022-04-19 16:06:53 -04:00
Adam Ierymenko 877f86a896 build fix 2022-04-19 12:44:18 -04:00
Adam Ierymenko 912036b260 Push credentials always if updated (client-side) and some controller-side cleanup that should be logically irrelevant but will prevent unnecessary DB lookups. 2022-04-19 12:41:38 -04:00
Adam Ierymenko a4e8847664 Restore sending of rejections but move it exclusively to a thread, widen netconf window to 30 minutes. 2022-04-19 10:37:58 -04:00
Adam Ierymenko c492bf7eea Forgot to send error on v0 auth expiry. 2022-04-18 16:36:09 -04:00
Adam Ierymenko cb086ff97f Simplify SSO logic. SSO should just normally expire when it expires. No full deauth needed. Deauth is for really giving someone the boot. 2022-04-18 16:32:05 -04:00
Joseph Henry 7e4da53c0b Check reference to failover path before use in active-backup scenario 2022-04-17 21:03:57 -07:00
Adam Ierymenko fe376f6a1e Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2022-04-15 14:23:40 -04:00
Adam Ierymenko 55a99f34d0 Tighten certificate window and deprecate sending of revocations for ordinary SSO timeouts. Revocations should only be for deliberate deauth to kick people off networks. Cert window should now stay within refresh window for SSO so normal cert expiration should handle it just fine. 2022-04-15 14:23:26 -04:00
Joseph Henry 99df637aae Improve relationship between QOS timers and bucket sizes 2022-04-15 09:55:00 -07:00
Adam Ierymenko d0c68096df Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2022-04-15 12:46:48 -04:00
Grant Limberg 1c464c2da1 fix potential cstring leaks 2022-04-15 09:16:02 -07:00
Adam Ierymenko 5b15da98b4 Start of 1.8.9 release notes. 2022-04-15 11:58:21 -04:00
Adam Ierymenko d5a95f9224 Add SSO enable def to macOS 2022-04-14 20:57:35 -04:00
Adam Ierymenko a7dcfa18a2 Oops forgot last part of that fix for MAC errors. 2022-04-14 20:13:57 -04:00
Adam Ierymenko 4389b9feff Likely fix for invalid MAC problem. 2022-04-14 20:10:20 -04:00
Adam Ierymenko cf03996bf2 clangd stuff 2022-04-14 12:00:36 -04:00
Adam Ierymenko e1a3bd3a92 ignore .nova 2022-04-14 11:50:47 -04:00
Adam Ierymenko 58119598ae comment out some new deauth code 2022-04-13 23:10:11 -04:00
Adam Ierymenko 42a2afaef9 This may improve controller behavior with SSO and mixed SSO, needs testing! 2022-04-13 21:39:56 -04:00
Grant Limberg c2cfb4d1dc remove stray #endif 2022-04-13 17:47:56 -07:00
Adam Ierymenko f0b0172434 Merge branch 'master' into dev 2022-04-13 19:55:22 -04:00
Adam Ierymenko 8217cadc08 Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2022-04-13 19:55:08 -04:00
Grant Limberg 6ad047a8fc Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2022-04-13 13:54:03 -07:00
Grant Limberg 23ef742e08 Fix for #1626
Port used for PortMapping was not properly randomized causing multiple clients on the same lan to request the same UPnP port, and not all routers handle this gracefully.

Also fixes issue where the portmapper wasn't started at all if a secondary port wasn't specified, or if the tertiary port was manually specified.
2022-04-13 13:53:42 -07:00
Joseph Henry 1294767b44 Fix ZT_SSO_SUPPORTED flag behavior. Allow disabling for embedded targets. 2022-04-13 10:05:49 -07:00
Erik Hollensbe eca645fc52 Merge pull request #1625 from erikh/prettify-entrypoint-output
prettify the entrypoint log output
2022-04-13 00:17:07 -07:00
Erik Hollensbe 8598f34ebf prettify the entrypoint log output
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
2022-04-13 00:09:46 -07:00
Erik Hollensbe cade483a00 Merge pull request #1624 from erikh/silence-entrypoint-errors
silence catting files that don't exist in docker entrypoint
2022-04-12 23:58:00 -07:00
Erik Hollensbe df46248a0c silence catting files that don't exist in docker entrypoint
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
2022-04-12 23:56:16 -07:00
Joseph Henry 6cddb94509 Merge branch 'dev' of https://github.com/zerotier/zerotierone into dev 2022-04-12 17:46:13 -07:00
Joseph Henry 0e658828fb Add Synology Docker target to Linux makefile 2022-04-12 17:45:54 -07:00
Sean McAvoy de04240ca6 update alpine linux release to current supported (#1599) 2022-04-11 21:24:57 -07:00
fuowang 40681328ec Add loongarch64 support (#1614)
* add loongarch64 support
2022-04-11 20:33:40 -07:00
Joseph Henry 4dbdfb6972 Fix missing symlink and high CPU usage of route watchdog on Synology 2022-04-11 15:22:13 -07:00
Adam Ierymenko bd9c8d65ef Release notes for 1.8.8 2022-04-11 12:46:12 -04:00
Adam Ierymenko 24ec634005 Possible fix for Ubuntu versioning issue on libstdc++6 2022-04-11 12:28:14 -04:00
Adam Ierymenko ff0e6a53fc Release notes for 1.8.8 2022-04-11 12:16:32 -04:00
Adam Ierymenko ffb444dbeb 1.8.8 bump 2022-04-11 12:15:41 -04:00
Adam Ierymenko d6f32516d8 Merge branch 'master' of github.com:zerotier/ZeroTierOne into dev 2022-04-11 11:11:13 -04:00
Joseph Henry 29566bfe7d Add Synology target to Linux makefile 2022-04-10 22:50:53 -07:00
Erik Hollensbe 16d2b85c71 Merge pull request #1619 from altano/master
Add `zerotier-cli info` output to Docker logs
2022-04-08 22:09:32 -07:00
Alan Norbauer 193b357a0c Add zerotier-cli info output to Docker logs
When I first bring up the container, I want to know I'm approving the join request for the right node. I can get the node's ZT address by manually executing `zerotier-cli info` in the node (e.g. with `docker-compose exec zerotier zerotier-cli info`) but just having it in the logs to start with is very convenient.
2022-04-08 21:56:13 -07:00
Joseph Henry 8ee8870c27 Add Docker image and build script for DSM 7 2022-04-05 16:38:20 -07:00
Joseph Henry 3c59de7c00 Change directory structure for DSM packages 2022-04-05 15:27:35 -07:00
Joseph Henry e87bf87046 Remove unnecessary packages from Synology Dockerfile 2022-04-05 14:20:51 -07:00
Joseph Henry b4f7a9a4f4 Temporarily disable certain arch builds on Synology 2022-04-05 09:52:25 -07:00
Joseph Henry a360416655 Move Synology home-dir to /var/packages/zerotier/var 2022-04-05 09:51:35 -07:00
Joseph Henry 26dbebbba7 Add Synology packaging 2022-04-05 08:54:16 -07:00
Joseph Henry 04b77773c4 Remove Synology-specific IP add block 2022-03-31 22:01:50 -07:00
Joseph Henry 6f4a69703b Fix ZT_SSO_SUPPORTED flag behavior. Allow disabling for embedded targets. 2022-03-31 21:45:38 -07:00
Joseph Henry d67f59f5b5 Fix ARMv6 arch moniker 2022-03-31 09:43:06 -07:00
Joseph Henry 00d9abb612 Merge branch 'dev' of https://github.com/zerotier/zerotierone into dev 2022-03-31 09:40:45 -07:00
Adam Ierymenko c8920cff19 Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2022-03-30 15:51:33 -04:00
Adam Ierymenko 7293ba7d71 Merge branch 'master' into dev 2022-03-30 15:51:18 -04:00
Adam Ierymenko e73d7d9349 Merge branch 'master' of http://git.int.zerotier.com/zerotier/ZeroTierOne 2022-03-30 15:51:01 -04:00
Adam Ierymenko 0e3be9b837 1.8.7 2022-03-30 15:50:26 -04:00
Adam Ierymenko c600590aa6 Windows 1.8.7 installer config. 2022-03-29 19:36:56 -04:00
Adam Ierymenko 1343f15a07 Merge branch 'master' of http://git.int.zerotier.com/zerotier/ZeroTierOne 2022-03-29 14:28:12 -04:00
Grant Limberg 5fcaed086d another at->idt for exp 2022-03-29 11:09:50 -07:00
Grant Limberg 130689d82b remove extraneous debug log line 2022-03-29 11:09:14 -07:00
Grant Limberg 1efceb86fc get exp time out of correct token 2022-03-29 11:08:59 -07:00
Grant Limberg 1d92974447 auth0 compatibility 2022-03-29 11:07:44 -07:00
Grant Limberg de56f571c7 enable rfc3339 timestamps in oidc library for auth0 2022-03-29 11:07:30 -07:00
Grant Limberg 3670b8cefd another at->idt for exp 2022-03-29 10:33:27 -07:00
Grant Limberg 425f5201a2 remove extraneous debug log line 2022-03-29 10:03:34 -07:00
Grant Limberg df3b29e6ff get exp time out of correct token 2022-03-29 10:01:02 -07:00
Grant Limberg 96a49bf476 auth0 compatibility 2022-03-29 09:11:55 -07:00
Grant Limberg 2d975f275c enable rfc3339 timestamps in oidc library for auth0 2022-03-29 09:11:25 -07:00
Erik Hollensbe 76e30cf165 Merge pull request #1596 from erikh/docker-image-fixes
Fix dockerfile & entrypoint:
2022-03-24 10:53:52 -07:00
Erik Hollensbe da603208b4 Dockerfile: Reduce healthcheck interval to 1s (it's cheap)
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
2022-03-23 18:17:21 -07:00
Erik Hollensbe 6dc7bdf72e Fix ^C issue
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
2022-03-23 18:09:04 -07:00
Erik Hollensbe d52ebaa412 HEALTHCHECK operation
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
2022-03-23 18:08:46 -07:00
Erik Hollensbe c30a1f60ea Join networks by touching a file
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
2022-03-23 17:56:09 -07:00
Erik Hollensbe 2388c9f4e4 added additional informational messages to argument usage in zerotier docker image
Signed-off-by: Erik Hollensbe <git@hollensbe.org>
2022-03-23 17:40:28 -07:00
Erik Hollensbe f41372680d Fix dockerfile & entrypoint:
- Resolve issue with join not being checked properly for success without
  using external tools
- Resolve issue where initial boot was not being checked properly
- Now output errors when zerotier fails to start

closes #1581

cc @altano for inspiration for this patch

Signed-off-by: Erik Hollensbe <git@hollensbe.org>
2022-03-23 17:40:28 -07:00
Adam Ierymenko 7efb1cf7d3 Bundle Edge WebView dependency EXE and statically link MSVC DLLs 2022-03-22 17:43:43 -04:00
Joseph Henry 0547fd3593 Merge branch 'master' of https://github.com/zerotier/zerotierone into dev 2022-03-21 19:51:53 -07:00
Adam Ierymenko 2800534445 1.8.7 2022-03-21 17:34:52 -04:00
Adam Ierymenko e464050a40 Merge branch 'master' of http://git.int.zerotier.com/zerotier/ZeroTierOne 2022-03-21 17:30:18 -04:00
Grant Limberg 73ec8cddd7 Show sso errors on the last step of the oidc process 2022-03-21 17:30:03 -04:00
Joseph Henry 1c171b5d99 Merge pull request #1589 from hcwhan/patch-1
Dockerfile version bump to 1.8.6
2022-03-15 09:52:55 -07:00
Joseph Henry 32f49b44b0 Modify snap to use pre-compiled static binaries 2022-03-15 09:44:46 -07:00
hcwhan e2d4571ade Dockerfile version bump to 1.8.6 2022-03-14 10:34:26 +08:00
Grant Limberg 3f19e7d73c Show sso errors on the last step of the oidc process 2022-03-10 13:08:35 -08:00
Adam Ierymenko 93076dde56 Fix merged OneService. 2022-03-10 15:57:15 -05:00
Adam Ierymenko 3e78785dea Merge OneService changes from master. 2022-03-10 15:50:01 -05:00
Adam Ierymenko 68c9398f71 Merge branch 'master' into dev 2022-03-10 15:48:47 -05:00
Adam Ierymenko 4b3a13797a Windows Advanced Installer stuff for 1.8.6 2022-03-10 15:45:33 -05:00
Adam Ierymenko 4a2c75a609 Release notes 2022-03-10 13:36:31 -05:00
Adam Ierymenko 34a64f30de Bump the peer cache serialization version due to path changes, will cause peers to be re-learned. Technically the peer cache is optional anyway so it's not going to break anything and should guard against weird issues due to path learning changes on restart. 2022-03-09 09:13:26 -05:00
Adam Ierymenko 4bdf0317c3 Forgot to version bump RH. 2022-03-08 15:18:57 -05:00
Adam Ierymenko 8624972d01 More 1.8.6 bumps. 2022-03-08 09:17:14 -05:00
Adam Ierymenko 6bfaaaa557 1.8.6 bump and add AutoReqProv:no for GitHub issue #1575 2022-03-07 14:06:12 -05:00
Adam Ierymenko b42c998095 Merge branch 'master' of github.com:zerotier/ZeroTierOne 2022-03-07 13:58:51 -05:00
Adam Ierymenko 56357c077b Merge pull request #1110 from neheb/patch-1
LinuxNetLink: Add cerrno header for (str)errno
2022-03-07 13:53:14 -05:00
Adam Ierymenko 3def00370e Merge pull request #1187 from rjsocha/win-service-description
Add description for Windows service
2022-03-07 13:52:41 -05:00
Adam Ierymenko e1a3285273 Update ServiceInstaller.cpp
Some very minor changes to this PR
2022-03-07 13:52:05 -05:00
Joseph Henry 59b392af10 Merge pull request #1572 from zerotier/configurable-tcp-proxy
make TCP fallback relay address configurable
2022-03-07 09:17:43 -08:00
Grant Limberg a8dde7b89b update JNI to add new status code 2022-03-04 14:28:25 -08:00
Grant Limberg ecde26c823 fix http return value from one service when nework list is empty 2022-03-04 12:35:11 -08:00
Adam Ierymenko 567969d33c 1.8.6 with a UI non-responsiveness fix. 2022-03-04 14:54:51 -05:00
Adam Ierymenko 544a4de1e0 Merge branch 'master' into dev 2022-03-03 18:35:05 -05:00
Adam Ierymenko c341bf6d8c Merge 2022-03-03 18:32:54 -05:00
Adam Ierymenko 297869163e Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2022-03-03 18:30:19 -05:00
Joseph Henry 3ead6b67cd Dynamically scale bonded link monitor frequency according to aliveness 2022-03-02 14:58:31 -08:00
Grant Limberg 3cbea6c898 make TCP fallback relay address configurable 2022-03-02 11:44:04 -08:00
Adam Ierymenko 1f73ab4b05 Debian lowest common denominator dependency for libssl. 2022-03-02 14:11:39 -05:00
Joseph Henry 8148c658cf Remove bonds for peers that have fully expired. Remove notion of bond health 2022-03-02 09:55:23 -08:00
Adam Ierymenko 15ddf28c6a Makefile fix for Linux. 2022-02-28 19:08:13 -05:00
Adam Ierymenko 16b5274963 Fix to selinux fix. 2022-02-28 16:10:44 -05:00
Grant Limberg f8e24f4629 Fix issue where restarting a controller causes a DB write for each network member 2022-02-28 12:26:32 -08:00
Joseph Henry 1cf8a1f493 More accurate accounting of bond layer overhead traffic 2022-02-25 15:04:48 -08:00
Joseph Henry bc2c4cf80a Merge branch 'dev' of https://github.com/zerotier/zerotierone into dev 2022-02-25 11:39:21 -08:00
Joseph Henry 9933d83cf8 Merge pull request #1564 from zerotier/dev-whoami
Proactively seek, and distribute external surface addresses

This patch introduces a new "self-awareness" behavior which proactively queries peers for external surface addresses and distributes them via PUSH_DIRECT_PATHS. This has the effect of making ZT more responsive to interface changes.

Current behavior:

Previously, this type of information was only mediated via RENDEZVOUS and was only triggered when the client detected that it no longer had a single alive path to a peer. While PUSH_DIRECT_PATHS would correctly (and often) send local addresses, this was not the case for external addresses collected from response HELLOs. This would lead to situations where only one physical address would be distributed to peers. Additionally, if a new physical interface were to be made available to the client, the client would correctly bind to it but never seek information about its external mapping from a peer, and thus the new physical interface would remain unavailable for other peers to learn about until all paths on the previous interface have expired which can take a couple of minutes. In traditional usage of ZT this is not usually a problem, but it becomes a problem in the following scenarios:

    Network interfaces go up and down while ZT is running (e.g. switching to LTE or WiFi from a wired connection)
    Network interfaces are added or removed in multipath setups

Proposed behavior:

I propose that normal full HELLOs are sent not only on the first interface in use, but all interfaces. This causes planets to respond with a HELLO containing the surface address for each interface. We then collect each address using SelfAwareness::whoami() and distribute them via the normal PUSH_DIRECT_PATHS mechanism.
2022-02-25 11:30:45 -08:00
Joseph Henry 1918c29fd7 Change ECHO divisor from 20 to 6 2022-02-25 11:29:07 -08:00
Joseph Henry 84705aafc7 Merge pull request #1569 from zerotier/dev-echo-rate-gate
Rate gate ECHO per Path instead of per Peer

In multipath scenarios user traffic is used to judge the aliveness of a path. If the user traffic is too infrequent to establish aliveness for a given time window (say 500 ms), the bonding layer will send extra ECHOs at a maximum rate of failoverInterval / 3 (or ~ 166 ms) per path. This patch relaxes the rate-limiting of ECHOs significantly in order to prevent a non-multipath node from dropping ECHOs causing multipath nodes to erroneously judge paths to that node to be dead.
Details

This patch decreases the rate limiting from 1000 ms per peer by a factor of 6 to ~166 ms and rate limits ECHOs per Path instead of per Peer. This allows rate limiting to scale with the number of established paths to a peer.

As a result, if all 64 path slots are used a total of 64 x 6 = 384 ECHOs per second will be allowed in the most aggressive case where failoverInterval is set to 500 ms.
2022-02-25 11:23:42 -08:00
Joseph Henry 618202d426 Increase min failover to 500 ms and probe period to 1/3rd of failover 2022-02-25 10:52:39 -08:00
Adam Ierymenko 8b9a7d2c8f 1.8.5 release notes 2022-02-22 13:15:39 -05:00
Joseph Henry d1335dca11 Change ECHO rate-limit divsor from 16 to 20 2022-02-21 16:22:33 -08:00
Joseph Henry 5e13b42abc Rate gate ECHO per Path instead of per Peer 2022-02-21 14:37:39 -08:00
Adam Ierymenko b4b5a70a03 Windows build update. 2022-02-21 13:53:55 -05:00
Joseph Henry 96aa1c30a6 Proactively seek, enumerate, and distribute external surface addresses 2022-02-17 15:39:17 -08:00
Joseph Henry 1b0c183913 Force non-leaf peers into local active-backup bond when multipath is enabled 2022-02-17 15:16:33 -08:00
Joseph Henry 5d4a9a4aa1 Merge branch 'dev' of https://github.com/zerotier/zerotierone into dev 2022-02-17 09:48:15 -08:00
Grant Limberg 31c12aebb5 more fun with linux ethernet taps
older kernels: must set MTU before IFF_UP.
newer kernels: must set MTU *after* IFF_UP
2022-02-17 09:26:53 -08:00
Joseph Henry 40269c2a97 Comment out debug traces 2022-02-16 20:39:18 -08:00
Adam Ierymenko ed74ed6ed2 CentOS/RHEL 6 SELinux permissions. 2022-02-16 12:56:17 -05:00
Adam Ierymenko 26e684eb0e Add OpenSSL requirements to Linux package manifests. 2022-02-15 14:39:23 -05:00
Adam Ierymenko fc66f79988 1.8.5 Windows 2022-02-15 13:09:54 -05:00
Adam Ierymenko 3c85a7f074 Rev roots. 2022-02-15 09:13:58 -05:00
Adam Ierymenko 62d2a00e74 Merge pull request #1093 from keur/unit_after_network
systemd: fix zerotier hanging on shutdown
2022-02-11 18:03:18 -05:00
Adam Ierymenko bb2b109707 Merge pull request #1559 from zerotier/oldlinux
potential fix for 2.6.x kernels
2022-02-11 17:59:53 -05:00
Joseph Henry c5008031b9 Increase ifname size to accomodate Windows (issue #1560) 2022-02-11 10:08:56 -08:00
Joseph Henry 1d15d4e8d3 Add ZT_DEBUG to DEFS when specified 2022-02-09 14:32:10 -08:00
Joseph Henry da898d5a19 Merge branch 'dev' of https://github.com/zerotier/zerotierone into dev 2022-02-08 15:47:43 -08:00
Joseph Henry f9c84c8c52 Remove stray debug trace 2022-02-08 15:32:25 -08:00
Grant Limberg 5d63ed6739 fix function call 2022-02-07 17:14:43 -08:00
Grant Limberg fdf4ebd43c potential fix for 2.6.x kernels
detect if the kernel is super old.  if so, do not execute the post IF_UP commands on the interface
2022-02-07 17:10:54 -08:00
Grant Limberg dc9fdb7da8 Merge branch 'notify' into dev 2022-02-07 13:59:22 -08:00
Grant Limberg 2652c71c9e remove tag one more time 2022-02-07 11:54:50 -08:00
Grant Limberg 806d1fff42 Merge branch 'notify' into dev 2022-02-07 11:46:23 -08:00
Grant Limberg c065e88e1e notify tags are back 2022-02-07 11:39:47 -08:00
Grant Limberg 4641a44029 does order matter? 2022-02-07 11:36:52 -08:00
Grant Limberg f544f75c36 notify all again 2022-02-07 11:32:19 -08:00
Grant Limberg 720168f0a0 only notify on failure for now 2022-02-07 11:27:03 -08:00
Grant Limberg 6dfecca91e poke 2022-02-07 11:23:38 -08:00
Grant Limberg 10b38b5b0a poke 2022-02-07 11:14:46 -08:00
Sean OMeara dbc5d5c453 Update .drone.yml
OCD made me do it
2022-02-07 19:54:56 +01:00
Grant Limberg a3e0ba16f5 poke 2022-02-07 10:43:56 -08:00
Grant Limberg 3c906102e1 update notify image 2022-02-07 10:26:29 -08:00
Joseph Henry 566ac113e4 Merge branch 'dev' of https://github.com/zerotier/zerotierone into dev 2022-02-07 10:10:24 -08:00
Grant Limberg 5abc8bd2af specify tag 2022-02-07 10:09:01 -08:00
Joseph Henry 926b2e168e Add external listening addr/port pairs to status output (ticket #1555) 2022-02-07 10:08:02 -08:00
Grant Limberg e475e8151d set pull: always on notify image 2022-02-07 09:56:31 -08:00
Grant Limberg 440f10e353 max retires 3 2022-02-04 13:48:48 -08:00
Grant Limberg 30256c7106 set max retries 2022-02-04 13:44:00 -08:00
Grant Limberg 21946f38d0 oops 2022-02-04 13:35:44 -08:00
Grant Limberg 549673664d custom image 2022-02-04 13:34:28 -08:00
Sean OMeara b45d0c5a36 tweaking 2022-02-04 22:08:56 +01:00
Sean OMeara 4df05c2890 running s390x on xeons 2022-02-04 22:08:14 +01:00
Sean OMeara d886089091 running s390x on xeons 2022-02-04 22:05:29 +01:00
Grant Limberg 51158dde93 make it run on failure and succes 2022-02-04 12:58:12 -08:00
Grant Limberg 09fff7f1cb lets try this 2022-02-04 12:50:19 -08:00
Sean OMeara 91f435f32f trying s390 on a gravaton 2022-02-04 21:42:00 +01:00
Sean OMeara 726ffddce2 adding platform routing for arm64 2022-02-04 21:28:07 +01:00
Adam Ierymenko 4ecf692f46 Remove -j1 2022-02-04 14:51:13 -05:00
Adam Ierymenko 2a461a9aac Merge dev 2022-02-04 13:32:06 -05:00
Grant Limberg 211b1fc23c enable on x32 2022-02-03 12:52:35 -08:00
Grant Limberg df6bbb0b0c more fun with makefiles 2022-02-03 11:47:03 -08:00
Grant Limberg cfae20e0df LDFLAGS fix on non-supported platforms 2022-02-03 11:30:39 -08:00
Grant Limberg 3c0adde0c7 don't build on unsupported platforms 2022-02-03 11:26:10 -08:00
Grant Limberg f511c9c938 fix compile errors on non-sso platforms 2022-02-03 10:07:25 -08:00
Sean OMeara 20f88b37ef adding drone config 2022-02-03 14:19:06 +01:00
Sean OMeara 269501eaa0 adding drone config 2022-02-03 14:18:36 +01:00
Adam Ierymenko 330e1de3d1 Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2022-02-01 16:04:06 -05:00
Adam Ierymenko 25e14e2164 Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into dev 2022-02-01 16:03:04 -05:00
Grant Limberg aa97aabb4e for now, only enable sso on certain platforms
mac, windows, linux x86/x86_64/aarch64
2022-02-01 11:07:37 -08:00
Travis LaDuke 59cd2766e3 Shorten issue template. Add docs site to it. 2022-01-31 13:52:38 -08:00
Grant Limberg b7952d7f39 no longer need direct import of serde here either 2022-01-31 12:13:30 -08:00
Grant Limberg c380a4e4bd cleanup 2022-01-31 12:02:14 -08:00
Grant Limberg 9c487cbfb8 Remove jsonwebtoken package dependency
Replaced with rust-jwt.  `jsonwebtoken` relies on the ring package which explodes on non-x86/x64 architectures
2022-01-31 11:58:51 -08:00
Adam Ierymenko 6fc636535f Merge branch 'dev-enlarge-netconf-limits' into dev 2022-01-31 10:52:34 -05:00
Joseph Henry 4190318c85 Fix typo in constant name 2022-01-28 10:41:21 -08:00
Joseph Henry 2f554fd6f8 Merge pull request #1552 from Shawn8410/master
FIX: fix wrong flag usage of rateGateCredentialsReceived
2022-01-28 10:12:16 -08:00
Shawn ae93cccde6 FIX: fix wrong flag usage of rateGateCredentialsReceived 2022-01-27 11:59:21 +08:00
Joseph Henry 46e955e3a1 Split bond logs into two categories to reduce logging size 2022-01-26 15:14:02 -08:00
Joseph Henry 60057d7072 Fix SSL-related linker errors on Linux 2022-01-26 14:02:42 -08:00
Joseph Henry 2850f131e2 Fix code style 2022-01-25 18:03:36 -08:00
Adam Ierymenko 440568a516 Enlarge maximum routes and maximum assigned addresses. 2022-01-24 14:26:15 -08:00
Adam Ierymenko e31088aaf9 Debian build tweaks, and deparallelize Rust for higher order build parallelization. 2022-01-21 17:27:07 -05:00
Grant Limberg 63b36e8569 . 2022-01-20 15:36:29 -08:00
Grant Limberg 726d359335 part 2 2022-01-20 15:35:18 -08:00
Grant Limberg fc0858a4a3 fix the fix cargo build on mac
--debug isn't a cargo option at all
2022-01-20 15:32:58 -08:00
Grant Limberg f80103778a Merge branch 'dev' into central-controller 2022-01-20 15:15:59 -08:00
Grant Limberg c09010c25a handle nonce rotation in controller better
Won't generate new nonces until there are no active ones.
2022-01-20 15:14:29 -08:00
Grant Limberg 9cd1466e6b Merge branch 'dev' into central-controller 2022-01-20 11:12:21 -08:00
Grant Limberg 801be64ed3 Merge branch 'zeroidc' into dev 2022-01-20 09:46:22 -08:00
Grant Limberg d719137565 temp workaround for oidc auth dropping issue
Add a method to "kick" the refresh thread and re-post the tokens in the case where the thread is somehow still running & controller pushes out an AUTH_REQUIRED.  This situation happens in a corner case still under investigation where the controller pushes out many copies of the network config repeatedly
2022-01-20 09:44:56 -08:00
Adam Ierymenko 58aba96494 Mac Rust build fix. 2022-01-20 11:16:26 -05:00
Adam Ierymenko f8d7796099 Merge branch 'zeroidc' into dev 2022-01-20 10:43:37 -05:00
Adam Ierymenko 241c41267b Merge branch 'master' into dev 2022-01-20 08:23:12 -05:00
Adam Ierymenko 2ac1ff9be2 Merge pull request #1451 from channelbeta/update-pgp-url
Update PGP keyserver URL
2022-01-20 08:22:52 -05:00
Adam Ierymenko cb31b3987f Merge pull request #1539 from khng300/getdefaultgateway-rtm-fix
ext/libnatpmp: Set sa_len properly in getdefaultgateway()
2022-01-20 08:21:24 -05:00
Adam Ierymenko c256398095 Merge pull request #1541 from khng300/fbsd-osdep-PortMapper
Build osdep/PortMapper on FreeBSD
2022-01-20 08:21:08 -05:00
Ka Ho Ng 7bb8703bf9 Build osdep/PortMapper on FreeBSD
This enables NAT-PMP and UPnP supports on FreeBSD.
2022-01-12 13:52:46 -05:00
Sean OMeara 0da00bf546 Merge pull request #1535 from zerotier/linux-route-metric
Set a high metric on linux routes that have a via.
2022-01-12 18:41:54 +01:00
Sean OMeara 4866490cdf Merge pull request #1533 from zerotier/tl-linux-route-if
Prevent adding routes to non-zerotier interfaces in rare cases.
2022-01-12 18:41:45 +01:00
Grant Limberg 1547b1a581 Merge branch 'zeroidc' into central-controller
# Conflicts:
#	node/NetworkConfig.cpp
#	node/NetworkConfig.hpp
2022-01-11 12:09:57 -08:00
Ka Ho Ng 511c77aa99 ext/libnatpmp: Set sa_len properly in getdefaultgateway()
In USE_SOCKET_ROUTE's implementation, sa_len of the sockaddrs need to be
set as well.

Sponsored by:	The FreeBSD Foundation
2022-01-10 20:42:34 -05:00
Travis LaDuke 692a0e7ac2 Set a high metric on linux routes that have a via.
See issue #750.

zerotier doesn't currently set a metric on routes. Linux
takes this to mean "0", the highest priority.

Every comment in the issue is about routing between zerotier
and lan and how they conflict.

This quick change could fix this problem for most people.

The subnet route for the zerotier network, the one with no
via, is still 0 in this patch. Just the "via" routes get
higher metrics.
If for some reason, you needed your via routes to have
higher priority, you could use a prefix work-around:

192.168.1.0/25 via 10.147.17.1
192.168.1.128/25 via 10.147.17.1
2022-01-07 13:10:36 -08:00
Travis LaDuke fa25b45198 Keep interface name on via routes on linux
See issue #1498
2022-01-07 11:58:42 -08:00
Grant Limberg cdd25c389e Merge branch 'dev' into zeroidc 2022-01-06 14:55:40 -08:00
Grant Limberg 133a6ff7b3 fix env var 2022-01-06 14:55:20 -08:00
Grant Limberg 96add0ba65 Merge branch 'dev' into zeroidc 2022-01-06 14:54:09 -08:00
Grant Limberg f5096a1f26 add wait for docker in controller startup script 2022-01-06 14:51:56 -08:00
Grant Limberg 3d4d087f07 make some impl functions pub 2022-01-05 15:43:45 -08:00
Grant Limberg 953e62f103 Clean up some extraneous output in release mode 2022-01-05 11:55:47 -08:00
Grant Limberg 084727c54a link zeroidc to selftest 2022-01-05 11:55:25 -08:00
Grant Limberg 8ea192fcab update dependency specs 2022-01-05 08:44:01 -08:00
Grant Limberg dceba1f2f1 Merge branch 'dev' into zeroidc 2022-01-05 08:35:15 -08:00
Grant Limberg 73878fbdc4 Merge pull request #1531 from StephenCWills/mingw32-disable-salsasse
Disable Salsa20 SSE on MinGW 32-bit compiler
2022-01-04 17:42:40 -08:00
staphen 87d17088cc Disable Salsa20 SSE on MinGW 32-bit compiler 2022-01-04 20:39:08 -05:00
Grant Limberg cc6c48fca8 Merge pull request #1525 from StephenCWills/lowercase-windows-headers
Use lowercase when including Windows headers
2022-01-04 17:11:51 -08:00
Grant Limberg e556a2ee23 Merge pull request #1528 from StephenCWills/android-miniupnpc
[Android] Fix include for miniupnpc
2022-01-04 16:56:05 -08:00
Grant Limberg 50b866c5cf clean up & pass along errors from ZeroIDC::new() method 2022-01-03 17:25:30 -08:00
staphen f83eed9ef9 [Android] Fix include for miniupnpc 2022-01-03 12:15:21 -05:00
Grant Limberg cb9313a454 Merge branch 'dev' into zeroidc 2022-01-03 08:37:10 -08:00
Grant Limberg cf411efd1d a little cleanup 2022-01-03 08:36:16 -08:00
staphen 1c956494a4 Use lowercase when including Windows headers 2021-12-29 16:29:08 -05:00
Adam Ierymenko dbe3aa1efc Merge branch 'master' into dev 2021-12-17 17:41:03 -05:00
Adam Ierymenko 4128d80974 1.8.5 version bump. 2021-12-17 17:40:00 -05:00
Grant Limberg 057356a725 Just some comments 2021-12-16 22:07:17 -08:00
Grant Limberg a69e91c541 Fix hash verification on refresh 2021-12-16 19:49:15 -08:00
Grant Limberg 8fccf3136c Enable validation of token hashes as part of the oidc process 2021-12-16 18:44:36 -08:00
Grant Limberg 2435ab70ab remove some extra verbose logging
... and baby you got a full flow goin on
2021-12-16 12:37:22 -08:00
Grant Limberg f489862500 update final page text a smidge 2021-12-16 12:20:31 -08:00
Grant Limberg 2642fa1ee2 Return HTML instead of blank page when auth is successful! 2021-12-16 12:06:16 -08:00
Grant Limberg 2293b0703f Can get Central JSON bundle back to zerotier-one window 2021-12-16 11:37:58 -08:00
Grant Limberg 1375e3e2f5 allow debug & release builds of Rust 2021-12-15 15:53:48 -08:00
Grant Limberg 0ab5cce878 TIL: Its not as hard as I thought to make Rust deadlock 2021-12-15 14:37:06 -08:00
Grant Limberg b567e91f68 fix 2021-12-15 14:36:50 -08:00
Grant Limberg eee31605b1 Merge branch 'dev' into zeroidc 2021-12-15 14:17:26 -08:00
Grant Limberg df9a7497b1 refactor out the separate AuthInfo struct
consolidated everything into the single IDC struct.  Should help keep from rotating the pkce token as often & causing issues with the login window flapping
2021-12-15 14:16:17 -08:00
Joseph Henry c6adb6df12 Merge pull request #1513 from andrejbinder/dev 2021-12-15 13:25:12 -08:00
Andrej Binder aeec7dae36 Prevent arithmetic error on interface change. 2021-12-15 22:22:02 +01:00
Adam Ierymenko fa58909d44 Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2021-12-15 12:32:41 -05:00
Adam Ierymenko 06ed114fb6 Release notes and GitHub issue #1512 2021-12-15 12:32:28 -05:00
Joseph Henry bdef9d3bd7 Fix situation where too many ECHOs are sent to multipath peer 2021-12-14 21:20:58 -08:00
Joseph Henry b154b7296c Improve multipath logging output 2021-12-14 21:13:19 -08:00
Joseph Henry 8019f13479 Merge branch 'dev' of https://github.com/zerotier/zerotierone into dev 2021-12-14 15:31:29 -08:00
Joseph Henry 1c6fd4125d Fix custom policy parsing bug mentioned in issue #1507 2021-12-14 11:49:43 -08:00
Travis LaDuke 1f99f1d5f4 Merge pull request #1488 from zerotier/macos-ipv6-config
Convince macOS to do ipv6 dns lookups
2021-12-14 08:54:45 -08:00
Sean OMeara 30c77cfee5 Merge pull request #1510 from zerotier/nolint
removing commit linter
2021-12-13 21:35:36 +01:00
Travis LaDuke afdc91f21f Convince macOS to do ipv6 dns lookups
Puts a value into System Config, similar to how DNS push works.

closes #1466

https://apple.stackexchange.com/questions/309430/ipv6-dns-resolution-on-macos-high-sierra
2021-12-13 12:34:41 -08:00
Sean OMeara 3470c5314d removing commit linter 2021-12-13 21:25:17 +01:00
Adam Ierymenko f0e824416b Merge pull request #1509 from zerotier/dev-antiflap
Proposed fix for "path amnesia"
2021-12-13 15:17:40 -05:00
Joseph Henry 52ff67fb2c Merge pull request #1504 from capruro/patch-1
Version bump to 1.8.4
2021-12-13 11:56:51 -08:00
Joseph Henry e9375b50b0 Prevent path-amnesia 2021-12-13 11:54:23 -08:00
Joseph Henry 1f43a736b2 Fix active-backup path selection bug 2021-12-09 13:43:52 -08:00
Joseph Henry 05a0a20197 Fix multipath flow reallocation. Prevent allocation to dead paths 2021-12-08 14:32:58 -08:00
Grant Limberg 2ee595553a Merge branch 'dev' into zeroidc 2021-12-08 12:35:36 -08:00
Grant Limberg 2d4fe9e6d0 Get oidc lib compiled into main binary on Windows 2021-12-08 12:14:15 -08:00
Grant Limberg dc12bde068 add vs makefile project to build oidc rust library 2021-12-08 09:49:29 -08:00
Grant Limberg b3fbbd3124 refresh tokens now working
Still investigating the best way to do a couple things, but we have something working
2021-12-07 16:29:50 -08:00
Joseph Henry 983336911c Remove obsolete documentation 2021-12-07 09:14:54 -08:00
Grant Limberg 48b39ab005 removing comments 2021-12-03 17:46:37 -08:00
Grant Limberg 5095d73de3 moar better error handling 2021-12-03 16:32:27 -08:00
Grant Limberg 1192b1b422 refresh token run loop
Need central-side work to complete
2021-12-03 15:44:04 -08:00
Grant Limberg 43c528fdb6 Get expiry time out of access token & propagate 2021-12-03 11:32:29 -08:00
Grant Limberg da4b9922d4 Merge branch 'dev' into zeroidc 2021-12-03 09:58:04 -08:00
Grant Limberg 7a8c89be9d Post ID token to Central 2021-12-03 09:57:39 -08:00
capruro 3b37db1a36 Version bump to 1.8.4 2021-12-03 14:30:05 +01:00
Joseph Henry 5ae0f9d03f Add a few more Snap targets to Linux makefile 2021-12-02 10:54:43 -08:00
Joseph Henry 1dd1bf8bac Add Snap targets to Linux makefile 2021-12-02 10:07:41 -08:00
Grant Limberg 8966002685 Merge branch 'dev' into zeroidc 2021-12-01 16:59:06 -08:00
Grant Limberg 4ce810b421 On our way to processing tokens 2021-12-01 16:57:18 -08:00
Grant Limberg 730482e62f encode network ID into sso state param 2021-12-01 15:02:21 -08:00
Adam Ierymenko eac56a2e25 Build fix in ARM flags for Snap builds. 2021-12-01 17:27:55 -05:00
Adam Ierymenko 5c3a2357ef VERSION 1.8.4 2021-12-01 17:01:57 -05:00
Grant Limberg 663a09b38d oidc stuff coming across the wire properly and generating a working login URL 2021-12-01 13:01:32 -08:00
Grant Limberg eaccce743f moar plumbing progress 2021-12-01 12:07:05 -08:00
Grant Limberg 7cce23ae79 wip 2021-12-01 10:44:29 -08:00
Grant Limberg 73c186b111 add network_id extra param to auth flow 2021-12-01 09:27:30 -08:00
Adam Ierymenko 5ce0019ee5 ARM wrestling. 2021-12-01 10:40:01 -05:00
Grant Limberg ca8d315924 Merge branch 'dev' into zeroidc 2021-11-30 18:42:45 -08:00
Grant Limberg dfdac7adbd iomanip 2021-11-30 17:31:46 -08:00
Grant Limberg a33d7c64fe more fixin 2021-11-30 17:27:13 -08:00
Adam Ierymenko e37c9055b3 ARM flags 2021-11-30 19:54:17 -05:00
Grant Limberg d15516f0ef query fix & controller build fix 2021-11-30 16:18:34 -08:00
Grant Limberg 4a1d6f4cc8 get central controller docker builds working again 2021-11-30 15:22:31 -08:00
Grant Limberg 6393a4beec progress 2021-11-30 14:22:25 -08:00
Adam Ierymenko 06125c48bc Another build speedup. 2021-11-30 15:35:18 -05:00
Adam Ierymenko 8cda04cc98 Use nproc to get the number of cores on Linux to speed up bounds. 2021-11-30 13:14:38 -05:00
Adam Ierymenko f20b7e8cee ARM32 flags update. 2021-11-30 12:35:22 -05:00
Adam Ierymenko 19dded141a Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2021-11-30 12:27:15 -05:00
Adam Ierymenko d19cf1eaac Merge branch 'dev' of http://10.95.0.64/zerotier/ZeroTierOne into dev 2021-11-30 09:10:14 -05:00
Adam Ierymenko d6b00bcd40 Fix Windows 32-bit installation. 2021-11-30 09:10:07 -05:00
Joseph Henry 1b1fe61fd0 Merge branch 'dev' of https://github.com/zerotier/zerotierone into dev 2021-11-29 19:44:51 -08:00
Joseph Henry 3bce783cbc Add minor help tip to Snap instructions 2021-11-29 19:44:34 -08:00
Adam Ierymenko 5966f7d9d2 Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2021-11-29 22:03:58 -05:00
Adam Ierymenko aed0b4941f GUID bump for Windows 2021-11-29 22:03:40 -05:00
Grant Limberg 9ef75c0e13 Merge branch 'dev' into zeroidc 2021-11-29 14:12:10 -08:00
Grant Limberg 5f548705dd lots more refactoring 2021-11-29 14:11:29 -08:00
Joseph Henry 39d3c8402e Merge branch 'dev' of https://github.com/zerotier/zerotierone into dev 2021-11-26 11:00:48 -08:00
Joseph Henry 5cb6265547 Re-word Snap package description 2021-11-26 10:59:42 -08:00
Adam Ierymenko 03dd537ea4 1.8.4 in Windows 2021-11-23 17:36:24 -05:00
Adam Ierymenko 4af8f1bf03 1.8.4 🦃 2021-11-23 16:39:20 -05:00
Adam Ierymenko ae8df648d5 Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2021-11-23 15:44:54 -05:00
Adam Ierymenko 5e24166318 Remove unused but shipped curl dependency in ext/ 2021-11-23 15:44:08 -05:00
Joseph Henry 4e10b4e017 Modify snap command aliases 2021-11-19 08:16:14 -08:00
Grant Limberg 87fdd644d4 cleanup some ifdef'd things 2021-11-18 13:36:09 -08:00
Grant Limberg 2e356613ec Refactor NetworkState into object with accessor methods 2021-11-18 12:39:55 -08:00
Grant Limberg 91e9b736dd make service objs dependent on zeroidc 2021-11-18 10:42:12 -08:00
Adam Ierymenko 7f4cc1a239 VERSION 1.8.3 2021-11-16 13:27:27 -05:00
Adam Ierymenko 3e3d46e72e Windows 1.8.3 2021-11-16 12:04:10 -05:00
Adam Ierymenko 460c2552a8 Merge branch 'master' of github.com:zerotier/ZeroTierOne 2021-11-16 11:24:08 -05:00
Adam Ierymenko 1a7fb83882 Release notes. 2021-11-16 11:23:57 -05:00
Adam Ierymenko dfac6303bc Version bump (all but Windows) and limit .pkg to MacOS 10.13 2021-11-15 19:55:58 -05:00
Adam Ierymenko 8b77a93d60 release notes 2021-11-15 19:51:56 -05:00
Adam Ierymenko fabfb10b97 Remove managed routes in destructor (regression fix). 2021-11-15 19:48:07 -05:00
Adam Ierymenko 65549cb0da Fix the FD leak fix, and release notes. 2021-11-15 18:27:14 -05:00
Adam Ierymenko bee137c6d9 Set shell for ZeroTier service user account on Debian to /usr/sbin/nologin for GitHub issue #1492 2021-11-15 17:27:16 -05:00
Adam Ierymenko a2a7122da9 release notes 2021-11-15 17:18:04 -05:00
Adam Ierymenko 0e798222a7 Fix FD leak on MacOS. 2021-11-15 17:17:05 -05:00
Adam Ierymenko c890f1762a This code is obsolete but remove vfork anyway. 2021-11-15 14:09:52 -05:00
Adam Ierymenko ea4d7ae92f Add spinlock removal to release notes. 2021-11-15 12:16:22 -05:00
Adam Ierymenko 1ef385b685 Spinlock removed, causes long standing issues on single core machines. 2021-11-12 16:44:54 -05:00
Grant Limberg 0875fb5fe0 have this make an rlib too for the future 2021-11-11 16:29:14 -08:00
Grant Limberg b5186f7293 Merge branch 'dev' into zeroidc
# Conflicts:
#	.gitignore
2021-11-11 16:20:43 -08:00
Grant Limberg fa21fdc1cc rename stuff for clarity
authenticationURL will still be used by the client for v1 and v2 of sso
2021-11-11 16:19:26 -08:00
Joseph Henry 3f4cd7f5a2 Merge pull request #1489 from capruro/master
removing source-type from snapcraft
2021-11-11 13:53:43 -08:00
Adam Ierymenko 272fb2ca96 Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2021-11-10 22:19:59 -05:00
capruro f8ca7002c2 removing source-type
Unnecessary
2021-11-10 23:15:41 +01:00
Joseph Henry 6c728313f5 Merge branch 'master' into dev 2021-11-10 13:09:56 -08:00
Grant Limberg f268237372 add FORCE tag to cargo step 2021-11-08 09:32:15 -08:00
Grant Limberg 4d021e16a5 update field lengths 2021-11-08 09:30:13 -08:00
Grant Limberg 43433cdb5a integrate rust build of zeroidc to linux 2021-11-04 17:16:23 -07:00
Grant Limberg 8d39c9a861 plumbing full flow from controller -> client network 2021-11-04 15:40:08 -07:00
Grant Limberg f8bf91426b . 2021-11-02 16:30:09 -07:00
Grant Limberg f7934972ea gitignore 2021-11-02 15:56:40 -07:00
Grant Limberg 4cadfd736f move ffi code into its own file 2021-11-02 15:55:26 -07:00
Grant Limberg 1c7a5439d5 expose AuthInfo struct to external code
also get the auth URL
2021-10-29 16:04:19 -07:00
Grant Limberg ebc4c898ff pass in csrf token & nonce (generated externally) 2021-10-29 15:43:39 -07:00
Grant Limberg 56cf874d99 slow progress 2021-10-29 15:31:23 -07:00
Grant Limberg 079ff50622 Merge branch 'dev' into zeroidc 2021-10-29 09:44:11 -07:00
Grant Limberg 31888f5ef8 provide issuer URL, client ID and local web port to constructor
also construct the oidc client
2021-10-29 09:43:14 -07:00
Grant Limberg 0069b1bac3 we can start & stop a thread. so that's nice. 2021-10-28 09:29:33 -07:00
Grant Limberg c689c0bd8c integrate with mac build system and add skeleton 2021-10-27 17:09:01 -07:00
Grant Limberg 271dfc0d2b initial rust oidc lib 2021-10-27 16:11:06 -07:00
Grant Limberg 0032df3bf1 Merge branch 'dev' into zeroidc 2021-10-27 15:02:46 -07:00
Grant Limberg 95032cc74d add sso version to network config object 2021-10-14 11:40:48 -07:00
Grant Limberg 3818351287 use pqxx::pipeline for online update thread 2021-10-06 09:39:30 -07:00
Grant Limberg 4d26b5a868 no reason for this to be a pointer 2021-10-05 17:02:50 -07:00
Grant Limberg ac0dc7844f rework commit thread & some connection pool borrowing issues 2021-10-05 09:25:24 -07:00
Grant Limberg 27e3597d5e Merge branch 'dev' into central-controller 2021-10-01 11:30:23 -07:00
rjsocha 12900d914a Merge branch 'zerotier:master' into win-service-description 2021-09-29 15:47:55 +02:00
Adam Ierymenko b403f106fb Revert "Use a faster method of fingerprinting identities."
This reverts commit b72e5e8386.
2021-09-21 09:57:08 -07:00
Adam Ierymenko 30d5d5a892 Revert "Don't assume roots validated the identity, just in case they did not."
This reverts commit 39b97f9163.
2021-09-20 19:27:01 -07:00
Adam Ierymenko c8a58b4b04 Use a faster method of fingerprinting identities. 2021-09-20 17:05:23 -07:00
Adam Ierymenko 565885a4c0 Remove ancient controller support.
# Conflicts:
#	RELEASE-NOTES.md
2021-09-20 15:41:57 -07:00
Adam Ierymenko 134d33c218 Add a bit of hardening in the network certificate of membership by incorporating a full hash of the identity to which it is issued. This means the recipient need not depend entirely on the root verifying identities properly to make sure impersonation is not occurring. 2021-09-20 15:40:55 -07:00
Adam Ierymenko 9cfb807fcb Don't assume roots validated the identity, just in case they did not. 2021-09-20 15:40:44 -07:00
Grant Limberg 46adc1f059 ifdef this out 2021-09-20 15:39:53 -07:00
Grant Limberg 9002555596 ensure count > 0 2021-09-20 15:39:44 -07:00
Grant Limberg 3b375b55c2 fix central docker launch without redis 2021-09-20 15:39:14 -07:00
channelbeta af79be5002 Update PGP keyserver URL 2021-09-20 13:51:41 -03:00
Rosen Penev 2aecb547d9 LinuxNetLink: Add cerrno header for (str)errno
Fixes compilation under libcxx.
2020-11-30 01:38:45 -08:00
Robert Socha bfe5c758ba Add description for Windos service 2020-04-18 18:56:28 +02:00
Kevin Kuehler c9f07e855e systemd: fix zerotier hanging on shutdown
On system shutdown, zerotier is stopped after the network and gets
itself into a connection timeout loop. It hits the TimeoutStopUSec= and
is forcibly killed by SIGKILL. Order zerotier after network.target so it
can shutdown gracefully while the network is still up.

From systemd.special(7):

at shutdown, a unit that is ordered after network.target will be stopped
before the network — to whatever level it might be set up then — is shut
down. It is hence useful when writing service files that require network
access on shutdown, which should order themselves after this target, but
not pull it in
2019-11-27 16:29:39 -08:00
193 changed files with 7082 additions and 10810 deletions

No files matched your search

+267
View File
@@ -0,0 +1,267 @@
---
kind: pipeline
type: docker
name: build 386
clone:
depth: 1
steps:
- name: build 386
image: registry.sean.farm/honda-builder
commands:
- ./ci/scripts/build.sh linux 386 $${DRONE_COMMIT_SHA}
- name: notify-mattermost
pull: always
image: registry.sean.farm/mattermost-notify
environment:
token:
from_secret: mattermost-token
host:
from_secret: mattermost-host
channel:
from_secret: mattermost-channel
maxRetry: 3
when:
status:
- failure
- success
image_pull_secrets:
- dockerconfigjson
---
kind: pipeline
type: docker
name: build amd64
clone:
depth: 1
steps:
- name: build amd64
image: registry.sean.farm/honda-builder
commands:
- ./ci/scripts/build.sh linux amd64 $${DRONE_COMMIT_SHA}
- name: notify-mattermost
pull: always
image: registry.sean.farm/mattermost-notify
environment:
token:
from_secret: mattermost-token
host:
from_secret: mattermost-host
channel:
from_secret: mattermost-channel
maxRetry: 3
when:
status:
- failure
- success
image_pull_secrets:
- dockerconfigjson
---
kind: pipeline
type: docker
name: build arm64
clone:
depth: 1
steps:
- name: build arm64
image: registry.sean.farm/honda-builder
commands:
- ./ci/scripts/build.sh linux arm64 $${DRONE_COMMIT_SHA}
- name: notify-mattermost
pull: always
image: registry.sean.farm/mattermost-notify
environment:
token:
from_secret: mattermost-token
host:
from_secret: mattermost-host
channel:
from_secret: mattermost-channel
maxRetry: 3
when:
status:
- failure
- success
platform:
os: linux
arch: arm64
image_pull_secrets:
- dockerconfigjson
---
kind: pipeline
type: docker
name: build armv7
platform:
os: linux
arch: arm64
clone:
depth: 1
steps:
- name: build armv7
image: registry.sean.farm/honda-builder
commands:
- ./ci/scripts/build.sh linux armv7 $${DRONE_COMMIT_SHA}
- name: notify-mattermost
pull: always
image: registry.sean.farm/mattermost-notify
environment:
token:
from_secret: mattermost-token
host:
from_secret: mattermost-host
channel:
from_secret: mattermost-channel
maxRetry: 3
when:
status:
- failure
- success
platform:
os: linux
arch: arm64
image_pull_secrets:
- dockerconfigjson
---
kind: pipeline
type: docker
name: build riscv64
clone:
depth: 1
steps:
- name: build riscv64
image: registry.sean.farm/honda-builder
commands:
- ./ci/scripts/build.sh linux riscv64 $${DRONE_COMMIT_SHA}
- name: notify-mattermost
pull: always
image: registry.sean.farm/mattermost-notify
environment:
token:
from_secret: mattermost-token
host:
from_secret: mattermost-host
channel:
from_secret: mattermost-channel
maxRetry: 3
when:
status:
- failure
- success
image_pull_secrets:
- dockerconfigjson
---
kind: pipeline
type: docker
name: build mips64le
clone:
depth: 1
steps:
- name: build mips64le
image: registry.sean.farm/honda-builder
commands:
- ./ci/scripts/build.sh linux mips64le $${DRONE_COMMIT_SHA}
- name: notify-mattermost
pull: always
image: registry.sean.farm/mattermost-notify
environment:
token:
from_secret: mattermost-token
host:
from_secret: mattermost-host
channel:
from_secret: mattermost-channel
maxRetry: 3
when:
status:
- failure
- success
image_pull_secrets:
- dockerconfigjson
---
kind: pipeline
type: docker
name: build ppc64le
clone:
depth: 1
steps:
- name: build ppc64le
image: registry.sean.farm/honda-builder
commands:
- ./ci/scripts/build.sh linux ppc64le $${DRONE_COMMIT_SHA}
- name: notify-mattermost
pull: always
image: registry.sean.farm/mattermost-notify
environment:
token:
from_secret: mattermost-token
host:
from_secret: mattermost-host
channel:
from_secret: mattermost-channel
maxRetry: 3
when:
status:
- failure
- success
image_pull_secrets:
- dockerconfigjson
---
kind: pipeline
type: docker
name: build s390x
clone:
depth: 1
steps:
- name: build s390x
image: registry.sean.farm/honda-builder
commands:
- ./ci/scripts/build.sh linux s390x $${DRONE_COMMIT_SHA}
- name: notify-mattermost
pull: always
image: registry.sean.farm/mattermost-notify
environment:
token:
from_secret: mattermost-token
host:
from_secret: mattermost-host
channel:
from_secret: mattermost-channel
maxRetry: 3
when:
status:
- failure
- success
image_pull_secrets:
- dockerconfigjson
+8 -26
View File
@@ -11,39 +11,21 @@ assignees: ''
_Using these will ensure you get quicker support, and make this space available for code-related issues. Thank you!_
- [Knowledge Base](https://zerotier.atlassian.net/wiki/spaces/SD/overview) => Guides and documentation on how to use ZeroTier.
- [Docs Site](https://docs.zerotier.com/zerotier/troubleshooting) => Troubleshooting, quickstarts, and more advanced topics.
- [Discuss Forum](https://discuss.zerotier.com/) => Our discussion forum for users and support to mutually resolve issues & suggest ideas.
- [Reddit](https://www.reddit.com/r/zerotier/) => Our subreddit, which we monitor regularly and is fairly active.
- [Knowledge Base](https://zerotier.atlassian.net/wiki/spaces/SD/overview) => Older wiki.
If you are having a connection issue, it's much easier to diagnose through the discussion forum or the ticket system.
# If you still want to file a Bug Report
## Required
## Please let us know
- What you expect to be happening.
- What is actually happening?
- Any steps to reproduce the error.
- Any screenshots that would help us out.
- Any relevant console output or screenshots.
- What operating system and ZeroTier version. Please try the latest ZeroTier release.
## Additional information
**Desktop (please complete the following information):**
- OS: [e.g. Mac, Linux, Windows, BSD]
- OS/Distribution Version
- ZeroTier Version [e.g. 1.4.6]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- ZeroTier Version [e.g. 1.4.6]
**Embedded & NAS (please complete the following information):**
- Device: [e.g. Synology, Pi4]
- OS/Distribution (if applicable)
- ZeroTier Version [e.g. 1.4.6]
**Additional context**
- ZeroTier Network Configuration: IPv4 & IPv6 networks defined on your ZeroTier Central
- Router Config: are you permitting port 9993, uPnP, and NAT-PMP?
- Firewall Config: are you permitting port 9993 on your OS; setting it to "Private" on Windows?
- Are you using this at home, in an office, college, etc?
- Have you tried screaming into your router?
-17
View File
@@ -1,17 +0,0 @@
name: badstrings
on: [pull_request, push]
jobs:
badstrings:
runs-on: ubuntu-latest
steps:
- name: scanning commit message for bad strings
run: |
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
message="${{ github.event.head_commit.message }}"
strings=($(curl -s https://raw.githubusercontent.com/someara/badstrings/main/strings.txt))
for i in ${strings[@]} ; do
echo "${message}" | grep -v "$i" &>/dev/null;
done
+7 -1
View File
@@ -6,6 +6,11 @@
/zerotier
/nltest
# IDE stuff
/.idea
/.nova
/compile_commands.json
# OS-created garbage files from various platforms
.DS_Store
.Apple*
@@ -30,7 +35,6 @@ Thumbs.db
/windows/WebUIWrapper/obj
/windows/lib
/ext/installfiles/windows/ZeroTier One-SetupFiles
/ext/installfiles/windows/Prerequisites
/ext/installfiles/windows/*-cache
/ZeroTier One.msi
*.vcxproj.backup
@@ -122,6 +126,8 @@ attic/world/*.c25519
attic/world/mkworld
workspace/
workspace2/
zeroidc/target/
tmp/
#snapcraft specifics
/parts/
+4
View File
@@ -11,6 +11,8 @@ RUN curl -sSL -o zerotier-one.deb "${PACKAGE_BASEURL}/zerotier-one_${VERSION}_${
FROM debian:buster
RUN apt-get update -qq && apt-get install openssl libssl1.1 -y
COPY --from=stage zerotier-one.deb .
RUN dpkg -i zerotier-one.deb && rm -f zerotier-one.deb
@@ -20,5 +22,7 @@ RUN rm -rf /var/lib/zerotier-one
COPY entrypoint.sh.release /entrypoint.sh
RUN chmod 755 /entrypoint.sh
HEALTHCHECK --interval=1s CMD bash /healthcheck.sh
CMD []
ENTRYPOINT ["/entrypoint.sh"]
+52
View File
@@ -1,6 +1,58 @@
ZeroTier Release Notes
======
# 2022-04-25 -- Version 1.8.9
* Fixed a long-standing and strange bug that was causing sporadic "phantom" packet authentication failures. Not a security problem but could be behind spordaic reports of link failures under some conditions.
* Fized a memory leak in SSO/OIDC support.
* Fixed SSO/OIDC display error on CLI.
* Fixed a bug causing nodes to sometimes fail to push certs to each other (primarily affects SSO/OIDC use cases).
* Fixed a deadlock bug on leaving SSO/OIDC managed networks.
* Added some new Linux distributions to the build subsystem.
# 2022-04-11 -- Version 1.8.8
* Fix a local privilege escalation bug in the Windows installer.
* Dependency fix for some Ubuntu versions.
* No changes for other platforms. Windows upgrade recommended, everyone else optional.
# 2022-03-30 -- Version 1.8.7
* Fix for dependency installations in Windows MSI package.
* Fix for desktop UI setup when run by a non-super-user.
* Bug fix in local OIDC / SSO support for auth0 and other providers.
* Other minor fixes for e.g. old Linux distributions.
# 2022-03-04 -- Version 1.8.6
* Fixed an issue that could cause the UI to be non-responsive if not joined to any networks.
* Fix dependency issues in Debian and RedHat packages for some distributions (Fedora, Mint).
* Bumped the peer cache serialization version to prevent "coma" issues on upgrade due to changes in path logic behaving badly with old values.
# 2022-02-22 -- Version 1.8.5
* Plumbing under the hood for endpoint device SSO support.
* Fix in LinuxEthernetTap to tap device support on very old (2.6) Linux kernels.
* Fix an issue that could cause self-hosted roots ("moons") to fail to assist peers in making direct links. (GitHub issue #1512)
* Merge a series of changes by Joseph Henry (of ZeroTier) that should fix some edge cases where ZeroTier would "forget" valid paths.
* Minor multipath improvements for automatic path negotiation.
# 2021-11-30 -- Version 1.8.4
* Fixed an ugly font problem on some older macOS versions.
* Fixed a bug that could cause the desktop tray app control panel to stop opening after a while on Windows.
* Fixed a possible double "release" in macOS tray app code that crashed on older macOS versions.
* Fixed installation on 32-bit Windows 10.
* Fixed a build flags issue that could cause ZeroTier to crash on older ARM32 CPUs.
# 2021-11-15 -- Version 1.8.3
* Remove problematic spinlock, which was only used on x86_64 anyway. Just use pthread always.
* Fix fd leak on MacOS that caused non-responsiveness after some time.
* Fix Debian install scripts to set /usr/sbin/nologin as shell on service user.
* Fix regression that could prevent managed routes from being deleted.
* DesktopUI: Remove NSDate:now() call, now works on MacOS 10.13 or newer!
# 2021-11-08 -- Version 1.8.2
* Fix multicast on linux.
+7
View File
@@ -0,0 +1,7 @@
FROM registry.sean.farm/sid-builder as stage
COPY . .
RUN /usr/bin/make -j 8
FROM scratch AS export
COPY --from=stage /zerotier-one .
COPY --from=stage /zerotier-cli .
+28
View File
@@ -0,0 +1,28 @@
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
export GOOS=$1
export GOARCH=$2
export VERSION=$3
export DOCKER_BUILDKIT=1
echo "nproc: $(nproc)"
case $GOARCH in
armv5)
export ARCH=arm/v5
;;
armv7)
export ARCH=arm/v7
;;
arm64)
export ARCH=arm64/v8
;;
*)
export ARCH=$GOARCH
;;
esac
docker run --privileged --rm tonistiigi/binfmt --install all
docker buildx build --platform ${GOOS}/${ARCH} -f ci/Dockerfile.sid --target export -t test . --output out/${GOOS}/${GOARCH}
+1 -1
View File
@@ -95,7 +95,7 @@ public:
if(m_pool.size()==0){
if ((m_pool.size() + m_borrowed.size()) <= m_maxPoolSize) {
if ((m_pool.size() + m_borrowed.size()) < m_maxPoolSize) {
try {
std::shared_ptr<Connection> conn = m_factory->create();
m_borrowed.insert(conn);
-8
View File
@@ -196,14 +196,6 @@ void DB::networks(std::set<uint64_t> &networks)
networks.insert(n->first);
}
void DB::networkMemberSSOHasExpired(uint64_t nwid, int64_t now) {
std::lock_guard<std::mutex> l(_networks_l);
auto nw = _networks.find(nwid);
if (nw != _networks.end()) {
nw->second->mostRecentDeauthTime = now;
}
}
void DB::_memberChanged(nlohmann::json &old,nlohmann::json &memberConfig,bool notifyListeners)
{
uint64_t memberId = 0;
+27 -2
View File
@@ -40,6 +40,32 @@
namespace ZeroTier
{
struct AuthInfo
{
public:
AuthInfo()
: enabled(false)
, version(0)
, authenticationURL()
, authenticationExpiryTime(0)
, issuerURL()
, centralAuthURL()
, ssoNonce()
, ssoState()
, ssoClientID()
{}
bool enabled;
uint64_t version;
std::string authenticationURL;
uint64_t authenticationExpiryTime;
std::string issuerURL;
std::string centralAuthURL;
std::string ssoNonce;
std::string ssoState;
std::string ssoClientID;
};
/**
* Base class with common infrastructure for all controller DB implementations
*/
@@ -108,8 +134,7 @@ public:
virtual void eraseMember(const uint64_t networkId,const uint64_t memberId) = 0;
virtual void nodeIsOnline(const uint64_t networkId,const uint64_t memberId,const InetAddress &physicalAddress) = 0;
virtual std::string getSSOAuthURL(const nlohmann::json &member, const std::string &redirectURL) { return ""; }
virtual void networkMemberSSOHasExpired(uint64_t nwid, int64_t ts);
virtual AuthInfo getSSOAuthInfo(const nlohmann::json &member, const std::string &redirectURL) { return AuthInfo(); }
inline void addListener(DB::ChangeListener *const listener)
{
+5 -56
View File
@@ -125,24 +125,16 @@ bool DBMirrorSet::get(const uint64_t networkId,nlohmann::json &network,std::vect
return false;
}
std::string DBMirrorSet::getSSOAuthURL(const nlohmann::json &member, const std::string &redirectURL)
AuthInfo DBMirrorSet::getSSOAuthInfo(const nlohmann::json &member, const std::string &redirectURL)
{
std::lock_guard<std::mutex> l(_dbs_l);
for(auto d=_dbs.begin();d!=_dbs.end();++d) {
std::string url = (*d)->getSSOAuthURL(member, redirectURL);
if (!url.empty()) {
return url;
AuthInfo info = (*d)->getSSOAuthInfo(member, redirectURL);
if (info.enabled) {
return info;
}
}
return "";
}
void DBMirrorSet::networkMemberSSOHasExpired(uint64_t nwid, int64_t ts)
{
std::lock_guard<std::mutex> l(_dbs_l);
for(auto d=_dbs.begin();d!=_dbs.end();++d) {
(*d)->networkMemberSSOHasExpired(nwid, ts);
}
return AuthInfo();
}
void DBMirrorSet::networks(std::set<uint64_t> &networks)
@@ -248,47 +240,4 @@ void DBMirrorSet::onNetworkMemberDeauthorize(const void *db,uint64_t networkId,u
_listener->onNetworkMemberDeauthorize(this,networkId,memberId);
}
void DBMirrorSet::membersExpiring(std::set< std::pair<uint64_t, uint64_t> > &soon, std::set< std::pair<uint64_t, uint64_t> > &expired)
{
std::unique_lock<std::mutex> l(_membersExpiringSoon_l);
int64_t now = OSUtils::now();
for(auto next=_membersExpiringSoon.begin();next!=_membersExpiringSoon.end();) {
if (next->first > now) {
const uint64_t nwid = next->second.first;
const uint64_t memberId = next->second.second;
nlohmann::json network, member;
if (this->get(nwid, network, memberId, member)) {
try {
const bool authorized = member["authorized"];
const bool ssoExempt = member["ssoExempt"];
const int64_t authenticationExpiryTime = member["authenticationExpiryTime"];
if ((authenticationExpiryTime == next->first)&&(authorized)&&(!ssoExempt)) {
if ((authenticationExpiryTime - now) > ZT_MEMBER_AUTH_TIMEOUT_NOTIFY_BEFORE) {
// Stop when we get to entries too far in the future.
break;
} else {
const bool ssoEnabled = network["ssoEnabled"];
if (ssoEnabled)
soon.insert(std::pair<uint64_t, uint64_t>(nwid, memberId));
}
} else {
// Obsolete entry, no longer authorized, or SSO exempt.
}
} catch ( ... ) {
// Invalid member object, erase.
}
} else {
// Not found.
}
}
_membersExpiringSoon.erase(next++);
}
}
void DBMirrorSet::memberWillExpire(int64_t expTime, uint64_t nwid, uint64_t memberId)
{
std::unique_lock<std::mutex> l(_membersExpiringSoon_l);
_membersExpiringSoon.insert(std::pair< int64_t, std::pair< uint64_t, uint64_t > >(expTime, std::pair< uint64_t, uint64_t >(nwid, memberId)));
}
} // namespace ZeroTier
+1 -7
View File
@@ -51,8 +51,7 @@ public:
virtual void onNetworkMemberUpdate(const void *db,uint64_t networkId,uint64_t memberId,const nlohmann::json &member);
virtual void onNetworkMemberDeauthorize(const void *db,uint64_t networkId,uint64_t memberId);
std::string getSSOAuthURL(const nlohmann::json &member, const std::string &redirectURL);
void networkMemberSSOHasExpired(uint64_t nwid, int64_t ts);
AuthInfo getSSOAuthInfo(const nlohmann::json &member, const std::string &redirectURL);
inline void addDB(const std::shared_ptr<DB> &db)
{
@@ -61,17 +60,12 @@ public:
_dbs.push_back(db);
}
void membersExpiring(std::set< std::pair<uint64_t, uint64_t> > &soon, std::set< std::pair<uint64_t, uint64_t> > &expired);
void memberWillExpire(int64_t expTime, uint64_t nwid, uint64_t memberId);
private:
DB::ChangeListener *const _listener;
std::atomic_bool _running;
std::thread _syncCheckerThread;
std::vector< std::shared_ptr< DB > > _dbs;
mutable std::mutex _dbs_l;
std::set< std::pair< int64_t, std::pair<uint64_t, uint64_t> > > _membersExpiringSoon;
mutable std::mutex _membersExpiringSoon_l;
};
} // namespace ZeroTier
+92 -82
View File
@@ -63,29 +63,6 @@ namespace ZeroTier {
namespace {
std::string url_encode(const std::string &value) {
std::ostringstream escaped;
escaped.fill('0');
escaped << std::hex;
for (std::string::const_iterator i = value.begin(), n = value.end(); i != n; ++i) {
std::string::value_type c = (*i);
// Keep alphanumeric and other accepted characters intact
if (isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~') {
escaped << c;
continue;
}
// Any other characters are percent-encoded
escaped << std::uppercase;
escaped << '%' << std::setw(2) << int((unsigned char) c);
escaped << std::nouppercase;
}
return escaped.str();
}
static json _renderRule(ZT_VirtualNetworkRule &rule)
{
char tmp[128];
@@ -503,7 +480,7 @@ EmbeddedNetworkController::~EmbeddedNetworkController()
}
void EmbeddedNetworkController::setSSORedirectURL(const std::string &url) {
_ssoRedirectURL = url_encode(url);
_ssoRedirectURL = url;
}
void EmbeddedNetworkController::init(const Identity &signingId,Sender *sender)
@@ -1285,6 +1262,7 @@ void EmbeddedNetworkController::_request(
}
const bool newMember = ((!member.is_object())||(member.empty()));
DB::initMember(member);
_MemberStatusKey msk(nwid,identity.address().toInt());
{
const std::string haveIdStr(OSUtils::jsonString(member["identity"],""));
@@ -1358,32 +1336,33 @@ void EmbeddedNetworkController::_request(
// Should we check SSO Stuff?
// If network is configured with SSO, and the member is not marked exempt: yes
// Otherwise no, we use standard auth logic.
AuthInfo info;
int64_t authenticationExpiryTime = -1;
bool networkSSOEnabled = OSUtils::jsonBool(network["ssoEnabled"], false);
bool memberSSOExempt = OSUtils::jsonBool(member["ssoExempt"], false);
std::string authenticationURL;
if (networkSSOEnabled && !memberSSOExempt) {
authenticationURL = _db.getSSOAuthURL(member, _ssoRedirectURL);
std::string memberId = member["id"];
//fprintf(stderr, "ssoEnabled && !ssoExempt %s-%s\n", nwids, memberId.c_str());
uint64_t authenticationExpiryTime = (int64_t)OSUtils::jsonInt(member["authenticationExpiryTime"], 0);
//fprintf(stderr, "authExpiryTime: %lld\n", authenticationExpiryTime);
if (authenticationExpiryTime < now) {
if (!authenticationURL.empty()) {
_db.networkMemberSSOHasExpired(nwid, now);
onNetworkMemberDeauthorize(&_db, nwid, identity.address().toInt());
Dictionary<3072> authInfo;
authInfo.add("aU", authenticationURL.c_str());
//fprintf(stderr, "sending auth URL: %s\n", authenticationURL.c_str());
DB::cleanMember(member);
_db.save(member,true);
authenticationExpiryTime = (int64_t)OSUtils::jsonInt(member["authenticationExpiryTime"], 0);
info = _db.getSSOAuthInfo(member, _ssoRedirectURL);
assert(info.enabled == networkSSOEnabled);
if (authenticationExpiryTime <= now) {
if (info.version == 0) {
Dictionary<4096> authInfo;
authInfo.add(ZT_AUTHINFO_DICT_KEY_VERSION, (uint64_t)0ULL);
authInfo.add(ZT_AUTHINFO_DICT_KEY_AUTHENTICATION_URL, info.authenticationURL.c_str());
_sender->ncSendError(nwid,requestPacketId,identity.address(),NetworkController::NC_ERROR_AUTHENTICATION_REQUIRED, authInfo.data(), authInfo.sizeBytes());
} else if (info.version == 1) {
Dictionary<8192> authInfo;
authInfo.add(ZT_AUTHINFO_DICT_KEY_VERSION, info.version);
authInfo.add(ZT_AUTHINFO_DICT_KEY_ISSUER_URL, info.issuerURL.c_str());
authInfo.add(ZT_AUTHINFO_DICT_KEY_CENTRAL_ENDPOINT_URL, info.centralAuthURL.c_str());
authInfo.add(ZT_AUTHINFO_DICT_KEY_NONCE, info.ssoNonce.c_str());
authInfo.add(ZT_AUTHINFO_DICT_KEY_STATE, info.ssoState.c_str());
authInfo.add(ZT_AUTHINFO_DICT_KEY_CLIENT_ID, info.ssoClientID.c_str());
_sender->ncSendError(nwid,requestPacketId,identity.address(),NetworkController::NC_ERROR_AUTHENTICATION_REQUIRED, authInfo.data(), authInfo.sizeBytes());
return;
}
} else if (authorized) {
_db.memberWillExpire(authenticationExpiryTime, nwid, identity.address().toInt());
DB::cleanMember(member);
_db.save(member,true);
return;
}
}
@@ -1402,8 +1381,8 @@ void EmbeddedNetworkController::_request(
{
std::lock_guard<std::mutex> l(_memberStatus_l);
_MemberStatus &ms = _memberStatus[_MemberStatusKey(nwid,identity.address().toInt())];
_MemberStatus &ms = _memberStatus[msk];
ms.authenticationExpiryTime = authenticationExpiryTime;
ms.vMajor = (int)vMajor;
ms.vMinor = (int)vMinor;
ms.vRev = (int)vRev;
@@ -1411,9 +1390,13 @@ void EmbeddedNetworkController::_request(
ms.lastRequestMetaData = metaData;
ms.identity = identity;
}
}
if (authenticationExpiryTime > 0) {
std::lock_guard<std::mutex> l(_expiringSoon_l);
_expiringSoon.insert(std::pair<int64_t, _MemberStatusKey>(authenticationExpiryTime, msk));
}
}
} else {
// If they are not authorized, STOP!
DB::cleanMember(member);
_db.save(member,true);
@@ -1425,18 +1408,13 @@ void EmbeddedNetworkController::_request(
// If we made it this far, they are authorized (and authenticated).
// -------------------------------------------------------------------------
int64_t credentialtmd = ZT_NETWORKCONFIG_DEFAULT_CREDENTIAL_TIME_MAX_MAX_DELTA;
if (now > ns.mostRecentDeauthTime) {
// If we recently de-authorized a member, shrink credential TTL/max delta to
// be below the threshold required to exclude it. Cap this to a min/max to
// prevent jitter or absurdly large values.
const uint64_t deauthWindow = now - ns.mostRecentDeauthTime;
if (deauthWindow < ZT_NETWORKCONFIG_DEFAULT_CREDENTIAL_TIME_MIN_MAX_DELTA) {
credentialtmd = ZT_NETWORKCONFIG_DEFAULT_CREDENTIAL_TIME_MIN_MAX_DELTA;
} else if (deauthWindow < (ZT_NETWORKCONFIG_DEFAULT_CREDENTIAL_TIME_MAX_MAX_DELTA + 5000ULL)) {
credentialtmd = deauthWindow - 5000ULL;
}
// Default timeout: 15 minutes. Maximum: two hours. Can be specified by an optional field in the network config
// if something longer than 15 minutes is desired. Minimum is 5 minutes since shorter than that would be flaky.
int64_t credentialtmd = ZT_NETWORKCONFIG_DEFAULT_CREDENTIAL_TIME_DFL_MAX_DELTA;
if (network.contains("certificateTimeoutWindowSize")) {
credentialtmd = (int64_t)network["certificateTimeoutWindowSize"];
}
credentialtmd = std::max(std::min(credentialtmd, ZT_NETWORKCONFIG_DEFAULT_CREDENTIAL_TIME_MAX_MAX_DELTA), ZT_NETWORKCONFIG_DEFAULT_CREDENTIAL_TIME_MIN_MAX_DELTA);
std::unique_ptr<NetworkConfig> nc(new NetworkConfig());
@@ -1451,10 +1429,37 @@ void EmbeddedNetworkController::_request(
nc->mtu = std::max(std::min((unsigned int)OSUtils::jsonInt(network["mtu"],ZT_DEFAULT_MTU),(unsigned int)ZT_MAX_MTU),(unsigned int)ZT_MIN_MTU);
nc->multicastLimit = (unsigned int)OSUtils::jsonInt(network["multicastLimit"],32ULL);
nc->ssoEnabled = OSUtils::jsonBool(network["ssoEnabled"], false);
nc->authenticationExpiryTime = OSUtils::jsonInt(member["authenticationExpiryTime"], 0LL);
if (!authenticationURL.empty())
Utils::scopy(nc->authenticationURL, sizeof(nc->authenticationURL), authenticationURL.c_str());
nc->ssoEnabled = networkSSOEnabled; //OSUtils::jsonBool(network["ssoEnabled"], false);
nc->ssoVersion = info.version;
if (info.version == 0) {
nc->authenticationExpiryTime = OSUtils::jsonInt(member["authenticationExpiryTime"], 0LL);
if (!info.authenticationURL.empty()) {
Utils::scopy(nc->authenticationURL, sizeof(nc->authenticationURL), info.authenticationURL.c_str());
}
}
else if (info.version == 1) {
nc->authenticationExpiryTime = OSUtils::jsonInt(member["authenticationExpiryTime"], 0LL);
if (!info.authenticationURL.empty()) {
Utils::scopy(nc->authenticationURL, sizeof(nc->authenticationURL), info.authenticationURL.c_str());
}
if (!info.centralAuthURL.empty()) {
Utils::scopy(nc->centralAuthURL, sizeof(nc->centralAuthURL), info.centralAuthURL.c_str());
}
if (!info.issuerURL.empty()) {
fprintf(stderr, "copying issuerURL to nc: %s\n", info.issuerURL.c_str());
Utils::scopy(nc->issuerURL, sizeof(nc->issuerURL), info.issuerURL.c_str());
}
if (!info.ssoNonce.empty()) {
Utils::scopy(nc->ssoNonce, sizeof(nc->ssoNonce), info.ssoNonce.c_str());
}
if (!info.ssoState.empty()) {
Utils::scopy(nc->ssoState, sizeof(nc->ssoState), info.ssoState.c_str());
}
if (!info.ssoClientID.empty()) {
Utils::scopy(nc->ssoClientID, sizeof(nc->ssoClientID), info.ssoClientID.c_str());
}
}
std::string rtt(OSUtils::jsonString(member["remoteTraceTarget"],""));
if (rtt.length() == 10) {
@@ -1822,6 +1827,8 @@ void EmbeddedNetworkController::_startThreads()
const long hwc = std::max((long)std::thread::hardware_concurrency(),(long)1);
for(long t=0;t<hwc;++t) {
_threads.emplace_back([this]() {
std::vector<_MemberStatusKey> expired;
nlohmann::json network, member;
for(;;) {
_RQEntry *qe = (_RQEntry *)0;
auto timedWaitResult = _queue.get(qe, 1000);
@@ -1840,28 +1847,31 @@ void EmbeddedNetworkController::_startThreads()
}
}
std::set< std::pair<uint64_t, uint64_t> > soon;
std::set< std::pair<uint64_t, uint64_t> > expired;
_db.membersExpiring(soon, expired);
for(auto s=soon.begin();s!=soon.end();++s) {
Identity identity;
Dictionary<ZT_NETWORKCONFIG_METADATA_DICT_CAPACITY> lastMetaData;
{
std::unique_lock<std::mutex> ll(_memberStatus_l);
auto ms = _memberStatus.find(_MemberStatusKey(s->first, s->second));
if (ms != _memberStatus.end()) {
lastMetaData = ms->second.lastRequestMetaData;
identity = ms->second.identity;
expired.clear();
int64_t now = OSUtils::now();
{
std::lock_guard<std::mutex> l(_expiringSoon_l);
for(auto s=_expiringSoon.begin();s!=_expiringSoon.end();) {
const int64_t when = s->first;
if (when <= now) {
// The user may have re-authorized, so we must actually look it up and check.
network.clear();
member.clear();
if (_db.get(s->second.networkId, network, s->second.nodeId, member)) {
int64_t authenticationExpiryTime = (int64_t)OSUtils::jsonInt(member["authenticationExpiryTime"], 0);
if (authenticationExpiryTime <= now) {
expired.push_back(s->second);
}
}
_expiringSoon.erase(s++);
} else {
// Don't bother going further into the future than necessary.
break;
}
}
if (identity) {
request(s->first,InetAddress(),0,identity,lastMetaData);
}
}
for(auto e=expired.begin();e!=expired.end();++e) {
onNetworkMemberDeauthorize(nullptr, e->first, e->second);
onNetworkMemberDeauthorize(nullptr, e->networkId, e->nodeId);
}
}
});
+8 -2
View File
@@ -109,6 +109,7 @@ private:
RQENTRY_TYPE_REQUEST = 0
} type;
};
struct _MemberStatusKey
{
_MemberStatusKey() : networkId(0),nodeId(0) {}
@@ -116,11 +117,13 @@ private:
uint64_t networkId;
uint64_t nodeId;
inline bool operator==(const _MemberStatusKey &k) const { return ((k.networkId == networkId)&&(k.nodeId == nodeId)); }
inline bool operator<(const _MemberStatusKey &k) const { return (k.networkId < networkId) || ((k.networkId == networkId)&&(k.nodeId < nodeId)); }
};
struct _MemberStatus
{
_MemberStatus() : lastRequestTime(0),vMajor(-1),vMinor(-1),vRev(-1),vProto(-1) {}
uint64_t lastRequestTime;
_MemberStatus() : lastRequestTime(0),authenticationExpiryTime(-1),vMajor(-1),vMinor(-1),vRev(-1),vProto(-1) {}
int64_t lastRequestTime;
int64_t authenticationExpiryTime;
int vMajor,vMinor,vRev,vProto;
Dictionary<ZT_NETWORKCONFIG_METADATA_DICT_CAPACITY> lastRequestMetaData;
Identity identity;
@@ -152,6 +155,9 @@ private:
std::unordered_map< _MemberStatusKey,_MemberStatus,_MemberStatusHash > _memberStatus;
std::mutex _memberStatus_l;
std::set< std::pair<int64_t, _MemberStatusKey> > _expiringSoon;
std::mutex _expiringSoon_l;
RedisConfig *_rc;
std::string _ssoRedirectURL;
};
+203 -128
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -107,7 +107,7 @@ public:
virtual void eraseNetwork(const uint64_t networkId);
virtual void eraseMember(const uint64_t networkId, const uint64_t memberId);
virtual void nodeIsOnline(const uint64_t networkId, const uint64_t memberId, const InetAddress &physicalAddress);
virtual std::string getSSOAuthURL(const nlohmann::json &member, const std::string &redirectURL);
virtual AuthInfo getSSOAuthInfo(const nlohmann::json &member, const std::string &redirectURL);
protected:
struct _PairHasher
+42
View File
@@ -1,3 +1,45 @@
zerotier-one (1.8.9) unstable; urgency=medium
* See RELEASE-NOTES.md for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Mon, 25 Apr 2022 01:00:00 -0700
zerotier-one (1.8.8) unstable; urgency=medium
* See RELEASE-NOTES.md for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Mon, 11 Apr 2022 01:00:00 -0700
zerotier-one (1.8.7) unstable; urgency=medium
* See RELEASE-NOTES.md for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Mon, 21 Mar 2022 01:00:00 -0700
zerotier-one (1.8.6) unstable; urgency=medium
* See RELEASE-NOTES.md for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Mon, 07 Mar 2022 01:00:00 -0700
zerotier-one (1.8.5) unstable; urgency=medium
* See RELEASE-NOTES.md for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Fri, 17 Dec 2021 01:00:00 -0700
zerotier-one (1.8.4) unstable; urgency=medium
* See RELEASE-NOTES.md for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Mon, 23 Nov 2021 01:00:00 -0700
zerotier-one (1.8.3) unstable; urgency=medium
* See RELEASE-NOTES.md for release notes.
-- Adam Ierymenko <adam.ierymenko@zerotier.com> Mon, 15 Nov 2021 01:00:00 -0700
zerotier-one (1.8.2) unstable; urgency=medium
* See RELEASE-NOTES.md for release notes.
+1 -1
View File
@@ -10,7 +10,7 @@ Homepage: https://www.zerotier.com/
Package: zerotier-one
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, iproute2, adduser, libstdc++6
Depends: iproute2, adduser, libstdc++6 (>= 5), openssl
Homepage: https://www.zerotier.com/
Description: ZeroTier network virtualization service
ZeroTier One lets you join ZeroTier virtual networks and
+1 -1
View File
@@ -3,7 +3,7 @@
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
useradd --system --user-group --home-dir /var/lib/zerotier-one --shell /usr/sbin/nologin --no-create-home zerotier-one
fi
;;
esac
Loaded 20 of 193 files, more files were not shown because too many files have changed in this diff. Show more