From 4722a0b75afd910f0f25a1d5505f50f9b782ec77 Mon Sep 17 00:00:00 2001 From: didyouexpectthat Date: Fri, 12 Jan 2018 18:20:00 -0800 Subject: [PATCH] Imported Upstream version 1.2.4 --- .gitignore | 36 +- AUTHORS.md | 31 +- Jenkinsfile | 82 + Makefile | 10 +- OFFICIAL-RELEASE-STEPS.md | 1 + README.md | 68 +- RELEASE-NOTES.md | 138 + attic/Filter.cpp | 408 -- attic/Filter.hpp | 284 - attic/SECURITY.md | 84 - attic/cli/README.md | 57 + attic/cli/zerotier.cpp | 957 +++ .../linux-build-farm}/README.md | 0 .../amazon-2016.03/x64/Dockerfile | 0 .../linux-build-farm}/build.sh | 0 .../linux-build-farm}/centos-6/x64/Dockerfile | 0 .../linux-build-farm}/centos-6/x86/Dockerfile | 0 .../linux-build-farm}/centos-7/x64/Dockerfile | 0 .../linux-build-farm}/centos-7/x86/Dockerfile | 0 .../debian-jessie/x64/Dockerfile | 0 .../debian-jessie/x86/Dockerfile | 0 .../debian-stretch/x64/Dockerfile | 0 .../debian-stretch/x86/Dockerfile | 0 .../debian-wheezy/x64/Dockerfile | 0 .../debian-wheezy/x86/Dockerfile | 0 .../fedora-22/x64/Dockerfile | 0 .../fedora-22/x86/Dockerfile | 0 .../linux-build-farm}/make-apt-repos.sh | 0 .../linux-build-farm}/make-rpm-repos.sh | 0 .../ubuntu-trusty/x64/Dockerfile | 0 .../ubuntu-trusty/x86/Dockerfile | 0 .../ubuntu-wily/x64/Dockerfile | 0 .../ubuntu-wily/x86/Dockerfile | 0 .../ubuntu-xenial/x64/Dockerfile | 0 .../ubuntu-xenial/x86/Dockerfile | 0 .../old-controller-schema.sql | 45 +- {world => attic/world}/README.md | 0 {world => attic/world}/build.sh | 0 {world => attic/world}/earth-2016-01-13.bin | Bin {world => attic/world}/mkworld.cpp | 21 +- .../world}/old/earth-2015-11-16.bin | Bin .../world}/old/earth-2015-11-20.bin | Bin .../world}/old/earth-2015-12-17.bin | Bin cli/README.md | 6 - cli/zerotier.cpp | 335 -- controller/EmbeddedNetworkController.cpp | 1854 ++++++ controller/EmbeddedNetworkController.hpp | 210 + controller/JSONDB.cpp | 219 + controller/JSONDB.hpp | 116 + controller/README.md | 217 +- controller/SqliteNetworkController.cpp | 2195 ------- controller/SqliteNetworkController.hpp | 181 - controller/migrate-sqlite/migrate.js | 320 + controller/migrate-sqlite/package.json | 15 + controller/schema.sql.c | 121 - controller/schema2c.sh | 8 - debian/changelog | 18 + debian/control | 4 +- debian/control.wheezy | 4 +- debian/postinst | 9 + debian/rules | 2 +- debian/rules.static | 16 + debian/rules.wheezy | 2 +- debian/rules.wheezy.static | 11 + debian/{ => source}/format | 0 doc/ext/kubernetes/.zerotierCliSettings | 18 + doc/ext/kubernetes/Dockerfile | 19 + doc/ext/kubernetes/README.md | 150 + doc/ext/kubernetes/entrypoint.sh | 23 + doc/ext/kubernetes/server.js | 8 + doc/zerotier-cli.1 | 83 + doc/zerotier-idtool.1 | 84 + doc/zerotier-one.8 | 104 + ext/arm32-neon-salsa2012-asm/README.md | 6 + ext/arm32-neon-salsa2012-asm/salsa2012.h | 23 + ext/arm32-neon-salsa2012-asm/salsa2012.s | 2231 +++++++ .../x64/WdfCoinstaller01011.dll | Bin 1795952 -> 0 bytes ext/bin/tap-windows-ndis5/x64/zttap200.cat | Bin 10549 -> 0 bytes ext/bin/tap-windows-ndis5/x64/zttap200.inf | 79 - ext/bin/tap-windows-ndis5/x64/zttap200.sys | Bin 31896 -> 0 bytes .../x86/WdfCoinstaller01011.dll | Bin 1629040 -> 0 bytes ext/bin/tap-windows-ndis5/x86/zttap200.cat | Bin 10496 -> 0 bytes ext/bin/tap-windows-ndis5/x86/zttap200.inf | 76 - ext/bin/tap-windows-ndis5/x86/zttap200.sys | Bin 28824 -> 0 bytes .../x64/ZeroTierOne_NDIS6_x64.msi | Bin 1453056 -> 1453568 bytes .../x86/ZeroTierOne_NDIS6_x86.msi | Bin 1070080 -> 1070592 bytes ext/http-parser/http_parser.c | 11 +- ext/http-parser/http_parser.h | 72 +- .../linux/zerotier-containerized/Dockerfile | 20 + .../linux/zerotier-containerized/main.sh | 10 + ext/installfiles/mac-update/updater.tmpl.sh | 49 + ext/installfiles/mac/ZeroTier One.pkgproj | 121 +- .../bin/ZeroTier One.app/Contents/Info.plist | 59 - .../Contents/MacOS/ZeroTier One | Bin 152736 -> 0 bytes .../bin/ZeroTier One.app/Contents/PkgInfo | 1 - .../Contents/Resources/en.lproj/Credits.rtf | 13 - .../Resources/en.lproj/InfoPlist.strings | Bin 92 -> 0 bytes .../Contents/Resources/en.lproj/MainMenu.nib | Bin 25269 -> 0 bytes .../Contents/Resources/en.lproj/Window.nib | Bin 3616 -> 0 bytes .../Contents/_CodeSignature/CodeResources | 187 - .../mac/mac-ui-macgap1-wrapper/src/LICENSE | 25 - .../src/MacGap.xcodeproj/project.pbxproj | 489 -- .../xcshareddata/MacGap.xccheckout | 41 - .../UserInterfaceState.xcuserstate | Bin 46675 -> 0 bytes .../WorkspaceSettings.xcsettings | 10 - .../UserInterfaceState.xcuserstate | Bin 27811 -> 0 bytes .../WorkspaceSettings.xcsettings | 10 - .../src/MacGap/AppDelegate.h | 18 - .../src/MacGap/AppDelegate.m | 159 - .../src/MacGap/Classes/CallbackDelegate.h | 20 - .../src/MacGap/Classes/CallbackDelegate.m | 168 - .../src/MacGap/Classes/Commands/App.h | 21 - .../src/MacGap/Classes/Commands/App.m | 128 - .../src/MacGap/Classes/Commands/Command.h | 18 - .../src/MacGap/Classes/Commands/Command.m | 28 - .../src/MacGap/Classes/Commands/Dock.h | 11 - .../src/MacGap/Classes/Commands/Dock.m | 31 - .../MacGap/Classes/Commands/MenuItemProxy.h | 31 - .../MacGap/Classes/Commands/MenuItemProxy.m | 150 - .../src/MacGap/Classes/Commands/MenuProxy.h | 31 - .../src/MacGap/Classes/Commands/MenuProxy.m | 233 - .../src/MacGap/Classes/Commands/Notice.h | 26 - .../src/MacGap/Classes/Commands/Notice.m | 108 - .../src/MacGap/Classes/Commands/Path.h | 21 - .../src/MacGap/Classes/Commands/Path.m | 53 - .../src/MacGap/Classes/Commands/Sound.h | 17 - .../src/MacGap/Classes/Commands/Sound.m | 97 - .../MacGap/Classes/Commands/UserDefaults.h | 43 - .../MacGap/Classes/Commands/UserDefaults.m | 211 - .../src/MacGap/Classes/Commands/fonts.h | 9 - .../src/MacGap/Classes/Commands/fonts.m | 48 - .../src/MacGap/Classes/Constants.h | 7 - .../src/MacGap/Classes/ContentView.h | 15 - .../src/MacGap/Classes/ContentView.m | 68 - .../src/MacGap/Classes/JSEventHelper.h | 20 - .../src/MacGap/Classes/JSEventHelper.m | 41 - .../src/MacGap/Classes/Utils.h | 20 - .../src/MacGap/Classes/Utils.m | 93 - .../src/MacGap/Classes/WebViewDelegate.h | 49 - .../src/MacGap/Classes/WebViewDelegate.m | 206 - .../src/MacGap/Classes/Window.h | 23 - .../src/MacGap/Classes/Window.m | 94 - .../src/MacGap/Clipboard.h | 10 - .../src/MacGap/Clipboard.m | 51 - .../src/MacGap/MacGap-Prefix.pch | 15 - .../src/MacGap/WindowController.h | 13 - .../src/MacGap/WindowController.m | 54 - .../src/MacGap/en.lproj/Credits.rtf | 13 - .../src/MacGap/en.lproj/InfoPlist.strings | 2 - .../src/MacGap/en.lproj/MainMenu.xib | 3404 ----------- .../src/MacGap/en.lproj/Window.xib | 44 - .../mac-ui-macgap1-wrapper/src/MacGap/main.m | 14 - .../mac/mac-ui-macgap1-wrapper/src/README.md | 6 - ext/installfiles/mac/postinst.sh | 2 +- ext/installfiles/mac/ui/Makefile | 6 - ext/installfiles/mac/ui/README.md | 10 - ext/installfiles/mac/ui/ZeroTierNetwork.jsx | 74 - ext/installfiles/mac/ui/ZeroTierNode.jsx | 158 - ext/installfiles/mac/ui/index.html | 58 - ext/installfiles/mac/ui/main.js | 51 - ext/installfiles/mac/ui/react.min.js | 15 - ext/installfiles/mac/ui/simpleajax.min.js | 2 - ext/installfiles/mac/ui/zerotier.css | 199 - ext/installfiles/mac/ui/ztui.min.js | 1 - ext/installfiles/mac/uninstall.sh | 12 +- ...r One Virtual Network Port (NDIS6_x64).aip | 6 +- ...r One Virtual Network Port (NDIS6_x86).aip | 6 +- ext/installfiles/windows/ZeroTier One.aip | 138 +- .../zerotier-one/tools/chocolateyinstall.ps1 | 4 +- .../zerotier-one/zerotier-one.nuspec | 2 +- ext/json-parser/AUTHORS | 20 - ext/json-parser/LICENSE | 26 - ext/json-parser/README.md | 97 - ext/json-parser/json.c | 1012 ---- ext/json-parser/json.h | 283 - ext/json/README.md | 68 +- ext/json/json.hpp | 5262 ++++++++++++----- ext/lz4/lz4.c | 1516 ----- ext/lz4/lz4.h | 360 -- ext/miniupnpc/connecthostport.c | 10 +- ext/miniupnpc/minihttptestserver.c | 8 +- ext/miniupnpc/minisoap.c | 4 +- ext/miniupnpc/minissdpc.c | 29 +- ext/miniupnpc/miniupnpc.c | 2 - ext/miniupnpc/miniupnpc.h | 2 +- ext/miniupnpc/miniwget.c | 9 +- ext/miniupnpc/minixml.c | 1 - ext/miniupnpc/minixmlvalid.c | 1 - ext/miniupnpc/portlistingparse.c | 6 +- ext/miniupnpc/upnpc.c | 72 +- ext/miniupnpc/upnpcommands.c | 2 - ext/miniupnpc/upnpreplyparse.c | 1 - ext/x64-salsa2012-asm/README.md | 6 + ext/x64-salsa2012-asm/salsa2012.h | 16 + ext/x64-salsa2012-asm/salsa2012.s | 4488 ++++++++++++++ include/ZeroTierOne.h | 666 ++- java/jni/Android.mk | 16 +- java/jni/Application.mk | 4 +- java/jni/ZT_jniutils.cpp | 191 +- java/jni/ZT_jniutils.h | 20 + java/jni/com_zerotierone_sdk_Node.cpp | 327 +- java/src/com/zerotier/sdk/Node.java | 43 +- java/src/com/zerotier/sdk/PathChecker.java | 45 + java/src/com/zerotier/sdk/Peer.java | 16 - .../com/zerotier/sdk/PeerPhysicalPath.java | 8 - java/src/com/zerotier/sdk/PeerRole.java | 8 +- .../zerotier/sdk/VirtualNetworkConfig.java | 23 +- .../com/zerotier/sdk/VirtualNetworkRoute.java | 102 + macui/ZeroTier One.xcodeproj/project.pbxproj | 382 ++ .../contents.xcworkspacedata | 2 +- macui/ZeroTier One/AboutViewController.h | 33 + macui/ZeroTier One/AboutViewController.m | 57 + macui/ZeroTier One/AboutViewController.xib | 31 + macui/ZeroTier One/AppDelegate.h | 61 + macui/ZeroTier One/AppDelegate.m | 378 ++ .../AppIcon.appiconset/Contents.json | 59 + .../ZeroTierIcon512x512.png | Bin 0 -> 51309 bytes .../Assets.xcassets/Contents.json | 6 + .../MenuBarIconMac.imageset/Contents.json | 21 + .../MenuBarIconMac.imageset/MenuBar@2x.png | Bin 0 -> 22973 bytes .../MenuBarIconMac.imageset/Menubar.png | Bin 0 -> 17234 bytes .../Contents.json | 21 + .../MenubarWhite.png | Bin 0 -> 17234 bytes .../MenubarWhite@2x.png | Bin 0 -> 22973 bytes macui/ZeroTier One/AuthtokenCopy.h | 26 + macui/ZeroTier One/AuthtokenCopy.m | 97 + macui/ZeroTier One/Base.lproj/MainMenu.xib | 680 +++ .../ZeroTier One/Info.plist | 24 +- .../ZeroTier One/JoinNetworkViewController.h | 40 + .../ZeroTier One/JoinNetworkViewController.m | 184 + .../JoinNetworkViewController.xib | 82 + macui/ZeroTier One/Network.h | 68 + macui/ZeroTier One/Network.m | 337 ++ macui/ZeroTier One/NetworkInfoCell.h | 50 + macui/ZeroTier One/NetworkInfoCell.m | 85 + macui/ZeroTier One/NetworkMonitor.h | 45 + macui/ZeroTier One/NetworkMonitor.m | 253 + macui/ZeroTier One/NodeStatus.h | 35 + macui/ZeroTier One/NodeStatus.m | 40 + .../ZeroTier One/PreferencesViewController.h | 31 + .../ZeroTier One/PreferencesViewController.m | 112 + .../PreferencesViewController.xib | 33 + macui/ZeroTier One/ServiceCom.h | 40 + macui/ZeroTier One/ServiceCom.m | 516 ++ .../ZeroTier One/ShowNetworksViewController.h | 36 + .../ZeroTier One/ShowNetworksViewController.m | 181 + .../ShowNetworksViewController.xib | 371 ++ .../ZeroTier One}/ZeroTierIcon.icns | Bin macui/ZeroTier One/about.html | 65 + macui/ZeroTier One/main.m | 23 + make-bsd.mk | 156 + make-freebsd.mk | 65 - make-linux.mk | 234 +- make-mac.mk | 86 +- node/Address.hpp | 73 +- node/AtomicCounter.hpp | 51 +- node/BinarySemaphore.hpp | 97 - node/Buffer.hpp | 54 +- node/Capability.cpp | 65 + node/Capability.hpp | 472 ++ node/CertificateOfMembership.cpp | 37 +- node/CertificateOfMembership.hpp | 140 +- node/CertificateOfOwnership.cpp | 63 + node/CertificateOfOwnership.hpp | 237 + node/CertificateOfRepresentation.hpp | 180 + node/Cluster.cpp | 255 +- node/Cluster.hpp | 63 +- node/Constants.hpp | 169 +- node/Credential.hpp | 58 + node/DeferredPackets.cpp | 100 - node/DeferredPackets.hpp | 85 - node/Dictionary.hpp | 91 +- node/Hashtable.hpp | 6 +- node/Identity.cpp | 12 +- node/Identity.hpp | 35 +- node/IncomingPacket.cpp | 1412 +++-- node/IncomingPacket.hpp | 112 +- node/InetAddress.cpp | 12 +- node/InetAddress.hpp | 76 +- node/Membership.cpp | 231 + node/Membership.hpp | 272 + node/MulticastGroup.hpp | 26 - node/Multicaster.cpp | 142 +- node/Multicaster.hpp | 55 +- node/Network.cpp | 1546 ++++- node/Network.hpp | 335 +- node/NetworkConfig.cpp | 553 +- node/NetworkConfig.hpp | 359 +- node/NetworkController.hpp | 86 +- node/Node.cpp | 543 +- node/Node.hpp | 207 +- node/OutboundMulticast.cpp | 90 +- node/OutboundMulticast.hpp | 30 +- node/Packet.cpp | 1180 +++- node/Packet.hpp | 474 +- node/Path.cpp | 6 +- node/Path.hpp | 380 +- node/Peer.cpp | 739 +-- node/Peer.hpp | 567 +- node/Poly1305.cpp | 21 +- node/README.md | 2 +- node/Revocation.cpp | 46 + node/Revocation.hpp | 189 + node/RuntimeEnvironment.hpp | 9 - node/Salsa20.cpp | 61 +- node/Salsa20.hpp | 89 +- node/SelfAwareness.cpp | 130 +- node/SelfAwareness.hpp | 8 +- node/SharedPtr.hpp | 28 +- node/Switch.cpp | 687 ++- node/Switch.hpp | 75 +- node/Tag.cpp | 46 + node/Tag.hpp | 202 + node/Topology.cpp | 505 +- node/Topology.hpp | 261 +- node/Utils.cpp | 106 +- node/Utils.hpp | 39 +- node/World.hpp | 142 +- objects.mk | 11 +- one.cpp | 744 ++- osdep/BSDEthernetTap.cpp | 39 +- osdep/BSDEthernetTap.hpp | 4 +- osdep/BackgroundResolver.cpp | 121 - osdep/BackgroundResolver.hpp | 118 - osdep/Binder.hpp | 143 +- osdep/BlockingQueue.hpp | 64 + osdep/Http.hpp | 33 + osdep/LinuxEthernetTap.cpp | 109 +- osdep/LinuxEthernetTap.hpp | 7 +- osdep/ManagedRoute.cpp | 342 +- osdep/ManagedRoute.hpp | 63 +- osdep/NeighborDiscovery.cpp | 264 + osdep/NeighborDiscovery.hpp | 76 + osdep/OSUtils.cpp | 259 +- osdep/OSUtils.hpp | 45 +- osdep/OSXEthernetTap.cpp | 56 +- osdep/OSXEthernetTap.hpp | 4 +- osdep/Thread.hpp | 13 +- osdep/WindowsEthernetTap.cpp | 68 +- osdep/WindowsEthernetTap.hpp | 6 +- root-watcher/README.md | 8 + root-watcher/config.json.example | 30 + root-watcher/package.json | 16 + root-watcher/schema.sql | 21 + root-watcher/zerotier-root-watcher.js | 235 + rule-compiler/README.md | 8 + rule-compiler/cli.js | 47 + .../examples/capabilities-and-tags.ztrules | 40 + rule-compiler/package.json | 18 + rule-compiler/rule-compiler.js | 904 +++ selftest.cpp | 221 +- service/ClusterDefinition.hpp | 8 +- service/ClusterGeoIpService.cpp | 2 +- service/ControlPlane.cpp | 628 -- service/ControlPlane.hpp | 102 - service/OneService.cpp | 1673 ++++-- service/OneService.hpp | 35 +- service/README.md | 193 +- service/SoftwareUpdater.cpp | 406 ++ service/SoftwareUpdater.hpp | 209 + tcp-proxy/tcp-proxy.cpp | 10 +- version.h | 20 +- windows/TapDriver6/TapDriver6.vcxproj | 45 +- windows/TapDriver6/tap-windows.h | 4 +- windows/WinUI/APIHandler.cs | 343 +- windows/WinUI/AboutView.xaml | 35 + windows/WinUI/AboutView.xaml.cs | 35 + windows/WinUI/App.xaml | 2 +- windows/WinUI/App.xaml.cs | 8 + windows/WinUI/JoinNetworkView.xaml | 16 + windows/WinUI/JoinNetworkView.xaml.cs | 126 + windows/WinUI/MainWindow.xaml.cs | 80 +- windows/WinUI/NetworkInfoView.xaml | 24 +- windows/WinUI/NetworkInfoView.xaml.cs | 124 +- .../{MainWindow.xaml => NetworkListView.xaml} | 66 +- windows/WinUI/NetworkListView.xaml.cs | 85 + windows/WinUI/NetworkMonitor.cs | 202 + windows/WinUI/NetworkRoute.cs | 42 + windows/WinUI/NetworksPage.xaml.cs | 73 +- windows/WinUI/PreferencesView.xaml | 13 + windows/WinUI/PreferencesView.xaml.cs | 50 + .../WinUI/Properties/Resources.Designer.cs | 52 +- windows/WinUI/Properties/Resources.resx | 17 +- windows/WinUI/Resources/ZeroTierIcon.ico | Bin 0 -> 45451 bytes windows/WinUI/Simple Styles.xaml | 9 +- windows/WinUI/ToolbarItem.xaml | 59 + windows/WinUI/ToolbarItem.xaml.cs | 310 + windows/WinUI/WinUI.csproj | 54 +- windows/WinUI/ZeroTierNetwork.cs | 474 +- windows/WinUI/packages.config | 3 +- windows/ZeroTierOne.sln | 222 +- windows/ZeroTierOne/ZeroTierOne.vcxproj | 153 +- .../ZeroTierOne/ZeroTierOne.vcxproj.filters | 165 +- windows/copyutil/App.config | 6 + windows/copyutil/Program.cs | 40 + windows/copyutil/Properties/AssemblyInfo.cs | 36 + windows/copyutil/copyutil.csproj | 60 + zerotier-one.spec | 65 +- 398 files changed, 38633 insertions(+), 24919 deletions(-) create mode 100644 Jenkinsfile create mode 100644 RELEASE-NOTES.md delete mode 100644 attic/Filter.cpp delete mode 100644 attic/Filter.hpp delete mode 100644 attic/SECURITY.md create mode 100644 attic/cli/README.md create mode 100644 attic/cli/zerotier.cpp rename {linux-build-farm => attic/linux-build-farm}/README.md (100%) rename {linux-build-farm => attic/linux-build-farm}/amazon-2016.03/x64/Dockerfile (100%) rename {linux-build-farm => attic/linux-build-farm}/build.sh (100%) rename {linux-build-farm => attic/linux-build-farm}/centos-6/x64/Dockerfile (100%) rename {linux-build-farm => attic/linux-build-farm}/centos-6/x86/Dockerfile (100%) rename {linux-build-farm => attic/linux-build-farm}/centos-7/x64/Dockerfile (100%) rename {linux-build-farm => attic/linux-build-farm}/centos-7/x86/Dockerfile (100%) rename {linux-build-farm => attic/linux-build-farm}/debian-jessie/x64/Dockerfile (100%) rename {linux-build-farm => attic/linux-build-farm}/debian-jessie/x86/Dockerfile (100%) rename {linux-build-farm => attic/linux-build-farm}/debian-stretch/x64/Dockerfile (100%) rename {linux-build-farm => attic/linux-build-farm}/debian-stretch/x86/Dockerfile (100%) rename {linux-build-farm => attic/linux-build-farm}/debian-wheezy/x64/Dockerfile (100%) rename {linux-build-farm => attic/linux-build-farm}/debian-wheezy/x86/Dockerfile (100%) rename {linux-build-farm => attic/linux-build-farm}/fedora-22/x64/Dockerfile (100%) rename {linux-build-farm => attic/linux-build-farm}/fedora-22/x86/Dockerfile (100%) rename {linux-build-farm => attic/linux-build-farm}/make-apt-repos.sh (100%) rename {linux-build-farm => attic/linux-build-farm}/make-rpm-repos.sh (100%) rename {linux-build-farm => attic/linux-build-farm}/ubuntu-trusty/x64/Dockerfile (100%) rename {linux-build-farm => attic/linux-build-farm}/ubuntu-trusty/x86/Dockerfile (100%) rename {linux-build-farm => attic/linux-build-farm}/ubuntu-wily/x64/Dockerfile (100%) rename {linux-build-farm => attic/linux-build-farm}/ubuntu-wily/x86/Dockerfile (100%) rename {linux-build-farm => attic/linux-build-farm}/ubuntu-xenial/x64/Dockerfile (100%) rename {linux-build-farm => attic/linux-build-farm}/ubuntu-xenial/x86/Dockerfile (100%) rename controller/schema.sql => attic/old-controller-schema.sql (83%) rename {world => attic/world}/README.md (100%) rename {world => attic/world}/build.sh (100%) rename {world => attic/world}/earth-2016-01-13.bin (100%) rename {world => attic/world}/mkworld.cpp (93%) rename {world => attic/world}/old/earth-2015-11-16.bin (100%) rename {world => attic/world}/old/earth-2015-11-20.bin (100%) rename {world => attic/world}/old/earth-2015-12-17.bin (100%) delete mode 100644 cli/README.md delete mode 100644 cli/zerotier.cpp create mode 100644 controller/EmbeddedNetworkController.cpp create mode 100644 controller/EmbeddedNetworkController.hpp create mode 100644 controller/JSONDB.cpp create mode 100644 controller/JSONDB.hpp delete mode 100644 controller/SqliteNetworkController.cpp delete mode 100644 controller/SqliteNetworkController.hpp create mode 100644 controller/migrate-sqlite/migrate.js create mode 100644 controller/migrate-sqlite/package.json delete mode 100644 controller/schema.sql.c delete mode 100755 controller/schema2c.sh create mode 100644 debian/postinst create mode 100644 debian/rules.static create mode 100644 debian/rules.wheezy.static rename debian/{ => source}/format (100%) create mode 100644 doc/ext/kubernetes/.zerotierCliSettings create mode 100644 doc/ext/kubernetes/Dockerfile create mode 100644 doc/ext/kubernetes/README.md create mode 100644 doc/ext/kubernetes/entrypoint.sh create mode 100644 doc/ext/kubernetes/server.js create mode 100644 doc/zerotier-cli.1 create mode 100644 doc/zerotier-idtool.1 create mode 100644 doc/zerotier-one.8 create mode 100644 ext/arm32-neon-salsa2012-asm/README.md create mode 100644 ext/arm32-neon-salsa2012-asm/salsa2012.h create mode 100644 ext/arm32-neon-salsa2012-asm/salsa2012.s delete mode 100644 ext/bin/tap-windows-ndis5/x64/WdfCoinstaller01011.dll delete mode 100644 ext/bin/tap-windows-ndis5/x64/zttap200.cat delete mode 100644 ext/bin/tap-windows-ndis5/x64/zttap200.inf delete mode 100644 ext/bin/tap-windows-ndis5/x64/zttap200.sys delete mode 100644 ext/bin/tap-windows-ndis5/x86/WdfCoinstaller01011.dll delete mode 100644 ext/bin/tap-windows-ndis5/x86/zttap200.cat delete mode 100644 ext/bin/tap-windows-ndis5/x86/zttap200.inf delete mode 100644 ext/bin/tap-windows-ndis5/x86/zttap200.sys create mode 100644 ext/installfiles/linux/zerotier-containerized/Dockerfile create mode 100755 ext/installfiles/linux/zerotier-containerized/main.sh create mode 100644 ext/installfiles/mac-update/updater.tmpl.sh delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/bin/ZeroTier One.app/Contents/Info.plist delete mode 100755 ext/installfiles/mac/mac-ui-macgap1-wrapper/bin/ZeroTier One.app/Contents/MacOS/ZeroTier One delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/bin/ZeroTier One.app/Contents/PkgInfo delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/bin/ZeroTier One.app/Contents/Resources/en.lproj/Credits.rtf delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/bin/ZeroTier One.app/Contents/Resources/en.lproj/InfoPlist.strings delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/bin/ZeroTier One.app/Contents/Resources/en.lproj/MainMenu.nib delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/bin/ZeroTier One.app/Contents/Resources/en.lproj/Window.nib delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/bin/ZeroTier One.app/Contents/_CodeSignature/CodeResources delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/LICENSE delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap.xcodeproj/project.pbxproj delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap.xcodeproj/project.xcworkspace/xcshareddata/MacGap.xccheckout delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap.xcodeproj/project.xcworkspace/xcuserdata/Alex.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap.xcodeproj/project.xcworkspace/xcuserdata/api.xcuserdatad/WorkspaceSettings.xcsettings delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap.xcodeproj/project.xcworkspace/xcuserdata/liamks.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap.xcodeproj/project.xcworkspace/xcuserdata/liamks.xcuserdatad/WorkspaceSettings.xcsettings delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/AppDelegate.h delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/AppDelegate.m delete mode 100755 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/CallbackDelegate.h delete mode 100755 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/CallbackDelegate.m delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/App.h delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/App.m delete mode 100755 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Command.h delete mode 100755 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Command.m delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Dock.h delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Dock.m delete mode 100755 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuItemProxy.h delete mode 100755 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuItemProxy.m delete mode 100755 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuProxy.h delete mode 100755 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuProxy.m delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Notice.h delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Notice.m delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Path.h delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Path.m delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Sound.h delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Sound.m delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/UserDefaults.h delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/UserDefaults.m delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/fonts.h delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/fonts.m delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Constants.h delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/ContentView.h delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/ContentView.m delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/JSEventHelper.h delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/JSEventHelper.m delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Utils.h delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Utils.m delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/WebViewDelegate.h delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/WebViewDelegate.m delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Window.h delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Classes/Window.m delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Clipboard.h delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/Clipboard.m delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/MacGap-Prefix.pch delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/WindowController.h delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/WindowController.m delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/Credits.rtf delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/InfoPlist.strings delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/MainMenu.xib delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/Window.xib delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/main.m delete mode 100644 ext/installfiles/mac/mac-ui-macgap1-wrapper/src/README.md delete mode 100644 ext/installfiles/mac/ui/Makefile delete mode 100644 ext/installfiles/mac/ui/README.md delete mode 100644 ext/installfiles/mac/ui/ZeroTierNetwork.jsx delete mode 100644 ext/installfiles/mac/ui/ZeroTierNode.jsx delete mode 100644 ext/installfiles/mac/ui/index.html delete mode 100644 ext/installfiles/mac/ui/main.js delete mode 100644 ext/installfiles/mac/ui/react.min.js delete mode 100644 ext/installfiles/mac/ui/simpleajax.min.js delete mode 100644 ext/installfiles/mac/ui/zerotier.css delete mode 100644 ext/installfiles/mac/ui/ztui.min.js delete mode 100644 ext/json-parser/AUTHORS delete mode 100644 ext/json-parser/LICENSE delete mode 100644 ext/json-parser/README.md delete mode 100644 ext/json-parser/json.c delete mode 100644 ext/json-parser/json.h delete mode 100644 ext/lz4/lz4.c delete mode 100644 ext/lz4/lz4.h create mode 100644 ext/x64-salsa2012-asm/README.md create mode 100644 ext/x64-salsa2012-asm/salsa2012.h create mode 100644 ext/x64-salsa2012-asm/salsa2012.s create mode 100644 java/src/com/zerotier/sdk/PathChecker.java create mode 100644 java/src/com/zerotier/sdk/VirtualNetworkRoute.java create mode 100644 macui/ZeroTier One.xcodeproj/project.pbxproj rename {ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap.xcodeproj => macui/ZeroTier One.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (69%) create mode 100644 macui/ZeroTier One/AboutViewController.h create mode 100644 macui/ZeroTier One/AboutViewController.m create mode 100644 macui/ZeroTier One/AboutViewController.xib create mode 100644 macui/ZeroTier One/AppDelegate.h create mode 100644 macui/ZeroTier One/AppDelegate.m create mode 100644 macui/ZeroTier One/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 macui/ZeroTier One/Assets.xcassets/AppIcon.appiconset/ZeroTierIcon512x512.png create mode 100644 macui/ZeroTier One/Assets.xcassets/Contents.json create mode 100644 macui/ZeroTier One/Assets.xcassets/MenuBarIconMac.imageset/Contents.json create mode 100644 macui/ZeroTier One/Assets.xcassets/MenuBarIconMac.imageset/MenuBar@2x.png create mode 100644 macui/ZeroTier One/Assets.xcassets/MenuBarIconMac.imageset/Menubar.png create mode 100644 macui/ZeroTier One/Assets.xcassets/MenuBarIconMacWhite.imageset/Contents.json create mode 100644 macui/ZeroTier One/Assets.xcassets/MenuBarIconMacWhite.imageset/MenubarWhite.png create mode 100644 macui/ZeroTier One/Assets.xcassets/MenuBarIconMacWhite.imageset/MenubarWhite@2x.png create mode 100644 macui/ZeroTier One/AuthtokenCopy.h create mode 100644 macui/ZeroTier One/AuthtokenCopy.m create mode 100644 macui/ZeroTier One/Base.lproj/MainMenu.xib rename ext/installfiles/mac/mac-ui-macgap1-wrapper/src/MacGap/MacGap-Info.plist => macui/ZeroTier One/Info.plist (74%) create mode 100644 macui/ZeroTier One/JoinNetworkViewController.h create mode 100644 macui/ZeroTier One/JoinNetworkViewController.m create mode 100644 macui/ZeroTier One/JoinNetworkViewController.xib create mode 100644 macui/ZeroTier One/Network.h create mode 100644 macui/ZeroTier One/Network.m create mode 100644 macui/ZeroTier One/NetworkInfoCell.h create mode 100644 macui/ZeroTier One/NetworkInfoCell.m create mode 100644 macui/ZeroTier One/NetworkMonitor.h create mode 100644 macui/ZeroTier One/NetworkMonitor.m create mode 100644 macui/ZeroTier One/NodeStatus.h create mode 100644 macui/ZeroTier One/NodeStatus.m create mode 100644 macui/ZeroTier One/PreferencesViewController.h create mode 100644 macui/ZeroTier One/PreferencesViewController.m create mode 100644 macui/ZeroTier One/PreferencesViewController.xib create mode 100644 macui/ZeroTier One/ServiceCom.h create mode 100644 macui/ZeroTier One/ServiceCom.m create mode 100644 macui/ZeroTier One/ShowNetworksViewController.h create mode 100644 macui/ZeroTier One/ShowNetworksViewController.m create mode 100644 macui/ZeroTier One/ShowNetworksViewController.xib rename {ext/installfiles/mac/mac-ui-macgap1-wrapper/bin/ZeroTier One.app/Contents/Resources => macui/ZeroTier One}/ZeroTierIcon.icns (100%) create mode 100644 macui/ZeroTier One/about.html create mode 100644 macui/ZeroTier One/main.m create mode 100644 make-bsd.mk delete mode 100644 make-freebsd.mk delete mode 100644 node/BinarySemaphore.hpp create mode 100644 node/Capability.cpp create mode 100644 node/Capability.hpp create mode 100644 node/CertificateOfOwnership.cpp create mode 100644 node/CertificateOfOwnership.hpp create mode 100644 node/CertificateOfRepresentation.hpp create mode 100644 node/Credential.hpp delete mode 100644 node/DeferredPackets.cpp delete mode 100644 node/DeferredPackets.hpp create mode 100644 node/Membership.cpp create mode 100644 node/Membership.hpp create mode 100644 node/Revocation.cpp create mode 100644 node/Revocation.hpp create mode 100644 node/Tag.cpp create mode 100644 node/Tag.hpp delete mode 100644 osdep/BackgroundResolver.cpp delete mode 100644 osdep/BackgroundResolver.hpp create mode 100644 osdep/BlockingQueue.hpp create mode 100644 osdep/NeighborDiscovery.cpp create mode 100644 osdep/NeighborDiscovery.hpp create mode 100644 root-watcher/README.md create mode 100644 root-watcher/config.json.example create mode 100644 root-watcher/package.json create mode 100644 root-watcher/schema.sql create mode 100644 root-watcher/zerotier-root-watcher.js create mode 100644 rule-compiler/README.md create mode 100644 rule-compiler/cli.js create mode 100644 rule-compiler/examples/capabilities-and-tags.ztrules create mode 100644 rule-compiler/package.json create mode 100644 rule-compiler/rule-compiler.js delete mode 100644 service/ControlPlane.cpp delete mode 100644 service/ControlPlane.hpp create mode 100644 service/SoftwareUpdater.cpp create mode 100644 service/SoftwareUpdater.hpp create mode 100644 windows/WinUI/AboutView.xaml create mode 100644 windows/WinUI/AboutView.xaml.cs create mode 100644 windows/WinUI/JoinNetworkView.xaml create mode 100644 windows/WinUI/JoinNetworkView.xaml.cs rename windows/WinUI/{MainWindow.xaml => NetworkListView.xaml} (52%) create mode 100644 windows/WinUI/NetworkListView.xaml.cs create mode 100644 windows/WinUI/NetworkMonitor.cs create mode 100644 windows/WinUI/NetworkRoute.cs create mode 100644 windows/WinUI/PreferencesView.xaml create mode 100644 windows/WinUI/PreferencesView.xaml.cs create mode 100644 windows/WinUI/Resources/ZeroTierIcon.ico create mode 100644 windows/WinUI/ToolbarItem.xaml create mode 100644 windows/WinUI/ToolbarItem.xaml.cs create mode 100644 windows/copyutil/App.config create mode 100644 windows/copyutil/Program.cs create mode 100644 windows/copyutil/Properties/AssemblyInfo.cs create mode 100644 windows/copyutil/copyutil.csproj diff --git a/.gitignore b/.gitignore index 8bf3c55..bd884dc 100755 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +<<<<<<< HEAD # Main binaries created in *nix builds /zerotier-one /zerotier-idtool @@ -9,6 +10,7 @@ .DS_Store .Apple* Thumbs.db +@eaDir # Windows build droppings /windows/ZeroTierOne.sdf @@ -29,6 +31,15 @@ Thumbs.db /ext/installfiles/windows/Prerequisites /ext/installfiles/windows/*-cache /ZeroTier One.msi +/windows/.vs +*.vcxproj.backup +/windows/TapDriver6/Win7Debug +/windows/TapDriver6/win7Release +/windows/*.db +/windows/*.opendb +enc_temp_folder +/windows/copyutil/bin +/windows/copyutil/obj # *nix/Mac build droppings /build-* @@ -49,7 +60,7 @@ zt1-src.tar.gz *.pid *.pkg *.o -*.a +/*.a *.dylib *.so *.so.* @@ -59,16 +70,15 @@ zt1-src.tar.gz *.rpm *.autosave *.tmp -doc/*.1 -doc/*.2 -doc/*.8 .depend node_modules +zt1_update_* debian/files debian/zerotier-one debian/zerotier-one*.debhelper debian/*.log debian/zerotier-one.substvars +root-watcher/config.json # Java/Android/JNI build droppings java/obj/ @@ -83,3 +93,21 @@ windows/WinUI/obj/ windows/WinUI/bin/ windows/ZeroTierOne/Debug/ /ext/installfiles/windows/chocolatey/zerotier-one/*.nupkg + +# Miscellaneous mac/Xcode droppings +.DS_Store +.Trashes +*.swp +*~.nib +DerivedData/ +build/ +*.pbxuser +*.mode1v3 +*.mode2v3 +*.perspectivev3 +!default.pbxuser +!default.mode1v3 +!default.mode2v3 +!default.perspectivev3 +*.xccheckout +xcuserdata/ diff --git a/AUTHORS.md b/AUTHORS.md index aa9e911..043ff00 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -25,13 +25,13 @@ ## Third-Party Code -These are included in ext/ for platforms that do not have them available in common repositories. Otherwise they may be linked and the package may ship with them as dependencies. +ZeroTier includes the following third party code, either in ext/ or incorporated into the ZeroTier core. * LZ4 compression algorithm by Yann Collet - * Files: ext/lz4/* + * Files: node/Packet.cpp (bundled within anonymous namespace) * Home page: http://code.google.com/p/lz4/ - * License grant: BSD attribution + * License grant: BSD 2-clause * http-parser by Joyent, Inc. (many authors) @@ -39,11 +39,11 @@ These are included in ext/ for platforms that do not have them available in comm * Home page: https://github.com/joyent/http-parser/ * License grant: MIT/Expat - * json-parser by James McLaughlin + * C++11 json (nlohmann/json) by Niels Lohmann - * Files: ext/json-parser/* - * Home page: https://github.com/udp/json-parser/ - * License grant: BSD attribution + * Files: ext/json/* + * Home page: https://github.com/nlohmann/json + * License grant: MIT * TunTapOSX by Mattias Nissler @@ -55,26 +55,19 @@ These are included in ext/ for platforms that do not have them available in comm * tap-windows6 by the OpenVPN project * Files: windows/TapDriver6/* - * Home page: - https://github.com/OpenVPN/tap-windows6/ + * Home page: https://github.com/OpenVPN/tap-windows6/ * License grant: GNU GPL v2 * ZeroTier Modifications: change name of driver to ZeroTier, add ioctl() to get L2 multicast memberships (source is in ext/ and modifications inherit GPL) - * Salsa20 stream cipher, Curve25519 elliptic curve cipher, Ed25519 - digital signature algorithm, and Poly1305 MAC algorithm, all by - Daniel J. Bernstein + * Salsa20 stream cipher, Curve25519 elliptic curve cipher, Ed25519 digital signature algorithm, and Poly1305 MAC algorithm, all by Daniel J. Bernstein - * Files: - node/Salsa20.hpp - node/C25519.hpp - node/Poly1305.hpp + * Files: node/Salsa20.* node/C25519.* node/Poly1305.* * Home page: http://cr.yp.to/ * License grant: public domain + * ZeroTier Modifications: slight cryptographically-irrelevant modifications for inclusion into ZeroTier core * MiniUPNPC and libnatpmp by Thomas Bernard - * Files: - ext/libnatpmp/* - ext/miniupnpc/* + * Files: ext/libnatpmp/* ext/miniupnpc/* * Home page: http://miniupnp.free.fr/ * License grant: BSD attribution no-endorsement diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..74c8624 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,82 @@ +#!/usr/bin/env groovy + +node('master') { + def changelog = getChangeLog currentBuild + + slackSend "Building ${env.JOB_NAME} #${env.BUILD_NUMBER} \n Change Log: \n ${changelog}" +} + +parallel 'centos7': { + node('centos7') { + try { + checkout scm + + stage('Build Centos 7') { + sh 'make -f make-linux.mk' + } + } + catch (err) { + currentBuild.result = "FAILURE" + slackSend color: '#ff0000', message: "${env.JOB_NAME} broken on Centos 7 (<${env.BUILD_URL}|Open>)" + + throw err + } + } +}, 'android-ndk': { + node('android-ndk') { + try { + checkout scm + + stage('Build Android NDK') { + sh "/android/android-ndk-r13b/ndk-build -C $WORKSPACE/java ZT1=${WORKSPACE}" + } + } + catch (err) { + currentBuild.result = "FAILURE" + slackSend color: '#ff0000', message: "${env.JOB_NAME} broken on Android NDK (<${env.BUILD_URL}|Open>)" + + throw err + } + } +}, 'macOS': { + node('macOS') { + try { + checkout scm + + stage('Build macOS') { + sh 'make -f make-mac.mk' + } + + stage('Build macOS UI') { + sh 'cd macui && xcodebuild -target "ZeroTier One" -configuration Debug' + } + } + catch (err) { + currentBuild.result = "FAILURE" + slackSend color: '#ff0000', message: "${env.JOB_NAME} broken on macOS (<${env.BUILD_URL}|Open>)" + + throw err + } + } +}, 'windows': { + node('windows') { + try { + checkout scm + + stage('Build Windows') { + bat '''CALL "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat" amd64 +git clean -dfx +msbuild windows\\ZeroTierOne.sln +''' + } + } + catch (err) { + currentBuild.result = "FAILURE" + slackSend color: '#ff0000', message: "${env.JOB_NAME} broken on Windows (<${env.BUILD_URL}|Open>)" + + throw err + } + } +} + +slackSend color: "#00ff00", message: "${env.JOB_NAME} #${env.BUILD_NUMBER} Complete (<${env.BUILD_URL}|Show More...>)" diff --git a/Makefile b/Makefile index 5a5f660..9511862 100644 --- a/Makefile +++ b/Makefile @@ -11,8 +11,14 @@ ifeq ($(OSTYPE),Linux) endif ifeq ($(OSTYPE),FreeBSD) - include make-freebsd.mk + CC=clang + CXX=clang++ + ZT_BUILD_PLATFORM=7 + include make-bsd.mk endif ifeq ($(OSTYPE),OpenBSD) - include make-freebsd.mk + CC=egcc + CXX=eg++ + ZT_BUILD_PLATFORM=9 + include make-bsd.mk endif diff --git a/OFFICIAL-RELEASE-STEPS.md b/OFFICIAL-RELEASE-STEPS.md index 37e6791..d0f42e3 100644 --- a/OFFICIAL-RELEASE-STEPS.md +++ b/OFFICIAL-RELEASE-STEPS.md @@ -15,6 +15,7 @@ The version must be incremented in all of the following files: /ext/installfiles/mac/ZeroTier One.pkgproj /ext/installfiles/windows/chocolatey/zerotier-one.nuspec /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.) diff --git a/README.md b/README.md index a34a1a5..47bfc87 100644 --- a/README.md +++ b/README.md @@ -1,52 +1,76 @@ ZeroTier - A Planetary Ethernet Switch ====== -ZeroTier is a software-based managed Ethernet switch for planet Earth. +ZeroTier is an enterprise Ethernet switch for planet Earth. It erases the LAN/WAN distinction and makes VPNs, tunnels, proxies, and other kludges arising from the inflexible nature of physical networks obsolete. Everything is encrypted end-to-end and traffic takes the most direct (peer to peer) path available. -This repository contains ZeroTier One, a service that provides ZeroTier network connectivity to devices running Windows, Mac, Linux, iOS, Android, and FreeBSD and makes joining virtual networks as easy as joining IRC or Slack channels. It also contains the OS-independent core ZeroTier protocol implementation in [node/](node/). - Visit [ZeroTier's site](https://www.zerotier.com/) for more information and [pre-built binary packages](https://www.zerotier.com/download.shtml). Apps for Android and iOS are available for free in the Google Play and Apple app stores. ### Getting Started ZeroTier's basic operation is easy to understand. Devices have 10-digit *ZeroTier addresses* like `89e92ceee5` and networks have 16-digit network IDs like `8056c2e21c000001`. All it takes for a device to join a network is its 16-digit ID, and all it takes for a network to authorize a device is its 10-digit address. Everything else is automatic. -A "device" can be anything really: desktops, laptops, phones, servers, VMs/VPSes, containers, and even (soon) apps. +A "device" in our terminology is any "unit of compute" capable of talking to a network: desktops, laptops, phones, servers, VMs/VPSes, containers, and even user-space applications via our [SDK](https://github.com/zerotier/ZeroTierSDK). -For testing we provide a public virtual network called *Earth* with network ID `8056c2e21c000001`. On Linux and Mac you can do this with: +For testing purposes we provide a public virtual network called *Earth* with network ID `8056c2e21c000001`. You can join it with: sudo zerotier-cli join 8056c2e21c000001 -Now wait about 30 seconds and check your system with `ip addr list` or `ifconfig`. You'll see a new interface whose name starts with *zt* and it should quickly get an IPv4 and an IPv6 address. Once you see it get an IP, try pinging `earth.zerotier.net` at `29.209.112.93`. If you've joined Earth from more than one system, try pinging your other machine. - -*(IPv4 addresses for Earth are assigned from the block 28.0.0.0/7, which is not a part of the public Internet but is non-standard for private networks. It's used to avoid IP conflicts during testing. Your networks can run any IP addressing scheme you want.)* - -If you don't want to belong to a giant Ethernet party line anymore, just type: +Now wait about 30 seconds and check your system with `ip addr list` or `ifconfig`. You'll see a new interface whose name starts with *zt* and it should quickly get an IPv4 and an IPv6 address. Once you see it get an IP, try pinging `earth.zerotier.net` at `29.209.112.93`. If you've joined Earth from more than one system, try pinging your other machine. If you don't want to belong to a giant Ethernet party line anymore, just type: sudo zerotier-cli leave 8056c2e21c000001 The *zt* interface will disappear. You're no longer on the network. -To create networks of your own you'll need a network controller. You can use [our hosted controller at my.zerotier.com](https://my.zerotier.com) which is free for up to 100 devices on an unlimited number of networks, or you can build your own controller and run it through its local JSON API. See [README.md in controller/](controller/) for more information. +To create networks of your own, you'll need a network controller. ZeroTier One (for desktops and servers) includes controller functionality in its default build that can be configured via its JSON API (see [README.md in controller/](controller/)). ZeroTier provides a hosted solution with a nice web UI and SaaS add-ons at [my.zerotier.com](https://my.zerotier.com/). Basic controller functionality is free for up to 100 devices. -### Building from Source +### Project Layout -For Mac, Linux, and BSD, just type "make" (or "gmake" on BSD). You won't need much installed; here are the requirements for various platforms: + - `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. + - `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. + - `tcp-proxy/`: TCP proxy code run by ZeroTier, Inc. to provide TCP fallback (this will die soon!). + - `windows/`: Visual Studio solution files, Windows service code for ZeroTier One, and the Windows task bar app UI. - * **Mac**: Xcode command line tools. It should build on OSX 10.7 or newer. - * **Linux**: gcc/g++ (4.9 or newer recommended) or clang/clang++ (3.4 or newer recommended) Makefile will use clang by default if available. The Linux build will auto-detect the presence of development headers for *json-parser*, *http-parser*, *li8bnatpmp*, and *libminiupnpc* and will link against the system libraries for these if they are present and recent enough. Otherwise the bundled versions in [ext/](ext/) will be used. Type `make install` to install the binaries and other files on the system, though this will not create init.d or systemd links. - * **FreeBSD**: C++ compiler (G++ usually) and GNU make (gmake). +The base path contains the ZeroTier One service main entry point (`one.cpp`), self test code, makefiles, etc. -Each supported platform has its own *make-XXX.mk* file that contains the actual make rules for the platform. The right .mk file is included by the main Makefile based on the GNU make *OSTYPE* variable. Take a look at the .mk file for your platform for other targets, debug build rules, etc. +### 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.7 or newer are required. + - Tap device driver kext source is in `ext/tap-mac` and a signed pre-built binary can be found in `ext/bin/tap-mac`. You should not need to build it yourself. It's a fork of [tuntaposx](http://tuntaposx.sourceforge.net) with device names changed to `zt#`, support for a larger MTU, and tun functionality removed. + - **Linux** + - The minimum compiler versions required are GCC/G++ 4.9.3 or CLANG/CLANG++ 3.4.2. + - 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. + - CentOS 7 ships with a version of GCC/G++ that is too old, but a new enough version of CLANG can be found in the *epel* repositories. Type `yum install epel-release` and then `yum install clang` to build there. + - **Windows** + - Windows 7 or newer (and equivalent server versions) are supported. This *may* work on Vista but you're on your own there. Windows XP is not supported since it lacks many important network API functions. + - We build with Visual Studio 2015. Older versions may not work with the solution file and project files we ship and may not have new enough C++11 support. + - Pre-built signed Windows drivers are included in `ext/bin/tap-windows-ndis6`. The MSI files found there will install them on 32-bit and 64-bit systems. (These are included in our multi-architecture installer as chained MSIs.) + - Windows builds are more painful in general than other platforms and are for the adventurous. + - **FreeBSD** + - Tested most recently on FreeBSD-11. Older versions may work but we're not sure. + - GCC/G++ 4.9 and gmake are required. These can be installed from packages or ports. 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`). We're not sure if this can be increased. + - OpenBSD lacks `getifmaddrs` (or any equivalent method) to get interface multicast memberships. As a result multicast will only work on OpenBSD for ARP and NDP (IP/MAC lookup) and not for other purposes. + - Only tested on OpenBSD 6.0. Older versions may not work. + - GCC/G++ 4.9 and gmake are required and can be installed using `pkg_add` or from ports. They get installed in `/usr/local/bin` as `egcc` and `eg++` and our makefile is pre-configured to use them on OpenBSD. 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. -Windows, of course, is special. We build for Windows with Microsoft Visual Studio 2012 on Windows 7. A solution file is located in the *windows/* subfolder. Newer versions of Visual Studio (and Windows) may work but haven't been tested. Older versions almost certainly will not, since they lack things like *stdint.h* and certain STL features. MinGW or other ports of gcc/clang to Windows should also work but haven't been tested. - -32 and 64 bit X86 and ARM (e.g. Raspberry Pi, Android) are officially supported. Community members have built for MIPS and Sparc without issues. - ### Running Running *zerotier-one* with -h will show help. @@ -62,7 +86,7 @@ The service is controlled via the JSON API, which by default is available at 127 Here's where home folders live (by default) on each OS: * **Linux**: `/var/lib/zerotier-one` - * **FreeBSD**: `/var/db/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.) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md new file mode 100644 index 0000000..195e888 --- /dev/null +++ b/RELEASE-NOTES.md @@ -0,0 +1,138 @@ +ZeroTier Release Notes +====== + +# 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 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/).) + +### 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 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. + +### 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. + * **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. + +## 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. diff --git a/attic/Filter.cpp b/attic/Filter.cpp deleted file mode 100644 index a701e8b..0000000 --- a/attic/Filter.cpp +++ /dev/null @@ -1,408 +0,0 @@ -/* - * ZeroTier One - Network Virtualization Everywhere - * Copyright (C) 2011-2015 ZeroTier, Inc. - * - * 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 . - * - * -- - * - * 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 -#include -#include -#include - -#include - -#include "RuntimeEnvironment.hpp" -#include "Logger.hpp" -#include "Filter.hpp" -#include "Utils.hpp" - -namespace ZeroTier { - -const char *const Filter::UNKNOWN_NAME = "(unknown)"; -const Range Filter::ANY; - -static inline Range __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 , -, or *"); - } - } - } - return Range(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::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::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 diff --git a/attic/Filter.hpp b/attic/Filter.hpp deleted file mode 100644 index 4bea371..0000000 --- a/attic/Filter.hpp +++ /dev/null @@ -1,284 +0,0 @@ -/* - * ZeroTier One - Network Virtualization Everywhere - * Copyright (C) 2011-2015 ZeroTier, Inc. - * - * 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 . - * - * -- - * - * 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 -#include -#include - -#include -#include -#include -#include - -#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 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 &etype,const Range &prot,const Range &prt) - throw() : - _etherType(etype), - _protocol(prot), - _port(prt) - { - } - - inline const Range ðerType() const throw() { return _etherType; } - inline const Range &protocol() const throw() { return _protocol; } - inline const Range &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 _etherType; - Range _protocol; - Range _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::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 _rules; -}; - -} // namespace ZeroTier - -#endif diff --git a/attic/SECURITY.md b/attic/SECURITY.md deleted file mode 100644 index 5ca125e..0000000 --- a/attic/SECURITY.md +++ /dev/null @@ -1,84 +0,0 @@ -ZeroTier Security -====== - -## Summary - - -## Using ZeroTier Securely - -### Overall Recommendations - -*TL;DR: same as anything else: defense in depth defense in depth defense in depth.* - -We encourage our users to treat private ZeroTier networks as being rougly equivalent in security to WPA2-enterprise securied WiFi or on-premise wired Ethernet. (Public networks on the other hand are open by design.) That means they're networks with perimeters, but like all networks the compromise of any participating device or network controller allows an attacker to breach this perimeter. - -**Never trust the network.** Many modern security professionals discourage reliance on network perimeters as major components in any security strategy, and we strongly agree regardless of whether your network is physical or virtual. - -As part of a defense in depth approach **we specifically encourage the use of other secure protocols and authentication systems over ZeroTier networks**. While the use of secure encrypted protocols like SSH and SSL over ZeroTier adds a bit more overhead, it greatly reduces the chance of total compromise. - -Imagine that the per-day probability of a major "0-day" security flaw in ZeroTier and OpenSSH are both roughly 0.001 or one per thousand days. Using both at the same time gives you a cumulative 0-day risk of roughly 0.000001 or one per one million days. - -Those are made-up numbers. In reality these probabilities can't be known ahead of time. History shows that a 0-day could be found in anything tomorrow, next week, or never. But layers of security give you an overall posture that is the product -- more than the sum -- of its parts. That's how defense in depth works. - -### ZeroTier Specifics - -#### Protect Your Identity - -Each ZeroTier device has an identity. The secret portion of this identity is stored in a file called "identity.secret." *Protect this file.* If it's stolen your device's identity (as represented by its 10-digit ZeroTier address) can easily be stolen or impersonated and your traffic can be decrypted or man-in-the-middle'd. - -#### Protect Your Controller - -The second major component of ZeroTier network security is the network controller. It's responsible for issuing certificates and configuration information to all network members. That makes it a certificate authority. Compromise of the controller allows an attacker to join or disrupt any network the controller controls. It does *not*, however, allow an attacker to decrypt peer to peer unicast traffic. - -If you are using our controller-as-a-service at [my.zerotier.com](https://my.zerotier.com), you are delegating this responsibility to us. - -## Security Priorities - -These are our security "must-haves." If the system fails in any of these objectives it is broken. - -* ZeroTier must be secure against remote vulnerabilities. This includes things like unauthorized remote control, remote penetration of the device using ZeroTier as a vector, or remote injection of malware. - -* The content (but not meta-data) of communication must be secure against eavesdropping on the wire by any known means. (We can't warrant against secret vulnerabilities against ciphers, etc., or anything else we don't know about.) - -* Communication must be secure against man-in-the-middle attacks and remote device impersonation. - -## Security Non-Priorities - -There are a few aspects of security we knowingly do not address, since doing so would be beyond scope or would conflict too greatly with other priorities. - -* ZeroTier makes no effort to conceal communication meta-data such as source and destination addresses and the amount of information transferred between peers. To do this more or less requires onion routing or other "heavy" approaches to anonymity, and this is beyond scope. - -* ZeroTier does not implement complex certificate chains, X.509, or other feature-rich (some would say feature-laden) cryptographic stuff. We only implement the crypto we need to get the job done. - -* We don't take extraordinary measures to preserve security under conditions in which an endpoint device has been penetrated by other means (e.g. "rooted" by third party malware) or physicall compromised. If someone steals your keys they've stolen your keys, and if they've "pwned" your device they can easily eavesdrop on everything directly. - -## Insecurities and Areas for Improvement - -The only perfectly secure system is one that is off. All real world systems have potential security weaknesses. If possible, we like to know what these are and acknowledge their existence. - -In some cases we plan to improve these. In other cases we have deliberately decided to "punt" on them in favor of some other priority (see philosophy). We may or may not revisit this decision in the future. - -* We don't implement forward secrecy / ephemeral keys. A [discussion of this can be found at the closed GitHub issue for this feature](https://github.com/zerotier/ZeroTierOne/issues/204). In short: we've decided to "punt" on this feature because it introduces complexity and state negotiation. One of the design goals of ZeroTier is "reliability convergence" -- the reliability of ZeroTier virtual networks should rapidly converge with that of the underlying physical wire. Any state that must be negotiated prior to communication multiplies the probability of delay or failure due to packet loss. We *may* revisit this decision at a later date. - -## Secure Coding Practices - -The first line of defense employed against remote vulnerabilities and other major security flaws is the use of secure coding practices. These are, in no particular order: - -* All parsing of remote messages is performed via higher level safe bounds-checked data structures and interfaces. See node/Buffer.hpp for one of the core elements of this. - -* C++ exceptions are used to ensure that any unhandled failure or error condition (such as a bounds checking violation) results in the safe and complete termination of message processing. Invalid messages are dropped and ignored. - -* Minimalism is a secure coding practice. There is an exponential relationship between complexity and the probability of bugs, and complex designs are much harder to audit and reason about. - -* Our build scripts try to enable any OS and compiler level security features such as ASLR and "stack canaries" on non-debug builds. - -## Cryptographic Security Practices - -* We use [boring crypto](https://cr.yp.to/talks/2015.10.05/slides-djb-20151005-a4.pdf). A single symmetric algorithm (Salsa20/12), a single asymmetric algorithm (Curve25519 ECDH-256), and a single MAC (Poly1305). The way these algorithms are used is identical to how they're used in the NaCl reference implementation. The protocol supports selection of alternative algorithms but only for "future proofing" in the case that a serious flaw is discovered in any of these. Avoding algorithm bloat and cryptographic state negotiation helps guard against down-grade, "oracle," and other protocol level attacks. - -* Authenticated encryption is employed with authentication being performed prior to any other operations on received messages. See also: [the cryptographic doom principle](https://moxie.org/blog/the-cryptographic-doom-principle/). - -* "Never branch on anything secret" -- deterministic-time comparisons and other operations are used in cryptographic operations. See Utils::secureEq() in node/Utils.hpp. - -* OS-derived crypographic random numbers (/dev/urandom or Windows CryptGenRandom) are further randomized using encryption by a secondary key with a secondary source of entropy to guard against CSPRNG bugs. Such OS-level CSPRNG bugs have been found in the past. See Utils::getSecureRandom() in node/Utils.hpp. - diff --git a/attic/cli/README.md b/attic/cli/README.md new file mode 100644 index 0000000..595df07 --- /dev/null +++ b/attic/cli/README.md @@ -0,0 +1,57 @@ +The new ZeroTier CLI! +==== + +With this update we've expanded upon the previous CLI's functionality, so things should seem pretty familiar. Here are some of the new features we've introduced: + + - Create and administer networks on ZeroTier Central directly from the console. + - Service configurations, allows you to control local/remote instances of ZeroTier One + - Identity generation and management is now part of the same CLI tool + +*** +## Configurations + +Configurations are a way for you to nickname and logically organize the control of ZeroTier services running locally or remotely (this includes ZeroTier Central!). They're merely groupings of service API url's and auth tokens. The CLI's settings data is contained within `.zerotierCliSettings`. + +For instance, you can control your local instance of ZeroTier One via the `@local` config. By default it is represented as follows: + +``` +"local": { + "auth": "7tyqRoFytajf21j2l2t9QPm5", + "type": "one", + "url": "http://127.0.0.1:9993/" +} +``` + +As an example, if you issue the command `zerotier ls` is it implicitly stating `zerotier @local ls`. + +With the same line of thinking, you could create a `@my.zerotier.com` which would allow for something like `zerotier @my.zerotier.com net-create` which talks to our hosted ZeroTier Central to create a new network. + + + +## Command families + +- `cli-` is for configuring the settings data for the CLI itself, such as adding/removing `@thing` configurations, variables, etc. +- `net-` is for operating on a *ZeroTier Central* service such as `https://my.zerotier.com` +- `id-` is for handling ZeroTier identities. + +And those commands with no prefix are there to allow you to operate ZeroTier One instances either local or remote. + +*** +## Useful command examples + +*Add a ZeroTier One configuration:* + + - `zerotier cli-add-zt MyLocalConfigName https://127.0.0.1:9993/ ` + +*Add a ZeroTier Central configuration:* + + - `zerotier cli-add-central MyZTCentralConfigName https://my.zerotier.com/ ` + +*Set a default ZeroTier One instance:* + + - `zerotier cli-set defaultOne MyLocalConfigName` + +*Set a default ZeroTier Central:* + + - `zerotier cli-set defaultCentral MyZTCentralConfigName` + diff --git a/attic/cli/zerotier.cpp b/attic/cli/zerotier.cpp new file mode 100644 index 0000000..e75268d --- /dev/null +++ b/attic/cli/zerotier.cpp @@ -0,0 +1,957 @@ +/* + * ZeroTier One - Network Virtualization Everywhere + * Copyright (C) 2011-2016 ZeroTier, Inc. https://www.zerotier.com/ + * + * 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 . + */ + +// Note: unlike the rest of ZT's code base, this requires C++11 due to +// the JSON library it uses and other things. + +#include +#include +#include +#include + +#include "../node/Constants.hpp" +#include "../node/Identity.hpp" +#include "../version.h" +#include "../osdep/OSUtils.hpp" +#include "../ext/offbase/json/json.hpp" + +#ifdef __WINDOWS__ +#include +#include +#include +#include +#else +#include +#include +#endif + +#include +#include +#include +#include +#include +#include + +#include + +using json = nlohmann::json; +using namespace ZeroTier; + +#define ZT_CLI_FLAG_VERBOSE 'v' +#define ZT_CLI_FLAG_UNSAFE_SSL 'X' + +#define REQ_GET 0 +#define REQ_POST 1 +#define REQ_DEL 2 + +#define OK_STR "[OK ]: " +#define FAIL_STR "[FAIL]: " +#define WARN_STR "[WARN]: " +#define INVALID_ARGS_STR "Invalid args. Usage: " + +struct CLIState +{ + std::string atname; + std::string command; + std::string url; + std::map reqHeaders; + std::vector args; + std::map opts; + json settings; +}; + +namespace { + +static Identity getIdFromArg(char *arg) +{ + Identity id; + if ((strlen(arg) > 32)&&(arg[10] == ':')) { // identity is a literal on the command line + if (id.fromString(arg)) + return id; + } else { // identity is to be read from a file + std::string idser; + if (OSUtils::readFile(arg,idser)) { + if (id.fromString(idser)) + return id; + } + } + return Identity(); +} + +static std::string trimString(const std::string &s) +{ + unsigned long end = (unsigned long)s.length(); + while (end) { + char c = s[end - 1]; + if ((c == ' ')||(c == '\r')||(c == '\n')||(!c)||(c == '\t')) + --end; + else break; + } + unsigned long start = 0; + while (start < end) { + char c = s[start]; + if ((c == ' ')||(c == '\r')||(c == '\n')||(!c)||(c == '\t')) + ++start; + else break; + } + return s.substr(start,end - start); +} + +static inline std::string getSettingsFilePath() +{ +#ifdef __WINDOWS__ +#else + const char *home = getenv("HOME"); + if (!home) + home = "/"; + return (std::string(home) + "/.zerotierCliSettings"); +#endif +} + +static bool saveSettingsBackup(CLIState &state) +{ + std::string sfp(getSettingsFilePath().c_str()); + if(state.settings.find("generateBackupConfig") != state.settings.end() + && state.settings["generateBackupConfig"].get() == "true") { + std::string backup_file = getSettingsFilePath() + ".bak"; + if(!OSUtils::writeFile(sfp.c_str(), state.settings.dump(2))) { + OSUtils::lockDownFile(sfp.c_str(),false); + std::cout << WARN_STR << "unable to write backup config file" << std::endl; + return false; + } + return true; + } + return false; +} + +static bool saveSettings(CLIState &state) +{ + std::string sfp(getSettingsFilePath().c_str()); + if(OSUtils::writeFile(sfp.c_str(), state.settings.dump(2))) { + OSUtils::lockDownFile(sfp.c_str(),false); + std::cout << OK_STR << "changes saved." << std::endl; + return true; + } + std::cout << FAIL_STR << "unable to write to " << sfp << std::endl; + return false; +} + +static void dumpHelp() +{ + std::cout << "ZeroTier Newer-Spiffier CLI " << ZEROTIER_ONE_VERSION_MAJOR << "." << ZEROTIER_ONE_VERSION_MINOR << "." << ZEROTIER_ONE_VERSION_REVISION << std::endl; + std::cout << "(c)2016 ZeroTier, Inc. / Licensed under the GNU GPL v3" << std::endl; + std::cout << std::endl; + std::cout << "Configuration path: " << getSettingsFilePath() << std::endl; + std::cout << std::endl; + std::cout << "Usage: zerotier [-option] [@name] []" << std::endl; + std::cout << std::endl; + std::cout << "Options:" << std::endl; + std::cout << " -verbose - Verbose JSON output" << std::endl; + std::cout << " -X - Do not check SSL certs (CAUTION!)" << std::endl; + std::cout << std::endl; + std::cout << "CLI Configuration Commands:" << std::endl; + std::cout << " cli-set - Set a CLI option ('cli-set help')" << std::endl; + std::cout << " cli-unset - Un-sets a CLI option ('cli-unset help')" << std::endl; + std::cout << " cli-ls - List configured @things" << std::endl; + std::cout << " cli-rm @name - Remove a configured @thing" << std::endl; + std::cout << " cli-add-zt @name - Add a ZeroTier service" << std::endl; + std::cout << " cli-add-central @name - Add ZeroTier Central instance" << std::endl; + std::cout << std::endl; + std::cout << "ZeroTier One Service Commands:" << std::endl; + std::cout << " -v / -version - Displays default local instance's version'" << std::endl; + std::cout << " ls - List currently joined networks" << std::endl; + std::cout << " join [opt=value ...] - Join a network" << std::endl; + std::cout << " leave - Leave a network" << std::endl; + std::cout << " peers - List ZeroTier VL1 peers" << std::endl; + std::cout << " show [] - Get info about self or object" << std::endl; + std::cout << std::endl; + std::cout << "Network Controller Commands:" << std::endl; + std::cout << " net-create - Create a new network" << std::endl; + std::cout << " net-rm - Delete a network (CAUTION!)" << std::endl; + std::cout << " net-ls - List administered networks" << std::endl; + std::cout << " net-members - List members of a network" << std::endl; + std::cout << " net-show [
] - Get network or member info" << std::endl; + std::cout << " net-auth
- Authorize a member" << std::endl; + std::cout << " net-unauth
- De-authorize a member" << std::endl; + std::cout << " net-set - See 'net-set help'" << std::endl; + std::cout << std::endl; + std::cout << "Identity Commands:" << std::endl; + std::cout << " id-generate [] - Generate a ZeroTier identity" << std::endl; + std::cout << " id-validate - Locally validate an identity" << std::endl; + std::cout << " id-sign - Sign a file" << std::endl; + std::cout << " id-verify - Verify a file's signature" << std::endl; + std::cout << " id-getpublic - Get full identity's public portion" << std::endl; + std::cout << std::endl; +} + +static size_t _curlStringAppendCallback(void *contents,size_t size,size_t nmemb,void *stdstring) +{ + size_t totalSize = size * nmemb; + reinterpret_cast(stdstring)->append((const char *)contents,totalSize); + return totalSize; +} + +static std::tuple REQUEST(int requestType, CLIState &state, const std::map &headers, const std::string &postfield, const std::string &url) +{ + std::string body; + char errbuf[CURL_ERROR_SIZE]; + char urlbuf[4096]; + + CURL *curl; + curl = curl_easy_init(); + if (!curl) { + std::cerr << "FATAL: curl_easy_init() failed" << std::endl; + exit(-1); + } + + Utils::scopy(urlbuf,sizeof(urlbuf),url.c_str()); + curl_easy_setopt(curl,CURLOPT_URL,urlbuf); + + struct curl_slist *hdrs = (struct curl_slist *)0; + for(std::map::const_iterator i(headers.begin());i!=headers.end();++i) { + std::string htmp(i->first); + htmp.append(": "); + htmp.append(i->second); + hdrs = curl_slist_append(hdrs,htmp.c_str()); + } + if (hdrs) + curl_easy_setopt(curl,CURLOPT_HTTPHEADER,hdrs); + + //curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); + curl_easy_setopt(curl,CURLOPT_WRITEDATA,(void *)&body); + curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,_curlStringAppendCallback); + + if(std::find(state.args.begin(), state.args.end(), "-X") == state.args.end()) + curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,(state.opts.count(ZT_CLI_FLAG_UNSAFE_SSL) > 0) ? 0L : 1L); + + if(requestType == REQ_POST) { + curl_easy_setopt(curl, CURLOPT_POST, 1); + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postfield.c_str()); + } + if(requestType == REQ_DEL) + curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE"); + if(requestType == REQ_GET) { + curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf); + curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,0L); + } + + curl_easy_setopt(curl,CURLOPT_USERAGENT,"ZeroTier-CLI"); + CURLcode res = curl_easy_perform(curl); + + errbuf[CURL_ERROR_SIZE-1] = (char)0; // sanity check + + if (res != CURLE_OK) + return std::make_tuple(-1,std::string(errbuf)); + + long response_code; + int rc = (int)curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE, &response_code); + + if(response_code == 401) { std::cout << FAIL_STR << response_code << "Unauthorized." << std::endl; exit(0); } + else if(response_code == 403) { std::cout << FAIL_STR << response_code << "Forbidden." << std::endl; exit(0); } + else if(response_code == 404) { std::cout << FAIL_STR << response_code << "Not found." << std::endl; exit(0); } + else if(response_code == 408) { std::cout << FAIL_STR << response_code << "Request timed out." << std::endl; exit(0); } + else if(response_code != 200) { std::cout << FAIL_STR << response_code << "Unable to process request." << std::endl; exit(0); } + + curl_easy_cleanup(curl); + if (hdrs) + curl_slist_free_all(hdrs); + return std::make_tuple(response_code,body); +} + +} // anonymous namespace + +////////////////////////////////////////////////////////////////////////////// + +// Check for user-specified @thing config +// Make sure it @thing makes sense +// Apply appropriate request headers +static void checkForThing(CLIState &state, std::string thingType, bool warnNoThingProvided) +{ + std::string configName; + if(state.atname.length()) { + configName = state.atname.erase(0,1); + // make sure specified @thing makes sense in the context of the command + if(thingType == "one" && state.settings["things"][configName]["type"].get() != "one") { + std::cout << FAIL_STR << "A ZeroTier Central config was specified for a ZeroTier One command." << std::endl; + exit(0); + } + if(thingType == "central" && state.settings["things"][configName]["type"].get() != "central") { + std::cout << FAIL_STR << "A ZeroTier One config was specified for a ZeroTier Central command." << std::endl; + exit(0); + } + } + else { // no @thing specified, check for defaults depending on type + if(thingType == "one") { + if(state.settings.find("defaultOne") != state.settings.end()) { + if(warnNoThingProvided) + std::cout << WARN_STR << "No @thing specified, assuming default for ZeroTier One command: " << state.settings["defaultOne"].get().c_str() << std::endl; + configName = state.settings["defaultOne"].get().erase(0,1); // get default + } + else { + std::cout << WARN_STR << "No @thing specified, and no default is known." << std::endl; + std::cout << "HELP: To set a default: zerotier cli-set defaultOne @my_default_thing" << std::endl; + exit(0); + } + } + if(thingType == "central") { + if(state.settings.find("defaultCentral") != state.settings.end()) { + if(warnNoThingProvided) + std::cout << WARN_STR << "No @thing specified, assuming default for ZeroTier Central command: " << state.settings["defaultCentral"].get().c_str() << std::endl; + configName = state.settings["defaultCentral"].get().erase(0,1); // get default + } + else { + std::cout << WARN_STR << "No @thing specified, and no default is known." << std::endl; + std::cout << "HELP: To set a default: zerotier cli-set defaultCentral @my_default_thing" << std::endl; + exit(0); + } + } + } + // Apply headers + if(thingType == "one") { + state.reqHeaders["X-ZT1-Auth"] = state.settings["things"][configName]["auth"]; + } + if(thingType == "central"){ + state.reqHeaders["Content-Type"] = "application/json"; + state.reqHeaders["Authorization"] = "Bearer " + state.settings["things"][configName]["auth"].get(); + state.reqHeaders["Accept"] = "application/json"; + } + state.url = state.settings["things"][configName]["url"]; +} + +static bool checkURL(std::string url) +{ + // TODO + return true; +} + +static std::string getLocalVersion(CLIState &state) +{ + json result; + std::tuple res; + checkForThing(state,"one",false); + res = REQUEST(REQ_GET,state,state.reqHeaders,"",state.url + "/status"); + if(std::get<0>(res) == 200) { + result = json::parse(std::get<1>(res)); + return result["version"].get(); + } + return "---"; +} + +#ifdef __WINDOWS__ +int _tmain(int argc, _TCHAR* argv[]) +#else +int main(int argc,char **argv) +#endif +{ +#ifdef __WINDOWS__ + { + WSADATA wsaData; + WSAStartup(MAKEWORD(2,2),&wsaData); + } +#endif + + curl_global_init(CURL_GLOBAL_DEFAULT); + CLIState state; + std::string arg1, arg2, authToken; + + for(int i=1;i 0)&&(port < 65536))&&(authToken.length() > 0)) { + state.settings["things"]["local"]["url"] = (std::string("http://127.0.0.1:") + portStr + "/"); + state.settings["things"]["local"]["auth"] = authToken; + initSuccess = true; + } + } + + if (!saveSettings(state)) { + std::cerr << "FATAL: unable to write " << getSettingsFilePath() << std::endl; + exit(-1); + } + + if (initSuccess) { + std::cerr << "INFO: initialized new config at " << getSettingsFilePath() << std::endl; + } else { + std::cerr << "INFO: initialized new config at " << getSettingsFilePath() << " but could not auto-init local ZeroTier One service config from " << oneHome << " -- you will need to set local service URL and port manually if you want to control a local instance of ZeroTier One. (This happens if you are not root/administrator.)" << std::endl; + } + } + } + + // PRE-REQUEST SETUP + + json result; + std::tuple res; + std::string url = ""; + + // META + + if ((state.command.length() == 0)||(state.command == "help")) { + dumpHelp(); + return -1; + } + + // zerotier version + else if (state.command == "v" || state.command == "version") { + std::cout << getLocalVersion(state) << std::endl; + return 1; + } + + // zerotier cli-set + else if (state.command == "cli-set") { + if(argc != 4) { + std::cerr << INVALID_ARGS_STR << "zerotier cli-set " << std::endl; + return 1; + } + std::string settingName, settingValue; + if(state.atname.length()) { // User provided @thing erroneously, we will ignore it and adjust argument indices + settingName = argv[3]; + settingValue = argv[4]; + } + else { + settingName = argv[2]; + settingValue = argv[3]; + } + saveSettingsBackup(state); + state.settings[settingName] = settingValue; // changes + saveSettings(state); + } + + // zerotier cli-unset + else if (state.command == "cli-unset") { + if(argc != 3) { + std::cerr << INVALID_ARGS_STR << "zerotier cli-unset " << std::endl; + return 1; + } + std::string settingName; + if(state.atname.length()) // User provided @thing erroneously, we will ignore it and adjust argument indices + settingName = argv[3]; + else + settingName = argv[2]; + saveSettingsBackup(state); + state.settings.erase(settingName); // changes + saveSettings(state); + } + + // zerotier @thing_to_remove cli-rm --- removes the configuration + else if (state.command == "cli-rm") { + if(argc != 3) { + std::cerr << INVALID_ARGS_STR << "zerotier cli-rm <@thing>" << std::endl; + return 1; + } + if(state.settings["things"].find(state.atname) != state.settings["things"].end()) { + if(state.settings["defaultOne"] == state.atname) { + std::cout << "WARNING: The config you're trying to remove is currently set as your default. Set a new default first!" << std::endl; + std::cout << " | Usage: zerotier set defaultOne @your_other_thing" << std::endl; + } + else { + state.settings["things"].erase(state.atname.c_str()); + saveSettings(state); + } + } + } + + // zerotier cli-add-zt + // TODO: Check for malformed urls/auth + else if (state.command == "cli-add-zt") { + if(argc != 5) { + std::cerr << INVALID_ARGS_STR << "zerotier cli-add-zt " << std::endl; + return 1; + } + std::string thing_name = argv[2], url = argv[3], auth = argv[4]; + if(!checkURL(url)) { + std::cout << FAIL_STR << "Malformed URL" << std::endl; + return 1; + } + if(state.settings.find(thing_name) != state.settings.end()) { + std::cout << "WARNING: A @thing with the shortname " << thing_name.c_str() + << " already exists. Choose another name or rename the old @thing" << std::endl; + std::cout << " | Usage: To rename a @thing: zerotier cli-rename @old_thing_name @new_thing_name" << std::endl; + } + else { + result = json::parse("{ \"auth\": \"" + auth + "\", \"type\": \"" + "one" + "\", \"url\": \"" + url + "\" }"); + saveSettingsBackup(state); + // TODO: Handle cases where user may or may not prepend an @ + state.settings["things"][thing_name] = result; // changes + saveSettings(state); + } + } + + // zerotier cli-add-central + // TODO: Check for malformed urls/auth + else if (state.command == "cli-add-central") { + if(argc != 5) { + std::cerr << INVALID_ARGS_STR << "zerotier cli-add-central " << std::endl; + return 1; + } + std::string thing_name = argv[2], url = argv[3], auth = argv[4]; + if(!checkURL(url)) { + std::cout << FAIL_STR << "Malformed URL" << std::endl; + return 1; + } + if(state.settings.find(thing_name) != state.settings.end()) { + std::cout << "WARNING: A @thing with the shortname " << thing_name.c_str() + << " already exists. Choose another name or rename the old @thing" << std::endl; + std::cout << " | Usage: To rename a @thing: zerotier cli-rename @old_thing_name @new_thing_name" << std::endl; + } + else { + result = json::parse("{ \"auth\": \"" + auth + "\", \"type\": \"" + "central" + "\", \"url\": \"" + url + "\" }"); + saveSettingsBackup(state); + // TODO: Handle cases where user may or may not prepend an @ + state.settings["things"]["@" + thing_name] = result; // changes + saveSettings(state); + } + } + + // ONE SERVICE + + // zerotier ls --- display all networks currently joined + else if (state.command == "ls" || state.command == "listnetworks") { + if(argc != 2) { + std::cerr << INVALID_ARGS_STR << "zerotier ls" << std::endl; + return 1; + } + checkForThing(state,"one",true); + url = state.url + "network"; + res = REQUEST(REQ_GET,state,state.reqHeaders,"",(const std::string)url); + if(std::get<0>(res) == 200) { + std::cout << "listnetworks " << std::endl; + auto j = json::parse(std::get<1>(res).c_str()); + if (j.type() == json::value_t::array) { + for(int i=0;i(); + std::string name = j[i]["name"].get(); + std::string mac = j[i]["mac"].get(); + std::string status = j[i]["status"].get(); + std::string type = j[i]["type"].get(); + std::string addrs; + for(int m=0; m() + " "; + } + std::string dev = j[i]["portDeviceName"].get(); + std::cout << "listnetworks " << nwid << " " << name << " " << mac << " " << status << " " << type << " " << dev << " " << addrs << std::endl; + } + } + } + } + + // zerotier join --- joins a network + else if (state.command == "join") { + if(argc != 3) { + std::cerr << INVALID_ARGS_STR << "zerotier join " << std::endl; + return 1; + } + checkForThing(state,"one",true); + res = REQUEST(REQ_POST,state,state.reqHeaders,"{}",state.url + "/network/" + state.args[0]); + if(std::get<0>(res) == 200) { + std::cout << OK_STR << "connected to " << state.args[0] << std::endl; + } + } + + // zerotier leave --- leaves a network + else if (state.command == "leave") { + if(argc != 3) { + std::cerr << INVALID_ARGS_STR << "zerotier leave " << std::endl; + return 1; + } + checkForThing(state,"one",true); + res = REQUEST(REQ_DEL,state,state.reqHeaders,"{}",state.url + "/network/" + state.args[0]); + if(std::get<0>(res) == 200) { + std::cout << OK_STR << "disconnected from " << state.args[0] << std::endl; + } + } + + // zerotier peers --- display address and role of all peers + else if (state.command == "peers") { + if(argc != 2) { + std::cerr << INVALID_ARGS_STR << "zerotier peers" << std::endl; + return 1; + } + checkForThing(state,"one",true); + res = REQUEST(REQ_GET,state,state.reqHeaders,"",state.url + "/peer"); + if(std::get<0>(res) == 200) { + json result = json::parse(std::get<1>(res)); + for(int i=0; i(res) == 200) { + result = json::parse(std::get<1>(res)); + std::string status_str = result["online"].get() ? "ONLINE" : "OFFLINE"; + std::cout << "info " << result["address"].get() + << " " << status_str << " " << result["version"].get() << std::endl; + } + } + + // REMOTE + + // zerotier @thing net-create --- creates a new network + else if (state.command == "net-create") { + if(argc > 3 || (argc == 3 && !state.atname.length())) { + std::cerr << INVALID_ARGS_STR << "zerotier <@thing> net-create" << std::endl; + return 1; + } + checkForThing(state,"central",true); + res = REQUEST(REQ_POST,state,state.reqHeaders,"",state.url + "api/network"); + if(std::get<0>(res) == 200) { + json result = json::parse(std::get<1>(res)); + std::cout << OK_STR << "created network " << result["config"]["nwid"].get() << std::endl; + } + } + + // zerotier @thing net-rm --- deletes a network + else if (state.command == "net-rm") { + if(argc > 4 || (argc == 4 && !state.atname.length())) { + std::cerr << INVALID_ARGS_STR << "zerotier <@thing> net-rm " << std::endl; + return 1; + } + checkForThing(state,"central",true); + if(!state.args.size()) { + std::cout << "Argument error: No network specified." << std::endl; + std::cout << " | Usage: zerotier net-rm " << std::endl; + } + else { + std::string nwid = state.args[0]; + res = REQUEST(REQ_DEL,state,state.reqHeaders,"",state.url + "api/network/" + nwid); + if(std::get<0>(res) == 200) { + std::cout << "deleted network " << nwid << std::endl; + } + } + } + + // zerotier @thing net-ls --- lists all networks + else if (state.command == "net-ls") { + if(argc > 3 || (argc == 3 && !state.atname.length())) { + std::cerr << INVALID_ARGS_STR << "zerotier <@thing> net-ls" << std::endl; + return 1; + } + checkForThing(state,"central",true); + res = REQUEST(REQ_GET,state,state.reqHeaders,"",state.url + "api/network"); + if(std::get<0>(res) == 200) { + json result = json::parse(std::get<1>(res)); + for(int m=0;m() << std::endl; + } + } + } + + // zerotier @thing net-members --- show all members of a network + else if (state.command == "net-members") { + if(argc > 4 || (argc == 4 && !state.atname.length())) { + std::cerr << INVALID_ARGS_STR << "zerotier <@thing> net-members " << std::endl; + return 1; + } + checkForThing(state,"central",true); + if(!state.args.size()) { + std::cout << FAIL_STR << "Argument error: No network specified." << std::endl; + std::cout << " | Usage: zerotier net-members " << std::endl; + } + else { + std::string nwid = state.args[0]; + res = REQUEST(REQ_GET,state,state.reqHeaders,"",state.url + "api/network/" + nwid + "/member"); + json result = json::parse(std::get<1>(res)); + std::cout << "Members of " << nwid << ":" << std::endl; + for (json::iterator it = result.begin(); it != result.end(); ++it) { + std::cout << it.key() << std::endl; + } + } + } + + // zerotier @thing net-show --- show info about a device on a specific network + else if (state.command == "net-show") { + if(argc > 5 || (argc == 5 && !state.atname.length())) { + std::cerr << INVALID_ARGS_STR << "zerotier <@thing> net-show " << std::endl; + return 1; + } + checkForThing(state,"central",true); + if(state.args.size() < 2) { + std::cout << FAIL_STR << "Argument error: Too few arguments." << std::endl; + std::cout << " | Usage: zerotier net-show " << std::endl; + } + else { + std::string nwid = state.args[0]; + std::string devid = state.args[1]; + res = REQUEST(REQ_GET,state,state.reqHeaders,"",state.url + "api/network/" + nwid + "/member/" + devid); + // TODO: More info, what would we like to show exactly? + if(std::get<0>(res) == 200) { + json result = json::parse(std::get<1>(res)); + std::cout << "Assigned IP: " << std::endl; + for(int m=0; m() << std::endl; + } + } + } + } + + // zerotier @thing net-auth --- authorize a device on a network + else if (state.command == "net-auth") { + if(argc > 5 || (argc == 5 && !state.atname.length())) { + std::cerr << INVALID_ARGS_STR << "zerotier <@thing> net-auth " << std::endl; + return 1; + } + checkForThing(state,"central",true); + if(state.args.size() != 2) { + std::cout << FAIL_STR << "Argument error: Network and/or device ID not specified." << std::endl; + std::cout << " | Usage: zerotier net-auth " << std::endl; + } + std::string nwid = state.args[0]; + std::string devid = state.args[1]; + url = state.url + "api/network/" + nwid + "/member/" + devid; + // Add device to network + res = REQUEST(REQ_POST,state,state.reqHeaders,"",(const std::string)url); + if(std::get<0>(res) == 200) { + result = json::parse(std::get<1>(res)); + res = REQUEST(REQ_GET,state,state.reqHeaders,"",(const std::string)url); + result = json::parse(std::get<1>(res)); + result["config"]["authorized"] = "true"; + std::string newconfig = result.dump(); + res = REQUEST(REQ_POST,state,state.reqHeaders,newconfig,(const std::string)url); + if(std::get<0>(res) == 200) + std::cout << OK_STR << devid << " authorized on " << nwid << std::endl; + else + std::cout << FAIL_STR << "There was a problem authorizing that device." << std::endl; + } + } + + // zerotier @thing net-unauth + else if (state.command == "net-unauth") { + if(argc > 5 || (argc == 5 && !state.atname.length())) { + std::cerr << INVALID_ARGS_STR << "zerotier <@thing> net-unauth " << std::endl; + return 1; + } + checkForThing(state,"central",true); + if(state.args.size() != 2) { + std::cout << FAIL_STR << "Bad argument. No network and/or device ID specified." << std::endl; + std::cout << " | Usage: zerotier net-unauth " << std::endl; + } + std::string nwid = state.args[0]; + std::string devid = state.args[1]; + // If successful, get member config + res = REQUEST(REQ_GET,state,state.reqHeaders,"",state.url + "api/network/" + nwid + "/member/" + devid); + result = json::parse(std::get<1>(res)); + // modify auth field and re-POST + result["config"]["authorized"] = "false"; + std::string newconfig = result.dump(); + res = REQUEST(REQ_POST,state,state.reqHeaders,newconfig,state.url + "api/network/" + nwid + "/member/" + devid); + if(std::get<0>(res) == 200) + std::cout << OK_STR << devid << " de-authorized from " << nwid << std::endl; + else + std::cout << FAIL_STR << "There was a problem de-authorizing that device." << std::endl; + } + + // zerotier @thing net-set + else if (state.command == "net-set") { + } + + // ID + + // zerotier id-generate [] + else if (state.command == "id-generate") { + if(argc != 3) { + std::cerr << INVALID_ARGS_STR << "zerotier id-generate []" << std::endl; + return 1; + } + uint64_t vanity = 0; + int vanityBits = 0; + if (argc >= 5) { + vanity = Utils::hexStrToU64(argv[4]) & 0xffffffffffULL; + vanityBits = 4 * strlen(argv[4]); + if (vanityBits > 40) + vanityBits = 40; + } + + ZeroTier::Identity id; + for(;;) { + id.generate(); + if ((id.address().toInt() >> (40 - vanityBits)) == vanity) { + if (vanityBits > 0) { + fprintf(stderr,"vanity address: found %.10llx !\n",(unsigned long long)id.address().toInt()); + } + break; + } else { + fprintf(stderr,"vanity address: tried %.10llx looking for first %d bits of %.10llx\n",(unsigned long long)id.address().toInt(),vanityBits,(unsigned long long)(vanity << (40 - vanityBits))); + } + } + + std::string idser = id.toString(true); + if (argc >= 3) { + if (!OSUtils::writeFile(argv[2],idser)) { + std::cerr << "Error writing to " << argv[2] << std::endl; + return 1; + } else std::cout << argv[2] << " written" << std::endl; + if (argc >= 4) { + idser = id.toString(false); + if (!OSUtils::writeFile(argv[3],idser)) { + std::cerr << "Error writing to " << argv[3] << std::endl; + return 1; + } else std::cout << argv[3] << " written" << std::endl; + } + } else std::cout << idser << std::endl; + } + + // zerotier id-validate + else if (state.command == "id-validate") { + if(argc != 3) { + std::cerr << INVALID_ARGS_STR << "zerotier id-validate " << std::endl; + return 1; + } + Identity id = getIdFromArg(argv[2]); + if (!id) { + std::cerr << "Identity argument invalid or file unreadable: " << argv[2] << std::endl; + return 1; + } + if (!id.locallyValidate()) { + std::cerr << argv[2] << " FAILED validation." << std::endl; + return 1; + } else std::cout << argv[2] << "is a valid identity" << std::endl; + } + + // zerotier id-sign + else if (state.command == "id-sign") { + if(argc != 4) { + std::cerr << INVALID_ARGS_STR << "zerotier id-sign " << std::endl; + return 1; + } + Identity id = getIdFromArg(argv[2]); + if (!id) { + std::cerr << "Identity argument invalid or file unreadable: " << argv[2] << std::endl; + return 1; + } + if (!id.hasPrivate()) { + std::cerr << argv[2] << " does not contain a private key (must use private to sign)" << std::endl; + return 1; + } + std::string inf; + if (!OSUtils::readFile(argv[3],inf)) { + std::cerr << argv[3] << " is not readable" << std::endl; + return 1; + } + C25519::Signature signature = id.sign(inf.data(),(unsigned int)inf.length()); + std::cout << Utils::hex(signature.data,(unsigned int)signature.size()) << std::endl; + } + + // zerotier id-verify + else if (state.command == "id-verify") { + if(argc != 4) { + std::cerr << INVALID_ARGS_STR << "zerotier id-verify " << std::endl; + return 1; + } + Identity id = getIdFromArg(argv[2]); + if (!id) { + std::cerr << "Identity argument invalid or file unreadable: " << argv[2] << std::endl; + return 1; + } + std::string inf; + if (!OSUtils::readFile(argv[3],inf)) { + std::cerr << argv[3] << " is not readable" << std::endl; + return 1; + } + std::string signature(Utils::unhex(argv[4])); + if ((signature.length() > ZT_ADDRESS_LENGTH)&&(id.verify(inf.data(),(unsigned int)inf.length(),signature.data(),(unsigned int)signature.length()))) { + std::cout << argv[3] << " signature valid" << std::endl; + } else { + std::cerr << argv[3] << " signature check FAILED" << std::endl; + return 1; + } + } + + // zerotier id-getpublic + else if (state.command == "id-getpublic") { + if(argc != 3) { + std::cerr << INVALID_ARGS_STR << "zerotier id-getpublic " << std::endl; + return 1; + } + Identity id = getIdFromArg(argv[2]); + if (!id) { + std::cerr << "Identity argument invalid or file unreadable: " << argv[2] << std::endl; + return 1; + } + std::cerr << id.toString(false) << std::endl; + } + // + else { + dumpHelp(); + return -1; + } + if(std::find(state.args.begin(), state.args.end(), "-verbose") != state.args.end()) + std::cout << "\n\nAPI response = " << std::get<1>(res) << std::endl; + curl_global_cleanup(); + return 0; +} diff --git a/linux-build-farm/README.md b/attic/linux-build-farm/README.md similarity index 100% rename from linux-build-farm/README.md rename to attic/linux-build-farm/README.md diff --git a/linux-build-farm/amazon-2016.03/x64/Dockerfile b/attic/linux-build-farm/amazon-2016.03/x64/Dockerfile similarity index 100% rename from linux-build-farm/amazon-2016.03/x64/Dockerfile rename to attic/linux-build-farm/amazon-2016.03/x64/Dockerfile diff --git a/linux-build-farm/build.sh b/attic/linux-build-farm/build.sh similarity index 100% rename from linux-build-farm/build.sh rename to attic/linux-build-farm/build.sh diff --git a/linux-build-farm/centos-6/x64/Dockerfile b/attic/linux-build-farm/centos-6/x64/Dockerfile similarity index 100% rename from linux-build-farm/centos-6/x64/Dockerfile rename to attic/linux-build-farm/centos-6/x64/Dockerfile diff --git a/linux-build-farm/centos-6/x86/Dockerfile b/attic/linux-build-farm/centos-6/x86/Dockerfile similarity index 100% rename from linux-build-farm/centos-6/x86/Dockerfile rename to attic/linux-build-farm/centos-6/x86/Dockerfile diff --git a/linux-build-farm/centos-7/x64/Dockerfile b/attic/linux-build-farm/centos-7/x64/Dockerfile similarity index 100% rename from linux-build-farm/centos-7/x64/Dockerfile rename to attic/linux-build-farm/centos-7/x64/Dockerfile diff --git a/linux-build-farm/centos-7/x86/Dockerfile b/attic/linux-build-farm/centos-7/x86/Dockerfile similarity index 100% rename from linux-build-farm/centos-7/x86/Dockerfile rename to attic/linux-build-farm/centos-7/x86/Dockerfile diff --git a/linux-build-farm/debian-jessie/x64/Dockerfile b/attic/linux-build-farm/debian-jessie/x64/Dockerfile similarity index 100% rename from linux-build-farm/debian-jessie/x64/Dockerfile rename to attic/linux-build-farm/debian-jessie/x64/Dockerfile diff --git a/linux-build-farm/debian-jessie/x86/Dockerfile b/attic/linux-build-farm/debian-jessie/x86/Dockerfile similarity index 100% rename from linux-build-farm/debian-jessie/x86/Dockerfile rename to attic/linux-build-farm/debian-jessie/x86/Dockerfile diff --git a/linux-build-farm/debian-stretch/x64/Dockerfile b/attic/linux-build-farm/debian-stretch/x64/Dockerfile similarity index 100% rename from linux-build-farm/debian-stretch/x64/Dockerfile rename to attic/linux-build-farm/debian-stretch/x64/Dockerfile diff --git a/linux-build-farm/debian-stretch/x86/Dockerfile b/attic/linux-build-farm/debian-stretch/x86/Dockerfile similarity index 100% rename from linux-build-farm/debian-stretch/x86/Dockerfile rename to attic/linux-build-farm/debian-stretch/x86/Dockerfile diff --git a/linux-build-farm/debian-wheezy/x64/Dockerfile b/attic/linux-build-farm/debian-wheezy/x64/Dockerfile similarity index 100% rename from linux-build-farm/debian-wheezy/x64/Dockerfile rename to attic/linux-build-farm/debian-wheezy/x64/Dockerfile diff --git a/linux-build-farm/debian-wheezy/x86/Dockerfile b/attic/linux-build-farm/debian-wheezy/x86/Dockerfile similarity index 100% rename from linux-build-farm/debian-wheezy/x86/Dockerfile rename to attic/linux-build-farm/debian-wheezy/x86/Dockerfile diff --git a/linux-build-farm/fedora-22/x64/Dockerfile b/attic/linux-build-farm/fedora-22/x64/Dockerfile similarity index 100% rename from linux-build-farm/fedora-22/x64/Dockerfile rename to attic/linux-build-farm/fedora-22/x64/Dockerfile diff --git a/linux-build-farm/fedora-22/x86/Dockerfile b/attic/linux-build-farm/fedora-22/x86/Dockerfile similarity index 100% rename from linux-build-farm/fedora-22/x86/Dockerfile rename to attic/linux-build-farm/fedora-22/x86/Dockerfile diff --git a/linux-build-farm/make-apt-repos.sh b/attic/linux-build-farm/make-apt-repos.sh similarity index 100% rename from linux-build-farm/make-apt-repos.sh rename to attic/linux-build-farm/make-apt-repos.sh diff --git a/linux-build-farm/make-rpm-repos.sh b/attic/linux-build-farm/make-rpm-repos.sh similarity index 100% rename from linux-build-farm/make-rpm-repos.sh rename to attic/linux-build-farm/make-rpm-repos.sh diff --git a/linux-build-farm/ubuntu-trusty/x64/Dockerfile b/attic/linux-build-farm/ubuntu-trusty/x64/Dockerfile similarity index 100% rename from linux-build-farm/ubuntu-trusty/x64/Dockerfile rename to attic/linux-build-farm/ubuntu-trusty/x64/Dockerfile diff --git a/linux-build-farm/ubuntu-trusty/x86/Dockerfile b/attic/linux-build-farm/ubuntu-trusty/x86/Dockerfile similarity index 100% rename from linux-build-farm/ubuntu-trusty/x86/Dockerfile rename to attic/linux-build-farm/ubuntu-trusty/x86/Dockerfile diff --git a/linux-build-farm/ubuntu-wily/x64/Dockerfile b/attic/linux-build-farm/ubuntu-wily/x64/Dockerfile similarity index 100% rename from linux-build-farm/ubuntu-wily/x64/Dockerfile rename to attic/linux-build-farm/ubuntu-wily/x64/Dockerfile diff --git a/linux-build-farm/ubuntu-wily/x86/Dockerfile b/attic/linux-build-farm/ubuntu-wily/x86/Dockerfile similarity index 100% rename from linux-build-farm/ubuntu-wily/x86/Dockerfile rename to attic/linux-build-farm/ubuntu-wily/x86/Dockerfile diff --git a/linux-build-farm/ubuntu-xenial/x64/Dockerfile b/attic/linux-build-farm/ubuntu-xenial/x64/Dockerfile similarity index 100% rename from linux-build-farm/ubuntu-xenial/x64/Dockerfile rename to attic/linux-build-farm/ubuntu-xenial/x64/Dockerfile diff --git a/linux-build-farm/ubuntu-xenial/x86/Dockerfile b/attic/linux-build-farm/ubuntu-xenial/x86/Dockerfile similarity index 100% rename from linux-build-farm/ubuntu-xenial/x86/Dockerfile rename to attic/linux-build-farm/ubuntu-xenial/x86/Dockerfile diff --git a/controller/schema.sql b/attic/old-controller-schema.sql similarity index 83% rename from controller/schema.sql rename to attic/old-controller-schema.sql index 105db92..d1daf8d 100644 --- a/controller/schema.sql +++ b/attic/old-controller-schema.sql @@ -86,34 +86,27 @@ CREATE TABLE Route ( CREATE INDEX Route_networkId ON Route (networkId); -CREATE TABLE Relay ( - networkId char(16) NOT NULL REFERENCES Network(id) ON DELETE CASCADE, - address char(10) NOT NULL, - phyAddress varchar(64) NOT NULL -); - -CREATE UNIQUE INDEX Relay_networkId_address ON Relay (networkId,address); - CREATE TABLE Rule ( networkId char(16) NOT NULL REFERENCES Network(id) ON DELETE CASCADE, + capId integer, ruleNo integer NOT NULL, - nodeId char(10) REFERENCES Node(id), - sourcePort char(10), - destPort char(10), - vlanId integer, - vlanPcp integer, - etherType integer, - macSource char(12), - macDest char(12), - ipSource varchar(64), - ipDest varchar(64), - ipTos integer, - ipProtocol integer, - ipSourcePort integer, - ipDestPort integer, - flags integer, - invFlags integer, - "action" varchar(4096) NOT NULL DEFAULT('accept') + ruleType integer NOT NULL DEFAULT(0), + "addr" blob(16), + "int1" integer, + "int2" integer, + "int3" integer, + "int4" integer ); -CREATE UNIQUE INDEX Rule_networkId_ruleNo ON Rule (networkId, ruleNo); +CREATE INDEX Rule_networkId_capId ON Rule (networkId,capId); + +CREATE TABLE MemberTC ( + networkId char(16) NOT NULL REFERENCES Network(id) ON DELETE CASCADE, + nodeId char(10) NOT NULL REFERENCES Node(id) ON DELETE CASCADE, + tagId integer, + tagValue integer, + capId integer, + capMaxCustodyChainLength integer NOT NULL DEFAULT(1) +); + +CREATE INDEX MemberTC_networkId_nodeId ON MemberTC (networkId,nodeId); diff --git a/world/README.md b/attic/world/README.md similarity index 100% rename from world/README.md rename to attic/world/README.md diff --git a/world/build.sh b/attic/world/build.sh similarity index 100% rename from world/build.sh rename to attic/world/build.sh diff --git a/world/earth-2016-01-13.bin b/attic/world/earth-2016-01-13.bin similarity index 100% rename from world/earth-2016-01-13.bin rename to attic/world/earth-2016-01-13.bin diff --git a/world/mkworld.cpp b/attic/world/mkworld.cpp similarity index 93% rename from world/mkworld.cpp rename to attic/world/mkworld.cpp index 061d634..e0f477b 100644 --- a/world/mkworld.cpp +++ b/attic/world/mkworld.cpp @@ -50,25 +50,6 @@ using namespace ZeroTier; -class WorldMaker : public World -{ -public: - static inline World make(uint64_t id,uint64_t ts,const C25519::Public &sk,const std::vector &roots,const C25519::Pair &signWith) - { - WorldMaker w; - w._id = id; - w._ts = ts; - w._updateSigningKey = sk; - w._roots = roots; - - Buffer tmp; - w.serialize(tmp,true); - w._signature = C25519::sign(signWith,tmp.data(),tmp.size()); - - return w; - } -}; - int main(int argc,char **argv) { std::string previous,current; @@ -139,7 +120,7 @@ int main(int argc,char **argv) fprintf(stderr,"INFO: generating and signing id==%llu ts==%llu"ZT_EOL_S,(unsigned long long)id,(unsigned long long)ts); - World nw = WorldMaker::make(id,ts,currentKP.pub,roots,previousKP); + World nw = World::make(World::TYPE_PLANET,id,ts,currentKP.pub,roots,previousKP); Buffer outtmp; nw.serialize(outtmp,false); diff --git a/world/old/earth-2015-11-16.bin b/attic/world/old/earth-2015-11-16.bin similarity index 100% rename from world/old/earth-2015-11-16.bin rename to attic/world/old/earth-2015-11-16.bin diff --git a/world/old/earth-2015-11-20.bin b/attic/world/old/earth-2015-11-20.bin similarity index 100% rename from world/old/earth-2015-11-20.bin rename to attic/world/old/earth-2015-11-20.bin diff --git a/world/old/earth-2015-12-17.bin b/attic/world/old/earth-2015-12-17.bin similarity index 100% rename from world/old/earth-2015-12-17.bin rename to attic/world/old/earth-2015-12-17.bin diff --git a/cli/README.md b/cli/README.md deleted file mode 100644 index dabbd30..0000000 --- a/cli/README.md +++ /dev/null @@ -1,6 +0,0 @@ -ZeroTier Newer-Spiffier Command Line Interface -====== - -This will be the future home of our new unified CLI for ZeroTier One, controllers, and Central (my.zerotier.com etc.). - -IT IS NOT DONE AND DOES NOT WORK EVEN A LITTLE BIT. GO AWAY. diff --git a/cli/zerotier.cpp b/cli/zerotier.cpp deleted file mode 100644 index f9eec5d..0000000 --- a/cli/zerotier.cpp +++ /dev/null @@ -1,335 +0,0 @@ -/* - * ZeroTier One - Network Virtualization Everywhere - * Copyright (C) 2011-2016 ZeroTier, Inc. https://www.zerotier.com/ - * - * 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 . - */ - -// Note: unlike the rest of ZT's code base, this requires C++11 due to -// the JSON library it uses and other things. - -#include -#include -#include -#include - -#include "../node/Constants.hpp" -#include "../version.h" -#include "../osdep/OSUtils.hpp" -#include "../ext/json/json.hpp" - -#ifdef __WINDOWS__ -#include -#include -#include -#include -#else -#include -#include -#endif - -#include -#include -#include -#include -#include - -#include - -using json = nlohmann::json; -using namespace ZeroTier; - -#define ZT_CLI_FLAG_VERBOSE 'v' -#define ZT_CLI_FLAG_UNSAFE_SSL 'X' - -struct CLIState -{ - std::string atname; - std::string command; - std::vector args; - std::map opts; - json settings; -}; - -namespace { - -static std::string trimString(const std::string &s) -{ - unsigned long end = (unsigned long)s.length(); - while (end) { - char c = s[end - 1]; - if ((c == ' ')||(c == '\r')||(c == '\n')||(!c)||(c == '\t')) - --end; - else break; - } - unsigned long start = 0; - while (start < end) { - char c = s[start]; - if ((c == ' ')||(c == '\r')||(c == '\n')||(!c)||(c == '\t')) - ++start; - else break; - } - return s.substr(start,end - start); -} - -static inline std::string getSettingsFilePath() -{ -#ifdef __WINDOWS__ -#else - const char *home = getenv("HOME"); - if (!home) - home = "/"; - return (std::string(home) + "/.zerotierCliSettings"); -#endif -} - -static bool saveSettings(const json &settings) -{ - std::string sfp(getSettingsFilePath().c_str()); - std::string buf(settings.dump(2)); - if (OSUtils::writeFile(sfp.c_str(),buf)) { - OSUtils::lockDownFile(sfp.c_str(),false); - return true; - } - return false; -} - -static void dumpHelp() -{ - std::cout << "ZeroTier Newer-Spiffier CLI " << ZEROTIER_ONE_VERSION_MAJOR << "." << ZEROTIER_ONE_VERSION_MINOR << "." << ZEROTIER_ONE_VERSION_REVISION << std::endl; - std::cout << "(c)2016 ZeroTier, Inc. / Licensed under the GNU GPL v3" << std::endl; - std::cout << std::endl; - std::cout << "Configuration path: " << getSettingsFilePath() << std::endl; - std::cout << std::endl; - std::cout << "Usage: zerotier [-option] [@name] []" << std::endl; - std::cout << std::endl; - std::cout << "Options:" << std::endl; - std::cout << " -v - Verbose JSON output" << std::endl; - std::cout << " -X - Do not check SSL certs (CAUTION!)" << std::endl; - std::cout << std::endl; - std::cout << "CLI Configuration Commands:" << std::endl; - std::cout << " cli-set - Set a CLI option ('cli-set help')" << std::endl; - std::cout << " cli-ls - List configured @things" << std::endl; - std::cout << " cli-rm @name - Remove a configured @thing" << std::endl; - std::cout << " cli-add-zt @name - Add a ZeroTier service" << std::endl; - std::cout << " cli-add-central @name - Add ZeroTier Central instance" << std::endl; - std::cout << std::endl; - std::cout << "ZeroTier One Service Commands:" << std::endl; - std::cout << " ls - List currently joined networks" << std::endl; - std::cout << " join [opt=value ...] - Join a network" << std::endl; - std::cout << " leave - Leave a network" << std::endl; - std::cout << " peers - List ZeroTier VL1 peers" << std::endl; - std::cout << " show [] - Get info about self or object" << std::endl; - std::cout << std::endl; - std::cout << "Network Controller Commands:" << std::endl; - std::cout << " net-create - Create a new network" << std::endl; - std::cout << " net-rm - Delete a network (CAUTION!)" << std::endl; - std::cout << " net-ls - List administered networks" << std::endl; - std::cout << " net-members - List members of a network" << std::endl; - std::cout << " net-show [
] - Get network or member info" << std::endl; - std::cout << " net-auth
- Authorize a member" << std::endl; - std::cout << " net-set - See 'net-set help'" << std::endl; - std::cout << std::endl; - std::cout << "Identity Commands:" << std::endl; - std::cout << " id-generate [] - Generate a ZeroTier identity" << std::endl; - std::cout << " id-validate - Locally validate an identity" << std::endl; - std::cout << " id-sign - Sign a file" << std::endl; - std::cout << " id-verify - Verify a file's signature" << std::endl; - std::cout << " id-getpublic - Get full identity's public portion" << std::endl; - std::cout << std::endl; -} - -static size_t _curlStringAppendCallback(void *contents,size_t size,size_t nmemb,void *stdstring) -{ - size_t totalSize = size * nmemb; - reinterpret_cast(stdstring)->append((const char *)contents,totalSize); - return totalSize; -} - -static std::tuple GET(const CLIState &state,const std::map &headers,const std::string &url) -{ - std::string body; - char errbuf[CURL_ERROR_SIZE]; - char urlbuf[4096]; - - CURL *curl = curl_easy_init(); - if (!curl) { - std::cerr << "FATAL: curl_easy_init() failed" << std::endl; - exit(-1); - } - - curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,_curlStringAppendCallback); - curl_easy_setopt(curl,CURLOPT_WRITEDATA,(void *)&body); - curl_easy_setopt(curl,CURLOPT_USERAGENT,"ZeroTier-CLI"); - curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,(state.opts.count(ZT_CLI_FLAG_UNSAFE_SSL) > 0) ? 0L : 1L); - curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf); - curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,0L); - - Utils::scopy(urlbuf,sizeof(urlbuf),url.c_str()); - curl_easy_setopt(curl,CURLOPT_URL,urlbuf); - - struct curl_slist *hdrs = (struct curl_slist *)0; - for(std::map::const_iterator i(headers.begin());i!=headers.end();++i) { - std::string htmp(i->first); - htmp.append(": "); - htmp.append(i->second); - hdrs = curl_slist_append(hdrs,htmp.c_str()); - } - if (hdrs) - curl_easy_setopt(curl,CURLOPT_HTTPHEADER,hdrs); - - memset(errbuf,0,sizeof(errbuf)); - CURLcode res = curl_easy_perform(curl); - errbuf[CURL_ERROR_SIZE-1] = (char)0; // sanity check - - if (res != CURLE_OK) - return std::make_tuple(-1,std::string(errbuf)); - - int rc = (int)curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE); - - curl_easy_cleanup(curl); - if (hdrs) - curl_slist_free_all(hdrs); - - return std::make_tuple(rc,body); -} - -} // anonymous namespace - -////////////////////////////////////////////////////////////////////////////// - -#ifdef __WINDOWS__ -int _tmain(int argc, _TCHAR* argv[]) -#else -int main(int argc,char **argv) -#endif -{ -#ifdef __WINDOWS__ - { - WSADATA wsaData; - WSAStartup(MAKEWORD(2,2),&wsaData); - } -#endif - - curl_global_init(CURL_GLOBAL_DEFAULT); - - CLIState state; - - for(int i=1;i 0)&&(port < 65536))&&(authToken.length() > 0)) { - state.settings["things"]["local"]["url"] = (std::string("http://127.0.0.1:") + portStr + "/"); - state.settings["things"]["local"]["auth"] = authToken; - initSuccess = true; - } - } - - if (!saveSettings(state.settings)) { - std::cerr << "FATAL: unable to write " << getSettingsFilePath() << std::endl; - exit(-1); - } - - if (initSuccess) { - std::cerr << "INFO: initialized new config at " << getSettingsFilePath() << std::endl; - } else { - std::cerr << "INFO: initialized new config at " << getSettingsFilePath() << " but could not auto-init local ZeroTier One service config from " << oneHome << " -- you will need to set local service URL and port manually if you want to control a local instance of ZeroTier One. (This happens if you are not root/administrator.)" << std::endl; - } - } - } - - if ((state.command.length() == 0)||(state.command == "help")) { - dumpHelp(); - return -1; - } else if (state.command == "cli-set") { - } else if (state.command == "cli-ls") { - } else if (state.command == "cli-rm") { - } else if (state.command == "cli-add-zt") { - } else if (state.command == "cli-add-central") { - } else if (state.command == "ls") { - } else if (state.command == "join") { - } else if (state.command == "leave") { - } else if (state.command == "peers") { - } else if (state.command == "show") { - } else if (state.command == "net-create") { - } else if (state.command == "net-rm") { - } else if (state.command == "net-ls") { - } else if (state.command == "net-members") { - } else if (state.command == "net-show") { - } else if (state.command == "net-auth") { - } else if (state.command == "net-set") { - } else if (state.command == "id-generate") { - } else if (state.command == "id-validate") { - } else if (state.command == "id-sign") { - } else if (state.command == "id-verify") { - } else if (state.command == "id-getpublic") { - } else { - dumpHelp(); - return -1; - } - - curl_global_cleanup(); - - return 0; -} diff --git a/controller/EmbeddedNetworkController.cpp b/controller/EmbeddedNetworkController.cpp new file mode 100644 index 0000000..597bc9c --- /dev/null +++ b/controller/EmbeddedNetworkController.cpp @@ -0,0 +1,1854 @@ +/* + * ZeroTier One - Network Virtualization Everywhere + * Copyright (C) 2011-2015 ZeroTier, Inc. + * + * 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 . + */ + +#include +#include +#include +#include +#include + +#ifndef _WIN32 +#include +#endif +#include + +#include +#include +#include +#include +#include + +#include "../include/ZeroTierOne.h" +#include "../node/Constants.hpp" + +#include "EmbeddedNetworkController.hpp" + +#include "../node/Node.hpp" +#include "../node/Utils.hpp" +#include "../node/CertificateOfMembership.hpp" +#include "../node/NetworkConfig.hpp" +#include "../node/Dictionary.hpp" +#include "../node/InetAddress.hpp" +#include "../node/MAC.hpp" +#include "../node/Address.hpp" + +using json = nlohmann::json; + +// API version reported via JSON control plane +#define ZT_NETCONF_CONTROLLER_API_VERSION 3 + +// Number of requests to remember in member history +#define ZT_NETCONF_DB_MEMBER_HISTORY_LENGTH 2 + +// Min duration between requests for an address/nwid combo to prevent floods +#define ZT_NETCONF_MIN_REQUEST_PERIOD 1000 + +// Nodes are considered active if they've queried in less than this long +#define ZT_NETCONF_NODE_ACTIVE_THRESHOLD (ZT_NETWORK_AUTOCONF_DELAY * 2) + +namespace ZeroTier { + +static json _renderRule(ZT_VirtualNetworkRule &rule) +{ + char tmp[128]; + json r = json::object(); + const ZT_VirtualNetworkRuleType rt = (ZT_VirtualNetworkRuleType)(rule.t & 0x3f); + + switch(rt) { + case ZT_NETWORK_RULE_ACTION_DROP: + r["type"] = "ACTION_DROP"; + break; + case ZT_NETWORK_RULE_ACTION_ACCEPT: + r["type"] = "ACTION_ACCEPT"; + break; + case ZT_NETWORK_RULE_ACTION_TEE: + r["type"] = "ACTION_TEE"; + r["address"] = Address(rule.v.fwd.address).toString(); + r["flags"] = (unsigned int)rule.v.fwd.flags; + r["length"] = (unsigned int)rule.v.fwd.length; + break; + case ZT_NETWORK_RULE_ACTION_WATCH: + r["type"] = "ACTION_WATCH"; + r["address"] = Address(rule.v.fwd.address).toString(); + r["flags"] = (unsigned int)rule.v.fwd.flags; + r["length"] = (unsigned int)rule.v.fwd.length; + break; + case ZT_NETWORK_RULE_ACTION_REDIRECT: + r["type"] = "ACTION_REDIRECT"; + r["address"] = Address(rule.v.fwd.address).toString(); + r["flags"] = (unsigned int)rule.v.fwd.flags; + break; + case ZT_NETWORK_RULE_ACTION_BREAK: + r["type"] = "ACTION_BREAK"; + break; + default: + break; + } + + if (r.size() == 0) { + switch(rt) { + case ZT_NETWORK_RULE_MATCH_SOURCE_ZEROTIER_ADDRESS: + r["type"] = "MATCH_SOURCE_ZEROTIER_ADDRESS"; + r["zt"] = Address(rule.v.zt).toString(); + break; + case ZT_NETWORK_RULE_MATCH_DEST_ZEROTIER_ADDRESS: + r["type"] = "MATCH_DEST_ZEROTIER_ADDRESS"; + r["zt"] = Address(rule.v.zt).toString(); + break; + case ZT_NETWORK_RULE_MATCH_VLAN_ID: + r["type"] = "MATCH_VLAN_ID"; + r["vlanId"] = (unsigned int)rule.v.vlanId; + break; + case ZT_NETWORK_RULE_MATCH_VLAN_PCP: + r["type"] = "MATCH_VLAN_PCP"; + r["vlanPcp"] = (unsigned int)rule.v.vlanPcp; + break; + case ZT_NETWORK_RULE_MATCH_VLAN_DEI: + r["type"] = "MATCH_VLAN_DEI"; + r["vlanDei"] = (unsigned int)rule.v.vlanDei; + break; + case ZT_NETWORK_RULE_MATCH_MAC_SOURCE: + r["type"] = "MATCH_MAC_SOURCE"; + Utils::snprintf(tmp,sizeof(tmp),"%.2x:%.2x:%.2x:%.2x:%.2x:%.2x",(unsigned int)rule.v.mac[0],(unsigned int)rule.v.mac[1],(unsigned int)rule.v.mac[2],(unsigned int)rule.v.mac[3],(unsigned int)rule.v.mac[4],(unsigned int)rule.v.mac[5]); + r["mac"] = tmp; + break; + case ZT_NETWORK_RULE_MATCH_MAC_DEST: + r["type"] = "MATCH_MAC_DEST"; + Utils::snprintf(tmp,sizeof(tmp),"%.2x:%.2x:%.2x:%.2x:%.2x:%.2x",(unsigned int)rule.v.mac[0],(unsigned int)rule.v.mac[1],(unsigned int)rule.v.mac[2],(unsigned int)rule.v.mac[3],(unsigned int)rule.v.mac[4],(unsigned int)rule.v.mac[5]); + r["mac"] = tmp; + break; + case ZT_NETWORK_RULE_MATCH_IPV4_SOURCE: + r["type"] = "MATCH_IPV4_SOURCE"; + r["ip"] = InetAddress(&(rule.v.ipv4.ip),4,(unsigned int)rule.v.ipv4.mask).toString(); + break; + case ZT_NETWORK_RULE_MATCH_IPV4_DEST: + r["type"] = "MATCH_IPV4_DEST"; + r["ip"] = InetAddress(&(rule.v.ipv4.ip),4,(unsigned int)rule.v.ipv4.mask).toString(); + break; + case ZT_NETWORK_RULE_MATCH_IPV6_SOURCE: + r["type"] = "MATCH_IPV6_SOURCE"; + r["ip"] = InetAddress(rule.v.ipv6.ip,16,(unsigned int)rule.v.ipv6.mask).toString(); + break; + case ZT_NETWORK_RULE_MATCH_IPV6_DEST: + r["type"] = "MATCH_IPV6_DEST"; + r["ip"] = InetAddress(rule.v.ipv6.ip,16,(unsigned int)rule.v.ipv6.mask).toString(); + break; + case ZT_NETWORK_RULE_MATCH_IP_TOS: + r["type"] = "MATCH_IP_TOS"; + r["mask"] = (unsigned int)rule.v.ipTos.mask; + r["start"] = (unsigned int)rule.v.ipTos.value[0]; + r["end"] = (unsigned int)rule.v.ipTos.value[1]; + break; + case ZT_NETWORK_RULE_MATCH_IP_PROTOCOL: + r["type"] = "MATCH_IP_PROTOCOL"; + r["ipProtocol"] = (unsigned int)rule.v.ipProtocol; + break; + case ZT_NETWORK_RULE_MATCH_ETHERTYPE: + r["type"] = "MATCH_ETHERTYPE"; + r["etherType"] = (unsigned int)rule.v.etherType; + break; + case ZT_NETWORK_RULE_MATCH_ICMP: + r["type"] = "MATCH_ICMP"; + r["icmpType"] = (unsigned int)rule.v.icmp.type; + if ((rule.v.icmp.flags & 0x01) != 0) + r["icmpCode"] = (unsigned int)rule.v.icmp.code; + else r["icmpCode"] = json(); + break; + case ZT_NETWORK_RULE_MATCH_IP_SOURCE_PORT_RANGE: + r["type"] = "MATCH_IP_SOURCE_PORT_RANGE"; + r["start"] = (unsigned int)rule.v.port[0]; + r["end"] = (unsigned int)rule.v.port[1]; + break; + case ZT_NETWORK_RULE_MATCH_IP_DEST_PORT_RANGE: + r["type"] = "MATCH_IP_DEST_PORT_RANGE"; + r["start"] = (unsigned int)rule.v.port[0]; + r["end"] = (unsigned int)rule.v.port[1]; + break; + case ZT_NETWORK_RULE_MATCH_CHARACTERISTICS: + r["type"] = "MATCH_CHARACTERISTICS"; + Utils::snprintf(tmp,sizeof(tmp),"%.16llx",rule.v.characteristics); + r["mask"] = tmp; + break; + case ZT_NETWORK_RULE_MATCH_FRAME_SIZE_RANGE: + r["type"] = "MATCH_FRAME_SIZE_RANGE"; + r["start"] = (unsigned int)rule.v.frameSize[0]; + r["end"] = (unsigned int)rule.v.frameSize[1]; + break; + case ZT_NETWORK_RULE_MATCH_RANDOM: + r["type"] = "MATCH_RANDOM"; + r["probability"] = (unsigned long)rule.v.randomProbability; + break; + case ZT_NETWORK_RULE_MATCH_TAGS_DIFFERENCE: + r["type"] = "MATCH_TAGS_DIFFERENCE"; + r["id"] = rule.v.tag.id; + r["value"] = rule.v.tag.value; + break; + case ZT_NETWORK_RULE_MATCH_TAGS_BITWISE_AND: + r["type"] = "MATCH_TAGS_BITWISE_AND"; + r["id"] = rule.v.tag.id; + r["value"] = rule.v.tag.value; + break; + case ZT_NETWORK_RULE_MATCH_TAGS_BITWISE_OR: + r["type"] = "MATCH_TAGS_BITWISE_OR"; + r["id"] = rule.v.tag.id; + r["value"] = rule.v.tag.value; + break; + case ZT_NETWORK_RULE_MATCH_TAGS_BITWISE_XOR: + r["type"] = "MATCH_TAGS_BITWISE_XOR"; + r["id"] = rule.v.tag.id; + r["value"] = rule.v.tag.value; + break; + case ZT_NETWORK_RULE_MATCH_TAGS_EQUAL: + r["type"] = "MATCH_TAGS_EQUAL"; + r["id"] = rule.v.tag.id; + r["value"] = rule.v.tag.value; + break; + case ZT_NETWORK_RULE_MATCH_TAG_SENDER: + r["type"] = "MATCH_TAG_SENDER"; + r["id"] = rule.v.tag.id; + r["value"] = rule.v.tag.value; + break; + case ZT_NETWORK_RULE_MATCH_TAG_RECEIVER: + r["type"] = "MATCH_TAG_RECEIVER"; + r["id"] = rule.v.tag.id; + r["value"] = rule.v.tag.value; + break; + default: + break; + } + + if (r.size() > 0) { + r["not"] = ((rule.t & 0x80) != 0); + r["or"] = ((rule.t & 0x40) != 0); + } + } + + return r; +} + +static bool _parseRule(json &r,ZT_VirtualNetworkRule &rule) +{ + if (!r.is_object()) + return false; + + const std::string t(OSUtils::jsonString(r["type"],"")); + memset(&rule,0,sizeof(ZT_VirtualNetworkRule)); + + if (OSUtils::jsonBool(r["not"],false)) + rule.t = 0x80; + else rule.t = 0x00; + if (OSUtils::jsonBool(r["or"],false)) + rule.t |= 0x40; + + bool tag = false; + if (t == "ACTION_DROP") { + rule.t |= ZT_NETWORK_RULE_ACTION_DROP; + return true; + } else if (t == "ACTION_ACCEPT") { + rule.t |= ZT_NETWORK_RULE_ACTION_ACCEPT; + return true; + } else if (t == "ACTION_TEE") { + rule.t |= ZT_NETWORK_RULE_ACTION_TEE; + rule.v.fwd.address = Utils::hexStrToU64(OSUtils::jsonString(r["address"],"0").c_str()) & 0xffffffffffULL; + rule.v.fwd.flags = (uint32_t)(OSUtils::jsonInt(r["flags"],0ULL) & 0xffffffffULL); + rule.v.fwd.length = (uint16_t)(OSUtils::jsonInt(r["length"],0ULL) & 0xffffULL); + return true; + } else if (t == "ACTION_WATCH") { + rule.t |= ZT_NETWORK_RULE_ACTION_WATCH; + rule.v.fwd.address = Utils::hexStrToU64(OSUtils::jsonString(r["address"],"0").c_str()) & 0xffffffffffULL; + rule.v.fwd.flags = (uint32_t)(OSUtils::jsonInt(r["flags"],0ULL) & 0xffffffffULL); + rule.v.fwd.length = (uint16_t)(OSUtils::jsonInt(r["length"],0ULL) & 0xffffULL); + return true; + } else if (t == "ACTION_REDIRECT") { + rule.t |= ZT_NETWORK_RULE_ACTION_REDIRECT; + rule.v.fwd.address = Utils::hexStrToU64(OSUtils::jsonString(r["address"],"0").c_str()) & 0xffffffffffULL; + rule.v.fwd.flags = (uint32_t)(OSUtils::jsonInt(r["flags"],0ULL) & 0xffffffffULL); + return true; + } else if (t == "ACTION_BREAK") { + rule.t |= ZT_NETWORK_RULE_ACTION_BREAK; + return true; + } else if (t == "MATCH_SOURCE_ZEROTIER_ADDRESS") { + rule.t |= ZT_NETWORK_RULE_MATCH_SOURCE_ZEROTIER_ADDRESS; + rule.v.zt = Utils::hexStrToU64(OSUtils::jsonString(r["zt"],"0").c_str()) & 0xffffffffffULL; + return true; + } else if (t == "MATCH_DEST_ZEROTIER_ADDRESS") { + rule.t |= ZT_NETWORK_RULE_MATCH_DEST_ZEROTIER_ADDRESS; + rule.v.zt = Utils::hexStrToU64(OSUtils::jsonString(r["zt"],"0").c_str()) & 0xffffffffffULL; + return true; + } else if (t == "MATCH_VLAN_ID") { + rule.t |= ZT_NETWORK_RULE_MATCH_VLAN_ID; + rule.v.vlanId = (uint16_t)(OSUtils::jsonInt(r["vlanId"],0ULL) & 0xffffULL); + return true; + } else if (t == "MATCH_VLAN_PCP") { + rule.t |= ZT_NETWORK_RULE_MATCH_VLAN_PCP; + rule.v.vlanPcp = (uint8_t)(OSUtils::jsonInt(r["vlanPcp"],0ULL) & 0xffULL); + return true; + } else if (t == "MATCH_VLAN_DEI") { + rule.t |= ZT_NETWORK_RULE_MATCH_VLAN_DEI; + rule.v.vlanDei = (uint8_t)(OSUtils::jsonInt(r["vlanDei"],0ULL) & 0xffULL); + return true; + } else if (t == "MATCH_MAC_SOURCE") { + rule.t |= ZT_NETWORK_RULE_MATCH_MAC_SOURCE; + const std::string mac(OSUtils::jsonString(r["mac"],"0")); + Utils::unhex(mac.c_str(),(unsigned int)mac.length(),rule.v.mac,6); + return true; + } else if (t == "MATCH_MAC_DEST") { + rule.t |= ZT_NETWORK_RULE_MATCH_MAC_DEST; + const std::string mac(OSUtils::jsonString(r["mac"],"0")); + Utils::unhex(mac.c_str(),(unsigned int)mac.length(),rule.v.mac,6); + return true; + } else if (t == "MATCH_IPV4_SOURCE") { + rule.t |= ZT_NETWORK_RULE_MATCH_IPV4_SOURCE; + InetAddress ip(OSUtils::jsonString(r["ip"],"0.0.0.0")); + rule.v.ipv4.ip = reinterpret_cast(&ip)->sin_addr.s_addr; + rule.v.ipv4.mask = Utils::ntoh(reinterpret_cast(&ip)->sin_port) & 0xff; + if (rule.v.ipv4.mask > 32) rule.v.ipv4.mask = 32; + return true; + } else if (t == "MATCH_IPV4_DEST") { + rule.t |= ZT_NETWORK_RULE_MATCH_IPV4_DEST; + InetAddress ip(OSUtils::jsonString(r["ip"],"0.0.0.0")); + rule.v.ipv4.ip = reinterpret_cast(&ip)->sin_addr.s_addr; + rule.v.ipv4.mask = Utils::ntoh(reinterpret_cast(&ip)->sin_port) & 0xff; + if (rule.v.ipv4.mask > 32) rule.v.ipv4.mask = 32; + return true; + } else if (t == "MATCH_IPV6_SOURCE") { + rule.t |= ZT_NETWORK_RULE_MATCH_IPV6_SOURCE; + InetAddress ip(OSUtils::jsonString(r["ip"],"::0")); + memcpy(rule.v.ipv6.ip,reinterpret_cast(&ip)->sin6_addr.s6_addr,16); + rule.v.ipv6.mask = Utils::ntoh(reinterpret_cast(&ip)->sin6_port) & 0xff; + if (rule.v.ipv6.mask > 128) rule.v.ipv6.mask = 128; + return true; + } else if (t == "MATCH_IPV6_DEST") { + rule.t |= ZT_NETWORK_RULE_MATCH_IPV6_DEST; + InetAddress ip(OSUtils::jsonString(r["ip"],"::0")); + memcpy(rule.v.ipv6.ip,reinterpret_cast(&ip)->sin6_addr.s6_addr,16); + rule.v.ipv6.mask = Utils::ntoh(reinterpret_cast(&ip)->sin6_port) & 0xff; + if (rule.v.ipv6.mask > 128) rule.v.ipv6.mask = 128; + return true; + } else if (t == "MATCH_IP_TOS") { + rule.t |= ZT_NETWORK_RULE_MATCH_IP_TOS; + rule.v.ipTos.mask = (uint8_t)(OSUtils::jsonInt(r["mask"],0ULL) & 0xffULL); + rule.v.ipTos.value[0] = (uint8_t)(OSUtils::jsonInt(r["start"],0ULL) & 0xffULL); + rule.v.ipTos.value[1] = (uint8_t)(OSUtils::jsonInt(r["end"],0ULL) & 0xffULL); + return true; + } else if (t == "MATCH_IP_PROTOCOL") { + rule.t |= ZT_NETWORK_RULE_MATCH_IP_PROTOCOL; + rule.v.ipProtocol = (uint8_t)(OSUtils::jsonInt(r["ipProtocol"],0ULL) & 0xffULL); + return true; + } else if (t == "MATCH_ETHERTYPE") { + rule.t |= ZT_NETWORK_RULE_MATCH_ETHERTYPE; + rule.v.etherType = (uint16_t)(OSUtils::jsonInt(r["etherType"],0ULL) & 0xffffULL); + return true; + } else if (t == "MATCH_ICMP") { + rule.t |= ZT_NETWORK_RULE_MATCH_ICMP; + rule.v.icmp.type = (uint8_t)(OSUtils::jsonInt(r["icmpType"],0ULL) & 0xffULL); + json &code = r["icmpCode"]; + if (code.is_null()) { + rule.v.icmp.code = 0; + rule.v.icmp.flags = 0x00; + } else { + rule.v.icmp.code = (uint8_t)(OSUtils::jsonInt(code,0ULL) & 0xffULL); + rule.v.icmp.flags = 0x01; + } + return true; + } else if (t == "MATCH_IP_SOURCE_PORT_RANGE") { + rule.t |= ZT_NETWORK_RULE_MATCH_IP_SOURCE_PORT_RANGE; + rule.v.port[0] = (uint16_t)(OSUtils::jsonInt(r["start"],0ULL) & 0xffffULL); + rule.v.port[1] = (uint16_t)(OSUtils::jsonInt(r["end"],(uint64_t)rule.v.port[0]) & 0xffffULL); + return true; + } else if (t == "MATCH_IP_DEST_PORT_RANGE") { + rule.t |= ZT_NETWORK_RULE_MATCH_IP_DEST_PORT_RANGE; + rule.v.port[0] = (uint16_t)(OSUtils::jsonInt(r["start"],0ULL) & 0xffffULL); + rule.v.port[1] = (uint16_t)(OSUtils::jsonInt(r["end"],(uint64_t)rule.v.port[0]) & 0xffffULL); + return true; + } else if (t == "MATCH_CHARACTERISTICS") { + rule.t |= ZT_NETWORK_RULE_MATCH_CHARACTERISTICS; + if (r.count("mask")) { + json &v = r["mask"]; + if (v.is_number()) { + rule.v.characteristics = v; + } else { + std::string tmp = v; + rule.v.characteristics = Utils::hexStrToU64(tmp.c_str()); + } + } + return true; + } else if (t == "MATCH_FRAME_SIZE_RANGE") { + rule.t |= ZT_NETWORK_RULE_MATCH_FRAME_SIZE_RANGE; + rule.v.frameSize[0] = (uint16_t)(OSUtils::jsonInt(r["start"],0ULL) & 0xffffULL); + rule.v.frameSize[1] = (uint16_t)(OSUtils::jsonInt(r["end"],(uint64_t)rule.v.frameSize[0]) & 0xffffULL); + return true; + } else if (t == "MATCH_RANDOM") { + rule.t |= ZT_NETWORK_RULE_MATCH_RANDOM; + rule.v.randomProbability = (uint32_t)(OSUtils::jsonInt(r["probability"],0ULL) & 0xffffffffULL); + return true; + } else if (t == "MATCH_TAGS_DIFFERENCE") { + rule.t |= ZT_NETWORK_RULE_MATCH_TAGS_DIFFERENCE; + tag = true; + } else if (t == "MATCH_TAGS_BITWISE_AND") { + rule.t |= ZT_NETWORK_RULE_MATCH_TAGS_BITWISE_AND; + tag = true; + } else if (t == "MATCH_TAGS_BITWISE_OR") { + rule.t |= ZT_NETWORK_RULE_MATCH_TAGS_BITWISE_OR; + tag = true; + } else if (t == "MATCH_TAGS_BITWISE_XOR") { + rule.t |= ZT_NETWORK_RULE_MATCH_TAGS_BITWISE_XOR; + tag = true; + } else if (t == "MATCH_TAGS_EQUAL") { + rule.t |= ZT_NETWORK_RULE_MATCH_TAGS_EQUAL; + tag = true; + } else if (t == "MATCH_TAG_SENDER") { + rule.t |= ZT_NETWORK_RULE_MATCH_TAG_SENDER; + tag = true; + } else if (t == "MATCH_TAG_RECEIVER") { + rule.t |= ZT_NETWORK_RULE_MATCH_TAG_RECEIVER; + tag = true; + } + if (tag) { + rule.v.tag.id = (uint32_t)(OSUtils::jsonInt(r["id"],0ULL) & 0xffffffffULL); + rule.v.tag.value = (uint32_t)(OSUtils::jsonInt(r["value"],0ULL) & 0xffffffffULL); + return true; + } + + return false; +} + +EmbeddedNetworkController::EmbeddedNetworkController(Node *node,const char *dbPath) : + _startTime(OSUtils::now()), + _threadsStarted(false), + _db(dbPath), + _node(node) +{ +} + +EmbeddedNetworkController::~EmbeddedNetworkController() +{ + Mutex::Lock _l(_threads_m); + if (_threadsStarted) { + for(int i=0;i<(ZT_EMBEDDEDNETWORKCONTROLLER_BACKGROUND_THREAD_COUNT*2);++i) + _queue.post((_RQEntry *)0); + for(int i=0;i_sender = sender; + this->_signingId = signingId; +} + +void EmbeddedNetworkController::request( + uint64_t nwid, + const InetAddress &fromAddr, + uint64_t requestPacketId, + const Identity &identity, + const Dictionary &metaData) +{ + if (((!_signingId)||(!_signingId.hasPrivate()))||(_signingId.address().toInt() != (nwid >> 24))||(!_sender)) + return; + + { + Mutex::Lock _l(_threads_m); + if (!_threadsStarted) { + for(int i=0;inwid = nwid; + qe->requestPacketId = requestPacketId; + qe->fromAddr = fromAddr; + qe->identity = identity; + qe->metaData = metaData; + _queue.post(qe); +} + +unsigned int EmbeddedNetworkController::handleControlPlaneHttpGET( + const std::vector &path, + const std::map &urlArgs, + const std::map &headers, + const std::string &body, + std::string &responseBody, + std::string &responseContentType) +{ + if ((path.size() > 0)&&(path[0] == "network")) { + + if ((path.size() >= 2)&&(path[1].length() == 16)) { + const uint64_t nwid = Utils::hexStrToU64(path[1].c_str()); + char nwids[24]; + Utils::snprintf(nwids,sizeof(nwids),"%.16llx",(unsigned long long)nwid); + + json network; + { + Mutex::Lock _l(_db_m); + network = _db.get("network",nwids); + } + if (!network.size()) + return 404; + + if (path.size() >= 3) { + + if (path[2] == "member") { + + if (path.size() >= 4) { + const uint64_t address = Utils::hexStrToU64(path[3].c_str()); + + json member; + { + Mutex::Lock _l(_db_m); + member = _db.get("network",nwids,"member",Address(address).toString()); + } + if (!member.size()) + return 404; + + _addMemberNonPersistedFields(member,OSUtils::now()); + responseBody = OSUtils::jsonDump(member); + responseContentType = "application/json"; + + return 200; + } else { + + Mutex::Lock _l(_db_m); + + responseBody = "{"; + _db.filter((std::string("network/") + nwids + "/member/"),[&responseBody](const std::string &n,const json &member) { + if ((member.is_object())&&(member.size() > 0)) { + responseBody.append((responseBody.length() == 1) ? "\"" : ",\""); + responseBody.append(OSUtils::jsonString(member["id"],"0")); + responseBody.append("\":"); + responseBody.append(OSUtils::jsonString(member["revision"],"0")); + } + return true; // never delete + }); + responseBody.push_back('}'); + responseContentType = "application/json"; + + return 200; + } + + } // else 404 + + } else { + + const uint64_t now = OSUtils::now(); + _NetworkMemberInfo nmi; + _getNetworkMemberInfo(now,nwid,nmi); + _addNetworkNonPersistedFields(network,now,nmi); + responseBody = OSUtils::jsonDump(network); + responseContentType = "application/json"; + return 200; + + } + } else if (path.size() == 1) { + + std::set networkIds; + { + Mutex::Lock _l(_db_m); + _db.filter("network/",[&networkIds](const std::string &n,const json &obj) { + if (n.length() == (16 + 8)) + networkIds.insert(n.substr(8)); + return true; // do not delete + }); + } + + responseBody.push_back('['); + for(std::set::iterator i(networkIds.begin());i!=networkIds.end();++i) { + responseBody.append((responseBody.length() == 1) ? "\"" : ",\""); + responseBody.append(*i); + responseBody.append("\""); + } + responseBody.push_back(']'); + responseContentType = "application/json"; + return 200; + + } // else 404 + + } else { + + char tmp[4096]; + Utils::snprintf(tmp,sizeof(tmp),"{\n\t\"controller\": true,\n\t\"apiVersion\": %d,\n\t\"clock\": %llu\n}\n",ZT_NETCONF_CONTROLLER_API_VERSION,(unsigned long long)OSUtils::now()); + responseBody = tmp; + responseContentType = "application/json"; + return 200; + + } + + return 404; +} + +unsigned int EmbeddedNetworkController::handleControlPlaneHttpPOST( + const std::vector &path, + const std::map &urlArgs, + const std::map &headers, + const std::string &body, + std::string &responseBody, + std::string &responseContentType) +{ + if (path.empty()) + return 404; + + json b; + try { + b = OSUtils::jsonParse(body); + if (!b.is_object()) { + responseBody = "{ \"message\": \"body is not a JSON object\" }"; + responseContentType = "application/json"; + return 400; + } + } catch ( ... ) { + responseBody = "{ \"message\": \"body JSON is invalid\" }"; + responseContentType = "application/json"; + return 400; + } + const uint64_t now = OSUtils::now(); + + if (path[0] == "network") { + + if ((path.size() >= 2)&&(path[1].length() == 16)) { + uint64_t nwid = Utils::hexStrToU64(path[1].c_str()); + char nwids[24]; + Utils::snprintf(nwids,sizeof(nwids),"%.16llx",(unsigned long long)nwid); + + if (path.size() >= 3) { + + if ((path.size() == 4)&&(path[2] == "member")&&(path[3].length() == 10)) { + uint64_t address = Utils::hexStrToU64(path[3].c_str()); + char addrs[24]; + Utils::snprintf(addrs,sizeof(addrs),"%.10llx",(unsigned long long)address); + + json member; + { + Mutex::Lock _l(_db_m); + member = _db.get("network",nwids,"member",Address(address).toString()); + } + json origMember(member); // for detecting changes + _initMember(member); + + try { + if (b.count("activeBridge")) member["activeBridge"] = OSUtils::jsonBool(b["activeBridge"],false); + if (b.count("noAutoAssignIps")) member["noAutoAssignIps"] = OSUtils::jsonBool(b["noAutoAssignIps"],false); + + if (b.count("authorized")) { + const bool newAuth = OSUtils::jsonBool(b["authorized"],false); + if (newAuth != OSUtils::jsonBool(member["authorized"],false)) { + member["authorized"] = newAuth; + member[((newAuth) ? "lastAuthorizedTime" : "lastDeauthorizedTime")] = now; + + json ah; + ah["a"] = newAuth; + ah["by"] = "api"; + ah["ts"] = now; + ah["ct"] = json(); + ah["c"] = json(); + member["authHistory"].push_back(ah); + + // Member is being de-authorized, so spray Revocation objects to all online members + if (!newAuth) { + _clearNetworkMemberInfoCache(nwid); + Revocation rev((uint32_t)_node->prng(),nwid,0,now,ZT_REVOCATION_FLAG_FAST_PROPAGATE,Address(address),Revocation::CREDENTIAL_TYPE_COM); + rev.sign(_signingId); + Mutex::Lock _l(_lastRequestTime_m); + for(std::map< std::pair,uint64_t >::iterator i(_lastRequestTime.begin());i!=_lastRequestTime.end();++i) { + if ((now - i->second) < ZT_NETWORK_AUTOCONF_DELAY) + _node->ncSendRevocation(Address(i->first.first),rev); + } + } + } + } + + if (b.count("ipAssignments")) { + json &ipa = b["ipAssignments"]; + if (ipa.is_array()) { + json mipa(json::array()); + for(unsigned long i=0;i mtags; + for(unsigned long i=0;i::iterator t(mtags.begin());t!=mtags.end();++t) { + json ta = json::array(); + ta.push_back(t->first); + ta.push_back(t->second); + mtagsa.push_back(ta); + } + member["tags"] = mtagsa; + } + } + + if (b.count("capabilities")) { + json &capabilities = b["capabilities"]; + if (capabilities.is_array()) { + json mcaps = json::array(); + for(unsigned long i=0;itestId),sizeof(test->testId)); + test->credentialNetworkId = nwid; + test->ptr = (void *)this; + json hops = b["hops"]; + if (hops.is_array()) { + for(unsigned long i=0;ihops[test->hopCount].addresses[test->hops[test->hopCount].breadth++] = Utils::hexStrToU64(s.c_str()) & 0xffffffffffULL; + } + ++test->hopCount; + } else if (hops2.is_string()) { + std::string s = hops2; + test->hops[test->hopCount].addresses[test->hops[test->hopCount].breadth++] = Utils::hexStrToU64(s.c_str()) & 0xffffffffffULL; + ++test->hopCount; + } + } + } + test->reportAtEveryHop = (OSUtils::jsonBool(b["reportAtEveryHop"],true) ? 1 : 0); + + if (!test->hopCount) { + _tests.pop_back(); + responseBody = "{ \"message\": \"a test must contain at least one hop\" }"; + responseContentType = "application/json"; + return 400; + } + + test->timestamp = OSUtils::now(); + + if (_node) { + _node->circuitTestBegin((void *)0,test,&(EmbeddedNetworkController::_circuitTestCallback)); + } else { + _tests.pop_back(); + return 500; + } + + char json[512]; + Utils::snprintf(json,sizeof(json),"{\"testId\":\"%.16llx\",\"timestamp\":%llu}",test->testId,test->timestamp); + responseBody = json; + responseContentType = "application/json"; + + return 200; + + } // else 404 + + } else { + // POST to network ID + + json network; + { + Mutex::Lock _l(_db_m); + + // Magic ID ending with ______ picks a random unused network ID + if (path[1].substr(10) == "______") { + nwid = 0; + uint64_t nwidPrefix = (Utils::hexStrToU64(path[1].substr(0,10).c_str()) << 24) & 0xffffffffff000000ULL; + uint64_t nwidPostfix = 0; + for(unsigned long k=0;k<100000;++k) { // sanity limit on trials + Utils::getSecureRandom(&nwidPostfix,sizeof(nwidPostfix)); + uint64_t tryNwid = nwidPrefix | (nwidPostfix & 0xffffffULL); + if ((tryNwid & 0xffffffULL) == 0ULL) tryNwid |= 1ULL; + Utils::snprintf(nwids,sizeof(nwids),"%.16llx",(unsigned long long)tryNwid); + if (_db.get("network",nwids).size() <= 0) { + nwid = tryNwid; + break; + } + } + if (!nwid) + return 503; + } + + network = _db.get("network",nwids); + } + json origNetwork(network); // for detecting changes + _initNetwork(network); + + try { + if (b.count("name")) network["name"] = OSUtils::jsonString(b["name"],""); + if (b.count("private")) network["private"] = OSUtils::jsonBool(b["private"],true); + if (b.count("enableBroadcast")) network["enableBroadcast"] = OSUtils::jsonBool(b["enableBroadcast"],false); + if (b.count("allowPassiveBridging")) network["allowPassiveBridging"] = OSUtils::jsonBool(b["allowPassiveBridging"],false); + if (b.count("multicastLimit")) network["multicastLimit"] = OSUtils::jsonInt(b["multicastLimit"],32ULL); + + if (b.count("v4AssignMode")) { + json nv4m; + json &v4m = b["v4AssignMode"]; + if (v4m.is_string()) { // backward compatibility + nv4m["zt"] = (OSUtils::jsonString(v4m,"") == "zt"); + } else if (v4m.is_object()) { + nv4m["zt"] = OSUtils::jsonBool(v4m["zt"],false); + } else nv4m["zt"] = false; + network["v4AssignMode"] = nv4m; + } + + if (b.count("v6AssignMode")) { + json nv6m; + json &v6m = b["v6AssignMode"]; + if (!nv6m.is_object()) nv6m = json::object(); + if (v6m.is_string()) { // backward compatibility + std::vector v6ms(OSUtils::split(OSUtils::jsonString(v6m,"").c_str(),",","","")); + std::sort(v6ms.begin(),v6ms.end()); + v6ms.erase(std::unique(v6ms.begin(),v6ms.end()),v6ms.end()); + nv6m["rfc4193"] = false; + nv6m["zt"] = false; + nv6m["6plane"] = false; + for(std::vector::iterator i(v6ms.begin());i!=v6ms.end();++i) { + if (*i == "rfc4193") + nv6m["rfc4193"] = true; + else if (*i == "zt") + nv6m["zt"] = true; + else if (*i == "6plane") + nv6m["6plane"] = true; + } + } else if (v6m.is_object()) { + if (v6m.count("rfc4193")) nv6m["rfc4193"] = OSUtils::jsonBool(v6m["rfc4193"],false); + if (v6m.count("zt")) nv6m["zt"] = OSUtils::jsonBool(v6m["zt"],false); + if (v6m.count("6plane")) nv6m["6plane"] = OSUtils::jsonBool(v6m["6plane"],false); + } else { + nv6m["rfc4193"] = false; + nv6m["zt"] = false; + nv6m["6plane"] = false; + } + network["v6AssignMode"] = nv6m; + } + + if (b.count("routes")) { + json &rts = b["routes"]; + if (rts.is_array()) { + json nrts = json::array(); + for(unsigned long i=0;i()); + InetAddress v; + if (via.is_string()) v.fromString(via.get()); + if ( ((t.ss_family == AF_INET)||(t.ss_family == AF_INET6)) && (t.netmaskBitsValid()) ) { + json tmp; + tmp["target"] = t.toString(); + if (v.ss_family == t.ss_family) + tmp["via"] = v.toIpString(); + else tmp["via"] = json(); + nrts.push_back(tmp); + } + } + } + } + network["routes"] = nrts; + } + } + + if (b.count("ipAssignmentPools")) { + json &ipp = b["ipAssignmentPools"]; + if (ipp.is_array()) { + json nipp = json::array(); + for(unsigned long i=0;i 0) { + json t = json::object(); + t["token"] = tstr; + t["expires"] = OSUtils::jsonInt(token["expires"],0ULL); + t["maxUsesPerMember"] = OSUtils::jsonInt(token["maxUsesPerMember"],0ULL); + nat.push_back(t); + } + } + } + network["authTokens"] = nat; + } + } + + if (b.count("capabilities")) { + json &capabilities = b["capabilities"]; + if (capabilities.is_array()) { + std::map< uint64_t,json > ncaps; + for(unsigned long i=0;i::iterator c(ncaps.begin());c!=ncaps.end();++c) + ncapsa.push_back(c->second); + network["capabilities"] = ncapsa; + } + } + + if (b.count("tags")) { + json &tags = b["tags"]; + if (tags.is_array()) { + std::map< uint64_t,json > ntags; + for(unsigned long i=0;i::iterator t(ntags.begin());t!=ntags.end();++t) + ntagsa.push_back(t->second); + network["tags"] = ntagsa; + } + } + + } catch ( ... ) { + responseBody = "{ \"message\": \"exception occurred while parsing body variables\" }"; + responseContentType = "application/json"; + return 400; + } + + network["id"] = nwids; + network["nwid"] = nwids; // legacy + + if (network != origNetwork) { + json &revj = network["revision"]; + network["revision"] = (revj.is_number() ? ((uint64_t)revj + 1ULL) : 1ULL); + network["lastModified"] = now; + { + Mutex::Lock _l(_db_m); + _db.put("network",nwids,network); + } + + // Send an update to all members of the network + _db.filter((std::string("network/") + nwids + "/member/"),[this,&now,&nwid](const std::string &n,const json &obj) { + _pushMemberUpdate(now,nwid,obj); + return true; // do not delete + }); + } + + _NetworkMemberInfo nmi; + _getNetworkMemberInfo(now,nwid,nmi); + _addNetworkNonPersistedFields(network,now,nmi); + + responseBody = OSUtils::jsonDump(network); + responseContentType = "application/json"; + return 200; + } // else 404 + + } // else 404 + + } else if (path[0] == "ping") { + + json testRec; + const uint64_t now = OSUtils::now(); + testRec["clock"] = now; + testRec["uptime"] = (now - _startTime); + testRec["content"] = b; + responseBody = OSUtils::jsonDump(testRec); + _db.writeRaw("pong",responseBody); + responseContentType = "application/json"; + return 200; + + } + + return 404; +} + +unsigned int EmbeddedNetworkController::handleControlPlaneHttpDELETE( + const std::vector &path, + const std::map &urlArgs, + const std::map &headers, + const std::string &body, + std::string &responseBody, + std::string &responseContentType) +{ + if (path.empty()) + return 404; + + if (path[0] == "network") { + if ((path.size() >= 2)&&(path[1].length() == 16)) { + const uint64_t nwid = Utils::hexStrToU64(path[1].c_str()); + + char nwids[24]; + Utils::snprintf(nwids,sizeof(nwids),"%.16llx",nwid); + json network; + { + Mutex::Lock _l(_db_m); + network = _db.get("network",nwids); + } + if (!network.size()) + return 404; + + if (path.size() >= 3) { + if ((path.size() == 4)&&(path[2] == "member")&&(path[3].length() == 10)) { + const uint64_t address = Utils::hexStrToU64(path[3].c_str()); + + Mutex::Lock _l(_db_m); + + json member = _db.get("network",nwids,"member",Address(address).toString()); + _db.erase("network",nwids,"member",Address(address).toString()); + + if (!member.size()) + return 404; + responseBody = OSUtils::jsonDump(member); + responseContentType = "application/json"; + return 200; + } + } else { + Mutex::Lock _l(_db_m); + + std::string pfx("network/"); + pfx.append(nwids); + _db.filter(pfx,[](const std::string &n,const json &obj) { + return false; // delete + }); + + Mutex::Lock _l2(_nmiCache_m); + _nmiCache.erase(nwid); + + responseBody = OSUtils::jsonDump(network); + responseContentType = "application/json"; + return 200; + } + } // else 404 + + } // else 404 + + return 404; +} + +void EmbeddedNetworkController::threadMain() + throw() +{ + uint64_t lastCircuitTestCheck = 0; + for(;;) { + _RQEntry *const qe = _queue.get(); // waits on next request + if (!qe) break; // enqueue a NULL to terminate threads + try { + _request(qe->nwid,qe->fromAddr,qe->requestPacketId,qe->identity,qe->metaData); + } catch ( ... ) {} + delete qe; + + uint64_t now = OSUtils::now(); + if ((now - lastCircuitTestCheck) > ZT_EMBEDDEDNETWORKCONTROLLER_CIRCUIT_TEST_EXPIRATION) { + lastCircuitTestCheck = now; + Mutex::Lock _l(_tests_m); + for(std::list< ZT_CircuitTest >::iterator i(_tests.begin());i!=_tests.end();) { + if ((now - i->timestamp) > ZT_EMBEDDEDNETWORKCONTROLLER_CIRCUIT_TEST_EXPIRATION) { + _node->circuitTestEnd(&(*i)); + _tests.erase(i++); + } else ++i; + } + } + } +} + +void EmbeddedNetworkController::_circuitTestCallback(ZT_Node *node,ZT_CircuitTest *test,const ZT_CircuitTestReport *report) +{ + char tmp[1024],id[128]; + EmbeddedNetworkController *const self = reinterpret_cast(test->ptr); + + if ((!test)||(!report)||(!test->credentialNetworkId)) return; // sanity check + + const uint64_t now = OSUtils::now(); + Utils::snprintf(id,sizeof(id),"network/%.16llx/test/%.16llx-%.16llx-%.10llx-%.10llx",test->credentialNetworkId,test->testId,now,report->upstream,report->current); + Utils::snprintf(tmp,sizeof(tmp), + "{\"id\": \"%s\"," + "\"timestamp\": %llu," + "\"networkId\": \"%.16llx\"," + "\"testId\": \"%.16llx\"," + "\"upstream\": \"%.10llx\"," + "\"current\": \"%.10llx\"," + "\"receivedTimestamp\": %llu," + "\"sourcePacketId\": \"%.16llx\"," + "\"flags\": %llu," + "\"sourcePacketHopCount\": %u," + "\"errorCode\": %u," + "\"vendor\": %d," + "\"protocolVersion\": %u," + "\"majorVersion\": %u," + "\"minorVersion\": %u," + "\"revision\": %u," + "\"platform\": %d," + "\"architecture\": %d," + "\"receivedOnLocalAddress\": \"%s\"," + "\"receivedFromRemoteAddress\": \"%s\"," + "\"receivedFromLinkQuality\": %f}", + id + 30, // last bit only, not leading path + (unsigned long long)test->timestamp, + (unsigned long long)test->credentialNetworkId, + (unsigned long long)test->testId, + (unsigned long long)report->upstream, + (unsigned long long)report->current, + (unsigned long long)now, + (unsigned long long)report->sourcePacketId, + (unsigned long long)report->flags, + report->sourcePacketHopCount, + report->errorCode, + (int)report->vendor, + report->protocolVersion, + report->majorVersion, + report->minorVersion, + report->revision, + (int)report->platform, + (int)report->architecture, + reinterpret_cast(&(report->receivedOnLocalAddress))->toString().c_str(), + reinterpret_cast(&(report->receivedFromRemoteAddress))->toString().c_str(), + ((double)report->receivedFromLinkQuality / (double)ZT_PATH_LINK_QUALITY_MAX)); + + Mutex::Lock _l(self->_db_m); + self->_db.writeRaw(id,std::string(tmp)); +} + +void EmbeddedNetworkController::_request( + uint64_t nwid, + const InetAddress &fromAddr, + uint64_t requestPacketId, + const Identity &identity, + const Dictionary &metaData) +{ + if (((!_signingId)||(!_signingId.hasPrivate()))||(_signingId.address().toInt() != (nwid >> 24))||(!_sender)) + return; + + const uint64_t now = OSUtils::now(); + + if (requestPacketId) { + Mutex::Lock _l(_lastRequestTime_m); + uint64_t &lrt = _lastRequestTime[std::pair(identity.address().toInt(),nwid)]; + if ((now - lrt) <= ZT_NETCONF_MIN_REQUEST_PERIOD) + return; + lrt = now; + } + + char nwids[24]; + Utils::snprintf(nwids,sizeof(nwids),"%.16llx",nwid); + json network; + json member; + { + Mutex::Lock _l(_db_m); + network = _db.get("network",nwids); + member = _db.get("network",nwids,"member",identity.address().toString()); + } + + if (!network.size()) { + _sender->ncSendError(nwid,requestPacketId,identity.address(),NetworkController::NC_ERROR_OBJECT_NOT_FOUND); + return; + } + + const bool newMember = (member.size() == 0); + + json origMember(member); // for detecting modification later + _initMember(member); + + { + std::string haveIdStr(OSUtils::jsonString(member["identity"],"")); + if (haveIdStr.length() > 0) { + // If we already know this member's identity perform a full compare. This prevents + // a "collision" from being able to auth onto our network in place of an already + // known member. + try { + if (Identity(haveIdStr.c_str()) != identity) { + _sender->ncSendError(nwid,requestPacketId,identity.address(),NetworkController::NC_ERROR_ACCESS_DENIED); + return; + } + } catch ( ... ) { + _sender->ncSendError(nwid,requestPacketId,identity.address(),NetworkController::NC_ERROR_ACCESS_DENIED); + return; + } + } else { + // If we do not yet know this member's identity, learn it. + member["identity"] = identity.toString(false); + } + } + + // These are always the same, but make sure they are set + member["id"] = identity.address().toString(); + member["address"] = member["id"]; + member["nwid"] = nwids; + + // Determine whether and how member is authorized + const char *authorizedBy = (const char *)0; + bool autoAuthorized = false; + json autoAuthCredentialType,autoAuthCredential; + if (OSUtils::jsonBool(member["authorized"],false)) { + authorizedBy = "memberIsAuthorized"; + } else if (!OSUtils::jsonBool(network["private"],true)) { + authorizedBy = "networkIsPublic"; + json &ahist = member["authHistory"]; + if ((!ahist.is_array())||(ahist.size() == 0)) + autoAuthorized = true; + } else { + char presentedAuth[512]; + if (metaData.get(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_AUTH,presentedAuth,sizeof(presentedAuth)) > 0) { + presentedAuth[511] = (char)0; // sanity check + + // Check for bearer token presented by member + if ((strlen(presentedAuth) > 6)&&(!strncmp(presentedAuth,"token:",6))) { + const char *const presentedToken = presentedAuth + 6; + + json &authTokens = network["authTokens"]; + if (authTokens.is_array()) { + for(unsigned long i=0;i now))&&(tstr == presentedToken)) { + bool usable = (maxUses == 0); + if (!usable) { + uint64_t useCount = 0; + json &ahist = member["authHistory"]; + if (ahist.is_array()) { + for(unsigned long j=0;j= ZT_NETCONF_DB_MEMBER_HISTORY_LENGTH) + break; + } + } + member["recentLog"] = recentLog; + + // Also only do this on real requests + member["lastRequestMetaData"] = metaData.data(); + } + + // If they are not authorized, STOP! + if (!authorizedBy) { + if (origMember != member) { + member["lastModified"] = now; + Mutex::Lock _l(_db_m); + _db.put("network",nwids,"member",identity.address().toString(),member); + } + _sender->ncSendError(nwid,requestPacketId,identity.address(),NetworkController::NC_ERROR_ACCESS_DENIED); + return; + } + + // ------------------------------------------------------------------------- + // If we made it this far, they are authorized. + // ------------------------------------------------------------------------- + + NetworkConfig nc; + _NetworkMemberInfo nmi; + _getNetworkMemberInfo(now,nwid,nmi); + + uint64_t credentialtmd = ZT_NETWORKCONFIG_DEFAULT_CREDENTIAL_TIME_MAX_MAX_DELTA; + if (now > nmi.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 - nmi.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; + } + } + + nc.networkId = nwid; + nc.type = OSUtils::jsonBool(network["private"],true) ? ZT_NETWORK_TYPE_PRIVATE : ZT_NETWORK_TYPE_PUBLIC; + nc.timestamp = now; + nc.credentialTimeMaxDelta = credentialtmd; + nc.revision = OSUtils::jsonInt(network["revision"],0ULL); + nc.issuedTo = identity.address(); + if (OSUtils::jsonBool(network["enableBroadcast"],true)) nc.flags |= ZT_NETWORKCONFIG_FLAG_ENABLE_BROADCAST; + if (OSUtils::jsonBool(network["allowPassiveBridging"],false)) nc.flags |= ZT_NETWORKCONFIG_FLAG_ALLOW_PASSIVE_BRIDGING; + Utils::scopy(nc.name,sizeof(nc.name),OSUtils::jsonString(network["name"],"").c_str()); + nc.multicastLimit = (unsigned int)OSUtils::jsonInt(network["multicastLimit"],32ULL); + + for(std::set
::const_iterator ab(nmi.activeBridges.begin());ab!=nmi.activeBridges.end();++ab) { + nc.addSpecialist(*ab,ZT_NETWORKCONFIG_SPECIALIST_TYPE_ACTIVE_BRIDGE); + } + + json &v4AssignMode = network["v4AssignMode"]; + json &v6AssignMode = network["v6AssignMode"]; + json &ipAssignmentPools = network["ipAssignmentPools"]; + json &routes = network["routes"]; + json &rules = network["rules"]; + json &capabilities = network["capabilities"]; + json &tags = network["tags"]; + json &memberCapabilities = member["capabilities"]; + json &memberTags = member["tags"]; + + if (metaData.getUI(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_RULES_ENGINE_REV,0) <= 0) { + // Old versions with no rules engine support get an allow everything rule. + // Since rules are enforced bidirectionally, newer versions *will* still + // enforce rules on the inbound side. + nc.ruleCount = 1; + nc.rules[0].t = ZT_NETWORK_RULE_ACTION_ACCEPT; + } else { + if (rules.is_array()) { + for(unsigned long i=0;i= ZT_MAX_NETWORK_RULES) + break; + if (_parseRule(rules[i],nc.rules[nc.ruleCount])) + ++nc.ruleCount; + } + } + + std::map< uint64_t,json * > capsById; + if (!memberCapabilities.is_array()) + memberCapabilities = json::array(); + if (capabilities.is_array()) { + for(unsigned long i=0;i::const_iterator ctmp = capsById.find(capId); + if (ctmp != capsById.end()) { + json *cap = ctmp->second; + if ((cap)&&(cap->is_object())&&(cap->size() > 0)) { + ZT_VirtualNetworkRule capr[ZT_MAX_CAPABILITY_RULES]; + unsigned int caprc = 0; + json &caprj = (*cap)["rules"]; + if ((caprj.is_array())&&(caprj.size() > 0)) { + for(unsigned long j=0;j= ZT_MAX_CAPABILITY_RULES) + break; + if (_parseRule(caprj[j],capr[caprc])) + ++caprc; + } + } + nc.capabilities[nc.capabilityCount] = Capability((uint32_t)capId,nwid,now,1,capr,caprc); + if (nc.capabilities[nc.capabilityCount].sign(_signingId,identity.address())) + ++nc.capabilityCount; + if (nc.capabilityCount >= ZT_MAX_NETWORK_CAPABILITIES) + break; + } + } + } + + std::map< uint32_t,uint32_t > memberTagsById; + if (memberTags.is_array()) { + for(unsigned long i=0;i::const_iterator t(memberTagsById.begin());t!=memberTagsById.end();++t) { + if (nc.tagCount >= ZT_MAX_NETWORK_TAGS) + break; + nc.tags[nc.tagCount] = Tag(nwid,now,identity.address(),t->first,t->second); + if (nc.tags[nc.tagCount].sign(_signingId)) + ++nc.tagCount; + } + } + + if (routes.is_array()) { + for(unsigned long i=0;i= ZT_MAX_NETWORK_ROUTES) + break; + json &route = routes[i]; + json &target = route["target"]; + json &via = route["via"]; + if (target.is_string()) { + const InetAddress t(target.get()); + InetAddress v; + if (via.is_string()) v.fromString(via.get()); + if ((t.ss_family == AF_INET)||(t.ss_family == AF_INET6)) { + ZT_VirtualNetworkRoute *r = &(nc.routes[nc.routeCount]); + *(reinterpret_cast(&(r->target))) = t; + if (v.ss_family == t.ss_family) + *(reinterpret_cast(&(r->via))) = v; + ++nc.routeCount; + } + } + } + } + + const bool noAutoAssignIps = OSUtils::jsonBool(member["noAutoAssignIps"],false); + + if ((v6AssignMode.is_object())&&(!noAutoAssignIps)) { + if ((OSUtils::jsonBool(v6AssignMode["rfc4193"],false))&&(nc.staticIpCount < ZT_MAX_ZT_ASSIGNED_ADDRESSES)) { + nc.staticIps[nc.staticIpCount++] = InetAddress::makeIpv6rfc4193(nwid,identity.address().toInt()); + nc.flags |= ZT_NETWORKCONFIG_FLAG_ENABLE_IPV6_NDP_EMULATION; + } + if ((OSUtils::jsonBool(v6AssignMode["6plane"],false))&&(nc.staticIpCount < ZT_MAX_ZT_ASSIGNED_ADDRESSES)) { + nc.staticIps[nc.staticIpCount++] = InetAddress::makeIpv66plane(nwid,identity.address().toInt()); + nc.flags |= ZT_NETWORKCONFIG_FLAG_ENABLE_IPV6_NDP_EMULATION; + } + } + + bool haveManagedIpv4AutoAssignment = false; + bool haveManagedIpv6AutoAssignment = false; // "special" NDP-emulated address types do not count + json ipAssignments = member["ipAssignments"]; // we want to make a copy + if (ipAssignments.is_array()) { + for(unsigned long i=0;i(&(nc.routes[rk].target))->containsAddress(ip)) ) + routedNetmaskBits = reinterpret_cast(&(nc.routes[rk].target))->netmaskBits(); + } + + if (routedNetmaskBits > 0) { + if (nc.staticIpCount < ZT_MAX_ZT_ASSIGNED_ADDRESSES) { + ip.setPort(routedNetmaskBits); + nc.staticIps[nc.staticIpCount++] = ip; + } + if (ip.ss_family == AF_INET) + haveManagedIpv4AutoAssignment = true; + else if (ip.ss_family == AF_INET6) + haveManagedIpv6AutoAssignment = true; + } + } + } else { + ipAssignments = json::array(); + } + + if ( (ipAssignmentPools.is_array()) && ((v6AssignMode.is_object())&&(OSUtils::jsonBool(v6AssignMode["zt"],false))) && (!haveManagedIpv6AutoAssignment) && (!noAutoAssignIps) ) { + for(unsigned long p=0;((p s[1])&&((e[1] - s[1]) >= 0xffffffffffULL)) { + // First see if we can just cram a ZeroTier ID into the higher 64 bits. If so do that. + xx[0] = Utils::hton(x[0]); + xx[1] = Utils::hton(x[1] + identity.address().toInt()); + } else { + // Otherwise pick random addresses -- this technically doesn't explore the whole range if the lower 64 bit range is >= 1 but that won't matter since that would be huge anyway + Utils::getSecureRandom((void *)xx,16); + if ((e[0] > s[0])) + xx[0] %= (e[0] - s[0]); + else xx[0] = 0; + if ((e[1] > s[1])) + xx[1] %= (e[1] - s[1]); + else xx[1] = 0; + xx[0] = Utils::hton(x[0] + xx[0]); + xx[1] = Utils::hton(x[1] + xx[1]); + } + + InetAddress ip6((const void *)xx,16,0); + + // Check if this IP is within a local-to-Ethernet routed network + int routedNetmaskBits = 0; + for(unsigned int rk=0;rk(&(nc.routes[rk].target))->containsAddress(ip6)) ) + routedNetmaskBits = reinterpret_cast(&(nc.routes[rk].target))->netmaskBits(); + } + + // If it's routed, then try to claim and assign it and if successful end loop + if ((routedNetmaskBits > 0)&&(!nmi.allocatedIps.count(ip6))) { + ipAssignments.push_back(ip6.toIpString()); + member["ipAssignments"] = ipAssignments; + ip6.setPort((unsigned int)routedNetmaskBits); + if (nc.staticIpCount < ZT_MAX_ZT_ASSIGNED_ADDRESSES) + nc.staticIps[nc.staticIpCount++] = ip6; + haveManagedIpv6AutoAssignment = true; + _clearNetworkMemberInfoCache(nwid); // clear cache to prevent IP assignment duplication on many rapid assigns + break; + } + } + } + } + } + } + + if ( (ipAssignmentPools.is_array()) && ((v4AssignMode.is_object())&&(OSUtils::jsonBool(v4AssignMode["zt"],false))) && (!haveManagedIpv4AutoAssignment) && (!noAutoAssignIps) ) { + for(unsigned long p=0;((p(&ipRangeStartIA)->sin_addr.s_addr)); + uint32_t ipRangeEnd = Utils::ntoh((uint32_t)(reinterpret_cast(&ipRangeEndIA)->sin_addr.s_addr)); + if ((ipRangeEnd < ipRangeStart)||(ipRangeStart == 0)) + continue; + uint32_t ipRangeLen = ipRangeEnd - ipRangeStart; + + // Start with the LSB of the member's address + uint32_t ipTrialCounter = (uint32_t)(identity.address().toInt() & 0xffffffff); + + for(uint32_t k=ipRangeStart,trialCount=0;((k<=ipRangeEnd)&&(trialCount < 1000));++k,++trialCount) { + uint32_t ip = (ipRangeLen > 0) ? (ipRangeStart + (ipTrialCounter % ipRangeLen)) : ipRangeStart; + ++ipTrialCounter; + if ((ip & 0x000000ff) == 0x000000ff) + continue; // don't allow addresses that end in .255 + + // Check if this IP is within a local-to-Ethernet routed network + int routedNetmaskBits = -1; + for(unsigned int rk=0;rk(&(nc.routes[rk].target))->sin_addr.s_addr)); + int targetBits = Utils::ntoh((uint16_t)(reinterpret_cast(&(nc.routes[rk].target))->sin_port)); + if ((ip & (0xffffffff << (32 - targetBits))) == targetIp) { + routedNetmaskBits = targetBits; + break; + } + } + } + + // If it's routed, then try to claim and assign it and if successful end loop + const InetAddress ip4(Utils::hton(ip),0); + if ((routedNetmaskBits > 0)&&(!nmi.allocatedIps.count(ip4))) { + ipAssignments.push_back(ip4.toIpString()); + member["ipAssignments"] = ipAssignments; + if (nc.staticIpCount < ZT_MAX_ZT_ASSIGNED_ADDRESSES) { + struct sockaddr_in *const v4ip = reinterpret_cast(&(nc.staticIps[nc.staticIpCount++])); + v4ip->sin_family = AF_INET; + v4ip->sin_port = Utils::hton((uint16_t)routedNetmaskBits); + v4ip->sin_addr.s_addr = Utils::hton(ip); + } + haveManagedIpv4AutoAssignment = true; + _clearNetworkMemberInfoCache(nwid); // clear cache to prevent IP assignment duplication on many rapid assigns + break; + } + } + } + } + } + } + + // Issue a certificate of ownership for all static IPs + if (nc.staticIpCount) { + nc.certificatesOfOwnership[0] = CertificateOfOwnership(nwid,now,identity.address(),1); + for(unsigned int i=0;incSendError(nwid,requestPacketId,identity.address(),NetworkController::NC_ERROR_INTERNAL_SERVER_ERROR); + return; + } + + if (member != origMember) { + member["lastModified"] = now; + Mutex::Lock _l(_db_m); + _db.put("network",nwids,"member",identity.address().toString(),member); + } + + _sender->ncSendConfig(nwid,requestPacketId,identity.address(),nc,metaData.getUI(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_VERSION,0) < 6); +} + +void EmbeddedNetworkController::_getNetworkMemberInfo(uint64_t now,uint64_t nwid,_NetworkMemberInfo &nmi) +{ + char pfx[256]; + Utils::snprintf(pfx,sizeof(pfx),"network/%.16llx/member",nwid); + + { + Mutex::Lock _l(_nmiCache_m); + std::map::iterator c(_nmiCache.find(nwid)); + if ((c != _nmiCache.end())&&((now - c->second.nmiTimestamp) < 1000)) { // a short duration cache but limits CPU use on big networks + nmi = c->second; + return; + } + } + + { + Mutex::Lock _l(_db_m); + _db.filter(pfx,[&nmi,&now](const std::string &n,const json &member) { + try { + if (OSUtils::jsonBool(member["authorized"],false)) { + ++nmi.authorizedMemberCount; + + if (member.count("recentLog")) { + const json &mlog = member["recentLog"]; + if ((mlog.is_array())&&(mlog.size() > 0)) { + const json &mlog1 = mlog[0]; + if (mlog1.is_object()) { + if ((now - OSUtils::jsonInt(mlog1["ts"],0ULL)) < ZT_NETCONF_NODE_ACTIVE_THRESHOLD) + ++nmi.activeMemberCount; + } + } + } + + if (OSUtils::jsonBool(member["activeBridge"],false)) { + nmi.activeBridges.insert(Address(Utils::hexStrToU64(OSUtils::jsonString(member["id"],"0000000000").c_str()))); + } + + if (member.count("ipAssignments")) { + const json &mips = member["ipAssignments"]; + if (mips.is_array()) { + for(unsigned long i=0;i 0)&&(mdstr.length() > 0)) { + const Identity id(idstr); + bool online; + { + Mutex::Lock _l(_lastRequestTime_m); + std::map< std::pair,uint64_t >::iterator lrt(_lastRequestTime.find(std::pair(id.address().toInt(),nwid))); + online = ( (lrt != _lastRequestTime.end()) && ((now - lrt->second) < ZT_NETWORK_AUTOCONF_DELAY) ); + } + if (online) { + Dictionary *metaData = new Dictionary(mdstr.c_str()); + try { + this->request(nwid,InetAddress(),0,id,*metaData); + } catch ( ... ) {} + delete metaData; + } + } + } catch ( ... ) {} +} + +} // namespace ZeroTier diff --git a/controller/EmbeddedNetworkController.hpp b/controller/EmbeddedNetworkController.hpp new file mode 100644 index 0000000..0ae2f3b --- /dev/null +++ b/controller/EmbeddedNetworkController.hpp @@ -0,0 +1,210 @@ +/* + * ZeroTier One - Network Virtualization Everywhere + * Copyright (C) 2011-2015 ZeroTier, Inc. + * + * 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 . + */ + +#ifndef ZT_SQLITENETWORKCONTROLLER_HPP +#define ZT_SQLITENETWORKCONTROLLER_HPP + +#include + +#include +#include +#include +#include +#include + +#include "../node/Constants.hpp" + +#include "../node/NetworkController.hpp" +#include "../node/Mutex.hpp" +#include "../node/Utils.hpp" +#include "../node/Address.hpp" +#include "../node/InetAddress.hpp" + +#include "../osdep/OSUtils.hpp" +#include "../osdep/Thread.hpp" +#include "../osdep/BlockingQueue.hpp" + +#include "../ext/json/json.hpp" + +#include "JSONDB.hpp" + +// Number of background threads to start -- not actually started until needed +#define ZT_EMBEDDEDNETWORKCONTROLLER_BACKGROUND_THREAD_COUNT 4 + +// TTL for circuit tests +#define ZT_EMBEDDEDNETWORKCONTROLLER_CIRCUIT_TEST_EXPIRATION 120000 + +namespace ZeroTier { + +class Node; + +class EmbeddedNetworkController : public NetworkController +{ +public: + /** + * @param node Parent node + * @param dbPath Path to store data + */ + EmbeddedNetworkController(Node *node,const char *dbPath); + virtual ~EmbeddedNetworkController(); + + virtual void init(const Identity &signingId,Sender *sender); + + virtual void request( + uint64_t nwid, + const InetAddress &fromAddr, + uint64_t requestPacketId, + const Identity &identity, + const Dictionary &metaData); + + unsigned int handleControlPlaneHttpGET( + const std::vector &path, + const std::map &urlArgs, + const std::map &headers, + const std::string &body, + std::string &responseBody, + std::string &responseContentType); + unsigned int handleControlPlaneHttpPOST( + const std::vector &path, + const std::map &urlArgs, + const std::map &headers, + const std::string &body, + std::string &responseBody, + std::string &responseContentType); + unsigned int handleControlPlaneHttpDELETE( + const std::vector &path, + const std::map &urlArgs, + const std::map &headers, + const std::string &body, + std::string &responseBody, + std::string &responseContentType); + + void threadMain() + throw(); + +private: + struct _RQEntry + { + uint64_t nwid; + uint64_t requestPacketId; + InetAddress fromAddr; + Identity identity; + Dictionary metaData; + }; + + // Gathers a bunch of statistics about members of a network, IP assignments, etc. that we need in various places + struct _NetworkMemberInfo + { + _NetworkMemberInfo() : authorizedMemberCount(0),activeMemberCount(0),totalMemberCount(0),mostRecentDeauthTime(0) {} + std::set
activeBridges; + std::set allocatedIps; + unsigned long authorizedMemberCount; + unsigned long activeMemberCount; + unsigned long totalMemberCount; + uint64_t mostRecentDeauthTime; + uint64_t nmiTimestamp; // time this NMI structure was computed + }; + + static void _circuitTestCallback(ZT_Node *node,ZT_CircuitTest *test,const ZT_CircuitTestReport *report); + void _request(uint64_t nwid,const InetAddress &fromAddr,uint64_t requestPacketId,const Identity &identity,const Dictionary &metaData); + void _getNetworkMemberInfo(uint64_t now,uint64_t nwid,_NetworkMemberInfo &nmi); + inline void _clearNetworkMemberInfoCache(const uint64_t nwid) { Mutex::Lock _l(_nmiCache_m); _nmiCache.erase(nwid); } + void _pushMemberUpdate(uint64_t now,uint64_t nwid,const nlohmann::json &member); + + // These init objects with default and static/informational fields + inline void _initMember(nlohmann::json &member) + { + if (!member.count("authorized")) member["authorized"] = false; + if (!member.count("authHistory")) member["authHistory"] = nlohmann::json::array(); + if (!member.count("ipAssignments")) member["ipAssignments"] = nlohmann::json::array(); + if (!member.count("recentLog")) member["recentLog"] = nlohmann::json::array(); + if (!member.count("activeBridge")) member["activeBridge"] = false; + if (!member.count("tags")) member["tags"] = nlohmann::json::array(); + if (!member.count("capabilities")) member["capabilities"] = nlohmann::json::array(); + if (!member.count("creationTime")) member["creationTime"] = OSUtils::now(); + if (!member.count("noAutoAssignIps")) member["noAutoAssignIps"] = false; + if (!member.count("revision")) member["revision"] = 0ULL; + if (!member.count("lastDeauthorizedTime")) member["lastDeauthorizedTime"] = 0ULL; + if (!member.count("lastAuthorizedTime")) member["lastAuthorizedTime"] = 0ULL; + member["objtype"] = "member"; + } + inline void _initNetwork(nlohmann::json &network) + { + if (!network.count("private")) network["private"] = true; + if (!network.count("creationTime")) network["creationTime"] = OSUtils::now(); + if (!network.count("name")) network["name"] = ""; + if (!network.count("multicastLimit")) network["multicastLimit"] = (uint64_t)32; + if (!network.count("enableBroadcast")) network["enableBroadcast"] = true; + if (!network.count("v4AssignMode")) network["v4AssignMode"] = {{"zt",false}}; + if (!network.count("v6AssignMode")) network["v6AssignMode"] = {{"rfc4193",false},{"zt",false},{"6plane",false}}; + if (!network.count("authTokens")) network["authTokens"] = nlohmann::json::array(); + if (!network.count("capabilities")) network["capabilities"] = nlohmann::json::array(); + if (!network.count("tags")) network["tags"] = nlohmann::json::array(); + if (!network.count("routes")) network["routes"] = nlohmann::json::array(); + if (!network.count("ipAssignmentPools")) network["ipAssignmentPools"] = nlohmann::json::array(); + if (!network.count("rules")) { + // If unspecified, rules are set to allow anything and behave like a flat L2 segment + network["rules"] = {{ + { "not",false }, + { "or", false }, + { "type","ACTION_ACCEPT" } + }}; + } + network["objtype"] = "network"; + } + inline void _addNetworkNonPersistedFields(nlohmann::json &network,uint64_t now,const _NetworkMemberInfo &nmi) + { + network["clock"] = now; + network["authorizedMemberCount"] = nmi.authorizedMemberCount; + network["activeMemberCount"] = nmi.activeMemberCount; + network["totalMemberCount"] = nmi.totalMemberCount; + } + inline void _addMemberNonPersistedFields(nlohmann::json &member,uint64_t now) + { + member["clock"] = now; + } + + const uint64_t _startTime; + + BlockingQueue<_RQEntry *> _queue; + Thread _threads[ZT_EMBEDDEDNETWORKCONTROLLER_BACKGROUND_THREAD_COUNT]; + bool _threadsStarted; + Mutex _threads_m; + + std::map _nmiCache; + Mutex _nmiCache_m; + + JSONDB _db; + Mutex _db_m; + + Node *const _node; + std::string _path; + + NetworkController::Sender *_sender; + Identity _signingId; + + std::list< ZT_CircuitTest > _tests; + Mutex _tests_m; + + std::map< std::pair,uint64_t > _lastRequestTime; // last request time by + Mutex _lastRequestTime_m; +}; + +} // namespace ZeroTier + +#endif diff --git a/controller/JSONDB.cpp b/controller/JSONDB.cpp new file mode 100644 index 0000000..d3e76fc --- /dev/null +++ b/controller/JSONDB.cpp @@ -0,0 +1,219 @@ +/* + * ZeroTier One - Network Virtualization Everywhere + * Copyright (C) 2011-2015 ZeroTier, Inc. + * + * 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 . + */ + +#include "JSONDB.hpp" + +#define ZT_JSONDB_HTTP_TIMEOUT 60000 + +namespace ZeroTier { + +static const nlohmann::json _EMPTY_JSON(nlohmann::json::object()); +static const std::map _ZT_JSONDB_GET_HEADERS; + +JSONDB::JSONDB(const std::string &basePath) : + _basePath(basePath), + _ready(false) +{ + if ((_basePath.length() > 7)&&(_basePath.substr(0,7) == "http://")) { + // TODO: this doesn't yet support IPv6 since bracketed address notiation isn't supported. + // Typically it's used with 127.0.0.1 anyway. + std::string hn = _basePath.substr(7); + std::size_t hnend = hn.find_first_of('/'); + if (hnend != std::string::npos) + hn = hn.substr(0,hnend); + std::size_t hnsep = hn.find_last_of(':'); + if (hnsep != std::string::npos) + hn[hnsep] = '/'; + _httpAddr.fromString(hn); + if (hnend != std::string::npos) + _basePath = _basePath.substr(7 + hnend); + if (_basePath.length() == 0) + _basePath = "/"; + if (_basePath[0] != '/') + _basePath = std::string("/") + _basePath; + } else { + OSUtils::mkdir(_basePath.c_str()); + OSUtils::lockDownFile(_basePath.c_str(),true); // networks might contain auth tokens, etc., so restrict directory permissions + } + _ready = _reload(_basePath,std::string()); +} + +bool JSONDB::writeRaw(const std::string &n,const std::string &obj) +{ + if (!_isValidObjectName(n)) + return false; + if (_httpAddr) { + std::map headers; + std::string body; + std::map reqHeaders; + char tmp[64]; + Utils::snprintf(tmp,sizeof(tmp),"%lu",(unsigned long)obj.length()); + reqHeaders["Content-Length"] = tmp; + reqHeaders["Content-Type"] = "application/json"; + const unsigned int sc = Http::PUT(1048576,ZT_JSONDB_HTTP_TIMEOUT,reinterpret_cast(&_httpAddr),(_basePath+"/"+n).c_str(),reqHeaders,obj.data(),(unsigned long)obj.length(),headers,body); + return (sc == 200); + } else { + const std::string path(_genPath(n,true)); + if (!path.length()) + return false; + return OSUtils::writeFile(path.c_str(),obj); + } +} + +bool JSONDB::put(const std::string &n,const nlohmann::json &obj) +{ + const bool r = writeRaw(n,OSUtils::jsonDump(obj)); + _db[n].obj = obj; + return r; +} + +const nlohmann::json &JSONDB::get(const std::string &n) +{ + while (!_ready) { + Thread::sleep(250); + _ready = _reload(_basePath,std::string()); + } + + if (!_isValidObjectName(n)) + return _EMPTY_JSON; + std::map::iterator e(_db.find(n)); + if (e != _db.end()) + return e->second.obj; + + std::string buf; + if (_httpAddr) { + std::map headers; + const unsigned int sc = Http::GET(1048576,ZT_JSONDB_HTTP_TIMEOUT,reinterpret_cast(&_httpAddr),(_basePath+"/"+n).c_str(),_ZT_JSONDB_GET_HEADERS,headers,buf); + if (sc != 200) + return _EMPTY_JSON; + } else { + const std::string path(_genPath(n,false)); + if (!path.length()) + return _EMPTY_JSON; + if (!OSUtils::readFile(path.c_str(),buf)) + return _EMPTY_JSON; + } + + try { + _E &e2 = _db[n]; + e2.obj = OSUtils::jsonParse(buf); + return e2.obj; + } catch ( ... ) { + _db.erase(n); + return _EMPTY_JSON; + } +} + +void JSONDB::erase(const std::string &n) +{ + if (!_isValidObjectName(n)) + return; + + if (_httpAddr) { + std::string body; + std::map headers; + Http::DEL(1048576,ZT_JSONDB_HTTP_TIMEOUT,reinterpret_cast(&_httpAddr),(_basePath+"/"+n).c_str(),_ZT_JSONDB_GET_HEADERS,headers,body); + } else { + std::string path(_genPath(n,true)); + if (!path.length()) + return; + OSUtils::rm(path.c_str()); + } + + _db.erase(n); +} + +bool JSONDB::_reload(const std::string &p,const std::string &b) +{ + if (_httpAddr) { + std::string body; + std::map headers; + const unsigned int sc = Http::GET(2147483647,ZT_JSONDB_HTTP_TIMEOUT,reinterpret_cast(&_httpAddr),_basePath.c_str(),_ZT_JSONDB_GET_HEADERS,headers,body); + if (sc == 200) { + try { + nlohmann::json dbImg(OSUtils::jsonParse(body)); + std::string tmp; + if (dbImg.is_object()) { + for(nlohmann::json::iterator i(dbImg.begin());i!=dbImg.end();++i) { + if (i.value().is_object()) { + tmp = i.key(); + _db[tmp].obj = i.value(); + } + } + return true; + } + } catch ( ... ) {} // invalid JSON, so maybe incomplete request + } + return false; + } else { + std::vector dl(OSUtils::listDirectory(p.c_str(),true)); + for(std::vector::const_iterator di(dl.begin());di!=dl.end();++di) { + if ((di->length() > 5)&&(di->substr(di->length() - 5) == ".json")) { + this->get(b + di->substr(0,di->length() - 5)); + } else { + this->_reload((p + ZT_PATH_SEPARATOR + *di),(b + *di + ZT_PATH_SEPARATOR)); + } + } + return true; + } +} + +bool JSONDB::_isValidObjectName(const std::string &n) +{ + if (n.length() == 0) + return false; + const char *p = n.c_str(); + char c; + // For security reasons we should not allow dots, backslashes, or other path characters or potential path characters. + while ((c = *(p++))) { + if (!( ((c >= 'a')&&(c <= 'z')) || ((c >= 'A')&&(c <= 'Z')) || ((c >= '0')&&(c <= '9')) || (c == '/') || (c == '_') || (c == '~') || (c == '-') )) + return false; + } + return true; +} + +std::string JSONDB::_genPath(const std::string &n,bool create) +{ + std::vector pt(OSUtils::split(n.c_str(),"/","","")); + if (pt.size() == 0) + return std::string(); + + char sep; + if (_httpAddr) { + sep = '/'; + create = false; + } else { + sep = ZT_PATH_SEPARATOR; + } + + std::string p(_basePath); + if (create) OSUtils::mkdir(p.c_str()); + for(unsigned long i=0,j=(unsigned long)(pt.size()-1);i. + */ + +#ifndef ZT_JSONDB_HPP +#define ZT_JSONDB_HPP + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "../node/Constants.hpp" +#include "../node/Utils.hpp" +#include "../node/InetAddress.hpp" +#include "../node/Mutex.hpp" +#include "../ext/json/json.hpp" +#include "../osdep/OSUtils.hpp" +#include "../osdep/Http.hpp" +#include "../osdep/Thread.hpp" + +namespace ZeroTier { + +/** + * Hierarchical JSON store that persists into the filesystem or via HTTP + */ +class JSONDB +{ +public: + JSONDB(const std::string &basePath); + + bool writeRaw(const std::string &n,const std::string &obj); + + bool put(const std::string &n,const nlohmann::json &obj); + + inline bool put(const std::string &n1,const std::string &n2,const nlohmann::json &obj) { return this->put((n1 + "/" + n2),obj); } + inline bool put(const std::string &n1,const std::string &n2,const std::string &n3,const nlohmann::json &obj) { return this->put((n1 + "/" + n2 + "/" + n3),obj); } + inline bool put(const std::string &n1,const std::string &n2,const std::string &n3,const std::string &n4,const nlohmann::json &obj) { return this->put((n1 + "/" + n2 + "/" + n3 + "/" + n4),obj); } + inline bool put(const std::string &n1,const std::string &n2,const std::string &n3,const std::string &n4,const std::string &n5,const nlohmann::json &obj) { return this->put((n1 + "/" + n2 + "/" + n3 + "/" + n4 + "/" + n5),obj); } + + const nlohmann::json &get(const std::string &n); + + inline const nlohmann::json &get(const std::string &n1,const std::string &n2) { return this->get((n1 + "/" + n2)); } + inline const nlohmann::json &get(const std::string &n1,const std::string &n2,const std::string &n3) { return this->get((n1 + "/" + n2 + "/" + n3)); } + inline const nlohmann::json &get(const std::string &n1,const std::string &n2,const std::string &n3,const std::string &n4) { return this->get((n1 + "/" + n2 + "/" + n3 + "/" + n4)); } + inline const nlohmann::json &get(const std::string &n1,const std::string &n2,const std::string &n3,const std::string &n4,const std::string &n5) { return this->get((n1 + "/" + n2 + "/" + n3 + "/" + n4 + "/" + n5)); } + + void erase(const std::string &n); + + inline void erase(const std::string &n1,const std::string &n2) { this->erase(n1 + "/" + n2); } + inline void erase(const std::string &n1,const std::string &n2,const std::string &n3) { this->erase(n1 + "/" + n2 + "/" + n3); } + inline void erase(const std::string &n1,const std::string &n2,const std::string &n3,const std::string &n4) { this->erase(n1 + "/" + n2 + "/" + n3 + "/" + n4); } + inline void erase(const std::string &n1,const std::string &n2,const std::string &n3,const std::string &n4,const std::string &n5) { this->erase(n1 + "/" + n2 + "/" + n3 + "/" + n4 + "/" + n5); } + + template + inline void filter(const std::string &prefix,F func) + { + while (!_ready) { + Thread::sleep(250); + _ready = _reload(_basePath,std::string()); + } + + for(std::map::iterator i(_db.lower_bound(prefix));i!=_db.end();) { + if ((i->first.length() >= prefix.length())&&(!memcmp(i->first.data(),prefix.data(),prefix.length()))) { + if (!func(i->first,get(i->first))) { + std::map::iterator i2(i); ++i2; + this->erase(i->first); + i = i2; + } else ++i; + } else break; + } + } + + inline bool operator==(const JSONDB &db) const { return ((_basePath == db._basePath)&&(_db == db._db)); } + inline bool operator!=(const JSONDB &db) const { return (!(*this == db)); } + +private: + bool _reload(const std::string &p,const std::string &b); + bool _isValidObjectName(const std::string &n); + std::string _genPath(const std::string &n,bool create); + + struct _E + { + nlohmann::json obj; + inline bool operator==(const _E &e) const { return (obj == e.obj); } + inline bool operator!=(const _E &e) const { return (obj != e.obj); } + }; + + InetAddress _httpAddr; + std::string _basePath; + std::map _db; + volatile bool _ready; +}; + +} // namespace ZeroTier + +#endif diff --git a/controller/README.md b/controller/README.md index 8b789a3..db8d015 100644 --- a/controller/README.md +++ b/controller/README.md @@ -1,66 +1,43 @@ Network Controller Microservice ====== -ZeroTier's 16-digit network IDs are really just a concatenation of the 10-digit ZeroTier address of a network controller followed by a 6-digit (24-bit) network number on that controller. Fans of software defined networking will recognize this as a variation of the familiar [separation of data plane and control plane](http://sdntutorials.com/difference-between-control-plane-and-data-plane/) SDN design pattern. +Every ZeroTier virtual network has a *network controller*. This is our reference implementation and is the same one we use to power our own hosted services at [my.zerotier.com](https://my.zerotier.com/). Network controllers act as configuration servers and certificate authorities for the members of networks. Controllers are located on the network by simply parsing out the first 10 digits of a network's 16-digit network ID: these are the address of the controller. -This code implements the *node/NetworkController.hpp* interface and provides a SQLite3-backed network controller microservice. Including it in the build allows ZeroTier One to act as a controller and create/manage networks. +As of ZeroTier One version 1.2.0 this code is included in normal builds for desktop, laptop, and server (Linux, etc.) targets, allowing any device to create virtual networks without having to be rebuilt from source with special flags to enable this feature. While this does offer a convenient way to create ad-hoc networks or experiment, we recommend running a dedicated controller somewhere secure and stable for any "serious" use case. -This is the same code we use to run [my.zerotier.com](https://my.zerotier.com/), which is a web UI and API that runs in front of a pool of controllers. +Controller data is stored in JSON format under `controller.d` in the ZeroTier working directory. It can be copied, rsync'd, placed in `git`, etc. The files under `controller.d` should not be modified in place while the controller is running or data loss may result, and if they are edited directly take care not to save corrupt JSON since that can also lead to data loss when the controller is restarted. Going through the API is strongly preferred to directly modifying these files. -### Building +### Upgrading from Older (1.1.14 or earlier) Versions -On Linux, Mac, or BSD you can create a controller-enabled build with: +Older versions of this code used a SQLite database instead of in-filesystem JSON. A migration utility called `migrate-sqlite` is included here and *must* be used to migrate this data to the new format. If the controller is started with an old `controller.db` in its working directory it will terminate after printing an error to *stderr*. This is done to prevent "surprises" for those running DIY controllers using the old code. - make ZT_ENABLE_NETWORK_CONTROLLER=1 +The migration tool is written in nodeJS and can be used like this: -You will need the development headers and libraries for SQLite3 installed. + cd migrate-sqlite + npm install + node migrate.js -### Running +Very old versions of nodeJS may have issues. We tested it with version 7. -After building and installing (`make install`) a controller-enabled build of ZeroTier One, start it and try: +### Scalability and Reliability - sudo zerotier-cli /controller +Controllers can in theory host up to 2^24 networks and serve many millions of devices (or more), but we recommend spreading large numbers of networks across many controllers for load balancing and fault tolerance reasons. Since the controller uses the filesystem as its data store we recommend fast filesystems and fast SSD drives for heavily loaded controllers. -You should see something like: - - { - "controller": true, - "apiVersion": 2, - "clock": 1468002975497, - "instanceId": "8ab354604debe1da27ee627c9ef94a48" - } - -When started, a controller-enabled build of ZeroTier One will automatically create and initialize a `controller.db` file in its home folder. This is where all the controller's data and persistent state lives. If you're upgrading an old controller it will upgrade its database schema automatically on first launch. Make a backup of the old controller's database first since you can't go backward. - -Controllers periodically make backups of their database as `controller.db.backup`. This is done so that this file can be more easily copied/rsync'ed to other systems without worrying about corruption. SQLite3 supports multiple processes accessing the same database file, so `sqlite3 /path/to/controller.db .dump` also works but can be slow on a busy controller. - -Controllers can in theory host up to 2^24 networks and serve many millions of devices (or more), but we recommend running multiple controllers for a lot of networks to spread load and be more fault tolerant. +Since ZeroTier nodes are mobile and do not need static IPs, implementing high availability fail-over for controllers is easy. Just replicate their working directories from master to backup and have something automatically fire up the backup if the master goes down. Many modern orchestration tools have built-in support for this. It would also be possible in theory to run controllers on a replicated or distributed filesystem, but we haven't tested this yet. ### Dockerizing Controllers ZeroTier network controllers can easily be run in Docker or other container systems. Since containers do not need to actually join networks, extra privilege options like "--device=/dev/net/tun --privileged" are not needed. You'll just need to map the local JSON API port of the running controller and allow it to access the Internet (over UDP/9993 at a minimum) so things can reach and query it. -### Implementing High Availability Fail-Over - -ZeroTier network controllers are not single points of failure for networks-- in the sense that if a controller goes down *existing* members of a network can continue to communicate. But new members (or those that have been offline for a while) can't join, existing members can't be de-authorized, and other changes to the network's configuration can't be made. This means that short "glitches" in controller availability are not a major problem but long periods of unavailability can be. - -Because controllers are just regular ZeroTier nodes and controller queries are in-band, controllers can trivially be moved without worrying about changes to underlying physical IPs. This makes high-availability fail-over very easy to implement. - -Just set up two cloud hosts, preferably in different data centers (e.g. two different AWS regions or Digital Ocean SF and NYC). Now set up the hot spare controller to constantly mirror `controller.db.backup` from its active sibling. - -If the active controller goes down, rename `controller.db.backup` to `controller.db` on the hot spare and start the ZeroTier One service there. The spare will take over and has now become the active controller. If the original active node comes back, it should take on the role of spare and should not start its service. Instead it should start mirroring the active controller's backup and wait until it is needed. - -The details of actually implementing this kind of HA fail-over on Linux or other OSes are beyond the scope of these docs and there are many ways to do it. Docker orchestration tools like Kubernetes can also be used to accomplish this if you've dockerized your controller. - ### Network Controller API The controller API is hosted via the same JSON API endpoint that ZeroTier One uses for local control (usually at 127.0.0.1 port 9993). All controller options are routed under the `/controller` base path. The controller microservice does not implement any fine-grained access control (authentication is via authtoken.secret just like the regular JSON API) or other complex mangement features. It just takes network and network member configurations and reponds to controller queries. We have an enterprise product called [ZeroTier Central](https://my.zerotier.com/) that we host as a service (and that companies can license to self-host) that does this. -All working network IDs on a controller must begin with the controller's ZeroTier address. The API will *allow* "foreign" networks to be added but the controller will have no way of doing anything with them. +All working network IDs on a controller must begin with the controller's ZeroTier address. The API will *allow* "foreign" networks to be added but the controller will have no way of doing anything with them since nobody will know to query it. (In the future we might support secondaries, which would make this relevant.) -Also note that the API is *very* sensitive about types. Integers must be integers and strings strings, etc. Incorrectly typed and unrecognized fields are just ignored. +The JSON API is *very* sensitive about types. Integers must be integers and strings strings, etc. Incorrectly typed and unrecognized fields may result in ignored fields or a 400 (bad request) error. #### `/controller` @@ -71,11 +48,8 @@ Also note that the API is *very* sensitive about types. Integers must be integer | Field | Type | Description | Writable | | ------------------ | ----------- | ------------------------------------------------- | -------- | | controller | boolean | Always 'true' | no | -| apiVersion | integer | Controller API version, currently 2 | no | +| apiVersion | integer | Controller API version, currently 3 | no | | clock | integer | Current clock on controller, ms since epoch | no | -| instanceId | string | A random ID generated on first controller DB init | no | - -The instance ID can be used to check whether a controller's database has been reset or otherwise switched. #### `/controller/network` @@ -97,52 +71,50 @@ When POSTing new networks take care that their IDs are not in use, otherwise you | Field | Type | Description | Writable | | --------------------- | ------------- | ------------------------------------------------- | -------- | -| nwid | string | 16-digit network ID | no | -| controllerInstanceId | string | Controller database instance ID | no | +| id | string | 16-digit network ID | no | +| nwid | string | 16-digit network ID (old, but still around) | no | | clock | integer | Current clock, ms since epoch | no | | name | string | A short name for this network | YES | | private | boolean | Is access control enabled? | YES | | enableBroadcast | boolean | Ethernet ff:ff:ff:ff:ff:ff allowed? | YES | | allowPassiveBridging | boolean | Allow any member to bridge (very experimental) | YES | -| v4AssignMode | string | If 'zt', auto-assign IPv4 from pool(s) | YES | -| v6AssignMode | string | IPv6 address auto-assign modes; see below | YES | +| v4AssignMode | object | IPv4 management and assign options (see below) | YES | +| v6AssignMode | object | IPv6 management and assign options (see below) | YES | | multicastLimit | integer | Maximum recipients for a multicast packet | YES | | creationTime | integer | Time network was first created | no | | revision | integer | Network config revision counter | no | -| memberRevisionCounter | integer | Network member revision counter | no | | authorizedMemberCount | integer | Number of authorized members (for private nets) | no | -| relays | array[object] | Alternative relays; see below | YES | +| activeMemberCount | integer | Number of members that appear to be online | no | +| totalMemberCount | integer | Total known members of this network | no | | routes | array[object] | Managed IPv4 and IPv6 routes; see below | YES | | ipAssignmentPools | array[object] | IP auto-assign ranges; see below | YES | | rules | array[object] | Traffic rules; see below | YES | -(The `ipLocalRoutes` field appeared in older versions but is no longer present. Routes will now show up in `routes`.) +Recent changes: -Two important things to know about networks: + * The `ipLocalRoutes` field appeared in older versions but is no longer present. Routes will now show up in `routes`. + * The `relays` field is gone since network preferred relays are gone. This capability is replaced by VL1 level federation ("federated roots"). - - Networks without rules won't carry any traffic. See below for an example with rules to permit IPv4 and IPv6. - - Managed IP address assignments and IP assignment pools that do not fall within a route configured in `routes` are ignored and won't be used or sent to members. - - The default for `private` is `true` and this is probably what you want. Turning `private` off means *anyone* can join your network with only its 16-digit network ID. It's also impossible to de-authorize a member as these networks don't issue or enforce certificates. Such "party line" networks are used for decentralized app backplanes, gaming, and testing but are not common in ordinary use. +Other important points: -**IPv6 Auto-Assign Modes:** + * Networks without rules won't carry any traffic. If you don't specify any on network creation an "accept anything" rule set will automatically be added. + * Managed IP address assignments and IP assignment pools that do not fall within a route configured in `routes` are ignored and won't be used or sent to members. + * The default for `private` is `true` and this is probably what you want. Turning `private` off means *anyone* can join your network with only its 16-digit network ID. It's also impossible to de-authorize a member as these networks don't issue or enforce certificates. Such "party line" networks are used for decentralized app backplanes, gaming, and testing but are otherwise not common. -This field is (for legacy reasons) a comma-delimited list of strings. These can be `rfc4193`, `6plane`, and `zt`. RFC4193 and 6PLANE are special addressing modes that deterministically assign IPv6 addresses based on the network ID and the ZeroTier address of each member. The `zt` mode enables IPv6 auto-assignment from arbitrary IPv6 IP ranges configured in `ipAssignmentPools`. +**Auto-Assign Modes:** -**Relay object format:** +Auto assign modes (`v4AssignMode` and `v6AssignMode`) contain objects that map assignment modes to booleans. -Relay objects define network-specific preferred relay nodes. Traffic to peers on this network will preferentially use these relays if they are available, and otherwise will fall back to the global rootserver infrastructure. +For IPv4 the only valid setting is `zt` which, if true, causes IPv4 addresses to be auto-assigned from `ipAssignmentPools` to members that do not have an IPv4 assignment. Note that active bridges are exempt and will not get auto-assigned IPs since this can interfere with bridging. (You can still manually assign one if you want.) -| Field | Type | Description | Writable | -| --------------------- | ------------- | ------------------------------------------------- | -------- | -| address | string | 10-digit ZeroTier address of relay | YES | -| phyAddress | string | Optional IP/port suggestion for finding relay | YES | +IPv6 includes this option and two others: `6plane` and `rfc4193`. These assign private IPv6 addresses to each member based on a deterministic assignment scheme that allows members to emulate IPv6 NDP to skip multicast for better performance and scalability. The `rfc4193` mode gives every member a /128 on a /88 network, while `6plane` gives every member a /80 within a /40 network but uses NDP emulation to route *all* IPs under that /80 to its owner. The `6plane` mode is great for use cases like Docker since it allows every member to assign IPv6 addresses within its /80 that just work instantly and globally across the network. **IP assignment pool object format:** -| Field | Type | Description | Writable | -| --------------------- | ------------- | ------------------------------------------------- | -------- | -| ipRangeStart | string | Starting IP address in range | YES | -| ipRangeEnd | string | Ending IP address in range (inclusive) | YES | +| Field | Type | Description | +| --------------------- | ------------- | ------------------------------------------------- | +| ipRangeStart | string | Starting IP address in range | +| ipRangeEnd | string | Ending IP address in range (inclusive) | Pools are only used if auto-assignment is on for the given address type (IPv4 or IPv6) and if the entire range falls within a managed route. @@ -159,57 +131,68 @@ That defines a range within network `fd00:feed:feed:beef::/64` that contains up **Rule object format:** -Rules are matched in order of ruleNo. If no rules match, the default action is `drop`. To allow all traffic, create a single rule with all *null* fields and an action of `accept`. +Each rule is actually a sequence of zero or more `MATCH_` entries in the rule array followed by an `ACTION_` entry that describes what to do if all the preceding entries match. An `ACTION_` without any preceding `MATCH_` entries is always taken, so setting a single `ACTION_ACCEPT` rule yields a network that allows all traffic. If no rules are present the default action is `ACTION_DROP`. -In the future there will be many, many more types of rules. As of today only filtering by Ethernet packet type is supported. +Rules are evaluated in the order in which they appear in the array. There is currently a limit of 256 entries per network. Capabilities should be used if a larger and more complex rule set is needed since they allow rules to be grouped by purpose and only shipped to members that need them. -| Field | Type | Description | Writable | -| --------------------- | ------------- | ------------------------------------------------- | -------- | -| ruleNo | integer | Rule sorting key | YES | -| etherType | integer | Ethernet frame type (e.g. 34525 for IPv6) | YES | -| action | string | Currently either `allow` or `drop` | YES | +Each rule table entry has two common fields. -**An Example: The Configuration for Earth** +| Field | Type | Description | +| --------------------- | ------------- | ------------------------------------------------- | +| type | string | Entry type (all caps, case sensitive) | +| not | boolean | If true, MATCHes match if they don't match | -Here is an example of a correctly configured ZeroTier network with IPv4 auto-assigned addresses from 28.0.0.0/7 (a "de-facto private" space) and RFC4193 IPv6 addressing. Users might recognize this as *Earth*, our public "global LAN party" that's used for demos and testing and occasionally gaming. +The following fields may or may not be present depending on rule type: -For your own networks you'll probably want to change `private` to `true` unless you like company. These rules on the other hand probably are what you want. These allow IPv4, IPv4 ARP, and IPv6 Ethernet frames. To allow only IPv4 omit the one for Ethernet type 34525 (IPv6). +| Field | Type | Description | +| --------------------- | ------------- | ------------------------------------------------- | +| zt | string | 10-digit hex ZeroTier address | +| etherType | integer | Ethernet frame type | +| mac | string | Hex MAC address (with or without :'s) | +| ip | string | IPv4 or IPv6 address | +| ipTos | integer | IP type of service | +| ipProtocol | integer | IP protocol (e.g. TCP) | +| start | integer | Start of an integer range (e.g. port range) | +| end | integer | End of an integer range (inclusive) | +| id | integer | Tag ID | +| value | integer | Tag value or comparison value | +| mask | integer | Bit mask (for characteristics flags) | - { - "nwid": "8056c2e21c000001", - "controllerInstanceId": "8ab354604debe1da27ee627c9ef94a48", - "clock": 1468004857100, - "name": "earth.zerotier.net", - "private": false, - "enableBroadcast": false, - "allowPassiveBridging": false, - "v4AssignMode": "zt", - "v6AssignMode": "rfc4193", - "multicastLimit": 64, - "creationTime": 1442292573165, - "revision": 234, - "memberRevisionCounter": 3326, - "authorizedMemberCount": 2873, - "relays": [], - "routes": [ - {"target":"28.0.0.0/7","via":null,"flags":0,"metric":0}], - "ipAssignmentPools": [ - {"ipRangeStart":"28.0.0.1","ipRangeEnd":"29.255.255.254"}], - "rules": [ - { - "ruleNo": 20, - "etherType": 2048, - "action": "accept" - },{ - "ruleNo": 21, - "etherType": 2054, - "action": "accept" - },{ - "ruleNo": 30, - "etherType": 34525, - "action": "accept" - }] - } +The entry types and their additional fields are: + +| Entry type | Description | Fields | +| ------------------------------- | ----------------------------------------------------------------- | -------------- | +| `ACTION_DROP` | Drop any packets matching this rule | (none) | +| `ACTION_ACCEPT` | Accept any packets matching this rule | (none) | +| `ACTION_TEE` | Send a copy of this packet to a node (rule parsing continues) | `zt` | +| `ACTION_REDIRECT` | Redirect this packet to another node | `zt` | +| `ACTION_DEBUG_LOG` | Output debug info on match (if built with rules engine debug) | (none) | +| `MATCH_SOURCE_ZEROTIER_ADDRESS` | Match VL1 ZeroTier address of packet sender. | `zt` | +| `MATCH_DEST_ZEROTIER_ADDRESS` | Match VL1 ZeroTier address of recipient | `zt` | +| `MATCH_ETHERTYPE` | Match Ethernet frame type | `etherType` | +| `MATCH_MAC_SOURCE` | Match source Ethernet MAC address | `mac` | +| `MATCH_MAC_DEST` | Match destination Ethernet MAC address | `mac` | +| `MATCH_IPV4_SOURCE` | Match source IPv4 address | `ip` | +| `MATCH_IPV4_DEST` | Match destination IPv4 address | `ip` | +| `MATCH_IPV6_SOURCE` | Match source IPv6 address | `ip` | +| `MATCH_IPV6_DEST` | Match destination IPv6 address | `ip` | +| `MATCH_IP_TOS` | Match IP TOS field | `ipTos` | +| `MATCH_IP_PROTOCOL` | Match IP protocol field | `ipProtocol` | +| `MATCH_IP_SOURCE_PORT_RANGE` | Match a source IP port range | `start`,`end` | +| `MATCH_IP_DEST_PORT_RANGE` | Match a destination IP port range | `start`,`end` | +| `MATCH_CHARACTERISTICS` | Match on characteristics flags | `mask`,`value` | +| `MATCH_FRAME_SIZE_RANGE` | Match a range of Ethernet frame sizes | `start`,`end` | +| `MATCH_TAGS_SAMENESS` | Match if both sides' tags differ by no more than value | `id`,`value` | +| `MATCH_TAGS_BITWISE_AND` | Match if both sides' tags AND to value | `id`,`value` | +| `MATCH_TAGS_BITWISE_OR` | Match if both sides' tags OR to value | `id`,`value` | +| `MATCH_TAGS_BITWISE_XOR` | Match if both sides` tags XOR to value | `id`,`value` | + +Important notes about rules engine behavior: + + * IPv4 and IPv6 IP address rules do not match for frames that are not IPv4 or IPv6 respectively. + * `ACTION_DEBUG_LOG` is a no-op on nodes not built with `ZT_RULES_ENGINE_DEBUGGING` enabled (see Network.cpp). If that is enabled nodes will dump a trace of rule evaluation results to *stdout* when this action is encountered but will otherwise keep evaluating rules. This is used for basic "smoke testing" of the rules engine. + * Multicast packets and packets destined for bridged devices treated a little differently. They are matched more than once. They are matched at the point of send with a NULL ZeroTier destination address, meaning that `MATCH_DEST_ZEROTIER_ADDRESS` is useless. That's because the true VL1 destination is not yet known. Then they are matched again for each true VL1 destination. On these later subsequent matches TEE actions are ignored and REDIRECT rules are interpreted as DROPs. This prevents multiple TEE or REDIRECT packets from being sent to third party devices. + * Rules in capabilities are always matched as if the current device is the sender (inbound == false). A capability specifies sender side rules that can be enforced on both sides. #### `/controller/network//member` @@ -235,10 +218,12 @@ This returns an object containing all currently online members and the most rece | Field | Type | Description | Writable | | --------------------- | ------------- | ------------------------------------------------- | -------- | +| id | string | Member's 10-digit ZeroTier address | no | +| address | string | Member's 10-digit ZeroTier address | no | | nwid | string | 16-digit network ID | no | | clock | integer | Current clock, ms since epoch | no | -| address | string | Member's 10-digit ZeroTier address | no | | authorized | boolean | Is member authorized? (for private networks) | YES | +| authHistory | array[object] | History of auth changes, latest at end | no | | activeBridge | boolean | Member is able to bridge to other Ethernet nets | YES | | identity | string | Member's public ZeroTier identity (if known) | no | | ipAssignments | array[string] | Managed IP address assignments | YES | @@ -252,10 +237,12 @@ Note that managed IP assignments are only used if they fall within a managed rou | Field | Type | Description | | --------------------- | ------------- | ------------------------------------------------- | | ts | integer | Time of request, ms since epoch | -| authorized | boolean | Was member authorized? | -| clientMajorVersion | integer | Client major version or -1 if unknown | -| clientMinorVersion | integer | Client minor version or -1 if unknown | -| clientRevision | integer | Client revision or -1 if unknown | +| auth | boolean | Was member authorized? | +| authBy | string | How was member authorized? | +| vMajor | integer | Client major version or -1 if unknown | +| vMinor | integer | Client minor version or -1 if unknown | +| vRev | integer | Client revision or -1 if unknown | +| vProto | integer | ZeroTier protocol version reported by client | | fromAddr | string | Physical address if known | The controller can only know a member's `fromAddr` if it's able to establish a direct path to it. Members behind very restrictive firewalls may not have this information since the controller will be receiving the member's requests by way of a relay. ZeroTier does not back-trace IP paths as packets are relayed since this would add a lot of protocol overhead. diff --git a/controller/SqliteNetworkController.cpp b/controller/SqliteNetworkController.cpp deleted file mode 100644 index 6505174..0000000 --- a/controller/SqliteNetworkController.cpp +++ /dev/null @@ -1,2195 +0,0 @@ -/* - * ZeroTier One - Network Virtualization Everywhere - * Copyright (C) 2011-2015 ZeroTier, Inc. - * - * 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 . - * - * -- - * - * 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 -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "../include/ZeroTierOne.h" -#include "../node/Constants.hpp" - -#ifdef ZT_USE_SYSTEM_JSON_PARSER -#include -#else -#include "../ext/json-parser/json.h" -#endif - -#include "SqliteNetworkController.hpp" - -#include "../node/Node.hpp" -#include "../node/Utils.hpp" -#include "../node/CertificateOfMembership.hpp" -#include "../node/NetworkConfig.hpp" -#include "../node/Dictionary.hpp" -#include "../node/InetAddress.hpp" -#include "../node/MAC.hpp" -#include "../node/Address.hpp" - -#include "../osdep/OSUtils.hpp" - -// Include ZT_NETCONF_SCHEMA_SQL constant to init database -#include "schema.sql.c" - -// Stored in database as schemaVersion key in Config. -// If not present, database is assumed to be empty and at the current schema version -// and this key/value is added automatically. -#define ZT_NETCONF_SQLITE_SCHEMA_VERSION 4 -#define ZT_NETCONF_SQLITE_SCHEMA_VERSION_STR "4" - -// API version reported via JSON control plane -#define ZT_NETCONF_CONTROLLER_API_VERSION 2 - -// Number of requests to remember in member history -#define ZT_NETCONF_DB_MEMBER_HISTORY_LENGTH 8 - -// Min duration between requests for an address/nwid combo to prevent floods -#define ZT_NETCONF_MIN_REQUEST_PERIOD 1000 - -// Delay between backups in milliseconds -#define ZT_NETCONF_BACKUP_PERIOD 300000 - -// Nodes are considered active if they've queried in less than this long -#define ZT_NETCONF_NODE_ACTIVE_THRESHOLD ((ZT_NETWORK_AUTOCONF_DELAY * 2) + 5000) - -// Flags for Network 'flags' field in table -#define ZT_DB_NETWORK_FLAG_ZT_MANAGED_V4_AUTO_ASSIGN 1 -#define ZT_DB_NETWORK_FLAG_ZT_MANAGED_V6_RFC4193 2 -#define ZT_DB_NETWORK_FLAG_ZT_MANAGED_V6_6PLANE 4 -#define ZT_DB_NETWORK_FLAG_ZT_MANAGED_V6_AUTO_ASSIGN 8 - -// Flags with all V6 managed mode flags flipped off -- for masking in update operation and in string form for SQL building -#define ZT_DB_NETWORK_FLAG_ZT_MANAGED_V6_MASK_S "268435441" - -// Uncomment to trace Sqlite for debugging -//#define ZT_NETCONF_SQLITE_TRACE 1 - -namespace ZeroTier { - -namespace { - -static std::string _jsonEscape(const char *s) -{ - if (!s) - return std::string(); - std::string buf; - for(const char *p=s;(*p);++p) { - switch(*p) { - case '\t': buf.append("\\t"); break; - case '\b': buf.append("\\b"); break; - case '\r': buf.append("\\r"); break; - case '\n': buf.append("\\n"); break; - case '\f': buf.append("\\f"); break; - case '"': buf.append("\\\""); break; - case '\\': buf.append("\\\\"); break; - case '/': buf.append("\\/"); break; - default: buf.push_back(*p); break; - } - } - return buf; -} -static std::string _jsonEscape(const std::string &s) { return _jsonEscape(s.c_str()); } - -// Converts an InetAddress to a blob and an int for storage in database -static void _ipToBlob(const InetAddress &a,char *ipBlob,int &ipVersion) /* blob[16] */ -{ - switch(a.ss_family) { - case AF_INET: - memset(ipBlob,0,12); - memcpy(ipBlob + 12,a.rawIpData(),4); - ipVersion = 4; - break; - case AF_INET6: - memcpy(ipBlob,a.rawIpData(),16); - ipVersion = 6; - break; - } -} - -// Member.recentHistory is stored in a BLOB as an array of strings containing JSON objects. -// This is kind of hacky but efficient and quick to parse and send to the client. -class MemberRecentHistory : public std::list -{ -public: - inline std::string toBlob() const - { - std::string b; - for(const_iterator i(begin());i!=end();++i) { - b.append(*i); - b.push_back((char)0); - } - return b; - } - - inline void fromBlob(const char *blob,unsigned int len) - { - for(unsigned int i=0,k=0;i 0) FROM Network WHERE id = ?",-1,&_sGetNetworkById,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"SELECT revision FROM Network WHERE id = ?",-1,&_sGetNetworkRevision,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"UPDATE Network SET revision = ? WHERE id = ?",-1,&_sSetNetworkRevision,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"INSERT INTO Network (id,name,creationTime,revision) VALUES (?,?,?,1)",-1,&_sCreateNetwork,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"DELETE FROM Network WHERE id = ?",-1,&_sDeleteNetwork,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"SELECT id FROM Network ORDER BY id ASC",-1,&_sListNetworks,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"UPDATE Network SET memberRevisionCounter = (memberRevisionCounter + 1) WHERE id = ?",-1,&_sIncrementMemberRevisionCounter,(const char **)0) != SQLITE_OK) - - /* Node */ - ||(sqlite3_prepare_v2(_db,"SELECT identity FROM Node WHERE id = ?",-1,&_sGetNodeIdentity,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"INSERT OR REPLACE INTO Node (id,identity) VALUES (?,?)",-1,&_sCreateOrReplaceNode,(const char **)0) != SQLITE_OK) - - /* Rule */ - ||(sqlite3_prepare_v2(_db,"SELECT etherType FROM Rule WHERE networkId = ? AND \"action\" = 'accept'",-1,&_sGetEtherTypesFromRuleTable,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"INSERT INTO Rule (networkId,ruleNo,nodeId,sourcePort,destPort,vlanId,vlanPcP,etherType,macSource,macDest,ipSource,ipDest,ipTos,ipProtocol,ipSourcePort,ipDestPort,flags,invFlags,\"action\") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",-1,&_sCreateRule,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"SELECT ruleNo,nodeId,sourcePort,destPort,vlanId,vlanPcp,etherType,macSource,macDest,ipSource,ipDest,ipTos,ipProtocol,ipSourcePort,ipDestPort,\"flags\",invFlags,\"action\" FROM Rule WHERE networkId = ? ORDER BY ruleNo ASC",-1,&_sListRules,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"DELETE FROM Rule WHERE networkId = ?",-1,&_sDeleteRulesForNetwork,(const char **)0) != SQLITE_OK) - - /* IpAssignmentPool */ - ||(sqlite3_prepare_v2(_db,"SELECT ipRangeStart,ipRangeEnd FROM IpAssignmentPool WHERE networkId = ? AND ipVersion = ?",-1,&_sGetIpAssignmentPools,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"SELECT ipRangeStart,ipRangeEnd,ipVersion FROM IpAssignmentPool WHERE networkId = ? ORDER BY ipRangeStart ASC",-1,&_sGetIpAssignmentPools2,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"INSERT INTO IpAssignmentPool (networkId,ipRangeStart,ipRangeEnd,ipVersion) VALUES (?,?,?,?)",-1,&_sCreateIpAssignmentPool,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"DELETE FROM IpAssignmentPool WHERE networkId = ?",-1,&_sDeleteIpAssignmentPoolsForNetwork,(const char **)0) != SQLITE_OK) - - /* IpAssignment */ - ||(sqlite3_prepare_v2(_db,"SELECT ip,ipNetmaskBits,ipVersion FROM IpAssignment WHERE networkId = ? AND nodeId = ? AND \"type\" = 0 ORDER BY ip ASC",-1,&_sGetIpAssignmentsForNode,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"SELECT 1 FROM IpAssignment WHERE networkId = ? AND ip = ? AND ipVersion = ? AND \"type\" = ?",-1,&_sCheckIfIpIsAllocated,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"INSERT INTO IpAssignment (networkId,nodeId,\"type\",ip,ipNetmaskBits,ipVersion) VALUES (?,?,?,?,?,?)",-1,&_sAllocateIp,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"DELETE FROM IpAssignment WHERE networkId = ? AND nodeId = ? AND \"type\" = ?",-1,&_sDeleteIpAllocations,(const char **)0) != SQLITE_OK) - - /* Relay */ - ||(sqlite3_prepare_v2(_db,"SELECT \"address\",\"phyAddress\" FROM Relay WHERE \"networkId\" = ? ORDER BY \"address\" ASC",-1,&_sGetRelays,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"DELETE FROM Relay WHERE networkId = ?",-1,&_sDeleteRelaysForNetwork,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"INSERT INTO Relay (\"networkId\",\"address\",\"phyAddress\") VALUES (?,?,?)",-1,&_sCreateRelay,(const char **)0) != SQLITE_OK) - - /* Member */ - ||(sqlite3_prepare_v2(_db,"SELECT rowid,authorized,activeBridge,memberRevision,\"flags\",lastRequestTime,recentHistory FROM Member WHERE networkId = ? AND nodeId = ?",-1,&_sGetMember,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"SELECT m.authorized,m.activeBridge,m.memberRevision,n.identity,m.flags,m.lastRequestTime,m.recentHistory FROM Member AS m LEFT OUTER JOIN Node AS n ON n.id = m.nodeId WHERE m.networkId = ? AND m.nodeId = ?",-1,&_sGetMember2,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"INSERT INTO Member (networkId,nodeId,authorized,activeBridge,memberRevision) VALUES (?,?,?,0,(SELECT memberRevisionCounter FROM Network WHERE id = ?))",-1,&_sCreateMember,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"SELECT nodeId FROM Member WHERE networkId = ? AND activeBridge > 0 AND authorized > 0",-1,&_sGetActiveBridges,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"SELECT m.nodeId,m.memberRevision FROM Member AS m WHERE m.networkId = ? ORDER BY m.nodeId ASC",-1,&_sListNetworkMembers,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"UPDATE Member SET authorized = ?,memberRevision = (SELECT memberRevisionCounter FROM Network WHERE id = ?) WHERE rowid = ?",-1,&_sUpdateMemberAuthorized,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"UPDATE Member SET activeBridge = ?,memberRevision = (SELECT memberRevisionCounter FROM Network WHERE id = ?) WHERE rowid = ?",-1,&_sUpdateMemberActiveBridge,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"UPDATE Member SET \"lastRequestTime\" = ?, \"recentHistory\" = ? WHERE rowid = ?",-1,&_sUpdateMemberHistory,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"DELETE FROM Member WHERE networkId = ? AND nodeId = ?",-1,&_sDeleteMember,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"DELETE FROM Member WHERE networkId = ?",-1,&_sDeleteAllNetworkMembers,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"SELECT nodeId,recentHistory FROM Member WHERE networkId = ? AND lastRequestTime >= ?",-1,&_sGetActiveNodesOnNetwork,(const char **)0) != SQLITE_OK) - - /* Route */ - ||(sqlite3_prepare_v2(_db,"INSERT INTO Route (networkId,target,via,targetNetmaskBits,ipVersion,flags,metric) VALUES (?,?,?,?,?,?,?)",-1,&_sCreateRoute,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"SELECT DISTINCT target,via,targetNetmaskBits,ipVersion,flags,metric FROM \"Route\" WHERE networkId = ? ORDER BY ipVersion,target,via",-1,&_sGetRoutes,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"DELETE FROM \"Route\" WHERE networkId = ?",-1,&_sDeleteRoutes,(const char **)0) != SQLITE_OK) - - /* Config */ - ||(sqlite3_prepare_v2(_db,"SELECT \"v\" FROM \"Config\" WHERE \"k\" = ?",-1,&_sGetConfig,(const char **)0) != SQLITE_OK) - ||(sqlite3_prepare_v2(_db,"INSERT OR REPLACE INTO \"Config\" (\"k\",\"v\") VALUES (?,?)",-1,&_sSetConfig,(const char **)0) != SQLITE_OK) - - ) { - std::string err(std::string("SqliteNetworkController unable to initialize one or more prepared statements: ") + sqlite3_errmsg(_db)); - sqlite3_close(_db); - throw std::runtime_error(err); - } - - /* Generate a 128-bit / 32-character "instance ID" if one isn't already - * defined. Clients can use this to determine if this is the same controller - * database they know and love. */ - sqlite3_reset(_sGetConfig); - sqlite3_bind_text(_sGetConfig,1,"instanceId",10,SQLITE_STATIC); - if (sqlite3_step(_sGetConfig) != SQLITE_ROW) { - unsigned char sr[32]; - Utils::getSecureRandom(sr,32); - for(unsigned int i=0;i<32;++i) - _instanceId.push_back("0123456789abcdef"[(unsigned int)sr[i] & 0xf]); - - sqlite3_reset(_sSetConfig); - sqlite3_bind_text(_sSetConfig,1,"instanceId",10,SQLITE_STATIC); - sqlite3_bind_text(_sSetConfig,2,_instanceId.c_str(),-1,SQLITE_STATIC); - if (sqlite3_step(_sSetConfig) != SQLITE_DONE) - throw std::runtime_error("SqliteNetworkController unable to read or initialize instanceId"); - } else { - const char *iid = reinterpret_cast(sqlite3_column_text(_sGetConfig,0)); - if (!iid) - throw std::runtime_error("SqliteNetworkController unable to read instanceId (it's NULL)"); - _instanceId = iid; - } - -#ifdef ZT_NETCONF_SQLITE_TRACE - sqlite3_trace(_db,sqliteTraceFunc,(void *)0); -#endif - - _backupThread = Thread::start(this); -} - -SqliteNetworkController::~SqliteNetworkController() -{ - _backupThreadRun = false; - Thread::join(_backupThread); - - Mutex::Lock _l(_lock); - if (_db) { - sqlite3_finalize(_sGetNetworkById); - sqlite3_finalize(_sGetMember); - sqlite3_finalize(_sCreateMember); - sqlite3_finalize(_sGetNodeIdentity); - sqlite3_finalize(_sCreateOrReplaceNode); - sqlite3_finalize(_sGetEtherTypesFromRuleTable); - sqlite3_finalize(_sGetActiveBridges); - sqlite3_finalize(_sGetIpAssignmentsForNode); - sqlite3_finalize(_sGetIpAssignmentPools); - sqlite3_finalize(_sCheckIfIpIsAllocated); - sqlite3_finalize(_sAllocateIp); - sqlite3_finalize(_sDeleteIpAllocations); - sqlite3_finalize(_sGetRelays); - sqlite3_finalize(_sListNetworks); - sqlite3_finalize(_sListNetworkMembers); - sqlite3_finalize(_sGetMember2); - sqlite3_finalize(_sGetIpAssignmentPools2); - sqlite3_finalize(_sListRules); - sqlite3_finalize(_sCreateRule); - sqlite3_finalize(_sCreateNetwork); - sqlite3_finalize(_sGetNetworkRevision); - sqlite3_finalize(_sSetNetworkRevision); - sqlite3_finalize(_sDeleteRelaysForNetwork); - sqlite3_finalize(_sCreateRelay); - sqlite3_finalize(_sDeleteIpAssignmentPoolsForNetwork); - sqlite3_finalize(_sDeleteRulesForNetwork); - sqlite3_finalize(_sCreateIpAssignmentPool); - sqlite3_finalize(_sUpdateMemberAuthorized); - sqlite3_finalize(_sUpdateMemberActiveBridge); - sqlite3_finalize(_sUpdateMemberHistory); - sqlite3_finalize(_sDeleteMember); - sqlite3_finalize(_sDeleteAllNetworkMembers); - sqlite3_finalize(_sGetActiveNodesOnNetwork); - sqlite3_finalize(_sDeleteNetwork); - sqlite3_finalize(_sCreateRoute); - sqlite3_finalize(_sGetRoutes); - sqlite3_finalize(_sDeleteRoutes); - sqlite3_finalize(_sIncrementMemberRevisionCounter); - sqlite3_finalize(_sGetConfig); - sqlite3_finalize(_sSetConfig); - sqlite3_close(_db); - } -} - -NetworkController::ResultCode SqliteNetworkController::doNetworkConfigRequest(const InetAddress &fromAddr,const Identity &signingId,const Identity &identity,uint64_t nwid,const Dictionary &metaData,NetworkConfig &nc) -{ - if (((!signingId)||(!signingId.hasPrivate()))||(signingId.address().toInt() != (nwid >> 24))) { - return NetworkController::NETCONF_QUERY_INTERNAL_SERVER_ERROR; - } - - const uint64_t now = OSUtils::now(); - - NetworkRecord network; - Utils::snprintf(network.id,sizeof(network.id),"%.16llx",(unsigned long long)nwid); - - MemberRecord member; - Utils::snprintf(member.nodeId,sizeof(member.nodeId),"%.10llx",(unsigned long long)identity.address().toInt()); - - { // begin lock - Mutex::Lock _l(_lock); - - // Check rate limit circuit breaker to prevent flooding - { - uint64_t &lrt = _lastRequestTime[std::pair(identity.address().toInt(),nwid)]; - if ((now - lrt) <= ZT_NETCONF_MIN_REQUEST_PERIOD) - return NetworkController::NETCONF_QUERY_IGNORE; - lrt = now; - } - - _backupNeeded = true; - - // Create Node record or do full identity check if we already have one - - sqlite3_reset(_sGetNodeIdentity); - sqlite3_bind_text(_sGetNodeIdentity,1,member.nodeId,10,SQLITE_STATIC); - if (sqlite3_step(_sGetNodeIdentity) == SQLITE_ROW) { - try { - Identity alreadyKnownIdentity((const char *)sqlite3_column_text(_sGetNodeIdentity,0)); - if (alreadyKnownIdentity != identity) - return NetworkController::NETCONF_QUERY_ACCESS_DENIED; - } catch ( ... ) { // identity stored in database is not valid or is NULL - return NetworkController::NETCONF_QUERY_ACCESS_DENIED; - } - } else { - std::string idstr(identity.toString(false)); - sqlite3_reset(_sCreateOrReplaceNode); - sqlite3_bind_text(_sCreateOrReplaceNode,1,member.nodeId,10,SQLITE_STATIC); - sqlite3_bind_text(_sCreateOrReplaceNode,2,idstr.c_str(),-1,SQLITE_STATIC); - if (sqlite3_step(_sCreateOrReplaceNode) != SQLITE_DONE) { - return NetworkController::NETCONF_QUERY_INTERNAL_SERVER_ERROR; - } - } - - // Fetch Network record - - sqlite3_reset(_sGetNetworkById); - sqlite3_bind_text(_sGetNetworkById,1,network.id,16,SQLITE_STATIC); - if (sqlite3_step(_sGetNetworkById) == SQLITE_ROW) { - network.name = (const char *)sqlite3_column_text(_sGetNetworkById,0); - network.isPrivate = (sqlite3_column_int(_sGetNetworkById,1) > 0); - network.enableBroadcast = (sqlite3_column_int(_sGetNetworkById,2) > 0); - network.allowPassiveBridging = (sqlite3_column_int(_sGetNetworkById,3) > 0); - network.flags = sqlite3_column_int(_sGetNetworkById,4); - network.multicastLimit = sqlite3_column_int(_sGetNetworkById,5); - network.creationTime = (uint64_t)sqlite3_column_int64(_sGetNetworkById,6); - network.revision = (uint64_t)sqlite3_column_int64(_sGetNetworkById,7); - network.memberRevisionCounter = (uint64_t)sqlite3_column_int64(_sGetNetworkById,8); - } else { - return NetworkController::NETCONF_QUERY_OBJECT_NOT_FOUND; - } - - // Fetch or create Member record - - sqlite3_reset(_sGetMember); - sqlite3_bind_text(_sGetMember,1,network.id,16,SQLITE_STATIC); - sqlite3_bind_text(_sGetMember,2,member.nodeId,10,SQLITE_STATIC); - if (sqlite3_step(_sGetMember) == SQLITE_ROW) { - member.rowid = sqlite3_column_int64(_sGetMember,0); - member.authorized = (sqlite3_column_int(_sGetMember,1) > 0); - member.activeBridge = (sqlite3_column_int(_sGetMember,2) > 0); - member.lastRequestTime = (uint64_t)sqlite3_column_int64(_sGetMember,5); - const char *rhblob = (const char *)sqlite3_column_blob(_sGetMember,6); - if (rhblob) - member.recentHistory.fromBlob(rhblob,(unsigned int)sqlite3_column_bytes(_sGetMember,6)); - } else { - member.authorized = (network.isPrivate ? false : true); - member.activeBridge = false; - sqlite3_reset(_sCreateMember); - sqlite3_bind_text(_sCreateMember,1,network.id,16,SQLITE_STATIC); - sqlite3_bind_text(_sCreateMember,2,member.nodeId,10,SQLITE_STATIC); - sqlite3_bind_int(_sCreateMember,3,(member.authorized ? 1 : 0)); - sqlite3_bind_text(_sCreateMember,4,network.id,16,SQLITE_STATIC); - if (sqlite3_step(_sCreateMember) != SQLITE_DONE) { - return NetworkController::NETCONF_QUERY_INTERNAL_SERVER_ERROR; - } - member.rowid = sqlite3_last_insert_rowid(_db); - - sqlite3_reset(_sIncrementMemberRevisionCounter); - sqlite3_bind_text(_sIncrementMemberRevisionCounter,1,network.id,16,SQLITE_STATIC); - sqlite3_step(_sIncrementMemberRevisionCounter); - } - - // Update Member.history - - { - char mh[1024]; - Utils::snprintf(mh,sizeof(mh), - "{\"ts\":%llu,\"authorized\":%s,\"clientMajorVersion\":%u,\"clientMinorVersion\":%u,\"clientRevision\":%u,\"fromAddr\":", - (unsigned long long)now, - ((member.authorized) ? "true" : "false"), - metaData.getUI(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_NODE_MAJOR_VERSION,0), - metaData.getUI(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_NODE_MINOR_VERSION,0), - metaData.getUI(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_NODE_REVISION,0)); - member.recentHistory.push_front(std::string(mh)); - if (fromAddr) { - member.recentHistory.front().push_back('"'); - member.recentHistory.front().append(_jsonEscape(fromAddr.toString())); - member.recentHistory.front().append("\"}"); - } else { - member.recentHistory.front().append("null}"); - } - - while (member.recentHistory.size() > ZT_NETCONF_DB_MEMBER_HISTORY_LENGTH) - member.recentHistory.pop_back(); - std::string rhblob(member.recentHistory.toBlob()); - - sqlite3_reset(_sUpdateMemberHistory); - sqlite3_clear_bindings(_sUpdateMemberHistory); - sqlite3_bind_int64(_sUpdateMemberHistory,1,(sqlite3_int64)now); - sqlite3_bind_blob(_sUpdateMemberHistory,2,(const void *)rhblob.data(),(int)rhblob.length(),SQLITE_STATIC); - sqlite3_bind_int64(_sUpdateMemberHistory,3,member.rowid); - sqlite3_step(_sUpdateMemberHistory); - } - - // Don't proceed if member is not authorized! --------------------------- - - if (!member.authorized) - return NetworkController::NETCONF_QUERY_ACCESS_DENIED; - - // Create network configuration -- we create both legacy and new types and send both for backward compatibility - - // New network config structure - nc.networkId = Utils::hexStrToU64(network.id); - nc.type = network.isPrivate ? ZT_NETWORK_TYPE_PRIVATE : ZT_NETWORK_TYPE_PUBLIC; - nc.timestamp = now; - nc.revision = network.revision; - nc.issuedTo = member.nodeId; - if (network.enableBroadcast) nc.flags |= ZT_NETWORKCONFIG_FLAG_ENABLE_BROADCAST; - if (network.allowPassiveBridging) nc.flags |= ZT_NETWORKCONFIG_FLAG_ALLOW_PASSIVE_BRIDGING; - memcpy(nc.name,network.name,std::min((unsigned int)ZT_MAX_NETWORK_SHORT_NAME_LENGTH,(unsigned int)strlen(network.name))); - - { // TODO: right now only etherTypes are supported in rules - std::vector allowedEtherTypes; - sqlite3_reset(_sGetEtherTypesFromRuleTable); - sqlite3_bind_text(_sGetEtherTypesFromRuleTable,1,network.id,16,SQLITE_STATIC); - while (sqlite3_step(_sGetEtherTypesFromRuleTable) == SQLITE_ROW) { - if (sqlite3_column_type(_sGetEtherTypesFromRuleTable,0) == SQLITE_NULL) { - allowedEtherTypes.clear(); - allowedEtherTypes.push_back(0); // NULL 'allow' matches ANY - break; - } else { - int et = sqlite3_column_int(_sGetEtherTypesFromRuleTable,0); - if ((et >= 0)&&(et <= 0xffff)) - allowedEtherTypes.push_back(et); - } - } - std::sort(allowedEtherTypes.begin(),allowedEtherTypes.end()); - allowedEtherTypes.erase(std::unique(allowedEtherTypes.begin(),allowedEtherTypes.end()),allowedEtherTypes.end()); - - for(long i=0;i<(long)allowedEtherTypes.size();++i) { - if ((nc.ruleCount + 2) > ZT_MAX_NETWORK_RULES) - break; - if (allowedEtherTypes[i] > 0) { - nc.rules[nc.ruleCount].t = ZT_NETWORK_RULE_MATCH_ETHERTYPE; - nc.rules[nc.ruleCount].v.etherType = (uint16_t)allowedEtherTypes[i]; - ++nc.ruleCount; - } - nc.rules[nc.ruleCount++].t = ZT_NETWORK_RULE_ACTION_ACCEPT; - } - } - - nc.multicastLimit = network.multicastLimit; - - bool amActiveBridge = false; - { - sqlite3_reset(_sGetActiveBridges); - sqlite3_bind_text(_sGetActiveBridges,1,network.id,16,SQLITE_STATIC); - while (sqlite3_step(_sGetActiveBridges) == SQLITE_ROW) { - const char *ab = (const char *)sqlite3_column_text(_sGetActiveBridges,0); - if ((ab)&&(strlen(ab) == 10)) { - const uint64_t ab2 = Utils::hexStrToU64(ab); - nc.addSpecialist(Address(ab2),ZT_NETWORKCONFIG_SPECIALIST_TYPE_ACTIVE_BRIDGE); - if (!strcmp(member.nodeId,ab)) - amActiveBridge = true; - } - } - } - - // Do not send relays to 1.1.0 since it had a serious bug in using them - // 1.1.0 will still work, it'll just fall back to roots instead of using network preferred relays - if (!((metaData.getUI(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_NODE_MAJOR_VERSION,0) == 1)&&(metaData.getUI(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_NODE_MINOR_VERSION,0) == 1)&&(metaData.getUI(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_NODE_REVISION,0) == 0))) { - sqlite3_reset(_sGetRelays); - sqlite3_bind_text(_sGetRelays,1,network.id,16,SQLITE_STATIC); - while (sqlite3_step(_sGetRelays) == SQLITE_ROW) { - const char *n = (const char *)sqlite3_column_text(_sGetRelays,0); - const char *a = (const char *)sqlite3_column_text(_sGetRelays,1); - if ((n)&&(a)) { - Address node(n); - InetAddress addr(a); - if (node) - nc.addSpecialist(node,ZT_NETWORKCONFIG_SPECIALIST_TYPE_NETWORK_PREFERRED_RELAY); - } - } - } - - sqlite3_reset(_sGetRoutes); - sqlite3_bind_text(_sGetRoutes,1,network.id,16,SQLITE_STATIC); - while ((sqlite3_step(_sGetRoutes) == SQLITE_ROW)&&(nc.routeCount < ZT_MAX_NETWORK_ROUTES)) { - ZT_VirtualNetworkRoute *r = &(nc.routes[nc.routeCount]); - memset(r,0,sizeof(ZT_VirtualNetworkRoute)); - switch(sqlite3_column_int(_sGetRoutes,3)) { // ipVersion - case 4: - *(reinterpret_cast(&(r->target))) = InetAddress((const void *)((const char *)sqlite3_column_blob(_sGetRoutes,0) + 12),4,(unsigned int)sqlite3_column_int(_sGetRoutes,2)); - break; - case 6: - *(reinterpret_cast(&(r->target))) = InetAddress((const void *)sqlite3_column_blob(_sGetRoutes,0),16,(unsigned int)sqlite3_column_int(_sGetRoutes,2)); - break; - default: - continue; - } - if (sqlite3_column_type(_sGetRoutes,1) != SQLITE_NULL) { - switch(sqlite3_column_int(_sGetRoutes,3)) { // ipVersion - case 4: - *(reinterpret_cast(&(r->via))) = InetAddress((const void *)((const char *)sqlite3_column_blob(_sGetRoutes,1) + 12),4,0); - break; - case 6: - *(reinterpret_cast(&(r->via))) = InetAddress((const void *)sqlite3_column_blob(_sGetRoutes,1),16,0); - break; - default: - continue; - } - } - r->flags = (uint16_t)sqlite3_column_int(_sGetRoutes,4); - r->metric = (uint16_t)sqlite3_column_int(_sGetRoutes,5); - ++nc.routeCount; - } - - // Assign special IPv6 addresses if these are enabled - if (((network.flags & ZT_DB_NETWORK_FLAG_ZT_MANAGED_V6_RFC4193) != 0)&&(nc.staticIpCount < ZT_MAX_ZT_ASSIGNED_ADDRESSES)) { - nc.staticIps[nc.staticIpCount++] = InetAddress::makeIpv6rfc4193(nwid,identity.address().toInt()); - nc.flags |= ZT_NETWORKCONFIG_FLAG_ENABLE_IPV6_NDP_EMULATION; - } - if (((network.flags & ZT_DB_NETWORK_FLAG_ZT_MANAGED_V6_6PLANE) != 0)&&(nc.staticIpCount < ZT_MAX_ZT_ASSIGNED_ADDRESSES)) { - nc.staticIps[nc.staticIpCount++] = InetAddress::makeIpv66plane(nwid,identity.address().toInt()); - nc.flags |= ZT_NETWORKCONFIG_FLAG_ENABLE_IPV6_NDP_EMULATION; - } - - // Get managed addresses that are assigned to this member - bool haveManagedIpv4AutoAssignment = false; - bool haveManagedIpv6AutoAssignment = false; // "special" NDP-emulated address types do not count - sqlite3_reset(_sGetIpAssignmentsForNode); - sqlite3_bind_text(_sGetIpAssignmentsForNode,1,network.id,16,SQLITE_STATIC); - sqlite3_bind_text(_sGetIpAssignmentsForNode,2,member.nodeId,10,SQLITE_STATIC); - while (sqlite3_step(_sGetIpAssignmentsForNode) == SQLITE_ROW) { - const unsigned char *const ipbytes = (const unsigned char *)sqlite3_column_blob(_sGetIpAssignmentsForNode,0); - if ((!ipbytes)||(sqlite3_column_bytes(_sGetIpAssignmentsForNode,0) != 16)) - continue; - //const int ipNetmaskBits = sqlite3_column_int(_sGetIpAssignmentsForNode,1); - const int ipVersion = sqlite3_column_int(_sGetIpAssignmentsForNode,2); - - InetAddress ip; - if (ipVersion == 4) - ip = InetAddress(ipbytes + 12,4,0); - else if (ipVersion == 6) - ip = InetAddress(ipbytes,16,0); - else continue; - - // IP assignments are only pushed if there is a corresponding local route. We also now get the netmask bits from - // this route, ignoring the netmask bits field of the assigned IP itself. Using that was worthless and a source - // of user error / poor UX. - int routedNetmaskBits = 0; - for(unsigned int rk=0;rk(&(nc.routes[rk].target))->containsAddress(ip)) ) - routedNetmaskBits = reinterpret_cast(&(nc.routes[rk].target))->netmaskBits(); - } - - if (routedNetmaskBits > 0) { - if (nc.staticIpCount < ZT_MAX_ZT_ASSIGNED_ADDRESSES) { - ip.setPort(routedNetmaskBits); - nc.staticIps[nc.staticIpCount++] = ip; - } - if (ipVersion == 4) - haveManagedIpv4AutoAssignment = true; - else if (ipVersion == 6) - haveManagedIpv6AutoAssignment = true; - } - } - - // Auto-assign IPv6 address if auto-assignment is enabled and it's needed - if ( ((network.flags & ZT_DB_NETWORK_FLAG_ZT_MANAGED_V6_AUTO_ASSIGN) != 0) && (!haveManagedIpv6AutoAssignment) && (!amActiveBridge) ) { - sqlite3_reset(_sGetIpAssignmentPools); - sqlite3_bind_text(_sGetIpAssignmentPools,1,network.id,16,SQLITE_STATIC); - sqlite3_bind_int(_sGetIpAssignmentPools,2,6); // 6 == IPv6 - while (sqlite3_step(_sGetIpAssignmentPools) == SQLITE_ROW) { - const uint8_t *const ipRangeStartB = reinterpret_cast(sqlite3_column_blob(_sGetIpAssignmentPools,0)); - const uint8_t *const ipRangeEndB = reinterpret_cast(sqlite3_column_blob(_sGetIpAssignmentPools,1)); - if ((!ipRangeStartB)||(!ipRangeEndB)||(sqlite3_column_bytes(_sGetIpAssignmentPools,0) != 16)||(sqlite3_column_bytes(_sGetIpAssignmentPools,1) != 16)) - continue; - - uint64_t s[2],e[2],x[2],xx[2]; - memcpy(s,ipRangeStartB,16); - memcpy(e,ipRangeEndB,16); - s[0] = Utils::ntoh(s[0]); - s[1] = Utils::ntoh(s[1]); - e[0] = Utils::ntoh(e[0]); - e[1] = Utils::ntoh(e[1]); - x[0] = s[0]; - x[1] = s[1]; - - for(unsigned int trialCount=0;trialCount<1000;++trialCount) { - if ((trialCount == 0)&&(e[1] > s[1])&&((e[1] - s[1]) >= 0xffffffffffULL)) { - // First see if we can just cram a ZeroTier ID into the higher 64 bits. If so do that. - xx[0] = Utils::hton(x[0]); - xx[1] = Utils::hton(x[1] + identity.address().toInt()); - } else { - // Otherwise pick random addresses -- this technically doesn't explore the whole range if the lower 64 bit range is >= 1 but that won't matter since that would be huge anyway - Utils::getSecureRandom((void *)xx,16); - if ((e[0] > s[0])) - xx[0] %= (e[0] - s[0]); - else xx[0] = 0; - if ((e[1] > s[1])) - xx[1] %= (e[1] - s[1]); - else xx[1] = 0; - xx[0] = Utils::hton(x[0] + xx[0]); - xx[1] = Utils::hton(x[1] + xx[1]); - } - - InetAddress ip6((const void *)xx,16,0); - - // Check if this IP is within a local-to-Ethernet routed network - int routedNetmaskBits = 0; - for(unsigned int rk=0;rk(&(nc.routes[rk].target))->containsAddress(ip6)) ) - routedNetmaskBits = reinterpret_cast(&(nc.routes[rk].target))->netmaskBits(); - } - - // If it's routed, then try to claim and assign it and if successful end loop - if (routedNetmaskBits > 0) { - sqlite3_reset(_sCheckIfIpIsAllocated); - sqlite3_bind_text(_sCheckIfIpIsAllocated,1,network.id,16,SQLITE_STATIC); - sqlite3_bind_blob(_sCheckIfIpIsAllocated,2,(const void *)ip6.rawIpData(),16,SQLITE_STATIC); - sqlite3_bind_int(_sCheckIfIpIsAllocated,3,6); // 6 == IPv6 - sqlite3_bind_int(_sCheckIfIpIsAllocated,4,(int)0 /*ZT_IP_ASSIGNMENT_TYPE_ADDRESS*/); - if (sqlite3_step(_sCheckIfIpIsAllocated) != SQLITE_ROW) { - // No rows returned, so the IP is available - sqlite3_reset(_sAllocateIp); - sqlite3_bind_text(_sAllocateIp,1,network.id,16,SQLITE_STATIC); - sqlite3_bind_text(_sAllocateIp,2,member.nodeId,10,SQLITE_STATIC); - sqlite3_bind_int(_sAllocateIp,3,(int)0 /*ZT_IP_ASSIGNMENT_TYPE_ADDRESS*/); - sqlite3_bind_blob(_sAllocateIp,4,(const void *)ip6.rawIpData(),16,SQLITE_STATIC); - sqlite3_bind_int(_sAllocateIp,5,routedNetmaskBits); // IP netmask bits from matching route - sqlite3_bind_int(_sAllocateIp,6,6); // 6 == IPv6 - if (sqlite3_step(_sAllocateIp) == SQLITE_DONE) { - ip6.setPort(routedNetmaskBits); - if (nc.staticIpCount < ZT_MAX_ZT_ASSIGNED_ADDRESSES) - nc.staticIps[nc.staticIpCount++] = ip6; - break; - } - } - } - } - } - } - - // Auto-assign IPv4 address if auto-assignment is enabled and it's needed - if ( ((network.flags & ZT_DB_NETWORK_FLAG_ZT_MANAGED_V4_AUTO_ASSIGN) != 0) && (!haveManagedIpv4AutoAssignment) && (!amActiveBridge) ) { - sqlite3_reset(_sGetIpAssignmentPools); - sqlite3_bind_text(_sGetIpAssignmentPools,1,network.id,16,SQLITE_STATIC); - sqlite3_bind_int(_sGetIpAssignmentPools,2,4); // 4 == IPv4 - while (sqlite3_step(_sGetIpAssignmentPools) == SQLITE_ROW) { - const unsigned char *ipRangeStartB = reinterpret_cast(sqlite3_column_blob(_sGetIpAssignmentPools,0)); - const unsigned char *ipRangeEndB = reinterpret_cast(sqlite3_column_blob(_sGetIpAssignmentPools,1)); - if ((!ipRangeStartB)||(!ipRangeEndB)||(sqlite3_column_bytes(_sGetIpAssignmentPools,0) != 16)||(sqlite3_column_bytes(_sGetIpAssignmentPools,1) != 16)) - continue; - - uint32_t ipRangeStart = Utils::ntoh(*(reinterpret_cast(ipRangeStartB + 12))); - uint32_t ipRangeEnd = Utils::ntoh(*(reinterpret_cast(ipRangeEndB + 12))); - if ((ipRangeEnd <= ipRangeStart)||(ipRangeStart == 0)) - continue; - uint32_t ipRangeLen = ipRangeEnd - ipRangeStart; - - // Start with the LSB of the member's address - uint32_t ipTrialCounter = (uint32_t)(identity.address().toInt() & 0xffffffff); - - for(uint32_t k=ipRangeStart,trialCount=0;(k<=ipRangeEnd)&&(trialCount < 1000);++k,++trialCount) { - uint32_t ip = (ipRangeLen > 0) ? (ipRangeStart + (ipTrialCounter % ipRangeLen)) : ipRangeStart; - ++ipTrialCounter; - if ((ip & 0x000000ff) == 0x000000ff) - continue; // don't allow addresses that end in .255 - - // Check if this IP is within a local-to-Ethernet routed network - int routedNetmaskBits = 0; - for(unsigned int rk=0;rk(&(nc.routes[rk].target))->sin_addr.s_addr)); - int targetBits = Utils::ntoh((uint16_t)(reinterpret_cast(&(nc.routes[rk].target))->sin_port)); - if ((ip & (0xffffffff << (32 - targetBits))) == targetIp) { - routedNetmaskBits = targetBits; - break; - } - } - } - - // If it's routed, then try to claim and assign it and if successful end loop - if (routedNetmaskBits > 0) { - uint32_t ipBlob[4]; // actually a 16-byte blob, we put IPv4s in the last 4 bytes - ipBlob[0] = 0; ipBlob[1] = 0; ipBlob[2] = 0; ipBlob[3] = Utils::hton(ip); - sqlite3_reset(_sCheckIfIpIsAllocated); - sqlite3_bind_text(_sCheckIfIpIsAllocated,1,network.id,16,SQLITE_STATIC); - sqlite3_bind_blob(_sCheckIfIpIsAllocated,2,(const void *)ipBlob,16,SQLITE_STATIC); - sqlite3_bind_int(_sCheckIfIpIsAllocated,3,4); // 4 == IPv4 - sqlite3_bind_int(_sCheckIfIpIsAllocated,4,(int)0 /*ZT_IP_ASSIGNMENT_TYPE_ADDRESS*/); - if (sqlite3_step(_sCheckIfIpIsAllocated) != SQLITE_ROW) { - // No rows returned, so the IP is available - sqlite3_reset(_sAllocateIp); - sqlite3_bind_text(_sAllocateIp,1,network.id,16,SQLITE_STATIC); - sqlite3_bind_text(_sAllocateIp,2,member.nodeId,10,SQLITE_STATIC); - sqlite3_bind_int(_sAllocateIp,3,(int)0 /*ZT_IP_ASSIGNMENT_TYPE_ADDRESS*/); - sqlite3_bind_blob(_sAllocateIp,4,(const void *)ipBlob,16,SQLITE_STATIC); - sqlite3_bind_int(_sAllocateIp,5,routedNetmaskBits); // IP netmask bits from matching route - sqlite3_bind_int(_sAllocateIp,6,4); // 4 == IPv4 - if (sqlite3_step(_sAllocateIp) == SQLITE_DONE) { - if (nc.staticIpCount < ZT_MAX_ZT_ASSIGNED_ADDRESSES) { - struct sockaddr_in *const v4ip = reinterpret_cast(&(nc.staticIps[nc.staticIpCount++])); - v4ip->sin_family = AF_INET; - v4ip->sin_port = Utils::hton((uint16_t)routedNetmaskBits); - v4ip->sin_addr.s_addr = Utils::hton(ip); - } - break; - } - } - } - } - } - } - } // end lock - - // Perform signing outside lock to enable concurrency - if (network.isPrivate) { - CertificateOfMembership com(now,ZT_NETWORK_COM_DEFAULT_REVISION_MAX_DELTA,nwid,identity.address()); - if (com.sign(signingId)) { - nc.com = com; - } else { - return NETCONF_QUERY_INTERNAL_SERVER_ERROR; - } - } - - return NetworkController::NETCONF_QUERY_OK; -} - -unsigned int SqliteNetworkController::handleControlPlaneHttpGET( - const std::vector &path, - const std::map &urlArgs, - const std::map &headers, - const std::string &body, - std::string &responseBody, - std::string &responseContentType) -{ - Mutex::Lock _l(_lock); - return _doCPGet(path,urlArgs,headers,body,responseBody,responseContentType); -} - -unsigned int SqliteNetworkController::handleControlPlaneHttpPOST( - const std::vector &path, - const std::map &urlArgs, - const std::map &headers, - const std::string &body, - std::string &responseBody, - std::string &responseContentType) -{ - if (path.empty()) - return 404; - Mutex::Lock _l(_lock); - - _backupNeeded = true; - - if (path[0] == "network") { - - if ((path.size() >= 2)&&(path[1].length() == 16)) { - uint64_t nwid = Utils::hexStrToU64(path[1].c_str()); - char nwids[24]; - Utils::snprintf(nwids,sizeof(nwids),"%.16llx",(unsigned long long)nwid); - - int64_t revision = 0; - sqlite3_reset(_sGetNetworkRevision); - sqlite3_bind_text(_sGetNetworkRevision,1,nwids,16,SQLITE_STATIC); - bool networkExists = false; - if (sqlite3_step(_sGetNetworkRevision) == SQLITE_ROW) { - networkExists = true; - revision = sqlite3_column_int64(_sGetNetworkRevision,0); - } - - if (path.size() >= 3) { - - if (!networkExists) - return 404; - - if ((path.size() == 4)&&(path[2] == "member")&&(path[3].length() == 10)) { - uint64_t address = Utils::hexStrToU64(path[3].c_str()); - char addrs[24]; - Utils::snprintf(addrs,sizeof(addrs),"%.10llx",address); - - int64_t addToNetworkRevision = 0; - - int64_t memberRowId = 0; - sqlite3_reset(_sGetMember); - sqlite3_bind_text(_sGetMember,1,nwids,16,SQLITE_STATIC); - sqlite3_bind_text(_sGetMember,2,addrs,10,SQLITE_STATIC); - bool memberExists = false; - if (sqlite3_step(_sGetMember) == SQLITE_ROW) { - memberExists = true; - memberRowId = sqlite3_column_int64(_sGetMember,0); - } - - if (!memberExists) { - sqlite3_reset(_sCreateMember); - sqlite3_bind_text(_sCreateMember,1,nwids,16,SQLITE_STATIC); - sqlite3_bind_text(_sCreateMember,2,addrs,10,SQLITE_STATIC); - sqlite3_bind_int(_sCreateMember,3,0); - sqlite3_bind_text(_sCreateMember,4,nwids,16,SQLITE_STATIC); - if (sqlite3_step(_sCreateMember) != SQLITE_DONE) - return 500; - memberRowId = (int64_t)sqlite3_last_insert_rowid(_db); - - sqlite3_reset(_sIncrementMemberRevisionCounter); - sqlite3_bind_text(_sIncrementMemberRevisionCounter,1,nwids,16,SQLITE_STATIC); - sqlite3_step(_sIncrementMemberRevisionCounter); - addToNetworkRevision = 1; - } - - json_value *j = json_parse(body.c_str(),body.length()); - if (j) { - if (j->type == json_object) { - for(unsigned int k=0;ku.object.length;++k) { - - if (!strcmp(j->u.object.values[k].name,"authorized")) { - if (j->u.object.values[k].value->type == json_boolean) { - sqlite3_reset(_sUpdateMemberAuthorized); - sqlite3_bind_int(_sUpdateMemberAuthorized,1,(j->u.object.values[k].value->u.boolean == 0) ? 0 : 1); - sqlite3_bind_text(_sUpdateMemberAuthorized,2,nwids,16,SQLITE_STATIC); - sqlite3_bind_int64(_sUpdateMemberAuthorized,3,memberRowId); - if (sqlite3_step(_sUpdateMemberAuthorized) != SQLITE_DONE) - return 500; - - sqlite3_reset(_sIncrementMemberRevisionCounter); - sqlite3_bind_text(_sIncrementMemberRevisionCounter,1,nwids,16,SQLITE_STATIC); - sqlite3_step(_sIncrementMemberRevisionCounter); - addToNetworkRevision = 1; - } - } else if (!strcmp(j->u.object.values[k].name,"activeBridge")) { - if (j->u.object.values[k].value->type == json_boolean) { - sqlite3_reset(_sUpdateMemberActiveBridge); - sqlite3_bind_int(_sUpdateMemberActiveBridge,1,(j->u.object.values[k].value->u.boolean == 0) ? 0 : 1); - sqlite3_bind_text(_sUpdateMemberActiveBridge,2,nwids,16,SQLITE_STATIC); - sqlite3_bind_int64(_sUpdateMemberActiveBridge,3,memberRowId); - if (sqlite3_step(_sUpdateMemberActiveBridge) != SQLITE_DONE) - return 500; - - sqlite3_reset(_sIncrementMemberRevisionCounter); - sqlite3_bind_text(_sIncrementMemberRevisionCounter,1,nwids,16,SQLITE_STATIC); - sqlite3_step(_sIncrementMemberRevisionCounter); - addToNetworkRevision = 1; - } - } else if (!strcmp(j->u.object.values[k].name,"ipAssignments")) { - if (j->u.object.values[k].value->type == json_array) { - sqlite3_reset(_sDeleteIpAllocations); - sqlite3_bind_text(_sDeleteIpAllocations,1,nwids,16,SQLITE_STATIC); - sqlite3_bind_text(_sDeleteIpAllocations,2,addrs,10,SQLITE_STATIC); - sqlite3_bind_int(_sDeleteIpAllocations,3,(int)0 /*ZT_IP_ASSIGNMENT_TYPE_ADDRESS*/); - if (sqlite3_step(_sDeleteIpAllocations) != SQLITE_DONE) - return 500; - for(unsigned int kk=0;kku.object.values[k].value->u.array.length;++kk) { - json_value *ipalloc = j->u.object.values[k].value->u.array.values[kk]; - if (ipalloc->type == json_string) { - InetAddress a(ipalloc->u.string.ptr); - char ipBlob[16]; - int ipVersion = 0; - _ipToBlob(a,ipBlob,ipVersion); - if (ipVersion > 0) { - sqlite3_reset(_sAllocateIp); - sqlite3_bind_text(_sAllocateIp,1,nwids,16,SQLITE_STATIC); - sqlite3_bind_text(_sAllocateIp,2,addrs,10,SQLITE_STATIC); - sqlite3_bind_int(_sAllocateIp,3,(int)0 /*ZT_IP_ASSIGNMENT_TYPE_ADDRESS*/); - sqlite3_bind_blob(_sAllocateIp,4,(const void *)ipBlob,16,SQLITE_STATIC); - sqlite3_bind_int(_sAllocateIp,5,(int)a.netmaskBits()); // NOTE: this field is now ignored but set it anyway - sqlite3_bind_int(_sAllocateIp,6,ipVersion); - if (sqlite3_step(_sAllocateIp) != SQLITE_DONE) - return 500; - } - } - } - addToNetworkRevision = 1; - } - } else if (!strcmp(j->u.object.values[k].name,"identity")) { - // Identity is technically an immutable field, but if the member's Node has - // no identity we allow it to be populated. This is primarily for migrating - // node data from another controller. - json_value *idstr = j->u.object.values[k].value; - if (idstr->type == json_string) { - bool alreadyHaveIdentity = false; - - sqlite3_reset(_sGetNodeIdentity); - sqlite3_bind_text(_sGetNodeIdentity,1,addrs,10,SQLITE_STATIC); - if (sqlite3_step(_sGetNodeIdentity) == SQLITE_ROW) { - const char *tmp2 = (const char *)sqlite3_column_text(_sGetNodeIdentity,0); - if ((tmp2)&&(tmp2[0])) - alreadyHaveIdentity = true; - } - - if (!alreadyHaveIdentity) { - try { - Identity id2(idstr->u.string.ptr); - if (id2) { - std::string idstr2(id2.toString(false)); // object must persist until after sqlite3_step() for SQLITE_STATIC - sqlite3_reset(_sCreateOrReplaceNode); - sqlite3_bind_text(_sCreateOrReplaceNode,1,addrs,10,SQLITE_STATIC); - sqlite3_bind_text(_sCreateOrReplaceNode,2,idstr2.c_str(),-1,SQLITE_STATIC); - sqlite3_step(_sCreateOrReplaceNode); - } - } catch ( ... ) {} // ignore invalid identities - } - } - } - - } - } - json_value_free(j); - } - - if ((addToNetworkRevision > 0)&&(revision > 0)) { - sqlite3_reset(_sSetNetworkRevision); - sqlite3_bind_int64(_sSetNetworkRevision,1,revision + addToNetworkRevision); - sqlite3_bind_text(_sSetNetworkRevision,2,nwids,16,SQLITE_STATIC); - sqlite3_step(_sSetNetworkRevision); - } - - return _doCPGet(path,urlArgs,headers,body,responseBody,responseContentType); - } else if ((path.size() == 3)&&(path[2] == "test")) { - ZT_CircuitTest *test = (ZT_CircuitTest *)malloc(sizeof(ZT_CircuitTest)); - memset(test,0,sizeof(ZT_CircuitTest)); - - Utils::getSecureRandom(&(test->testId),sizeof(test->testId)); - test->credentialNetworkId = nwid; - test->ptr = (void *)this; - - json_value *j = json_parse(body.c_str(),body.length()); - if (j) { - if (j->type == json_object) { - for(unsigned int k=0;ku.object.length;++k) { - - if (!strcmp(j->u.object.values[k].name,"hops")) { - if (j->u.object.values[k].value->type == json_array) { - for(unsigned int kk=0;kku.object.values[k].value->u.array.length;++kk) { - json_value *hop = j->u.object.values[k].value->u.array.values[kk]; - if (hop->type == json_array) { - for(unsigned int kkk=0;kkku.array.length;++kkk) { - if (hop->u.array.values[kkk]->type == json_string) { - test->hops[test->hopCount].addresses[test->hops[test->hopCount].breadth++] = Utils::hexStrToU64(hop->u.array.values[kkk]->u.string.ptr) & 0xffffffffffULL; - } - } - ++test->hopCount; - } - } - } - } else if (!strcmp(j->u.object.values[k].name,"reportAtEveryHop")) { - if (j->u.object.values[k].value->type == json_boolean) - test->reportAtEveryHop = (j->u.object.values[k].value->u.boolean == 0) ? 0 : 1; - } - - } - } - json_value_free(j); - } - - if (!test->hopCount) { - ::free((void *)test); - return 500; - } - - test->timestamp = OSUtils::now(); - - _CircuitTestEntry &te = _circuitTests[test->testId]; - te.test = test; - te.jsonResults = ""; - - _node->circuitTestBegin(test,&(SqliteNetworkController::_circuitTestCallback)); - - char json[1024]; - Utils::snprintf(json,sizeof(json),"{\"testId\":\"%.16llx\"}",test->testId); - responseBody = json; - responseContentType = "application/json"; - - return 200; - } // else 404 - - } else { - std::vector path_copy(path); - - if (!networkExists) { - if (path[1].substr(10) == "______") { - // A special POST /network/##########______ feature lets users create a network - // with an arbitrary unused network number at this controller. - nwid = 0; - - uint64_t nwidPrefix = (Utils::hexStrToU64(path[1].substr(0,10).c_str()) << 24) & 0xffffffffff000000ULL; - uint64_t nwidPostfix = 0; - Utils::getSecureRandom(&nwidPostfix,sizeof(nwidPostfix)); - uint64_t nwidOriginalPostfix = nwidPostfix; - do { - uint64_t tryNwid = nwidPrefix | (nwidPostfix & 0xffffffULL); - if (!nwidPostfix) - tryNwid |= 1; - Utils::snprintf(nwids,sizeof(nwids),"%.16llx",(unsigned long long)tryNwid); - - sqlite3_reset(_sGetNetworkRevision); - sqlite3_bind_text(_sGetNetworkRevision,1,nwids,16,SQLITE_STATIC); - if (sqlite3_step(_sGetNetworkRevision) != SQLITE_ROW) { - nwid = tryNwid; - break; - } - - ++nwidPostfix; - } while (nwidPostfix != nwidOriginalPostfix); - - // 503 means we have no more free IDs for this prefix. You shouldn't host anywhere - // near 16 million networks on the same controller, so shouldn't happen. - if (!nwid) - return 503; - } - - sqlite3_reset(_sCreateNetwork); - sqlite3_bind_text(_sCreateNetwork,1,nwids,16,SQLITE_STATIC); - sqlite3_bind_text(_sCreateNetwork,2,"",0,SQLITE_STATIC); - sqlite3_bind_int64(_sCreateNetwork,3,(long long)OSUtils::now()); - if (sqlite3_step(_sCreateNetwork) != SQLITE_DONE) - return 500; - path_copy[1].assign(nwids); - } - - json_value *j = json_parse(body.c_str(),body.length()); - if (j) { - if (j->type == json_object) { - for(unsigned int k=0;ku.object.length;++k) { - sqlite3_stmt *stmt = (sqlite3_stmt *)0; - - if (!strcmp(j->u.object.values[k].name,"name")) { - if ((j->u.object.values[k].value->type == json_string)&&(j->u.object.values[k].value->u.string.ptr[0])) { - if (sqlite3_prepare_v2(_db,"UPDATE Network SET \"name\" = ? WHERE id = ?",-1,&stmt,(const char **)0) == SQLITE_OK) - sqlite3_bind_text(stmt,1,j->u.object.values[k].value->u.string.ptr,-1,SQLITE_STATIC); - } - } else if (!strcmp(j->u.object.values[k].name,"private")) { - if (j->u.object.values[k].value->type == json_boolean) { - if (sqlite3_prepare_v2(_db,"UPDATE Network SET \"private\" = ? WHERE id = ?",-1,&stmt,(const char **)0) == SQLITE_OK) - sqlite3_bind_int(stmt,1,(j->u.object.values[k].value->u.boolean == 0) ? 0 : 1); - } - } else if (!strcmp(j->u.object.values[k].name,"enableBroadcast")) { - if (j->u.object.values[k].value->type == json_boolean) { - if (sqlite3_prepare_v2(_db,"UPDATE Network SET enableBroadcast = ? WHERE id = ?",-1,&stmt,(const char **)0) == SQLITE_OK) - sqlite3_bind_int(stmt,1,(j->u.object.values[k].value->u.boolean == 0) ? 0 : 1); - } - } else if (!strcmp(j->u.object.values[k].name,"allowPassiveBridging")) { - if (j->u.object.values[k].value->type == json_boolean) { - if (sqlite3_prepare_v2(_db,"UPDATE Network SET allowPassiveBridging = ? WHERE id = ?",-1,&stmt,(const char **)0) == SQLITE_OK) - sqlite3_bind_int(stmt,1,(j->u.object.values[k].value->u.boolean == 0) ? 0 : 1); - } - } else if (!strcmp(j->u.object.values[k].name,"v4AssignMode")) { - if ((j->u.object.values[k].value->type == json_string)&&(!strcmp(j->u.object.values[k].value->u.string.ptr,"zt"))) { - if (sqlite3_prepare_v2(_db,"UPDATE Network SET \"flags\" = (\"flags\" | ?) WHERE id = ?",-1,&stmt,(const char **)0) == SQLITE_OK) - sqlite3_bind_int(stmt,1,(int)ZT_DB_NETWORK_FLAG_ZT_MANAGED_V4_AUTO_ASSIGN); - } else { - if (sqlite3_prepare_v2(_db,"UPDATE Network SET \"flags\" = (\"flags\" & ?) WHERE id = ?",-1,&stmt,(const char **)0) == SQLITE_OK) - sqlite3_bind_int(stmt,1,(int)(ZT_DB_NETWORK_FLAG_ZT_MANAGED_V4_AUTO_ASSIGN ^ 0xfffffff)); - } - } else if (!strcmp(j->u.object.values[k].name,"v6AssignMode")) { - int fl = 0; - if (j->u.object.values[k].value->type == json_string) { - char *saveptr = (char *)0; - for(char *f=Utils::stok(j->u.object.values[k].value->u.string.ptr,",",&saveptr);(f);f=Utils::stok((char *)0,",",&saveptr)) { - if (!strcmp(f,"rfc4193")) - fl |= ZT_DB_NETWORK_FLAG_ZT_MANAGED_V6_RFC4193; - else if (!strcmp(f,"6plane")) - fl |= ZT_DB_NETWORK_FLAG_ZT_MANAGED_V6_6PLANE; - else if (!strcmp(f,"zt")) - fl |= ZT_DB_NETWORK_FLAG_ZT_MANAGED_V6_AUTO_ASSIGN; - } - } - if (sqlite3_prepare_v2(_db,"UPDATE Network SET \"flags\" = ((\"flags\" & " ZT_DB_NETWORK_FLAG_ZT_MANAGED_V6_MASK_S ") | ?) WHERE id = ?",-1,&stmt,(const char **)0) == SQLITE_OK) - sqlite3_bind_int(stmt,1,fl); - } else if (!strcmp(j->u.object.values[k].name,"multicastLimit")) { - if (j->u.object.values[k].value->type == json_integer) { - if (sqlite3_prepare_v2(_db,"UPDATE Network SET multicastLimit = ? WHERE id = ?",-1,&stmt,(const char **)0) == SQLITE_OK) - sqlite3_bind_int(stmt,1,(int)j->u.object.values[k].value->u.integer); - } - } else if (!strcmp(j->u.object.values[k].name,"relays")) { - if (j->u.object.values[k].value->type == json_array) { - std::map nodeIdToPhyAddress; - for(unsigned int kk=0;kku.object.values[k].value->u.array.length;++kk) { - json_value *relay = j->u.object.values[k].value->u.array.values[kk]; - const char *address = (const char *)0; - const char *phyAddress = (const char *)0; - if ((relay)&&(relay->type == json_object)) { - for(unsigned int rk=0;rku.object.length;++rk) { - if ((!strcmp(relay->u.object.values[rk].name,"address"))&&(relay->u.object.values[rk].value->type == json_string)) - address = relay->u.object.values[rk].value->u.string.ptr; - else if ((!strcmp(relay->u.object.values[rk].name,"phyAddress"))&&(relay->u.object.values[rk].value->type == json_string)) - phyAddress = relay->u.object.values[rk].value->u.string.ptr; - } - } - if ((address)&&(phyAddress)) - nodeIdToPhyAddress[Address(address)] = InetAddress(phyAddress); - } - - sqlite3_reset(_sDeleteRelaysForNetwork); - sqlite3_bind_text(_sDeleteRelaysForNetwork,1,nwids,16,SQLITE_STATIC); - sqlite3_step(_sDeleteRelaysForNetwork); - - for(std::map::iterator rl(nodeIdToPhyAddress.begin());rl!=nodeIdToPhyAddress.end();++rl) { - sqlite3_reset(_sCreateRelay); - sqlite3_bind_text(_sCreateRelay,1,nwids,16,SQLITE_STATIC); - std::string a(rl->first.toString()),b(rl->second.toString()); // don't destroy strings until sqlite3_step() - sqlite3_bind_text(_sCreateRelay,2,a.c_str(),-1,SQLITE_STATIC); - sqlite3_bind_text(_sCreateRelay,3,b.c_str(),-1,SQLITE_STATIC); - sqlite3_step(_sCreateRelay); - } - } - } else if (!strcmp(j->u.object.values[k].name,"routes")) { - sqlite3_reset(_sDeleteRoutes); - sqlite3_bind_text(_sDeleteRoutes,1,nwids,16,SQLITE_STATIC); - sqlite3_step(_sDeleteRoutes); - if (j->u.object.values[k].value->type == json_array) { - for(unsigned int kk=0;kku.object.values[k].value->u.array.length;++kk) { - json_value *r = j->u.object.values[k].value->u.array.values[kk]; - if ((r)&&(r->type == json_object)) { - InetAddress r_target,r_via; - int r_flags = 0; - int r_metric = 0; - for(unsigned int rk=0;rku.object.length;++rk) { - if ((!strcmp(r->u.object.values[rk].name,"target"))&&(r->u.object.values[rk].value->type == json_string)) - r_target = InetAddress(std::string(r->u.object.values[rk].value->u.string.ptr)); - else if ((!strcmp(r->u.object.values[rk].name,"via"))&&(r->u.object.values[rk].value->type == json_string)) - r_via = InetAddress(std::string(r->u.object.values[rk].value->u.string.ptr),0); - else if ((!strcmp(r->u.object.values[rk].name,"flags"))&&(r->u.object.values[rk].value->type == json_integer)) - r_flags = (int)(r->u.object.values[rk].value->u.integer & 0xffff); - else if ((!strcmp(r->u.object.values[rk].name,"metric"))&&(r->u.object.values[rk].value->type == json_integer)) - r_metric = (int)(r->u.object.values[rk].value->u.integer & 0xffff); - } - if ((r_target)&&((!r_via)||(r_via.ss_family == r_target.ss_family))) { - int r_ipVersion = 0; - char r_targetBlob[16]; - char r_viaBlob[16]; - _ipToBlob(r_target,r_targetBlob,r_ipVersion); - if (r_ipVersion) { - int r_targetNetmaskBits = r_target.netmaskBits(); - if ((r_ipVersion == 4)&&(r_targetNetmaskBits > 32)) r_targetNetmaskBits = 32; - else if ((r_ipVersion == 6)&&(r_targetNetmaskBits > 128)) r_targetNetmaskBits = 128; - sqlite3_reset(_sCreateRoute); - sqlite3_bind_text(_sCreateRoute,1,nwids,16,SQLITE_STATIC); - sqlite3_bind_blob(_sCreateRoute,2,(const void *)r_targetBlob,16,SQLITE_STATIC); - if (r_via) { - _ipToBlob(r_via,r_viaBlob,r_ipVersion); - sqlite3_bind_blob(_sCreateRoute,3,(const void *)r_viaBlob,16,SQLITE_STATIC); - } else { - sqlite3_bind_null(_sCreateRoute,3); - } - sqlite3_bind_int(_sCreateRoute,4,r_targetNetmaskBits); - sqlite3_bind_int(_sCreateRoute,5,r_ipVersion); - sqlite3_bind_int(_sCreateRoute,6,r_flags); - sqlite3_bind_int(_sCreateRoute,7,r_metric); - sqlite3_step(_sCreateRoute); - } - } - } - } - } - } else if (!strcmp(j->u.object.values[k].name,"ipAssignmentPools")) { - if (j->u.object.values[k].value->type == json_array) { - std::vector< std::pair > pools; - for(unsigned int kk=0;kku.object.values[k].value->u.array.length;++kk) { - json_value *pool = j->u.object.values[k].value->u.array.values[kk]; - const char *iprs = (const char *)0; - const char *ipre = (const char *)0; - if ((pool)&&(pool->type == json_object)) { - for(unsigned int rk=0;rku.object.length;++rk) { - if ((!strcmp(pool->u.object.values[rk].name,"ipRangeStart"))&&(pool->u.object.values[rk].value->type == json_string)) - iprs = pool->u.object.values[rk].value->u.string.ptr; - else if ((!strcmp(pool->u.object.values[rk].name,"ipRangeEnd"))&&(pool->u.object.values[rk].value->type == json_string)) - ipre = pool->u.object.values[rk].value->u.string.ptr; - } - } - if ((iprs)&&(ipre)) { - InetAddress iprs2(iprs); - InetAddress ipre2(ipre); - if (iprs2.ss_family == ipre2.ss_family) { - iprs2.setPort(0); - ipre2.setPort(0); - pools.push_back(std::pair(iprs2,ipre2)); - } - } - } - std::sort(pools.begin(),pools.end()); - pools.erase(std::unique(pools.begin(),pools.end()),pools.end()); - - sqlite3_reset(_sDeleteIpAssignmentPoolsForNetwork); - sqlite3_bind_text(_sDeleteIpAssignmentPoolsForNetwork,1,nwids,16,SQLITE_STATIC); - sqlite3_step(_sDeleteIpAssignmentPoolsForNetwork); - - for(std::vector< std::pair >::const_iterator p(pools.begin());p!=pools.end();++p) { - char ipBlob1[16],ipBlob2[16]; - sqlite3_reset(_sCreateIpAssignmentPool); - sqlite3_bind_text(_sCreateIpAssignmentPool,1,nwids,16,SQLITE_STATIC); - if (p->first.ss_family == AF_INET) { - memset(ipBlob1,0,12); - memcpy(ipBlob1 + 12,p->first.rawIpData(),4); - memset(ipBlob2,0,12); - memcpy(ipBlob2 + 12,p->second.rawIpData(),4); - sqlite3_bind_blob(_sCreateIpAssignmentPool,2,(const void *)ipBlob1,16,SQLITE_STATIC); - sqlite3_bind_blob(_sCreateIpAssignmentPool,3,(const void *)ipBlob2,16,SQLITE_STATIC); - sqlite3_bind_int(_sCreateIpAssignmentPool,4,4); - } else if (p->first.ss_family == AF_INET6) { - sqlite3_bind_blob(_sCreateIpAssignmentPool,2,p->first.rawIpData(),16,SQLITE_STATIC); - sqlite3_bind_blob(_sCreateIpAssignmentPool,3,p->second.rawIpData(),16,SQLITE_STATIC); - sqlite3_bind_int(_sCreateIpAssignmentPool,4,6); - } else continue; - sqlite3_step(_sCreateIpAssignmentPool); - } - } - } else if (!strcmp(j->u.object.values[k].name,"rules")) { - if (j->u.object.values[k].value->type == json_array) { - sqlite3_reset(_sDeleteRulesForNetwork); - sqlite3_bind_text(_sDeleteRulesForNetwork,1,nwids,16,SQLITE_STATIC); - sqlite3_step(_sDeleteRulesForNetwork); - - for(unsigned int kk=0;kku.object.values[k].value->u.array.length;++kk) { - json_value *rj = j->u.object.values[k].value->u.array.values[kk]; - if ((rj)&&(rj->type == json_object)) { - struct { // NULL pointers indicate missing or NULL -- wildcards - const json_int_t *ruleNo; - const char *nodeId; - const char *sourcePort; - const char *destPort; - const json_int_t *vlanId; - const json_int_t *vlanPcp; - const json_int_t *etherType; - const char *macSource; - const char *macDest; - const char *ipSource; - const char *ipDest; - const json_int_t *ipTos; - const json_int_t *ipProtocol; - const json_int_t *ipSourcePort; - const json_int_t *ipDestPort; - const json_int_t *flags; - const json_int_t *invFlags; - const char *action; - } rule; - memset(&rule,0,sizeof(rule)); - - for(unsigned int rk=0;rku.object.length;++rk) { - if ((!strcmp(rj->u.object.values[rk].name,"ruleNo"))&&(rj->u.object.values[rk].value->type == json_integer)) - rule.ruleNo = &(rj->u.object.values[rk].value->u.integer); - else if ((!strcmp(rj->u.object.values[rk].name,"nodeId"))&&(rj->u.object.values[rk].value->type == json_string)) - rule.nodeId = rj->u.object.values[rk].value->u.string.ptr; - else if ((!strcmp(rj->u.object.values[rk].name,"sourcePort"))&&(rj->u.object.values[rk].value->type == json_string)) - rule.sourcePort = rj->u.object.values[rk].value->u.string.ptr; - else if ((!strcmp(rj->u.object.values[rk].name,"destPort"))&&(rj->u.object.values[rk].value->type == json_string)) - rule.destPort = rj->u.object.values[rk].value->u.string.ptr; - else if ((!strcmp(rj->u.object.values[rk].name,"vlanId"))&&(rj->u.object.values[rk].value->type == json_integer)) - rule.vlanId = &(rj->u.object.values[rk].value->u.integer); - else if ((!strcmp(rj->u.object.values[rk].name,"vlanPcp"))&&(rj->u.object.values[rk].value->type == json_integer)) - rule.vlanPcp = &(rj->u.object.values[rk].value->u.integer); - else if ((!strcmp(rj->u.object.values[rk].name,"etherType"))&&(rj->u.object.values[rk].value->type == json_integer)) - rule.etherType = &(rj->u.object.values[rk].value->u.integer); - else if ((!strcmp(rj->u.object.values[rk].name,"macSource"))&&(rj->u.object.values[rk].value->type == json_string)) - rule.macSource = rj->u.object.values[rk].value->u.string.ptr; - else if ((!strcmp(rj->u.object.values[rk].name,"macDest"))&&(rj->u.object.values[rk].value->type == json_string)) - rule.macDest = rj->u.object.values[rk].value->u.string.ptr; - else if ((!strcmp(rj->u.object.values[rk].name,"ipSource"))&&(rj->u.object.values[rk].value->type == json_string)) - rule.ipSource = rj->u.object.values[rk].value->u.string.ptr; - else if ((!strcmp(rj->u.object.values[rk].name,"ipDest"))&&(rj->u.object.values[rk].value->type == json_string)) - rule.ipDest = rj->u.object.values[rk].value->u.string.ptr; - else if ((!strcmp(rj->u.object.values[rk].name,"ipTos"))&&(rj->u.object.values[rk].value->type == json_integer)) - rule.ipTos = &(rj->u.object.values[rk].value->u.integer); - else if ((!strcmp(rj->u.object.values[rk].name,"ipProtocol"))&&(rj->u.object.values[rk].value->type == json_integer)) - rule.ipProtocol = &(rj->u.object.values[rk].value->u.integer); - else if ((!strcmp(rj->u.object.values[rk].name,"ipSourcePort"))&&(rj->u.object.values[rk].value->type == json_integer)) - rule.ipSourcePort = &(rj->u.object.values[rk].value->u.integer); - else if ((!strcmp(rj->u.object.values[rk].name,"ipDestPort"))&&(rj->u.object.values[rk].value->type == json_integer)) - rule.ipDestPort = &(rj->u.object.values[rk].value->u.integer); - else if ((!strcmp(rj->u.object.values[rk].name,"flags"))&&(rj->u.object.values[rk].value->type == json_integer)) - rule.flags = &(rj->u.object.values[rk].value->u.integer); - else if ((!strcmp(rj->u.object.values[rk].name,"invFlags"))&&(rj->u.object.values[rk].value->type == json_integer)) - rule.invFlags = &(rj->u.object.values[rk].value->u.integer); - else if ((!strcmp(rj->u.object.values[rk].name,"action"))&&(rj->u.object.values[rk].value->type == json_string)) - rule.action = rj->u.object.values[rk].value->u.string.ptr; - } - - if ((rule.ruleNo)&&(rule.action)&&(rule.action[0])) { - char mactmp1[16],mactmp2[16]; - sqlite3_reset(_sCreateRule); - sqlite3_bind_text(_sCreateRule,1,nwids,16,SQLITE_STATIC); - sqlite3_bind_int64(_sCreateRule,2,*rule.ruleNo); - - // Optional values: null by default - for(int i=3;i<=18;++i) - sqlite3_bind_null(_sCreateRule,i); - if ((rule.nodeId)&&(strlen(rule.nodeId) == 10)) sqlite3_bind_text(_sCreateRule,3,rule.nodeId,10,SQLITE_STATIC); - if ((rule.sourcePort)&&(strlen(rule.sourcePort) == 10)) sqlite3_bind_text(_sCreateRule,4,rule.sourcePort,10,SQLITE_STATIC); - if ((rule.destPort)&&(strlen(rule.destPort) == 10)) sqlite3_bind_text(_sCreateRule,5,rule.destPort,10,SQLITE_STATIC); - if (rule.vlanId) sqlite3_bind_int(_sCreateRule,6,(int)*rule.vlanId); - if (rule.vlanPcp) sqlite3_bind_int(_sCreateRule,7,(int)*rule.vlanPcp); - if (rule.etherType) sqlite3_bind_int(_sCreateRule,8,(int)*rule.etherType & (int)0xffff); - if (rule.macSource) { - MAC m(rule.macSource); - Utils::snprintf(mactmp1,sizeof(mactmp1),"%.12llx",(unsigned long long)m.toInt()); - sqlite3_bind_text(_sCreateRule,9,mactmp1,-1,SQLITE_STATIC); - } - if (rule.macDest) { - MAC m(rule.macDest); - Utils::snprintf(mactmp2,sizeof(mactmp2),"%.12llx",(unsigned long long)m.toInt()); - sqlite3_bind_text(_sCreateRule,10,mactmp2,-1,SQLITE_STATIC); - } - if (rule.ipSource) sqlite3_bind_text(_sCreateRule,11,rule.ipSource,-1,SQLITE_STATIC); - if (rule.ipDest) sqlite3_bind_text(_sCreateRule,12,rule.ipDest,-1,SQLITE_STATIC); - if (rule.ipTos) sqlite3_bind_int(_sCreateRule,13,(int)*rule.ipTos); - if (rule.ipProtocol) sqlite3_bind_int(_sCreateRule,14,(int)*rule.ipProtocol); - if (rule.ipSourcePort) sqlite3_bind_int(_sCreateRule,15,(int)*rule.ipSourcePort & (int)0xffff); - if (rule.ipDestPort) sqlite3_bind_int(_sCreateRule,16,(int)*rule.ipDestPort & (int)0xffff); - if (rule.flags) sqlite3_bind_int64(_sCreateRule,17,(int64_t)*rule.flags); - if (rule.invFlags) sqlite3_bind_int64(_sCreateRule,18,(int64_t)*rule.invFlags); - - sqlite3_bind_text(_sCreateRule,19,rule.action,-1,SQLITE_STATIC); - sqlite3_step(_sCreateRule); - } - } - } - } - } - - if (stmt) { - sqlite3_bind_text(stmt,2,nwids,16,SQLITE_STATIC); - sqlite3_step(stmt); - sqlite3_finalize(stmt); - } - } - } - json_value_free(j); - } - - sqlite3_reset(_sSetNetworkRevision); - sqlite3_bind_int64(_sSetNetworkRevision,1,revision += 1); - sqlite3_bind_text(_sSetNetworkRevision,2,nwids,16,SQLITE_STATIC); - sqlite3_step(_sSetNetworkRevision); - - return _doCPGet(path_copy,urlArgs,headers,body,responseBody,responseContentType); - } - - } // else 404 - - } // else 404 - - return 404; -} - -unsigned int SqliteNetworkController::handleControlPlaneHttpDELETE( - const std::vector &path, - const std::map &urlArgs, - const std::map &headers, - const std::string &body, - std::string &responseBody, - std::string &responseContentType) -{ - if (path.empty()) - return 404; - Mutex::Lock _l(_lock); - - _backupNeeded = true; - - if (path[0] == "network") { - - if ((path.size() >= 2)&&(path[1].length() == 16)) { - uint64_t nwid = Utils::hexStrToU64(path[1].c_str()); - char nwids[24]; - Utils::snprintf(nwids,sizeof(nwids),"%.16llx",(unsigned long long)nwid); - - sqlite3_reset(_sGetNetworkById); - sqlite3_bind_text(_sGetNetworkById,1,nwids,16,SQLITE_STATIC); - if (sqlite3_step(_sGetNetworkById) != SQLITE_ROW) - return 404; - - if (path.size() >= 3) { - - if ((path.size() == 4)&&(path[2] == "member")&&(path[3].length() == 10)) { - uint64_t address = Utils::hexStrToU64(path[3].c_str()); - char addrs[24]; - Utils::snprintf(addrs,sizeof(addrs),"%.10llx",address); - - sqlite3_reset(_sGetMember); - sqlite3_bind_text(_sGetMember,1,nwids,16,SQLITE_STATIC); - sqlite3_bind_text(_sGetMember,2,addrs,10,SQLITE_STATIC); - if (sqlite3_step(_sGetMember) != SQLITE_ROW) - return 404; - - sqlite3_reset(_sDeleteIpAllocations); - sqlite3_bind_text(_sDeleteIpAllocations,1,nwids,16,SQLITE_STATIC); - sqlite3_bind_text(_sDeleteIpAllocations,2,addrs,10,SQLITE_STATIC); - sqlite3_bind_int(_sDeleteIpAllocations,3,(int)0 /*ZT_IP_ASSIGNMENT_TYPE_ADDRESS*/); - if (sqlite3_step(_sDeleteIpAllocations) == SQLITE_DONE) { - sqlite3_reset(_sDeleteMember); - sqlite3_bind_text(_sDeleteMember,1,nwids,16,SQLITE_STATIC); - sqlite3_bind_text(_sDeleteMember,2,addrs,10,SQLITE_STATIC); - if (sqlite3_step(_sDeleteMember) != SQLITE_DONE) - return 500; - } else return 500; - - return 200; - } - - } else { - - sqlite3_reset(_sDeleteNetwork); - sqlite3_bind_text(_sDeleteNetwork,1,nwids,16,SQLITE_STATIC); - if (sqlite3_step(_sDeleteNetwork) == SQLITE_DONE) { - sqlite3_reset(_sDeleteAllNetworkMembers); - sqlite3_bind_text(_sDeleteAllNetworkMembers,1,nwids,16,SQLITE_STATIC); - sqlite3_step(_sDeleteAllNetworkMembers); - return 200; - } else return 500; - - } - } // else 404 - - } // else 404 - - return 404; -} - -void SqliteNetworkController::threadMain() - throw() -{ - uint64_t lastBackupTime = OSUtils::now(); - uint64_t lastCleanupTime = OSUtils::now(); - - while (_backupThreadRun) { - if ((OSUtils::now() - lastCleanupTime) >= 5000) { - const uint64_t now = OSUtils::now(); - lastCleanupTime = now; - - Mutex::Lock _l(_lock); - - // Clean out really old circuit tests to prevent memory build-up - for(std::map< uint64_t,_CircuitTestEntry >::iterator ct(_circuitTests.begin());ct!=_circuitTests.end();) { - if (!ct->second.test) { - _circuitTests.erase(ct++); - } else if ((now - ct->second.test->timestamp) >= ZT_SQLITENETWORKCONTROLLER_CIRCUIT_TEST_TIMEOUT) { - _node->circuitTestEnd(ct->second.test); - ::free((void *)ct->second.test); - _circuitTests.erase(ct++); - } else ++ct; - } - } - - if (((OSUtils::now() - lastBackupTime) >= ZT_NETCONF_BACKUP_PERIOD)&&(_backupNeeded)) { - lastBackupTime = OSUtils::now(); - - char backupPath[4096],backupPath2[4096]; - Utils::snprintf(backupPath,sizeof(backupPath),"%s.backupInProgress",_dbPath.c_str()); - Utils::snprintf(backupPath2,sizeof(backupPath),"%s.backup",_dbPath.c_str()); - OSUtils::rm(backupPath); // delete any unfinished backups - - sqlite3 *bakdb = (sqlite3 *)0; - sqlite3_backup *bak = (sqlite3_backup *)0; - if (sqlite3_open_v2(backupPath,&bakdb,SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE,(const char *)0) != SQLITE_OK) { - fprintf(stderr,"SqliteNetworkController: CRITICAL: backup failed on sqlite3_open_v2()"ZT_EOL_S); - continue; - } - bak = sqlite3_backup_init(bakdb,"main",_db,"main"); - if (!bak) { - sqlite3_close(bakdb); - OSUtils::rm(backupPath); // delete any unfinished backups - fprintf(stderr,"SqliteNetworkController: CRITICAL: backup failed on sqlite3_backup_init()"ZT_EOL_S); - continue; - } - - int rc = SQLITE_OK; - for(;;) { - if (!_backupThreadRun) { - sqlite3_backup_finish(bak); - sqlite3_close(bakdb); - OSUtils::rm(backupPath); - return; - } - _lock.lock(); - rc = sqlite3_backup_step(bak,64); - _lock.unlock(); - if ((rc == SQLITE_OK)||(rc == SQLITE_LOCKED)||(rc == SQLITE_BUSY)) - Thread::sleep(50); - else break; - } - - sqlite3_backup_finish(bak); - sqlite3_close(bakdb); - - OSUtils::rm(backupPath2); - ::rename(backupPath,backupPath2); - - _backupNeeded = false; - } - - Thread::sleep(250); - } -} - -unsigned int SqliteNetworkController::_doCPGet( - const std::vector &path, - const std::map &urlArgs, - const std::map &headers, - const std::string &body, - std::string &responseBody, - std::string &responseContentType) -{ - // Assumes _lock is locked - char json[65536]; - - if ((path.size() > 0)&&(path[0] == "network")) { - - if ((path.size() >= 2)&&(path[1].length() == 16)) { - uint64_t nwid = Utils::hexStrToU64(path[1].c_str()); - char nwids[24]; - Utils::snprintf(nwids,sizeof(nwids),"%.16llx",(unsigned long long)nwid); - - if (path.size() >= 3) { - // /network//... - - if (path[2] == "member") { - - if (path.size() >= 4) { - // Get specific member info - - uint64_t address = Utils::hexStrToU64(path[3].c_str()); - char addrs[24]; - Utils::snprintf(addrs,sizeof(addrs),"%.10llx",address); - - sqlite3_reset(_sGetMember2); - sqlite3_bind_text(_sGetMember2,1,nwids,16,SQLITE_STATIC); - sqlite3_bind_text(_sGetMember2,2,addrs,10,SQLITE_STATIC); - if (sqlite3_step(_sGetMember2) == SQLITE_ROW) { - const char *memberIdStr = (const char *)sqlite3_column_text(_sGetMember2,3); - - Utils::snprintf(json,sizeof(json), - "{\n" - "\t\"nwid\": \"%s\",\n" - "\t\"address\": \"%s\",\n" - "\t\"controllerInstanceId\": \"%s\",\n" - "\t\"authorized\": %s,\n" - "\t\"activeBridge\": %s,\n" - "\t\"memberRevision\": %llu,\n" - "\t\"clock\": %llu,\n" - "\t\"identity\": \"%s\",\n" - "\t\"ipAssignments\": [", - nwids, - addrs, - _instanceId.c_str(), - (sqlite3_column_int(_sGetMember2,0) > 0) ? "true" : "false", - (sqlite3_column_int(_sGetMember2,1) > 0) ? "true" : "false", - (unsigned long long)sqlite3_column_int64(_sGetMember2,2), - (unsigned long long)OSUtils::now(), - _jsonEscape(memberIdStr).c_str()); - responseBody = json; - - sqlite3_reset(_sGetIpAssignmentsForNode); - sqlite3_bind_text(_sGetIpAssignmentsForNode,1,nwids,16,SQLITE_STATIC); - sqlite3_bind_text(_sGetIpAssignmentsForNode,2,addrs,10,SQLITE_STATIC); - bool firstIp = true; - while (sqlite3_step(_sGetIpAssignmentsForNode) == SQLITE_ROW) { - int ipversion = sqlite3_column_int(_sGetIpAssignmentsForNode,2); - char ipBlob[16]; - memcpy(ipBlob,(const void *)sqlite3_column_blob(_sGetIpAssignmentsForNode,0),16); - InetAddress ip( - (const void *)(ipversion == 6 ? ipBlob : &ipBlob[12]), - (ipversion == 6 ? 16 : 4), - (unsigned int)sqlite3_column_int(_sGetIpAssignmentsForNode,1) - ); - responseBody.append(firstIp ? "\"" : ",\""); - responseBody.append(_jsonEscape(ip.toIpString())); - responseBody.push_back('"'); - firstIp = false; - } - - responseBody.append("],\n\t\"recentLog\": ["); - - const void *histb = sqlite3_column_blob(_sGetMember2,6); - if (histb) { - MemberRecentHistory rh; - rh.fromBlob((const char *)histb,sqlite3_column_bytes(_sGetMember2,6)); - for(MemberRecentHistory::const_iterator i(rh.begin());i!=rh.end();++i) { - if (i != rh.begin()) - responseBody.push_back(','); - responseBody.append(*i); - } - } - - responseBody.append("]\n}\n"); - - responseContentType = "application/json"; - return 200; - } // else 404 - - } else { - // List members - - sqlite3_reset(_sListNetworkMembers); - sqlite3_bind_text(_sListNetworkMembers,1,nwids,16,SQLITE_STATIC); - responseBody.push_back('{'); - bool firstMember = true; - while (sqlite3_step(_sListNetworkMembers) == SQLITE_ROW) { - responseBody.append(firstMember ? "\"" : ",\""); - firstMember = false; - responseBody.append((const char *)sqlite3_column_text(_sListNetworkMembers,0)); - responseBody.append("\":"); - responseBody.append((const char *)sqlite3_column_text(_sListNetworkMembers,1)); - } - responseBody.push_back('}'); - responseContentType = "application/json"; - return 200; - - } - - } else if ((path[2] == "active")&&(path.size() == 3)) { - - sqlite3_reset(_sGetActiveNodesOnNetwork); - sqlite3_bind_text(_sGetActiveNodesOnNetwork,1,nwids,16,SQLITE_STATIC); - sqlite3_bind_int64(_sGetActiveNodesOnNetwork,2,(int64_t)(OSUtils::now() - ZT_NETCONF_NODE_ACTIVE_THRESHOLD)); - - responseBody.push_back('{'); - bool firstActiveMember = true; - while (sqlite3_step(_sGetActiveNodesOnNetwork) == SQLITE_ROW) { - const char *nodeId = (const char *)sqlite3_column_text(_sGetActiveNodesOnNetwork,0); - const char *rhblob = (const char *)sqlite3_column_blob(_sGetActiveNodesOnNetwork,1); - if ((nodeId)&&(rhblob)) { - MemberRecentHistory rh; - rh.fromBlob(rhblob,sqlite3_column_bytes(_sGetActiveNodesOnNetwork,1)); - if (rh.size() > 0) { - if (firstActiveMember) { - firstActiveMember = false; - } else { - responseBody.push_back(','); - } - responseBody.push_back('"'); - responseBody.append(nodeId); - responseBody.append("\":"); - responseBody.append(rh.front()); - } - } - } - responseBody.push_back('}'); - - responseContentType = "application/json"; - return 200; - - } else if ((path[2] == "test")&&(path.size() >= 4)) { - - std::map< uint64_t,_CircuitTestEntry >::iterator cte(_circuitTests.find(Utils::hexStrToU64(path[3].c_str()))); - if ((cte != _circuitTests.end())&&(cte->second.test)) { - - responseBody = "["; - responseBody.append(cte->second.jsonResults); - responseBody.push_back(']'); - responseContentType = "application/json"; - - return 200; - - } // else 404 - - } // else 404 - - } else { - - sqlite3_reset(_sGetNetworkById); - sqlite3_bind_text(_sGetNetworkById,1,nwids,16,SQLITE_STATIC); - if (sqlite3_step(_sGetNetworkById) == SQLITE_ROW) { - unsigned int fl = (unsigned int)sqlite3_column_int(_sGetNetworkById,4); - std::string v6modes; - if ((fl & ZT_DB_NETWORK_FLAG_ZT_MANAGED_V6_RFC4193) != 0) - v6modes.append("rfc4193"); - if ((fl & ZT_DB_NETWORK_FLAG_ZT_MANAGED_V6_6PLANE) != 0) { - if (v6modes.length() > 0) - v6modes.push_back(','); - v6modes.append("6plane"); - } - if ((fl & ZT_DB_NETWORK_FLAG_ZT_MANAGED_V6_AUTO_ASSIGN) != 0) { - if (v6modes.length() > 0) - v6modes.push_back(','); - v6modes.append("zt"); - } - - Utils::snprintf(json,sizeof(json), - "{\n" - "\t\"nwid\": \"%s\",\n" - "\t\"controllerInstanceId\": \"%s\",\n" - "\t\"clock\": %llu,\n" - "\t\"name\": \"%s\",\n" - "\t\"private\": %s,\n" - "\t\"enableBroadcast\": %s,\n" - "\t\"allowPassiveBridging\": %s,\n" - "\t\"v4AssignMode\": \"%s\",\n" - "\t\"v6AssignMode\": \"%s\",\n" - "\t\"multicastLimit\": %d,\n" - "\t\"creationTime\": %llu,\n" - "\t\"revision\": %llu,\n" - "\t\"memberRevisionCounter\": %llu,\n" - "\t\"authorizedMemberCount\": %llu,\n" - "\t\"relays\": [", - nwids, - _instanceId.c_str(), - (unsigned long long)OSUtils::now(), - _jsonEscape((const char *)sqlite3_column_text(_sGetNetworkById,0)).c_str(), - (sqlite3_column_int(_sGetNetworkById,1) > 0) ? "true" : "false", - (sqlite3_column_int(_sGetNetworkById,2) > 0) ? "true" : "false", - (sqlite3_column_int(_sGetNetworkById,3) > 0) ? "true" : "false", - (((fl & ZT_DB_NETWORK_FLAG_ZT_MANAGED_V4_AUTO_ASSIGN) != 0) ? "zt" : ""), - v6modes.c_str(), - sqlite3_column_int(_sGetNetworkById,5), - (unsigned long long)sqlite3_column_int64(_sGetNetworkById,6), - (unsigned long long)sqlite3_column_int64(_sGetNetworkById,7), - (unsigned long long)sqlite3_column_int64(_sGetNetworkById,8), - (unsigned long long)sqlite3_column_int64(_sGetNetworkById,9)); - responseBody = json; - - sqlite3_reset(_sGetRelays); - sqlite3_bind_text(_sGetRelays,1,nwids,16,SQLITE_STATIC); - bool firstRelay = true; - while (sqlite3_step(_sGetRelays) == SQLITE_ROW) { - responseBody.append(firstRelay ? "\n\t\t" : ",\n\t\t"); - firstRelay = false; - responseBody.append("{\"address\":\""); - responseBody.append((const char *)sqlite3_column_text(_sGetRelays,0)); - responseBody.append("\",\"phyAddress\":\""); - responseBody.append(_jsonEscape((const char *)sqlite3_column_text(_sGetRelays,1))); - responseBody.append("\"}"); - } - - responseBody.append("],\n\t\"routes\": ["); - - sqlite3_reset(_sGetRoutes); - sqlite3_bind_text(_sGetRoutes,1,nwids,16,SQLITE_STATIC); - bool firstRoute = true; - while (sqlite3_step(_sGetRoutes) == SQLITE_ROW) { - responseBody.append(firstRoute ? "\n\t\t" : ",\n\t\t"); - firstRoute = false; - responseBody.append("{\"target\":"); - char tmp[128]; - const unsigned char *ip = (const unsigned char *)sqlite3_column_blob(_sGetRoutes,0); - switch(sqlite3_column_int(_sGetRoutes,3)) { // ipVersion - case 4: - Utils::snprintf(tmp,sizeof(tmp),"\"%d.%d.%d.%d/%d\"",(int)ip[12],(int)ip[13],(int)ip[14],(int)ip[15],sqlite3_column_int(_sGetRoutes,2)); - break; - case 6: - Utils::snprintf(tmp,sizeof(tmp),"\"%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x/%d\"",(int)ip[0],(int)ip[1],(int)ip[2],(int)ip[3],(int)ip[4],(int)ip[5],(int)ip[6],(int)ip[7],(int)ip[8],(int)ip[9],(int)ip[10],(int)ip[11],(int)ip[12],(int)ip[13],(int)ip[14],(int)ip[15],sqlite3_column_int(_sGetRoutes,2)); - break; - } - responseBody.append(tmp); - if (sqlite3_column_type(_sGetRoutes,1) == SQLITE_NULL) { - responseBody.append(",\"via\":null"); - } else { - responseBody.append(",\"via\":"); - ip = (const unsigned char *)sqlite3_column_blob(_sGetRoutes,1); - switch(sqlite3_column_int(_sGetRoutes,3)) { // ipVersion - case 4: - Utils::snprintf(tmp,sizeof(tmp),"\"%d.%d.%d.%d\"",(int)ip[12],(int)ip[13],(int)ip[14],(int)ip[15]); - break; - case 6: - Utils::snprintf(tmp,sizeof(tmp),"\"%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x\"",(int)ip[0],(int)ip[1],(int)ip[2],(int)ip[3],(int)ip[4],(int)ip[5],(int)ip[6],(int)ip[7],(int)ip[8],(int)ip[9],(int)ip[10],(int)ip[11],(int)ip[12],(int)ip[13],(int)ip[14],(int)ip[15]); - break; - } - responseBody.append(tmp); - } - responseBody.append(",\"flags\":"); - responseBody.append((const char *)sqlite3_column_text(_sGetRoutes,4)); - responseBody.append(",\"metric\":"); - responseBody.append((const char *)sqlite3_column_text(_sGetRoutes,5)); - responseBody.push_back('}'); - } - - responseBody.append("],\n\t\"ipAssignmentPools\": ["); - - sqlite3_reset(_sGetIpAssignmentPools2); - sqlite3_bind_text(_sGetIpAssignmentPools2,1,nwids,16,SQLITE_STATIC); - bool firstIpAssignmentPool = true; - while (sqlite3_step(_sGetIpAssignmentPools2) == SQLITE_ROW) { - const char *ipRangeStartB = reinterpret_cast(sqlite3_column_blob(_sGetIpAssignmentPools2,0)); - const char *ipRangeEndB = reinterpret_cast(sqlite3_column_blob(_sGetIpAssignmentPools2,1)); - if ((ipRangeStartB)&&(ipRangeEndB)) { - InetAddress ipps,ippe; - int ipVersion = sqlite3_column_int(_sGetIpAssignmentPools2,2); - if (ipVersion == 4) { - ipps.set((const void *)(ipRangeStartB + 12),4,0); - ippe.set((const void *)(ipRangeEndB + 12),4,0); - } else if (ipVersion == 6) { - ipps.set((const void *)ipRangeStartB,16,0); - ippe.set((const void *)ipRangeEndB,16,0); - } - if (ipps) { - responseBody.append(firstIpAssignmentPool ? "\n\t\t" : ",\n\t\t"); - firstIpAssignmentPool = false; - Utils::snprintf(json,sizeof(json),"{\"ipRangeStart\":\"%s\",\"ipRangeEnd\":\"%s\"}", - _jsonEscape(ipps.toIpString()).c_str(), - _jsonEscape(ippe.toIpString()).c_str()); - responseBody.append(json); - } - } - } - - responseBody.append("],\n\t\"rules\": ["); - - sqlite3_reset(_sListRules); - sqlite3_bind_text(_sListRules,1,nwids,16,SQLITE_STATIC); - bool firstRule = true; - while (sqlite3_step(_sListRules) == SQLITE_ROW) { - responseBody.append(firstRule ? "\n\t{\n" : ",{\n"); - firstRule = false; - Utils::snprintf(json,sizeof(json),"\t\t\"ruleNo\": %lld,\n",sqlite3_column_int64(_sListRules,0)); - responseBody.append(json); - if (sqlite3_column_type(_sListRules,1) != SQLITE_NULL) { - Utils::snprintf(json,sizeof(json),"\t\t\"nodeId\": \"%s\",\n",(const char *)sqlite3_column_text(_sListRules,1)); - responseBody.append(json); - } - if (sqlite3_column_type(_sListRules,2) != SQLITE_NULL) { - Utils::snprintf(json,sizeof(json),"\t\t\"sourcePort\": \"%s\",\n",(const char *)sqlite3_column_text(_sListRules,2)); - responseBody.append(json); - } - if (sqlite3_column_type(_sListRules,3) != SQLITE_NULL) { - Utils::snprintf(json,sizeof(json),"\t\t\"destPort\": \"%s\",\n",(const char *)sqlite3_column_text(_sListRules,3)); - responseBody.append(json); - } - if (sqlite3_column_type(_sListRules,4) != SQLITE_NULL) { - Utils::snprintf(json,sizeof(json),"\t\t\"vlanId\": %d,\n",sqlite3_column_int(_sListRules,4)); - responseBody.append(json); - } - if (sqlite3_column_type(_sListRules,5) != SQLITE_NULL) { - Utils::snprintf(json,sizeof(json),"\t\t\"vlanPcp\": %d,\n",sqlite3_column_int(_sListRules,5)); - responseBody.append(json); - } - if (sqlite3_column_type(_sListRules,6) != SQLITE_NULL) { - Utils::snprintf(json,sizeof(json),"\t\t\"etherType\": %d,\n",sqlite3_column_int(_sListRules,6)); - responseBody.append(json); - } - if (sqlite3_column_type(_sListRules,7) != SQLITE_NULL) { - Utils::snprintf(json,sizeof(json),"\t\t\"macSource\": \"%s\",\n",MAC((const char *)sqlite3_column_text(_sListRules,7)).toString().c_str()); - responseBody.append(json); - } - if (sqlite3_column_type(_sListRules,8) != SQLITE_NULL) { - Utils::snprintf(json,sizeof(json),"\t\t\"macDest\": \"%s\",\n",MAC((const char *)sqlite3_column_text(_sListRules,8)).toString().c_str()); - responseBody.append(json); - } - if (sqlite3_column_type(_sListRules,9) != SQLITE_NULL) { - Utils::snprintf(json,sizeof(json),"\t\t\"ipSource\": \"%s\",\n",_jsonEscape((const char *)sqlite3_column_text(_sListRules,9)).c_str()); - responseBody.append(json); - } - if (sqlite3_column_type(_sListRules,10) != SQLITE_NULL) { - Utils::snprintf(json,sizeof(json),"\t\t\"ipDest\": \"%s\",\n",_jsonEscape((const char *)sqlite3_column_text(_sListRules,10)).c_str()); - responseBody.append(json); - } - if (sqlite3_column_type(_sListRules,11) != SQLITE_NULL) { - Utils::snprintf(json,sizeof(json),"\t\t\"ipTos\": %d,\n",sqlite3_column_int(_sListRules,11)); - responseBody.append(json); - } - if (sqlite3_column_type(_sListRules,12) != SQLITE_NULL) { - Utils::snprintf(json,sizeof(json),"\t\t\"ipProtocol\": %d,\n",sqlite3_column_int(_sListRules,12)); - responseBody.append(json); - } - if (sqlite3_column_type(_sListRules,13) != SQLITE_NULL) { - Utils::snprintf(json,sizeof(json),"\t\t\"ipSourcePort\": %d,\n",sqlite3_column_int(_sListRules,13)); - responseBody.append(json); - } - if (sqlite3_column_type(_sListRules,14) != SQLITE_NULL) { - Utils::snprintf(json,sizeof(json),"\t\t\"ipDestPort\": %d,\n",sqlite3_column_int(_sListRules,14)); - responseBody.append(json); - } - if (sqlite3_column_type(_sListRules,15) != SQLITE_NULL) { - Utils::snprintf(json,sizeof(json),"\t\t\"flags\": %lu,\n",(unsigned long)sqlite3_column_int64(_sListRules,15)); - responseBody.append(json); - } - if (sqlite3_column_type(_sListRules,16) != SQLITE_NULL) { - Utils::snprintf(json,sizeof(json),"\t\t\"invFlags\": %lu,\n",(unsigned long)sqlite3_column_int64(_sListRules,16)); - responseBody.append(json); - } - responseBody.append("\t\t\"action\": \""); - responseBody.append(_jsonEscape( (sqlite3_column_type(_sListRules,17) == SQLITE_NULL) ? "drop" : (const char *)sqlite3_column_text(_sListRules,17) )); - responseBody.append("\"\n\t}"); - } - - responseBody.append("]\n}\n"); - responseContentType = "application/json"; - return 200; - } // else 404 - } - } else if (path.size() == 1) { - // list networks - sqlite3_reset(_sListNetworks); - responseContentType = "application/json"; - responseBody = "["; - bool first = true; - while (sqlite3_step(_sListNetworks) == SQLITE_ROW) { - if (first) { - first = false; - responseBody.push_back('"'); - } else responseBody.append(",\""); - responseBody.append((const char *)sqlite3_column_text(_sListNetworks,0)); - responseBody.push_back('"'); - } - responseBody.push_back(']'); - return 200; - } // else 404 - - } else { - // GET /controller returns status and API version if controller is supported - Utils::snprintf(json,sizeof(json),"{\n\t\"controller\": true,\n\t\"apiVersion\": %d,\n\t\"clock\": %llu,\n\t\"instanceId\": \"%s\"\n}\n",ZT_NETCONF_CONTROLLER_API_VERSION,(unsigned long long)OSUtils::now(),_instanceId.c_str()); - responseBody = json; - responseContentType = "application/json"; - return 200; - } - - return 404; -} - -void SqliteNetworkController::_circuitTestCallback(ZT_Node *node,ZT_CircuitTest *test,const ZT_CircuitTestReport *report) -{ - char tmp[65535]; - SqliteNetworkController *const self = reinterpret_cast(test->ptr); - - if (!test) - return; - if (!report) - return; - - Mutex::Lock _l(self->_lock); - std::map< uint64_t,_CircuitTestEntry >::iterator cte(self->_circuitTests.find(test->testId)); - - if (cte == self->_circuitTests.end()) { // sanity check: a circuit test we didn't launch? - self->_node->circuitTestEnd(test); - ::free((void *)test); - return; - } - - Utils::snprintf(tmp,sizeof(tmp), - "%s{\n" - "\t\"timestamp\": %llu,"ZT_EOL_S - "\t\"testId\": \"%.16llx\","ZT_EOL_S - "\t\"upstream\": \"%.10llx\","ZT_EOL_S - "\t\"current\": \"%.10llx\","ZT_EOL_S - "\t\"receivedTimestamp\": %llu,"ZT_EOL_S - "\t\"remoteTimestamp\": %llu,"ZT_EOL_S - "\t\"sourcePacketId\": \"%.16llx\","ZT_EOL_S - "\t\"flags\": %llu,"ZT_EOL_S - "\t\"sourcePacketHopCount\": %u,"ZT_EOL_S - "\t\"errorCode\": %u,"ZT_EOL_S - "\t\"vendor\": %d,"ZT_EOL_S - "\t\"protocolVersion\": %u,"ZT_EOL_S - "\t\"majorVersion\": %u,"ZT_EOL_S - "\t\"minorVersion\": %u,"ZT_EOL_S - "\t\"revision\": %u,"ZT_EOL_S - "\t\"platform\": %d,"ZT_EOL_S - "\t\"architecture\": %d,"ZT_EOL_S - "\t\"receivedOnLocalAddress\": \"%s\","ZT_EOL_S - "\t\"receivedFromRemoteAddress\": \"%s\""ZT_EOL_S - "}", - ((cte->second.jsonResults.length() > 0) ? ",\n" : ""), - (unsigned long long)report->timestamp, - (unsigned long long)test->testId, - (unsigned long long)report->upstream, - (unsigned long long)report->current, - (unsigned long long)OSUtils::now(), - (unsigned long long)report->remoteTimestamp, - (unsigned long long)report->sourcePacketId, - (unsigned long long)report->flags, - report->sourcePacketHopCount, - report->errorCode, - (int)report->vendor, - report->protocolVersion, - report->majorVersion, - report->minorVersion, - report->revision, - (int)report->platform, - (int)report->architecture, - reinterpret_cast(&(report->receivedOnLocalAddress))->toString().c_str(), - reinterpret_cast(&(report->receivedFromRemoteAddress))->toString().c_str()); - - cte->second.jsonResults.append(tmp); -} - -} // namespace ZeroTier diff --git a/controller/SqliteNetworkController.hpp b/controller/SqliteNetworkController.hpp deleted file mode 100644 index 145788c..0000000 --- a/controller/SqliteNetworkController.hpp +++ /dev/null @@ -1,181 +0,0 @@ -/* - * ZeroTier One - Network Virtualization Everywhere - * Copyright (C) 2011-2015 ZeroTier, Inc. - * - * 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 . - * - * -- - * - * 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_SQLITENETWORKCONTROLLER_HPP -#define ZT_SQLITENETWORKCONTROLLER_HPP - -#include - -#include - -#include -#include -#include - -#include "../node/Constants.hpp" -#include "../node/NetworkController.hpp" -#include "../node/Mutex.hpp" -#include "../osdep/Thread.hpp" - -// Number of in-memory last log entries to maintain per user -#define ZT_SQLITENETWORKCONTROLLER_IN_MEMORY_LOG_SIZE 32 - -// How long do circuit tests last before they're forgotten? -#define ZT_SQLITENETWORKCONTROLLER_CIRCUIT_TEST_TIMEOUT 60000 - -namespace ZeroTier { - -class Node; - -class SqliteNetworkController : public NetworkController -{ -public: - SqliteNetworkController(Node *node,const char *dbPath,const char *circuitTestPath); - virtual ~SqliteNetworkController(); - - virtual NetworkController::ResultCode doNetworkConfigRequest( - const InetAddress &fromAddr, - const Identity &signingId, - const Identity &identity, - uint64_t nwid, - const Dictionary &metaData, - NetworkConfig &nc); - - unsigned int handleControlPlaneHttpGET( - const std::vector &path, - const std::map &urlArgs, - const std::map &headers, - const std::string &body, - std::string &responseBody, - std::string &responseContentType); - unsigned int handleControlPlaneHttpPOST( - const std::vector &path, - const std::map &urlArgs, - const std::map &headers, - const std::string &body, - std::string &responseBody, - std::string &responseContentType); - unsigned int handleControlPlaneHttpDELETE( - const std::vector &path, - const std::map &urlArgs, - const std::map &headers, - const std::string &body, - std::string &responseBody, - std::string &responseContentType); - - // threadMain() for backup thread -- do not call directly - void threadMain() - throw(); - -private: - /* deprecated - enum IpAssignmentType { - // IP assignment is a static IP address - ZT_IP_ASSIGNMENT_TYPE_ADDRESS = 0, - // IP assignment is a network -- a route via this interface, not an address - ZT_IP_ASSIGNMENT_TYPE_NETWORK = 1 - }; - */ - - unsigned int _doCPGet( - const std::vector &path, - const std::map &urlArgs, - const std::map &headers, - const std::string &body, - std::string &responseBody, - std::string &responseContentType); - - static void _circuitTestCallback(ZT_Node *node,ZT_CircuitTest *test,const ZT_CircuitTestReport *report); - - Node *_node; - Thread _backupThread; - volatile bool _backupThreadRun; - volatile bool _backupNeeded; - std::string _dbPath; - std::string _circuitTestPath; - std::string _instanceId; - - // Circuit tests outstanding - struct _CircuitTestEntry - { - ZT_CircuitTest *test; - std::string jsonResults; - }; - std::map< uint64_t,_CircuitTestEntry > _circuitTests; - - // Last request time by address, for rate limitation - std::map< std::pair,uint64_t > _lastRequestTime; - - sqlite3 *_db; - - sqlite3_stmt *_sGetNetworkById; - sqlite3_stmt *_sGetMember; - sqlite3_stmt *_sCreateMember; - sqlite3_stmt *_sGetNodeIdentity; - sqlite3_stmt *_sCreateOrReplaceNode; - sqlite3_stmt *_sGetEtherTypesFromRuleTable; - sqlite3_stmt *_sGetActiveBridges; - sqlite3_stmt *_sGetIpAssignmentsForNode; - sqlite3_stmt *_sGetIpAssignmentPools; - sqlite3_stmt *_sCheckIfIpIsAllocated; - sqlite3_stmt *_sAllocateIp; - sqlite3_stmt *_sDeleteIpAllocations; - sqlite3_stmt *_sGetRelays; - sqlite3_stmt *_sListNetworks; - sqlite3_stmt *_sListNetworkMembers; - sqlite3_stmt *_sGetMember2; - sqlite3_stmt *_sGetIpAssignmentPools2; - sqlite3_stmt *_sListRules; - sqlite3_stmt *_sCreateRule; - sqlite3_stmt *_sCreateNetwork; - sqlite3_stmt *_sGetNetworkRevision; - sqlite3_stmt *_sSetNetworkRevision; - sqlite3_stmt *_sDeleteRelaysForNetwork; - sqlite3_stmt *_sCreateRelay; - sqlite3_stmt *_sDeleteIpAssignmentPoolsForNetwork; - sqlite3_stmt *_sDeleteRulesForNetwork; - sqlite3_stmt *_sCreateIpAssignmentPool; - sqlite3_stmt *_sUpdateMemberAuthorized; - sqlite3_stmt *_sUpdateMemberActiveBridge; - sqlite3_stmt *_sUpdateMemberHistory; - sqlite3_stmt *_sDeleteMember; - sqlite3_stmt *_sDeleteAllNetworkMembers; - sqlite3_stmt *_sGetActiveNodesOnNetwork; - sqlite3_stmt *_sDeleteNetwork; - sqlite3_stmt *_sCreateRoute; - sqlite3_stmt *_sGetRoutes; - sqlite3_stmt *_sDeleteRoutes; - sqlite3_stmt *_sIncrementMemberRevisionCounter; - sqlite3_stmt *_sGetConfig; - sqlite3_stmt *_sSetConfig; - - Mutex _lock; -}; - -} // namespace ZeroTier - -#endif diff --git a/controller/migrate-sqlite/migrate.js b/controller/migrate-sqlite/migrate.js new file mode 100644 index 0000000..ac9678a --- /dev/null +++ b/controller/migrate-sqlite/migrate.js @@ -0,0 +1,320 @@ +'use strict'; + +var sqlite3 = require('sqlite3').verbose(); +var fs = require('fs'); +var async = require('async'); + +function blobToIPv4(b) +{ + if (!b) + return null; + if (b.length !== 16) + return null; + return b.readUInt8(12).toString()+'.'+b.readUInt8(13).toString()+'.'+b.readUInt8(14).toString()+'.'+b.readUInt8(15).toString(); +} +function blobToIPv6(b) +{ + if (!b) + return null; + if (b.length !== 16) + return null; + var s = ''; + for(var i=0;i<16;++i) { + var x = b.readUInt8(i).toString(16); + if (x.length === 1) + s += '0'; + s += x; + if ((((i+1) & 1) === 0)&&(i !== 15)) + s += ':'; + } + return s; +} + +if (process.argv.length !== 4) { + console.log('ZeroTier Old Sqlite3 Controller DB Migration Utility'); + console.log('(c)2017 ZeroTier, Inc. [GPL3]'); + console.log(''); + console.log('Usage: node migrate.js '); + console.log(''); + console.log('The first argument must be the path to the old Sqlite3 controller.db'); + console.log('file. The second must be the path to the EMPTY controller.d database'); + console.log('directory for a new (1.1.17 or newer) controller. If this path does'); + console.log('not exist it will be created.'); + console.log(''); + console.log('WARNING: this will ONLY work correctly on a 1.1.14 controller database.'); + console.log('If your controller is old you should first upgrade to 1.1.14 and run the'); + console.log('controller so that it will brings its Sqlite3 database up to the latest'); + console.log('version before running this migration.'); + console.log(''); + process.exit(1); +} + +var oldDbPath = process.argv[2]; +var newDbPath = process.argv[3]; + +console.log('Starting migrate of "'+oldDbPath+'" to "'+newDbPath+'"...'); +console.log(''); + +var old = new sqlite3.Database(oldDbPath); + +var networks = {}; + +var nodeIdentities = {}; +var networkCount = 0; +var memberCount = 0; +var routeCount = 0; +var ipAssignmentPoolCount = 0; +var ipAssignmentCount = 0; +var ruleCount = 0; +var oldSchemaVersion = -1; + +async.series([function(nextStep) { + + old.each('SELECT v from Config WHERE k = \'schemaVersion\'',function(err,row) { + oldSchemaVersion = parseInt(row.v)||-1; + },nextStep); + +},function(nextStep) { + + if (oldSchemaVersion !== 4) { + console.log('FATAL: this MUST be run on a 1.1.14 controller.db! Upgrade your old'); + console.log('controller to 1.1.14 first and run it once to bring its DB up to date.'); + return process.exit(1); + } + + console.log('Reading networks...'); + old.each('SELECT * FROM Network',function(err,row) { + if ((typeof row.id === 'string')&&(row.id.length === 16)) { + var flags = parseInt(row.flags)||0; + networks[row.id] = { + id: row.id, + nwid: row.id, + objtype: 'network', + authTokens: [], + capabilities: [], + creationTime: parseInt(row.creationTime)||0, + enableBroadcast: !!row.enableBroadcast, + ipAssignmentPools: [], + lastModified: Date.now(), + multicastLimit: row.multicastLimit||32, + name: row.name||'', + private: !!row.private, + revision: parseInt(row.revision)||1, + rules: [{ 'type': 'ACTION_ACCEPT' }], // populated later if there are defined rules, otherwise default is allow all + routes: [], + v4AssignMode: { + 'zt': ((flags & 1) !== 0) + }, + v6AssignMode: { + '6plane': ((flags & 4) !== 0), + 'rfc4193': ((flags & 2) !== 0), + 'zt': ((flags & 8) !== 0) + }, + _members: {} // temporary + }; + ++networkCount; + //console.log(networks[row.id]); + } + },nextStep); + +},function(nextStep) { + + console.log(' '+networkCount+' networks.'); + console.log('Reading network route definitions...'); + old.each('SELECT * from Route WHERE ipVersion = 4 OR ipVersion = 6',function(err,row) { + var network = networks[row.networkId]; + if (network) { + var rt = { + target: (((row.ipVersion == 4) ? blobToIPv4(row.target) : blobToIPv6(row.target))+'/'+row.targetNetmaskBits), + via: ((row.via) ? ((row.ipVersion == 4) ? blobToIPv4(row.via) : blobToIPv6(row.via)) : null) + }; + network.routes.push(rt); + ++routeCount; + } + },nextStep); + +},function(nextStep) { + + console.log(' '+routeCount+' routes in '+networkCount+' networks.'); + console.log('Reading IP assignment pools...'); + old.each('SELECT * FROM IpAssignmentPool WHERE ipVersion = 4 OR ipVersion = 6',function(err,row) { + var network = networks[row.networkId]; + if (network) { + var p = { + ipRangeStart: ((row.ipVersion == 4) ? blobToIPv4(row.ipRangeStart) : blobToIPv6(row.ipRangeStart)), + ipRangeEnd: ((row.ipVersion == 4) ? blobToIPv4(row.ipRangeEnd) : blobToIPv6(row.ipRangeEnd)) + }; + network.ipAssignmentPools.push(p); + ++ipAssignmentPoolCount; + } + },nextStep); + +},function(nextStep) { + + console.log(' '+ipAssignmentPoolCount+' IP assignment pools in '+networkCount+' networks.'); + console.log('Reading known node identities...'); + old.each('SELECT * FROM Node',function(err,row) { + nodeIdentities[row.id] = row.identity; + },nextStep); + +},function(nextStep) { + + console.log(' '+Object.keys(nodeIdentities).length+' known identities.'); + console.log('Reading network members...'); + old.each('SELECT * FROM Member',function(err,row) { + var network = networks[row.networkId]; + if (network) { + network._members[row.nodeId] = { + id: row.nodeId, + address: row.nodeId, + objtype: 'member', + authorized: !!row.authorized, + activeBridge: !!row.activeBridge, + authHistory: [], + capabilities: [], + creationTime: 0, + identity: nodeIdentities[row.nodeId]||null, + ipAssignments: [], + lastAuthorizedTime: (row.authorized) ? Date.now() : 0, + lastDeauthorizedTime: (row.authorized) ? 0 : Date.now(), + lastModified: Date.now(), + lastRequestMetaData: '', + noAutoAssignIps: false, + nwid: row.networkId, + revision: parseInt(row.memberRevision)||1, + tags: [], + recentLog: [] + }; + ++memberCount; + //console.log(network._members[row.nodeId]); + } + },nextStep); + +},function(nextStep) { + + console.log(' '+memberCount+' members of '+networkCount+' networks.'); + console.log('Reading static IP assignments...'); + old.each('SELECT * FROM IpAssignment WHERE ipVersion = 4 OR ipVersion = 6',function(err,row) { + var network = networks[row.networkId]; + if (network) { + var member = network._members[row.nodeId]; + if ((member)&&((member.authorized)||(!network['private']))) { // don't mirror assignments to unauthorized members to avoid conflicts + if (row.ipVersion == 4) { + member.ipAssignments.push(blobToIPv4(row.ip)); + ++ipAssignmentCount; + } else if (row.ipVersion == 6) { + member.ipAssignments.push(blobToIPv6(row.ip)); + ++ipAssignmentCount; + } + } + } + },nextStep); + +},function(nextStep) { + + // Old versions only supported Ethertype whitelisting, so that's + // all we mirror forward. The other fields were always unused. + + console.log(' '+ipAssignmentCount+' IP assignments for '+memberCount+' authorized members of '+networkCount+' networks.'); + console.log('Reading allowed Ethernet types (old basic rules)...'); + var etherTypesByNetwork = {}; + old.each('SELECT DISTINCT networkId,ruleNo,etherType FROM Rule WHERE "action" = \'accept\'',function(err,row) { + if (row.networkId in networks) { + var et = parseInt(row.etherType)||0; + var ets = etherTypesByNetwork[row.networkId]; + if (!ets) + etherTypesByNetwork[row.networkId] = [ et ]; + else ets.push(et); + } + },function(err) { + if (err) return nextStep(err); + for(var nwid in etherTypesByNetwork) { + var ets = etherTypesByNetwork[nwid].sort(); + var network = networks[nwid]; + if (network) { + var rules = []; + if (ets.indexOf(0) >= 0) { + // If 0 is in the list, all Ethernet types are allowed so we accept all. + rules.push({ 'type': 'ACTION_ACCEPT' }); + } else { + // Otherwise we whitelist. + for(var i=0;i 0) { + try { + fs.mkdirSync(nwBase+network.id); + } catch (e) {} + var mbase = nwBase+network.id+'/member'; + try { + fs.mkdirSync(mbase,0o700); + } catch (e) {} + mbase = mbase + '/'; + + for(var mi=0;mi", + "license": "GPL-3.0", + "dependencies": { + "async": "^2.1.4", + "sqlite3": "^3.1.8" + } +} diff --git a/controller/schema.sql.c b/controller/schema.sql.c deleted file mode 100644 index dab3413..0000000 --- a/controller/schema.sql.c +++ /dev/null @@ -1,121 +0,0 @@ -#define ZT_NETCONF_SCHEMA_SQL \ -"CREATE TABLE Config (\n"\ -" k varchar(16) PRIMARY KEY NOT NULL,\n"\ -" v varchar(1024) NOT NULL\n"\ -");\n"\ -"\n"\ -"CREATE TABLE Network (\n"\ -" id char(16) PRIMARY KEY NOT NULL,\n"\ -" name varchar(128) NOT NULL,\n"\ -" private integer NOT NULL DEFAULT(1),\n"\ -" enableBroadcast integer NOT NULL DEFAULT(1),\n"\ -" allowPassiveBridging integer NOT NULL DEFAULT(0),\n"\ -" multicastLimit integer NOT NULL DEFAULT(32),\n"\ -" creationTime integer NOT NULL DEFAULT(0),\n"\ -" revision integer NOT NULL DEFAULT(1),\n"\ -" memberRevisionCounter integer NOT NULL DEFAULT(1),\n"\ -" flags integer NOT NULL DEFAULT(0)\n"\ -");\n"\ -"\n"\ -"CREATE TABLE AuthToken (\n"\ -" id integer PRIMARY KEY NOT NULL,\n"\ -" networkId char(16) NOT NULL REFERENCES Network(id) ON DELETE CASCADE,\n"\ -" authMode integer NOT NULL DEFAULT(1),\n"\ -" useCount integer NOT NULL DEFAULT(0),\n"\ -" maxUses integer NOT NULL DEFAULT(0),\n"\ -" expiresAt integer NOT NULL DEFAULT(0),\n"\ -" token varchar(256) NOT NULL\n"\ -");\n"\ -"\n"\ -"CREATE INDEX AuthToken_networkId_token ON AuthToken(networkId,token);\n"\ -"\n"\ -"CREATE TABLE Node (\n"\ -" id char(10) PRIMARY KEY NOT NULL,\n"\ -" identity varchar(4096) NOT NULL\n"\ -");\n"\ -"\n"\ -"CREATE TABLE IpAssignment (\n"\ -" networkId char(16) NOT NULL REFERENCES Network(id) ON DELETE CASCADE,\n"\ -" nodeId char(10) REFERENCES Node(id) ON DELETE CASCADE,\n"\ -" type integer NOT NULL DEFAULT(0),\n"\ -" ip blob(16) NOT NULL,\n"\ -" ipNetmaskBits integer NOT NULL DEFAULT(0),\n"\ -" ipVersion integer NOT NULL DEFAULT(4)\n"\ -");\n"\ -"\n"\ -"CREATE UNIQUE INDEX IpAssignment_networkId_ip ON IpAssignment (networkId, ip);\n"\ -"\n"\ -"CREATE INDEX IpAssignment_networkId_nodeId ON IpAssignment (networkId, nodeId);\n"\ -"\n"\ -"CREATE TABLE IpAssignmentPool (\n"\ -" networkId char(16) NOT NULL REFERENCES Network(id) ON DELETE CASCADE,\n"\ -" ipRangeStart blob(16) NOT NULL,\n"\ -" ipRangeEnd blob(16) NOT NULL,\n"\ -" ipVersion integer NOT NULL DEFAULT(4)\n"\ -");\n"\ -"\n"\ -"CREATE UNIQUE INDEX IpAssignmentPool_networkId_ipRangeStart ON IpAssignmentPool (networkId,ipRangeStart);\n"\ -"\n"\ -"CREATE TABLE Member (\n"\ -" networkId char(16) NOT NULL REFERENCES Network(id) ON DELETE CASCADE,\n"\ -" nodeId char(10) NOT NULL REFERENCES Node(id) ON DELETE CASCADE,\n"\ -" authorized integer NOT NULL DEFAULT(0),\n"\ -" activeBridge integer NOT NULL DEFAULT(0),\n"\ -" memberRevision integer NOT NULL DEFAULT(0),\n"\ -" flags integer NOT NULL DEFAULT(0),\n"\ -" lastRequestTime integer NOT NULL DEFAULT(0),\n"\ -" lastPowDifficulty integer NOT NULL DEFAULT(0),\n"\ -" lastPowTime integer NOT NULL DEFAULT(0),\n"\ -" recentHistory blob,\n"\ -" PRIMARY KEY (networkId, nodeId)\n"\ -");\n"\ -"\n"\ -"CREATE INDEX Member_networkId_nodeId ON Member(networkId,nodeId);\n"\ -"CREATE INDEX Member_networkId_activeBridge ON Member(networkId, activeBridge);\n"\ -"CREATE INDEX Member_networkId_memberRevision ON Member(networkId, memberRevision);\n"\ -"CREATE INDEX Member_networkId_lastRequestTime ON Member(networkId, lastRequestTime);\n"\ -"\n"\ -"CREATE TABLE Route (\n"\ -" networkId char(16) NOT NULL REFERENCES Network(id) ON DELETE CASCADE,\n"\ -" target blob(16) NOT NULL,\n"\ -" via blob(16),\n"\ -" targetNetmaskBits integer NOT NULL,\n"\ -" ipVersion integer NOT NULL,\n"\ -" flags integer NOT NULL,\n"\ -" metric integer NOT NULL\n"\ -");\n"\ -"\n"\ -"CREATE INDEX Route_networkId ON Route (networkId);\n"\ -"\n"\ -"CREATE TABLE Relay (\n"\ -" networkId char(16) NOT NULL REFERENCES Network(id) ON DELETE CASCADE,\n"\ -" address char(10) NOT NULL,\n"\ -" phyAddress varchar(64) NOT NULL\n"\ -");\n"\ -"\n"\ -"CREATE UNIQUE INDEX Relay_networkId_address ON Relay (networkId,address);\n"\ -"\n"\ -"CREATE TABLE Rule (\n"\ -" networkId char(16) NOT NULL REFERENCES Network(id) ON DELETE CASCADE,\n"\ -" ruleNo integer NOT NULL,\n"\ -" nodeId char(10) REFERENCES Node(id),\n"\ -" sourcePort char(10),\n"\ -" destPort char(10),\n"\ -" vlanId integer,\n"\ -" vlanPcp integer,\n"\ -" etherType integer,\n"\ -" macSource char(12),\n"\ -" macDest char(12),\n"\ -" ipSource varchar(64),\n"\ -" ipDest varchar(64),\n"\ -" ipTos integer,\n"\ -" ipProtocol integer,\n"\ -" ipSourcePort integer,\n"\ -" ipDestPort integer,\n"\ -" flags integer,\n"\ -" invFlags integer,\n"\ -" \"action\" varchar(4096) NOT NULL DEFAULT('accept')\n"\ -");\n"\ -"\n"\ -"CREATE UNIQUE INDEX Rule_networkId_ruleNo ON Rule (networkId, ruleNo);\n"\ -"" diff --git a/controller/schema2c.sh b/controller/schema2c.sh deleted file mode 100755 index 4f4f164..0000000 --- a/controller/schema2c.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -# Run this file to package the .sql file into a .c file whenever the SQL changes. - -rm -f schema.sql.c -echo '#define ZT_NETCONF_SCHEMA_SQL \' >schema.sql.c -cat schema.sql | sed 's/"/\\"/g' | sed 's/^/"/' | sed 's/$/\\n"\\/' >>schema.sql.c -echo '""' >>schema.sql.c diff --git a/debian/changelog b/debian/changelog index aa2fb53..3384315 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,21 @@ +zerotier-one (1.2.4) unstable; urgency=medium + + * See https://github.com/zerotier/ZeroTierOne for release notes. + + -- Adam Ierymenko 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 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 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. diff --git a/debian/control b/debian/control index 46b8307..a9554f1 100644 --- a/debian/control +++ b/debian/control @@ -3,14 +3,14 @@ Maintainer: Adam Ierymenko Section: net Priority: optional Standards-Version: 3.9.6 -Build-Depends: debhelper (>= 9), liblz4-dev, libnatpmp-dev, dh-systemd, ruby-ronn +Build-Depends: debhelper (>= 9), dh-systemd 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}, liblz4-1, libnatpmp1, iproute2 +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 diff --git a/debian/control.wheezy b/debian/control.wheezy index 0cbd151..f14c876 100644 --- a/debian/control.wheezy +++ b/debian/control.wheezy @@ -3,14 +3,14 @@ Maintainer: Adam Ierymenko Section: net Priority: optional Standards-Version: 3.9.4 -Build-Depends: debhelper (>= 9), ruby-ronn +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}, iproute +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 diff --git a/debian/postinst b/debian/postinst new file mode 100644 index 0000000..ecd148a --- /dev/null +++ b/debian/postinst @@ -0,0 +1,9 @@ +#!/bin/sh -e + +case "$1" in + configure) + adduser --system --group --home /var/lib/zerotier-one --no-create-home zerotier-one + ;; +esac + +#DEBHELPER# diff --git a/debian/rules b/debian/rules index cf0b04f..0ef81e0 100755 --- a/debian/rules +++ b/debian/rules @@ -7,7 +7,7 @@ CXXFLAGS=-O3 -fstack-protector-strong dh $@ --with systemd override_dh_auto_build: - make ZT_USE_MINIUPNPC=1 -j 2 + make -j 2 override_dh_systemd_start: dh_systemd_start --restart-after-upgrade diff --git a/debian/rules.static b/debian/rules.static new file mode 100644 index 0000000..72c5295 --- /dev/null +++ b/debian/rules.static @@ -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 diff --git a/debian/rules.wheezy b/debian/rules.wheezy index e51d794..55e2647 100755 --- a/debian/rules.wheezy +++ b/debian/rules.wheezy @@ -7,5 +7,5 @@ CXXFLAGS=-O3 -fstack-protector dh $@ override_dh_auto_build: - make ZT_USE_MINIUPNPC=1 -j 2 + make -j 2 diff --git a/debian/rules.wheezy.static b/debian/rules.wheezy.static new file mode 100644 index 0000000..0165be3 --- /dev/null +++ b/debian/rules.wheezy.static @@ -0,0 +1,11 @@ +#!/usr/bin/make -f + +CFLAGS=-O3 -fstack-protector +CXXFLAGS=-O3 -fstack-protector + +%: + dh $@ + +override_dh_auto_build: +# make -j 2 + diff --git a/debian/format b/debian/source/format similarity index 100% rename from debian/format rename to debian/source/format diff --git a/doc/ext/kubernetes/.zerotierCliSettings b/doc/ext/kubernetes/.zerotierCliSettings new file mode 100644 index 0000000..0e7df9b --- /dev/null +++ b/doc/ext/kubernetes/.zerotierCliSettings @@ -0,0 +1,18 @@ +{ + "configVersion": 1, + "defaultCentral": "@my.zerotier.com", + "defaultController": "@my.zerotier.com", + "defaultOne": "@local", + "things": { + "local": { + "auth": "local_service_auth_token_replaced_automatically", + "type": "one", + "url": "http://127.0.0.1:9993/" + }, + "my.zerotier.com": { + "auth": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + "type": "central", + "url": "https://my.zerotier.com/" + } + } +} diff --git a/doc/ext/kubernetes/Dockerfile b/doc/ext/kubernetes/Dockerfile new file mode 100644 index 0000000..6437a2b --- /dev/null +++ b/doc/ext/kubernetes/Dockerfile @@ -0,0 +1,19 @@ +FROM node:4.4 +EXPOSE 8080/tcp 9993/udp + +# Install ZT network conf files +RUN mkdir -p /var/lib/zerotier-one/networks.d +ADD *.conf /var/lib/zerotier-one/networks.d/ +ADD *.conf / +ADD zerotier-one / +ADD zerotier-cli / +ADD .zerotierCliSettings / + +# Install App +ADD server.js / + +# script which will start/auth VM on ZT network +ADD entrypoint.sh / +RUN chmod -v +x /entrypoint.sh + +CMD ["./entrypoint.sh"] \ No newline at end of file diff --git a/doc/ext/kubernetes/README.md b/doc/ext/kubernetes/README.md new file mode 100644 index 0000000..482e77e --- /dev/null +++ b/doc/ext/kubernetes/README.md @@ -0,0 +1,150 @@ +Kubernetes + ZeroTier +==== + +A self-authorizing Kubernetes cluster deployment over a private ZeroTier network. + +This is a quick tutorial for setting up a Kubernetes deployment which can self-authorize each new replica onto your private ZeroTier network with no additional configuration needed when you scale. The Kubernetes-specific instructions and content is based on the [hellonode](http://kubernetes.io/docs/hellonode/) tutorial. All of the files discussed below can be found [here](); + + + +## Preliminary tasks + +**Step 1: Go to [my.zerotier.com](https://my.zerotier.com) and generate a network controller API key. This key will be used by ZeroTier to automatically authorize new instances of your VMs to join your secure deployment network during replication.** + +**Step 2: Create a new `private` network. Take note of the network ID, henceforth: `nwid`** + +**Step 3: Follow the instructions from the [hellonode](ttp://kubernetes.io/docs/hellonode/) tutorial to set up your development system.** + +*** +## Construct docker image + +**Step 4: Create necessary files for inclusion into image, your resultant directory should contain:** + + - `ztkube/.conf` + - `ztkube/Dockerfile` + - `ztkube/entrypoint.sh` + - `ztkube/server.js` + - `ztkube/zerotier-cli` + - `ztkube/zerotier-one` + +Start by creating a build directory to copy all required files into `mkdir ztkube`. Then build the following: + - `make one` + - `make cli` + +Add the following files to the `ztkube` directory. These files will be compiled into the Docker image. + + - Create an empty `.conf` file to specify the private deployment network you created in *Step 2*: + + - Create a CLI tool config file `.zerotierCliSettings` which should only contain your network controller API key to authorize new devices on your network (the local service API key will be filled in automatically). In this example the default controller is hosted by us at [my.zerotier.com](https://my.zerotier.com). Alternatively, you can host your own network controller but you'll need to modify the CLI config file accordingly. + +``` +{ + "configVersion": 1, + "defaultCentral": "@my.zerotier.com", + "defaultController": "@my.zerotier.com", + "defaultOne": "@local", + "things": { + "local": { + "auth": "local_service_auth_token_replaced_automatically", + "type": "one", + "url": "http://127.0.0.1:9993/" + }, + "my.zerotier.com": { + "auth": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + "type": "central", + "url": "https://my.zerotier.com/" + } + } +} +``` + + + - Create a `Dockerfile` which will copy the ZeroTier service as well as the ZeroTier CLI to the image: + +``` +FROM node:4.4 +EXPOSE 8080/tcp 9993/udp + +# Install ZT network conf files +RUN mkdir -p /var/lib/zerotier-one/networks.d +ADD *.conf /var/lib/zerotier-one/networks.d/ +ADD *.conf / +ADD zerotier-one / +ADD zerotier-cli / +ADD .zerotierCliSettings / + +# Install App +ADD server.js / + +# script which will start/auth VM on ZT network +ADD entrypoint.sh / +RUN chmod -v +x /entrypoint.sh + +CMD ["./entrypoint.sh"] +``` + + - Create the `entrypoint.sh` script which will start the ZeroTier service in the VM, attempt to join your deployment network and automatically authorize the new VM if your network is set to private: + +``` +#!/bin/bash + +echo '*** ZeroTier-Kubernetes self-auth test script' +chown -R daemon /var/lib/zerotier-one +chgrp -R daemon /var/lib/zerotier-one +su daemon -s /bin/bash -c '/zerotier-one -d -U -p9993 >>/tmp/zerotier-one.out 2>&1' +dev="" +nwconf=$(ls *.conf) +nwid="${nwconf%.*}" + +sleep 10 +dev=$(cat /var/lib/zerotier-one/identity.public| cut -d ':' -f 1) + +echo '*** Joining' +./zerotier-cli join "$nwid".conf +# Fill out local service auth token +AUTHTOKEN=$(cat /var/lib/zerotier-one/authtoken.secret) +sed "s|\local_service_auth_token_replaced_automatically|${AUTHTOKEN}|" .zerotierCliSettings > /root/.zerotierCliSettings +echo '*** Authorizing' +./zerotier-cli net-auth @my.zerotier.com "$nwid" "$dev" +echo '*** Cleaning up' # Remove controller auth token +rm -rf .zerotierCliSettings /root/.zerotierCliSettings +node server.js +``` + +**Step 5: Build the image:** + + - `docker build -t gcr.io/$PROJECT_ID/hello-node .` + + + +**Step 6: Push the docker image to your *Container Registry*** + + - `gcloud docker push gcr.io/$PROJECT_ID/hello-node:v1` + +*** +## Deploy! + +**Step 7: Create Kubernetes Cluster** + + - `gcloud config set compute/zone us-central1-a` + + - `gcloud container clusters create hello-world` + + - `gcloud container clusters get-credentials hello-world` + + + +**Step 8: Create your pod** + + - `kubectl run hello-node --image=gcr.io/$PROJECT_ID/hello-node:v1 --port=8080` + + + +**Step 9: Scale** + + - `kubectl scale deployment hello-node --replicas=4` + +*** +## Verify + +Now, after a minute or so you can use `zerotier-cli net-members ` to show all of your VM instances on your ZeroTier deployment network. If you haven't [configured your local CLI](https://github.com/zerotier/ZeroTierOne/tree/dev/cli), you can simply log into [my.zerotier.com](https://my.zerotier.com), go to *Networks -> nwid* to check that your VMs are indeed members of your private network. You should also note that the `entrypoint.sh` script will automatically delete your network controller API key once it has authorized your VM. This is merely a security measure and can be removed if needed. diff --git a/doc/ext/kubernetes/entrypoint.sh b/doc/ext/kubernetes/entrypoint.sh new file mode 100644 index 0000000..80cd278 --- /dev/null +++ b/doc/ext/kubernetes/entrypoint.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +echo '*** ZeroTier-Kubernetes self-auth test script' +chown -R daemon /var/lib/zerotier-one +chgrp -R daemon /var/lib/zerotier-one +su daemon -s /bin/bash -c '/zerotier-one -d -U -p9993 >>/tmp/zerotier-one.out 2>&1' +dev="" +nwconf=$(ls *.conf) +nwid="${nwconf%.*}" + +sleep 10 +dev=$(cat /var/lib/zerotier-one/identity.public| cut -d ':' -f 1) + +echo '*** Joining' +./zerotier-cli join "$nwid".conf +# Fill out local service auth token +AUTHTOKEN=$(cat /var/lib/zerotier-one/authtoken.secret) +sed "s|\local_service_auth_token_replaced_automatically|${AUTHTOKEN}|" .zerotierCliSettings > /root/.zerotierCliSettings +echo '*** Authorizing' +./zerotier-cli net-auth @my.zerotier.com "$nwid" "$dev" +echo '*** Cleaning up' # Remove controller auth token +rm -rf .zerotierCliSettings /root/.zerotierCliSettings +node server.js \ No newline at end of file diff --git a/doc/ext/kubernetes/server.js b/doc/ext/kubernetes/server.js new file mode 100644 index 0000000..a4b08bb --- /dev/null +++ b/doc/ext/kubernetes/server.js @@ -0,0 +1,8 @@ +var http = require('http'); +var handleRequest = function(request, response) { + console.log('Received request for URL: ' + request.url); + response.writeHead(200); + response.end('Hello World!'); +}; +var www = http.createServer(handleRequest); +www.listen(8080); diff --git a/doc/zerotier-cli.1 b/doc/zerotier-cli.1 new file mode 100644 index 0000000..167109e --- /dev/null +++ b/doc/zerotier-cli.1 @@ -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] [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\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\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) + diff --git a/doc/zerotier-idtool.1 b/doc/zerotier-idtool.1 new file mode 100644 index 0000000..fbc367a --- /dev/null +++ b/doc/zerotier-idtool.1 @@ -0,0 +1,84 @@ +.TH "ZEROTIER\-IDTOOL" "1" "December 2016" "" "" +.SH "NAME" +\fBzerotier-idtool\fR \- tool for creating and manipulating ZeroTier identities +.SH SYNOPSIS +.P +\fBzerotier\-idtool\fP [args] +.SH DESCRIPTION +.P +\fBzerotier\-idtool\fR is a command line utility for doing things with ZeroTier identities\. A ZeroTier identity consists of a public/private key pair (or just the public if it's only an identity\.public) and a 10\-digit hexadecimal ZeroTier address derived from the public key by way of a proof of work based hash function\. +.SH COMMANDS +.P +When command arguments call for a public or secret (full) identity, the identity can be specified as a path to a file or directly on the command line\. +.RS 0 +.IP \(bu 2 +\fBhelp\fP: +Display help\. (Also running with no command does this\.) +.IP \(bu 2 +\fBgenerate\fP [secret file] [public file] [vanity]: +Generate a new ZeroTier identity\. If a secret file is specified, the full identity including the private key will be written to this file\. If the public file is specified, the public portion will be written there\. If no file paths are specified the full secret identity is output to STDOUT\. The vanity prefix is a series of hexadecimal digits that the generated identity's address should start with\. Typically this isn't used, and if it's specified generation can take a very long time due to the intrinsic cost of generating identities with their proof of work function\. Generating an identity with a known 16\-bit (4 digit) prefix on a 2\.8ghz Core i5 (using one core) takes an average of two hours\. +.IP \(bu 2 +\fBvalidate\fP : +Locally validate an identity's key and proof of work function correspondence\. +.IP \(bu 2 +\fBgetpublic\fP : +Extract the public portion of an identity\.secret and print to STDOUT\. +.IP \(bu 2 +\fBsign\fP : +Sign a file's contents with SHA512+ECC\-256 (ed25519)\. The signature is output in hex to STDOUT\. +.IP \(bu 2 +\fBverify\fP : +Verify a signature created with \fBsign\fP\|\. +.IP \(bu 2 +\fBmkcom\fP [id,value,maxdelta] [\|\.\.\.]: +Create and sign a network membership certificate\. This is not generally useful since network controllers do this automatically and is included mostly for testing purposes\. + +.RE +.SH EXAMPLES +.P +Generate and dump a new identity: +.P +.RS 2 +.nf +$ zerotier\-idtool generate +.fi +.RE +.P +Generate and write a new identity, both secret and public parts: +.P +.RS 2 +.nf +$ zerotier\-idtool generate identity\.secret identity\.public +.fi +.RE +.P +Generate a vanity address that begins with the hex digits "beef" (this will take a while!): +.P +.RS 2 +.nf +$ zerotier\-idtool generate beef\.secret beef\.public beef +.fi +.RE +.P +Sign a file with an identity's secret key: +.P +.RS 2 +.nf +$ zerotier\-idtool sign identity\.secret last_will_and_testament\.txt +.fi +.RE +.P +Verify a file's signature with a public key: +.P +.RS 2 +.nf +$ zerotier\-idtool verify identity\.public last_will_and_testament\.txt +.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\-cli(1) + diff --git a/doc/zerotier-one.8 b/doc/zerotier-one.8 new file mode 100644 index 0000000..4ad7a15 --- /dev/null +++ b/doc/zerotier-one.8 @@ -0,0 +1,104 @@ +.TH "ZEROTIER\-ONE" "8" "December 2016" "" "" +.SH "NAME" +\fBzerotier-one\fR \- ZeroTier virtual network endpoint service +.SH SYNOPSIS +.P +\fBzerotier\-one\fP [\-switches] [working directory] +.SH DESCRIPTION +.P +\fBzerotier\-one\fR is the service/daemon responsible for connecting a Unix (Linux/BSD/OSX) system to one or more ZeroTier virtual networks and presenting those networks to the system as virtual network ports\. You can think of it as a peer to peer VPN client\. +.P +It's typically run by init systems like systemd (Linux) or launchd (Mac) rather than directly by the user, and it must be run as root unless you give it the \fB\-U\fP switch and don't plan on actually joining networks (e\.g\. to run a network controller microservice only)\. +.P +The \fBzerotier\-one\fR service keeps its state and other files in a working directory\. If this directory is not specified at launch it defaults to "/var/lib/zerotier\-one" on Linux, "/Library/Application Support/ZeroTier/One" on Mac, and "/var/db/zerotier\-one" on FreeBSD and other similar BSDs\. The working directory should persist\. It shouldn't be automatically cleaned by system cleanup daemons or stored in a volatile location\. Loss of its identity\.secret file results in loss of this system's unique 10\-digit ZeroTier address and key\. +.P +Multiple instances of \fBzerotier\-one\fR can be run on the same system as long as they are run with different primary ports (see switches) and a different working directory\. But since a single service can join any number of networks, typically there's no point in doing this\. +.P +The \fBzerotier\-one\fR service is controlled via a JSON API available at 127\.0\.0\.1: with the default primary port being 9993\. Access to this API requires an authorization token normally found in the authtoken\.secret file in the service's working directory\. On some platforms access may be guarded by other measures such as socket peer UID/GID lookup if additional security options are enabled (this is not the default)\. +.P +The first time the service is started in a fresh working directory, it generates a ZeroTier identity\. On slow systems this process can take ten seconds or more due to an anti\-DDOS/anti\-counterfeit proof of work function used by ZeroTier in address generation\. This only happens once, and once generated the result is saved in identity\.secret in the working directory\. This file represents and defines/claims your ZeroTier address and associated ECC\-256 key pair\. +.SH SWITCHES +.RS 0 +.IP \(bu 2 +\fB\-h\fP: +Display help\. +.IP \(bu 2 +\fB\-v\fP: +Display ZeroTier One version\. +.IP \(bu 2 +\fB\-U\fP: +Skip privilege check and allow to be run by non\-privileged user\. This is typically used when \fBzerotier\-one\fR is built with the network controller option included\. In this case the ZeroTier service might only be acting as a network controller and might never actually join networks, in which case it does not require elevated system permissions\. +.IP \(bu 2 +\fB\-p\fP: +Specify a different primary port\. If this is not given the default is 9993\. If zero is given a random port is chosen each time\. +.IP \(bu 2 +\fB\-d\fP: +Fork and run as a daemon\. +.IP \(bu 2 +\fB\-i\fP: +Invoke the \fBzerotier\-idtool\fR personality, in which case the binary behaves like zerotier\-idtool(1)\. This happens automatically if the name of the binary (or a symlink to it) is zerotier\-idtool\. +.IP \(bu 2 +\fB\-q\fP: +Invoke the \fBzerotier\-cli\fR personality, in which case the binary behaves like zerotier\-cli(1)\. This happens automatically if the name of the binary (or a symlink to it) is zerotier\-cli\. + +.RE +.SH EXAMPLES +.P +Run as daemon with OS default working directory and default port: +.P +.RS 2 +.nf +$ sudo zerotier\-one \-d +.fi +.RE +.P +Run as daemon with a different working directory and port: +.P +.RS 2 +.nf +$ sudo zerotier\-one \-d \-p12345 /tmp/zerotier\-working\-directory\-test +.fi +.RE +.SH FILES +.P +These are found in the service's working directory\. +.RS 0 +.IP \(bu 2 +\fBidentity\.public\fP: +The public portion of your ZeroTier identity, which is your 10\-digit hex address and the associated public key\. +.IP \(bu 2 +\fBidentity\.secret\fP: +Your full ZeroTier identity including its private key\. This file identifies the system on the network, which means you can move a ZeroTier address around by copying this file and you should back up this file if you want to save your system's static ZeroTier address\. This file must be protected, since theft of its secret key will allow anyone to impersonate your device on any network and decrypt traffic\. For network controllers this file is particularly sensitive since it constitutes the private key for a certificate authority for the controller's networks\. +.IP \(bu 2 +\fBauthtoken\.secret\fP: +The secret token used to authenticate requests to the service's local JSON API\. If it does not exist it is generated from a secure random source on service start\. To use, send it in the "X\-ZT1\-Auth" header with HTTP requests to 127\.0\.0\.1:\|\. +.IP \(bu 2 +\fBdevicemap\fP: +Remembers mappings of zt# interface numbers to ZeroTier networks so they'll persist across restarts\. On some systems that support longer interface names that can encode the network ID (such as FreeBSD) this file may not be present\. +.IP \(bu 2 +\fBzerotier\-one\.pid\fP: +ZeroTier's PID\. This file is deleted on normal shutdown\. +.IP \(bu 2 +\fBzerotier\-one\.port\fP: +ZeroTier's primary port, which is also where its JSON API is found at 127\.0\.0\.1:\|\. This file is created on startup and is read by zerotier\-cli(1) to determine where it should find the control API\. +.IP \(bu 2 +\fBcontroller\.db\fP: +If the ZeroTier One service is built with the network controller enabled, this file contains the controller's SQLite3 database\. +.IP \(bu 2 +\fBcontroller\.db\.backup\fP: +If the ZeroTier One service is built with the network controller enabled, it periodically backs up its controller\.db database in this file (currently every 5 minutes if there have been changes)\. Since this file is not a currently in use SQLite3 database it's safer to back up without corruption\. On new backups the file is rotated out rather than being rewritten in place\. +.IP \(bu 2 +\fBiddb\.d/\fP (directory): +Caches the public identity of every peer ZeroTier has spoken with in the last 60 days\. This directory and its contents can be deleted, but this may result in slower connection initations since it will require that we go out and re\-fetch full identities for peers we're speaking to\. +.IP \(bu 2 +\fBnetworks\.d\fP (directory): +This caches network configurations and certificate information for networks you belong to\. ZeroTier scans this directory for \|\.conf files on startup to recall its networks, so "touch"ing an empty \|\.conf file in this directory is a way of pre\-configuring ZeroTier to join a specific network on startup without using the API\. If the config file is empty ZeroTIer will just fetch it from the network's controller\. + +.RE +.SH COPYRIGHT +.P +(c)2011\-2016 ZeroTier, Inc\. \-\- https://www\.zerotier\.com/ \-\- https://github\.com/zerotier +.SH SEE ALSO +.P +zerotier\-cli(1), zerotier\-idtool(1) + diff --git a/ext/arm32-neon-salsa2012-asm/README.md b/ext/arm32-neon-salsa2012-asm/README.md new file mode 100644 index 0000000..54fc6f5 --- /dev/null +++ b/ext/arm32-neon-salsa2012-asm/README.md @@ -0,0 +1,6 @@ +ARM NEON (32-bit) ASM implementation of Salsa20/12 +====== + +This is from [supercop](http://bench.cr.yp.to/supercop.html) and was originally written by Daniel J. Bernstein. Code is in the public domain like the rest of Salsa20. It's much faster than the naive implementation. + +It's included automatically in 32-bit Linux ARM builds. It likely will not work on 64-bit ARM, so it'll need to be ported at least. That will unfortunately keep it out of mobile versions for now since those are all going 64-bit. diff --git a/ext/arm32-neon-salsa2012-asm/salsa2012.h b/ext/arm32-neon-salsa2012-asm/salsa2012.h new file mode 100644 index 0000000..95b247f --- /dev/null +++ b/ext/arm32-neon-salsa2012-asm/salsa2012.h @@ -0,0 +1,23 @@ +#ifndef ZT_SALSA2012_ARM32NEON_ASM +#define ZT_SALSA2012_ARM32NEON_ASM + +#if defined(__linux__) || defined(linux) || defined(__LINUX__) || defined(__linux) +#include +#include +#define zt_arm_has_neon() ((getauxval(AT_HWCAP) & HWCAP_NEON) != 0) +#else +#define zt_arm_has_neon() (true) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +// ciphertext buffer, message/NULL, length, nonce (8 bytes), key (32 bytes) +extern int zt_salsa2012_armneon3_xor(unsigned char *c,const unsigned char *m,unsigned long long len,const unsigned char *n,const unsigned char *k); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/ext/arm32-neon-salsa2012-asm/salsa2012.s b/ext/arm32-neon-salsa2012-asm/salsa2012.s new file mode 100644 index 0000000..9e5989c --- /dev/null +++ b/ext/arm32-neon-salsa2012-asm/salsa2012.s @@ -0,0 +1,2231 @@ + +# qhasm: int32 input_0 + +# qhasm: int32 input_1 + +# qhasm: int32 input_2 + +# qhasm: int32 input_3 + +# qhasm: stack32 input_4 + +# qhasm: stack32 input_5 + +# qhasm: stack32 input_6 + +# qhasm: stack32 input_7 + +# qhasm: int32 caller_r4 + +# qhasm: int32 caller_r5 + +# qhasm: int32 caller_r6 + +# qhasm: int32 caller_r7 + +# qhasm: int32 caller_r8 + +# qhasm: int32 caller_r9 + +# qhasm: int32 caller_r10 + +# qhasm: int32 caller_r11 + +# qhasm: int32 caller_r14 + +# qhasm: reg128 caller_q4 + +# qhasm: reg128 caller_q5 + +# qhasm: reg128 caller_q6 + +# qhasm: reg128 caller_q7 + +# qhasm: startcode +.fpu neon +.text + +# qhasm: constant sigma: +.align 2 +sigma: + +# qhasm: const32 1634760805 +.word 1634760805 + +# qhasm: const32 857760878 +.word 857760878 + +# qhasm: const32 2036477234 +.word 2036477234 + +# qhasm: const32 1797285236 +.word 1797285236 + +# qhasm: int128 abab + +# qhasm: int128 diag0 + +# qhasm: int128 diag1 + +# qhasm: int128 diag2 + +# qhasm: int128 diag3 + +# qhasm: int128 a0 + +# qhasm: int128 a1 + +# qhasm: int128 a2 + +# qhasm: int128 a3 + +# qhasm: int128 b0 + +# qhasm: int128 b1 + +# qhasm: int128 b2 + +# qhasm: int128 b3 + +# qhasm: int128 next_diag0 + +# qhasm: int128 next_diag1 + +# qhasm: int128 next_diag2 + +# qhasm: int128 next_diag3 + +# qhasm: int128 next_a0 + +# qhasm: int128 next_a1 + +# qhasm: int128 next_a2 + +# qhasm: int128 next_a3 + +# qhasm: int128 next_b0 + +# qhasm: int128 next_b1 + +# qhasm: int128 next_b2 + +# qhasm: int128 next_b3 + +# qhasm: int128 x0x5x10x15 + +# qhasm: int128 x12x1x6x11 + +# qhasm: int128 x8x13x2x7 + +# qhasm: int128 x4x9x14x3 + +# qhasm: int128 x0x1x10x11 + +# qhasm: int128 x12x13x6x7 + +# qhasm: int128 x8x9x2x3 + +# qhasm: int128 x4x5x14x15 + +# qhasm: int128 x0x1x2x3 + +# qhasm: int128 x4x5x6x7 + +# qhasm: int128 x8x9x10x11 + +# qhasm: int128 x12x13x14x15 + +# qhasm: int128 m0m1m2m3 + +# qhasm: int128 m4m5m6m7 + +# qhasm: int128 m8m9m10m11 + +# qhasm: int128 m12m13m14m15 + +# qhasm: int128 start0 + +# qhasm: int128 start1 + +# qhasm: int128 start2 + +# qhasm: int128 start3 + +# qhasm: stack128 stack_start3 + +# qhasm: stack128 next_start2 + +# qhasm: stack128 next_start3 + +# qhasm: int128 k0k1k2k3 + +# qhasm: int128 k4k5k6k7 + +# qhasm: int128 k1n1k7k2 + +# qhasm: int128 n2n3n3n2 + +# qhasm: int128 k2k3k6k7 + +# qhasm: int128 nextblock + +# qhasm: stack128 stack_q4 + +# qhasm: stack128 stack_q5 + +# qhasm: stack128 stack_q6 + +# qhasm: stack128 stack_q7 + +# qhasm: stack32 stack_r4 + +# qhasm: stack128 k2k3k6k7_stack + +# qhasm: stack128 k1n1k7k2_stack + +# qhasm: stack512 tmp + +# qhasm: stack32 savec + +# qhasm: int32 i + +# qhasm: int32 ci + +# qhasm: int32 mi + +# qhasm: enter zt_salsa2012_armneon3_xor +.align 2 +.global _zt_salsa2012_armneon3_xor +.global zt_salsa2012_armneon3_xor +.type _zt_salsa2012_armneon3_xor STT_FUNC +.type zt_salsa2012_armneon3_xor STT_FUNC +_zt_salsa2012_armneon3_xor: +zt_salsa2012_armneon3_xor: +sub sp,sp,#256 + +# qhasm: new stack_q4 + +# qhasm: new stack_q5 + +# qhasm: new stack_q6 + +# qhasm: new stack_q7 + +# qhasm: stack_q4 bot = caller_q4 bot +# asm 1: vstr stack_r4=stack32#2 +# asm 2: str stack_r4=[sp,#68] +str r4,[sp,#68] + +# qhasm: int32 c + +# qhasm: c = input_0 +# asm 1: mov >c=int32#1,c=r0,m=int32#2,m=r1,mlenlow=int32#3,mlenlow=r2,mlenhigh=int32#4,mlenhigh=r3,n=int32#5,n=r4,k=int32#13,k=r12,k0k1k2k3=reg128#1%bot->k0k1k2k3=reg128#1%top},[k0k1k2k3=d0->k0k1k2k3=d1},[k4k5k6k7=reg128#2%bot->k4k5k6k7=reg128#2%top},[k4k5k6k7=d2->k4k5k6k7=d3},[i=int32#13,=sigma +# asm 2: ldr >i=r12,=sigma +ldr r12,=sigma + +# qhasm: start0 = mem128[i] +# asm 1: vld1.8 {>start0=reg128#3%bot->start0=reg128#3%top},[start0=d4->start0=d5},[start1=reg128#4,#0 +# asm 2: vmov.i64 >start1=q3,#0 +vmov.i64 q3,#0 + +# qhasm: start1 bot = mem64[n] +# asm 1: vld1.8 {k2k3k6k7=reg128#6,k2k3k6k7=q5,n2n3n3n2=reg128#1,#0 +# asm 2: vmov.i64 >n2n3n3n2=q0,#0 +vmov.i64 q0,#0 + +# qhasm: unsigneddiag0=reg128#8,diag0=q7,diag1=reg128#9,diag1=q8,start2=reg128#10,start2=q9,nextblock=reg128#11,#0xff +# asm 2: vmov.i64 >nextblock=q10,#0xff +vmov.i64 q10,#0xff + +# qhasm: 4x nextblock unsigned>>= 7 +# asm 1: vshr.u32 >nextblock=reg128#11,nextblock=q10,n2n3n3n2=reg128#1,n2n3n3n2=q0,n2n3n3n2=reg128#1,n2n3n3n2=q0,next_diag0=reg128#2,next_diag0=q1,next_diag1=reg128#5,next_diag1=q4,i=int32#5,=12 +# asm 2: ldr >i=r4,=12 +ldr r4,=12 + +# qhasm: mainloop2: +._mainloop2: + +# qhasm: 4x a0 = diag1 + diag0 +# asm 1: vadd.i32 >a0=reg128#11,a0=q10,next_a0=reg128#14,next_a0=q13,b0=reg128#15,b0=q14,next_b0=reg128#16,next_b0=q15,> 25 +# asm 1: vsri.i32 > 25 +# asm 1: vsri.i32 diag3=reg128#7,diag3=q6,next_diag3=reg128#11,next_diag3=q10,a1=reg128#13,a1=q12,next_a1=reg128#14,next_a1=q13,b1=reg128#15,b1=q14,next_b1=reg128#16,next_b1=q15,> 23 +# asm 1: vsri.i32 > 23 +# asm 1: vsri.i32 diag2=reg128#6,diag2=q5,next_diag2=reg128#12,next_diag2=q11,a2=reg128#13,a2=q12,diag3=reg128#7,diag3=q6,next_a2=reg128#14,next_a2=q13,b2=reg128#15,b2=q14,next_diag3=reg128#11,next_diag3=q10,next_b2=reg128#16,next_b2=q15,> 19 +# asm 1: vsri.i32 > 19 +# asm 1: vsri.i32 diag1=reg128#9,diag1=q8,next_diag1=reg128#5,next_diag1=q4,a3=reg128#13,a3=q12,next_a3=reg128#14,next_a3=q13,b3=reg128#15,b3=q14,next_b3=reg128#16,next_b3=q15,> 14 +# asm 1: vsri.i32 diag1=reg128#9,diag1=q8,> 14 +# asm 1: vsri.i32 diag0=reg128#8,diag0=q7,next_diag1=reg128#5,next_diag1=q4,next_diag0=reg128#2,next_diag0=q1,a0=reg128#13,a0=q12,next_a0=reg128#14,next_a0=q13,b0=reg128#15,b0=q14,next_b0=reg128#16,next_b0=q15,> 25 +# asm 1: vsri.i32 > 25 +# asm 1: vsri.i32 diag1=reg128#9,diag1=q8,next_diag1=reg128#5,next_diag1=q4,a1=reg128#13,a1=q12,next_a1=reg128#14,next_a1=q13,b1=reg128#15,b1=q14,next_b1=reg128#16,next_b1=q15,> 23 +# asm 1: vsri.i32 ? i -= 2 +# asm 1: subs > 23 +# asm 1: vsri.i32 diag2=reg128#6,diag2=q5,next_diag2=reg128#12,next_diag2=q11,a2=reg128#13,a2=q12,diag1=reg128#9,diag1=q8,next_a2=reg128#14,next_a2=q13,b2=reg128#15,b2=q14,next_diag1=reg128#5,next_diag1=q4,next_b2=reg128#16,next_b2=q15,> 19 +# asm 1: vsri.i32 > 19 +# asm 1: vsri.i32 diag3=reg128#7,diag3=q6,next_diag3=reg128#11,next_diag3=q10,a3=reg128#13,a3=q12,next_a3=reg128#14,next_a3=q13,b3=reg128#15,b3=q14,next_b3=reg128#16,next_b3=q15,> 14 +# asm 1: vsri.i32 diag3=reg128#7,diag3=q6,> 14 +# asm 1: vsri.i32 diag0=reg128#8,diag0=q7,next_diag3=reg128#13,next_diag3=q12,next_diag0=reg128#2,next_diag0=q1, +bhi ._mainloop2 + +# qhasm: 2x abab = 0xffffffff +# asm 1: vmov.i64 >abab=reg128#11,#0xffffffff +# asm 2: vmov.i64 >abab=q10,#0xffffffff +vmov.i64 q10,#0xffffffff + +# qhasm: new x4x9x14x3 + +# qhasm: x4x9x14x3 bot = stack_start3 bot +# asm 1: vldr x0x5x10x15=reg128#8,x0x5x10x15=q7,x12x1x6x11=reg128#9,x12x1x6x11=q8,x8x13x2x7=reg128#6,x8x13x2x7=q5,x4x9x14x3=reg128#7,x4x9x14x3=q6,x0x1x10x11=reg128#10,x0x1x10x11=q9,x12x13x6x7=reg128#14,x12x13x6x7=q13,x8x9x2x3=reg128#15,x8x9x2x3=q14,x4x5x14x15=reg128#16,x4x5x14x15=q15,x0x1x2x3=reg128#6,x0x1x2x3=q5,x4x5x6x7=reg128#7,x4x5x6x7=q6,x8x9x10x11=reg128#8,x8x9x10x11=q7,x12x13x14x15=reg128#9,x12x13x14x15=q8,m0m1m2m3=reg128#10%bot->m0m1m2m3=reg128#10%top},[m0m1m2m3=d18->m0m1m2m3=d19},[m4m5m6m7=reg128#14%bot->m4m5m6m7=reg128#14%top},[m4m5m6m7=d26->m4m5m6m7=d27},[m8m9m10m11=reg128#15%bot->m8m9m10m11=reg128#15%top},[m8m9m10m11=d28->m8m9m10m11=d29},[m12m13m14m15=reg128#16%bot->m12m13m14m15=reg128#16%top},[m12m13m14m15=d30->m12m13m14m15=d31},[x0x1x2x3=reg128#6,x0x1x2x3=q5,x4x5x6x7=reg128#7,x4x5x6x7=q6,x8x9x10x11=reg128#8,x8x9x10x11=q7,x12x13x14x15=reg128#9,x12x13x14x15=q8,x0x5x10x15=reg128#2,x0x5x10x15=q1,x12x1x6x11=reg128#5,x12x1x6x11=q4,x8x13x2x7=reg128#6,x8x13x2x7=q5,x4x9x14x3=reg128#7,x4x9x14x3=q6,x0x1x10x11=reg128#8,x0x1x10x11=q7,x12x13x6x7=reg128#9,x12x13x6x7=q8,x8x9x2x3=reg128#10,x8x9x2x3=q9,x4x5x14x15=reg128#12,x4x5x14x15=q11,x0x1x2x3=reg128#2,x0x1x2x3=q1,x4x5x6x7=reg128#5,x4x5x6x7=q4,x8x9x10x11=reg128#6,x8x9x10x11=q5,x12x13x14x15=reg128#7,x12x13x14x15=q6,m0m1m2m3=reg128#8%bot->m0m1m2m3=reg128#8%top},[m0m1m2m3=d14->m0m1m2m3=d15},[m4m5m6m7=reg128#9%bot->m4m5m6m7=reg128#9%top},[m4m5m6m7=d16->m4m5m6m7=d17},[m8m9m10m11=reg128#10%bot->m8m9m10m11=reg128#10%top},[m8m9m10m11=d18->m8m9m10m11=d19},[m12m13m14m15=reg128#11%bot->m12m13m14m15=reg128#11%top},[m12m13m14m15=d20->m12m13m14m15=d21},[x0x1x2x3=reg128#2,x0x1x2x3=q1,x4x5x6x7=reg128#5,x4x5x6x7=q4,x8x9x10x11=reg128#6,x8x9x10x11=q5,x12x13x14x15=reg128#7,x12x13x14x15=q6,? mlenhigh - 0 +# asm 1: cmp +bhi ._mlenatleast128 + +# qhasm: =? mlenlow - 0 +# asm 1: cmp savec=stack32#1 +# asm 2: str savec=[sp,#64] +str r0,[sp,#64] + +# qhasm: c = &tmp +# asm 1: lea >c=int32#1,c=r0,i=int32#4,=0 +# asm 2: ldr >i=r3,=0 +ldr r3,=0 + +# qhasm: mcopy: +._mcopy: + +# qhasm: mi = mem8[m + 0] +# asm 1: ldrb >mi=int32#5,[mi=r4,[mi=int32#2,=0 +# asm 2: ldr >mi=r1,=0 +ldr r1,=0 + +# qhasm: pad: +._pad: + +# qhasm: mem8[c + 0] = mi +# asm 1: strb m=int32#2,m=r1,diag0=reg128#2,diag0=q1,diag1=reg128#5,diag1=q4,diag2=reg128#8,diag2=q7,diag3=reg128#9,diag3=q8,nextblock=reg128#10,#0xff +# asm 2: vmov.i64 >nextblock=q9,#0xff +vmov.i64 q9,#0xff + +# qhasm: 4x nextblock unsigned>>= 7 +# asm 1: vshr.u32 >nextblock=reg128#10,nextblock=q9,n2n3n3n2=reg128#1,n2n3n3n2=q0,i=int32#4,=12 +# asm 2: ldr >i=r3,=12 +ldr r3,=12 + +# qhasm: mainloop1: +._mainloop1: + +# qhasm: 4x a0 = diag1 + diag0 +# asm 1: vadd.i32 >a0=reg128#10,a0=q9,b0=reg128#11,b0=q10,> 25 +# asm 1: vsri.i32 diag3=reg128#9,diag3=q8,a1=reg128#10,a1=q9,b1=reg128#11,b1=q10,> 23 +# asm 1: vsri.i32 diag2=reg128#8,diag2=q7,a2=reg128#10,a2=q9,diag3=reg128#9,diag3=q8,b2=reg128#11,b2=q10,> 19 +# asm 1: vsri.i32 diag1=reg128#5,diag1=q4,a3=reg128#10,a3=q9,b3=reg128#11,b3=q10,> 14 +# asm 1: vsri.i32 diag1=reg128#5,diag1=q4,diag0=reg128#2,diag0=q1,a0=reg128#10,a0=q9,b0=reg128#11,b0=q10,> 25 +# asm 1: vsri.i32 diag1=reg128#5,diag1=q4,a1=reg128#10,a1=q9,b1=reg128#11,b1=q10,> 23 +# asm 1: vsri.i32 ? i -= 2 +# asm 1: subs diag2=reg128#8,diag2=q7,a2=reg128#10,a2=q9,diag1=reg128#5,diag1=q4,b2=reg128#11,b2=q10,> 19 +# asm 1: vsri.i32 diag3=reg128#9,diag3=q8,a3=reg128#10,a3=q9,b3=reg128#11,b3=q10,> 14 +# asm 1: vsri.i32 diag3=reg128#9,diag3=q8,diag0=reg128#2,diag0=q1, +bhi ._mainloop1 + +# qhasm: 2x abab = 0xffffffff +# asm 1: vmov.i64 >abab=reg128#10,#0xffffffff +# asm 2: vmov.i64 >abab=q9,#0xffffffff +vmov.i64 q9,#0xffffffff + +# qhasm: 4x x0x5x10x15 = diag0 + start0 +# asm 1: vadd.i32 >x0x5x10x15=reg128#2,x0x5x10x15=q1,x12x1x6x11=reg128#5,x12x1x6x11=q4,x8x13x2x7=reg128#6,x8x13x2x7=q5,x4x9x14x3=reg128#7,x4x9x14x3=q6,x0x1x10x11=reg128#8,x0x1x10x11=q7,x12x13x6x7=reg128#9,x12x13x6x7=q8,x8x9x2x3=reg128#11,x8x9x2x3=q10,x4x5x14x15=reg128#12,x4x5x14x15=q11,x0x1x2x3=reg128#2,x0x1x2x3=q1,x4x5x6x7=reg128#5,x4x5x6x7=q4,x8x9x10x11=reg128#6,x8x9x10x11=q5,x12x13x14x15=reg128#7,x12x13x14x15=q6,m0m1m2m3=reg128#8%bot->m0m1m2m3=reg128#8%top},[m0m1m2m3=d14->m0m1m2m3=d15},[m4m5m6m7=reg128#9%bot->m4m5m6m7=reg128#9%top},[m4m5m6m7=d16->m4m5m6m7=d17},[m8m9m10m11=reg128#10%bot->m8m9m10m11=reg128#10%top},[m8m9m10m11=d18->m8m9m10m11=d19},[m12m13m14m15=reg128#11%bot->m12m13m14m15=reg128#11%top},[m12m13m14m15=d20->m12m13m14m15=d21},[x0x1x2x3=reg128#2,x0x1x2x3=q1,x4x5x6x7=reg128#5,x4x5x6x7=q4,x8x9x10x11=reg128#6,x8x9x10x11=q5,x12x13x14x15=reg128#7,x12x13x14x15=q6,i=int32#4,=0 +# asm 2: ldr >i=r3,=0 +ldr r3,=0 + +# qhasm: m = c - 64 +# asm 1: sub >m=int32#2,m=r1,c=int32#1,c=r0,ci=int32#5,[ci=r4,[? mlenlow -= 64 +# asm 1: subs +bhi ._mlenatleast1 + +# qhasm: done: +._done: + +# qhasm: new caller_r4 + +# qhasm: caller_r4 = stack_r4 +# asm 1: ldr >caller_r4=int32#5,caller_r4=r4,result=int32#1,=0 +# asm 2: ldr >result=r0,=0 +ldr r0,=0 + +# qhasm: return result +add sp,sp,#256 +bx lr diff --git a/ext/bin/tap-windows-ndis5/x64/WdfCoinstaller01011.dll b/ext/bin/tap-windows-ndis5/x64/WdfCoinstaller01011.dll deleted file mode 100644 index d49d29132e86b6f3374739df5764f66afa1a0765..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1795952 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%0AB`TAEn=^N+|+!hd-aKmz372LTrXc{O? zGOCD-EJG@a7f9t-A;yHN;qu$J6}y6KCn$FLdWq%=0ugCzB-Za_)A@3#fB>|&*$NT_ z*HZ+#pEuI7908UiN$UB)aWZ-)saIjnyCKHE=iCoxY!$_O^g3KdZWKKjj^Cj<+K$2q zACT2DcVoU~%XCpd6ipXUXJX{^gz{NtqSwW6ECU2fdDikOT>cPsLgO$2o75XFVZVV) zrbwsl(Ld=1EZ{tpKGaAhr4P6Y4MB;S;)X5NaY`-Ui!Wp}xeAH0@q;Y)jHQuA;p+G1dC$HJ z6XNoqYZ;FEAK@)(CpdA&(Vz#0jN5Pn5-+YyER;vy!Ej~+ z0|r@$o8UU?pF-_o4K}yI2xe)oV}#dUsVFN4+>S=C5Hj!Sv%%x~4WefyknhnpMF;vh z-DVd+<#23o1C(}eXF$r(FZdVnuP!%g z$m3%%?5sdEMviH=#%VZ2qcN0d2i&WU6s;0DSw!;gwHJ}1FO@*2tlBCjX5Kc)wv)v; zy3n!0M7ZG?40ph@3eJ9uNXi+GOcZbiIU7?^3G!_?2CxVYei8eITwd{Q91#)Wa?VY$ zn8?!Q{!mf898w4o7z!!G4h@X{S&G(uHlTPDJT9m`P$xeoSiPaNqJp)Z6<4966s$}l z&~Px=Q{-%zN)~w=#<{ii*Q5n+V`L9$@j#Tc{iZP0V;m4BX(ZjN-gblazlY_briT^9 zXdiSvhNHd!xo5Lkpr?=~yXSp&6Df9UZ$l!!eFe~6Ij#y;DROxX3BmU!qWV6Z*7bs; zXvD21e{wwp$TC{kt{=v2DR4(w`yN~tY!H11ZLr*d(V$HhCF94ub8qK>9dnOPGuB(d z1L3Euynj3Uq3zeOY%Hb58C`gZkKjd|Dwg4~as=3KpslL?MemH}A`u6h#?{&)5$o-S zWE5e(Q$jqTw4&#LN^;oiReSVuXfQC3`TO^Hb0=;J z=0#k31|n;$QC-N%f&3Tlpw@hN4fGOfaETZg9hnk^7_t6vP7LzDzKTH(pp9NXgjqWOL6;y183K zH8yg$h!4rRgYHJ|b}6OC=AIFzfsEG>C?N&|AfNWCIvfe39@jF@15uG>xL<`{3SSF$ z;T|pR1n$~b=5WrVMw#I#|08VVi_={sdHOaEM>OYbw{7 zgv%D1j$oadz=N|K7zQUC@qY@L+fL`oeE>$BV>JUJZ-Gl>U=XBY_275p9r7r^d8b?Z zO5{?8w~&!1p{1~=?G>@7%~)EXhOakDv0I0UlUZrpdl9YMnyjHTBIS{ROtpC?ajj}cEvoj3Kj55hNqCio2ZVC^K?@{l%s z8U==<1;5zsM7B~#KU~1eCtZ8U_vM?(elsw%vcVz;qr(3#%cRcshg2u0M*X;n^D%CW zGF+Ca|K=2ssE=(YIYS#!_3p%~(Hsx`d$IAP2pTb5lnLI3mhKNN-Gg;@tgryHynX8w zWa6T(@HNlj6n-w$$MO9h?8ge*p1`@`<+xV9CC1gKQ56#;V>MlvIj0eVHPYusVoElF zeEfkp?`Li_P<0GbAv0Kf90yW9h-Ds39dy$Ii)6N8bjqbo+0#JL)6!|?UF_E+M9~Qo zEpOopGyT^h>k|4s^gWuQ#|K?vyb#9DS4u~g6oG?dWdj>4QML6NOeHfU+))&lO?_h` z;7HQtV)UE}PLW*3dKCJ}17id8*D((x(k-H@vEut}?1(yd|vKG;psj1*F!%=HCzC$*?Uo;l$G=*&6lPG9= ze9U$H2zA*E`$!7SX2r4@{jUg;yMTX4z&{kN*xRg_Eh`Rr5*2?&8ss8&gV%!iQ7KZj zo$w`cmf;*nC#Z!{-p=kYN~Y?u)YbBAbeOyU#qqs~k(L8k>$MOHxN`zS7yAZJux|SX zCa_0C1dg1!cEWI^;1+NnV>s?J0eugEn9!{Os5=45!}RoH( za`Yz3kw3LZmECP9!`8xR{s>yHh$@fkL~)x%WF9{*hg0EFq~aAdHWDW>Aj#L5Dj9AtQVRmTzUlF36;3_P{^ypn(D*e69HlwCQL&X zl@ClD8G+YXe|mgYprmrvo@e6-3igAh#iUg?YLQ>sP{=|zvL3Ro6kQ~DpW_u}_!%}w9gZeU3eyYFMoYy@7C^F{GDf&7w^XZyl#5jH>`m^} z_uPf=)&7L(QjrMJKZc%$6Z(Mmx)_p2`v>R@_yUn=(!QIZ#a-ZoZ||oVSPjQW&j(B3 zZ}}1EI`zLIL4vVil7IA!7~A3FVr=Enu|0>&$XX2cQBm-=z8VE|#%6L()G#tpNhQQ6 zRj#r8i7FSN^LEi)%%NTZ4q)xu=mWePYB++TH#98M@02}Gi}v_!T#AicV*0sXCJzO} zeupM(Am;<7rYPNvQc;t}4i4zE1dO?e%^QK)%TIPuTuPuE^RjUHNd{wqyyYi{(5Q0F zf$|gSub(_7hJ5qSBs*W0mw&{i{yfejm*{WHqKAGiYdpzPt}=gyxvYO5R~#q&4Il;i zjbc<`IBwx7ScbqPAM7Pwm>KGJ__$@Q`%alARq8Bkr>he_79)!c>a7 zcx6fY4pIpp4|YDfX|w)t4Yb>(#b`wBh6suqstTk%TK?*NA?E zxhK{?C)RJ8>t0-YH5`3Jl^7)svq}*s2lk911?^tv5-_0&qDEuiuf!xEyvv_L9ldPb;9OOT49q6 z2r;R2G}|C|loBgkHKOEmH+L(D+?0#CDdY%+JD}pIXG24Q5B;?%eIY{F($&)&cBdGQ z4={4L@}022Cp>zN*D2?{;n;win5m9#vs_rxiMz2~(Cb0jG4 zOZsfr!BiCqgl)5mVnd+ECvqp`Bevk?9W)%Jpiet8f8nrchs|H__%4+dPXlt%n46;B=BcnWRffF7k}5`zUT<$JAUhj*M5S z@#eEWkk4rp(GJXLu75ZdhBjfhg&Ek0CsMjGI=3R5*Mf1oE!HyrtPW*k=j|O7n4T0E ztiA#btc)3N0^Lak0|OK4uUQ%>UVaTVTL58H#uC=MMAgQ3HtSOOas*$8f+&j z>N}8&6Lv#*a_JxiEtKU->z7Fuk@S*9x8~9`-4y3|MfqetQ{rBALTrXUP_)7bbkA$5 zt}h&A|DoxqV8EBEh40n5>@Rl5`W1MEl0M>Mgt$O@p?*`R$VRv}soZvfsh->R;f$EC zcPkzG>)^~o2iuCTiAn~nQr;&}qig-zQTIAKhFyval}vck7he7uk^^)yE+|HLnL;LH zRJ%j)6`PPC*%o}a6xt!(haKlKQ-XUr-iCd5aF@l~4*P=5fe2|anHRb1>2fRIK8)@rm#|P1WK#x$Bqh4zymFv#3rtP)fH0N!?Qvf z^p~uMN;&oy2MQR~p;6GkLSA>fLtUyvFy1|J=?;zOQzkaCSw@-yOs^4_l6S%}p>NTK zapaqfhxu?5*7mf+pkoE-_~q46I(m;FM1t4MxTpg22J)z7_{Sk<8ZJQ`R=&q@{QeiH zi#=%m@a#R@YGQEDrVncE$s(ZBy{l(|a*y7fa01k^nVcS{e* zJL!#l+C@A!;?|}>OOdrM)H576qq`2U_Gbd9V4I8sOxE_6Jxpo*4SI+yh_a3OXp8-y zZWj0rZ+wzSLbm={!9Ei_1)z5_9$pujya{r>_4Gd+VKZ3N-MoI8Zk>t% zUCIMlQa>287C{*V^N!B-m*DVSbbX+H7|!5j%gt}xBf{|EZXv*ow)iNxU@aFBLutgtk@aODXvg=(Nj6?TaDkWP#YV@M09hl{m_W2FEP;9mVw>KN`N z0Xc>CmjI(MwsIcE!+^z$!thuywh_i!2?KPCh(wS`!V-@XYU_9y*ufcvp-31P1CJ}H z1p_e{Ai7u?JdI?XJ{!g6I2q{t7Au<&1oDi6aOYqt2vLVPCJ1w4g21t-$*1@s*S2f1 z;u(!=#^!w@AKOA+ntOIhlBwjZ++k_ddZ-c7Uq02;OSbLYdTyxh!03i|#Scbm_ z*GLUt3x{K0pubo6MQ}X>nNT4RrY5*2uMzA!jGVA+6!VRwYs7s98|q=X)N&wf(_%Pi3G%^7G3etY?17XEyxPl5YMTX^HHMTLOWnR z1Ql(U<>4T#{{$}blwP8S?m1o^y5|ynyXtpuB6Y?7tJc4Ye)mQD{XH&QLqbN%@r-2Y zB|5SiRIKzim+HScO|B-`JEOCMlAKQvWZxhco{!q}X zi&}8c@!&uZWFdNksYOTSd{pk;D4i}PPF%^j8x2&=dmKh|0-5a}C}#@?3ALGt%{N%P zh`lZ#nh%aW*T?{2@R%qe7$CrA{)H>=^n>_t58{OutgTds##F<0I>Xo5ec?$hB68b; z$juBIIvTl+X5@CUY4m=8O@tU!7F|fWSMyqwh)F3dZfvDPtT{oB28Y!Q{d(D|Ro(OAS5eT(&4M62Y6Pec_ZBKVH_q}!`Qxq9QvVjc}Mk^1r@A`sX$qEbdHMHvDc z#HE~;MdZ{kE+Xf+z=90*QeK#A~eutVi@KbQjh z0A?)#v!Is75Ua7e4LViOYbJM_Um_8y5hKAO;2yp8L*ObNh89{vXggX#p~*R+%PApwZt@Gx95d%3XevPScWTys;C6*xPDs!?Vei z&4`!2zd^9b<0&IE?4G?i%nI0zZPc9&+wN;^g&Uw4&4sVsn=bd(Y9!^x;dnPei*NZ! z%&q&DbipvMj7(K4KNo?Vduj^vhKnfS1X8^rC&F_c2U8`_#*;jQ1CzkQcYjM{peOQ?lz~7X zbAtWl?$G5P*jJ1UJ9xTm<*Fmh**3hhp&2b*lMp?IFPdb$%A^AdE)M>g`L<4>%dtII zKGZ4}Ru)3nLUy4;?neH*UOtNBo)ueslItvpyvi^hl@>bo#00DkWEgJ^ac^ZhNb!fp z;32LJ{%{edTp2PHAGo#C*gx#mKBb7~=!d|1jI^((;7_iVXb?Fq$pxEY#VnoEN)U$b!_BtqhNIKBY!xUiIBIdpNF0K`XZ7ZJPTHkJU_}ls&jojq`uW{uT z(oyz?M=ZHX-Pr1WMfek`CnB{|!mfqjiBB}e)10f(BO3+^@f<1PmTH@^X@f9_#$aN$ zSup)xCHRFOPeJ7XvYL9rjo(;*9;6qvDr7#5SN*BFAHGbEFYHZG3tzS0KMrb%L%97W z63*3eg`R?;`k)3~lVe zdhe>nmg)k3P!U5_Q%}vc-<;caD~E{7)5Kmc`HCYrQMRx< zBQjSkm}47*;kf4qLTrZ^j%hd(QOFI%CY;eHI?V>*5?KOlLAI5lNIu8~op&RK1Y3h> zCu2U!_2citOxy`%OaacN#F{Es;F3uRmD7#Vsr?;>5VL+X6d;{ZMgIerX7Hw)@VI+u zd@!GwM-2gd>uL^DdljAHMrxB<*ld4bIm)0jE2vK^#A0w%y*mDeCL*P^U1XW?99k{Aro-La+Tq@4ecT$P;cR*4Bv#PF`RNdBwUiwkxZe43vHoA%&{bas zy^ER$QFFUqCu=^-n%VlVp(_OtzTjb|yp{4a(chyFz@@aSDz)rHhY+~3mU&Ux+b?j`e48KXMsS zH5?zq7>kK{AsW7d8>pG{D@n=~tk;RjatsP?34*kptj;a7V{f#Gmb4!Of!Z^Vod5{D zTLvgX$J~d^pwKZ5Ww1IgD=dYam&s>m@Jc+7wx#Gr?9ay3r%#CFgd-J5B$Hgc=E-oB z0SOX(ryv!hWYhokL}@PlUycK$g8z{lrT8ecTt_-Xc+;Tb8@S3**c_Y&Hz=1|8vY9f z(dZ8kN^jxgY{*VEHPDN<+Zxjp5k+03ioK+U*g%y$&N}v;wt? zCp-~D>IbndY<~f6dXfDF7&p5Yahj>F`-q-pwuqFj1gxS}6lBtjig7gT1_hZ!m7$@0 zHX}YfY^y89J2;+MD)~`E%4@dIE+$0oi>UzYS4@6Xc=Nb(2@8VSas40M9SQ8oi`yZ+ zZteYKb_k+!=qlDnzbAPz8+uaED#nwt7*8qy>QOlnMDQ$U!Q*JDomeZlVt^|r>0bOPGC34ZFl zwZP(}duba`TjpY0;SSeh>_V;IEF`+L z2^!G8LOiV*_OA7WC#8~|*a<16ctfoIUj=TZYeoJ2xEPGLT8335esP31M{{tmsWxEo z@f>KhZQvr@s>CfQ?lsWEH8|Cceeh0yX~GP9Tkw{fw{asntGs)n`QsQS6HRED$UE&J zhT)7C&>(`Xs#oxNZLWy9MaD&}kN*yAf;zk&T7GSurz)NnM8FHD0dzMUo9>qc3FHD~ z>kV*|@i-o04?xetMAK&gPq=+|T0nR_jENuUq83--h1#6fJe z7-l#Yl1wey3B3;ZVNg3j8`PxOUxAWVJ`Tl~FCj-xeIS&W;g}2$Ad?{UAPy0lDR(|zYN*S-_Q%^=Dt1X;w4lzyO28#Rq-T&;rQ=m!ansi z9Iq1TaK^V_A+-~&fC-?Jkw6)+@F$oR(It0u7ltr#7hD;CRQ?q4XKX{0&+d7r{xySF zxqL$?Cxd*|8H*q=_sh=kg0Y$C4BE~GT{0U8qTi>Z_zuCPSV(YC)cfKJ4sAMoU%m5J z#7u4YgqsfWzOqLFO^B<86H8eRCFs~=Z1C;c+eSB_06^OZU=p^5p z0Ryf5g=+~F{3+6(c^|kixTACR1a=r=1XYO0N%0C?B2;LQr2{bx@ghNEyL|;hIK|j5 zwukj&6x0J6NbJwb0@d|P(4zG@RG|T?5H13vxIHLAPke@Sw1hbkwOcW0aA>!_oH0L; zf|H53P)_|u+*^h~B&QQj7?7mkDCsXY;Exgt`ahRpn!#m>u7(!ri%<y*}i5Q2w%92L@Y7x}2zv*Vln5$T0K`Ux(->d^q`Alp(a|{1;^!^IauZgV=s=T9Ageokx4}BHE1n)O4|#I@fiSsL$>gBC6SB#poeHIxz`6X2KV|kP9eZ> zM&uTAPs6XblYf+E(w>aljckU&a1Dm`45wg97qIs&; zd1x-mRBdS*Uh`SFHE`iN9Vp`Yth*sQO-EGwbK_Gv z&g-~i*fK7NJ*#A;;O|BXzCJ1YE}rYe17;8xzbkE;P#Q%*U+9PR90x=e8kY@00|!2?~Ok@ZNssVB^Rr#|fj*KFUEtIf@s)yJC+Bbd4o#m(C? zTTcL-Y+?-Ee1~`d(!?vn)k^hhHMJ$LX?a1J7jSztcE^mUF1R)e z?}_|JZ0RV5iNDf)HQW@uWZsYW^V?r6>Wgg{Goc}yvV5scUWC>IwXz=m!hN;rnwpmS zn!j*wZBMt+j0!p4!tJ#m<|RTEv267D@&lOS7Y)HAg<~`w^n`d1QHQ@D-DrA0XEBQG zT9K<+A9Q?A{h^dIuN{~>MV(;i9%Kv=rQi{(^<#eV{>YyUCmA={8^lshxD*eqUAKgc zn2nfpb|&6qay!$?`~9PN(LerT80z7Uulb`adDnpg#HCIYA|A~2=gr1IRM0;tL3 z6R~sdsf1b)yJMr#bU0%$QYnVx)*vC;_}&egUzLtMoJK4a_?hSN@HWa3r6WnA1d6!_ zd#sQ&_^~s23vL%ZTAa~XZzoDPclrUK$d4R1799akJXaimqP`ftiFf2_sAqdr1!hmNR^`BPi` zd9V4fMT(uZc7x6`yAnQ2spdvz1r_${%P}crX1PB0c=Zlr=%?VSDJ6f8oyUM6D~^n~ zQ^kr}Nd9vREk(-={qPwQCKNt_L#Vt=^OlXPth?sD_r ziXh-(-41k&hnWe!sS@U6s05gMa0r#xXx9p{~;tTOSghS|u%kZl;@K-{< z02DaHvM|f^p9Wci!7Kd(@KlZk;mYj6ma&(yp# zEto9RN@wa%37GQ16Yy_e5>t?9@5-K?^sgJGmE=gO5V2RV{MAkWPh|7uj7XavJ|PThtwBlKxrAi zMfm46Lili0**la{k*Yyqm13^(lrK3bg|34jN%dDc)(=T7)rv5cy<@dZ74JhH5A`zO z6>CoBQo*ETrz_cbfmZhPZc283nvy-naiq_oUQO9qHYF=1N9k3QSz*srl=SzZ`p|W+ zgNiZ|-|-*F<3yZS;rlqQd0dX~6Zn3LYaZ9(+k$WLhw^w3=YPld=eXvv+dGQl!1o`x z=5aK>lklDJkvs-*{vf_j;F`zx{-P+4;CKSp{G@d0q;wh6sjORiXC*zqi;_O3OAT=a zkCk`dRg}#46vYW|pU0Gp&PqmpHzi|Cm$H=1PDkc|Z`^)Wy#kH)eUP@Merjqr1-y^*bWybpT{7g{} z;H#ov9z~m}oyxKY*p%)mmnofVQY$(E7W*gyqTTwYDSfMYD}D2ODSe;MJks+}j~J}* z6N=LHrxF&A*(19vgFenv1_j0_gQ`X=gYt8gK`En@zEPYj05AK>3}sm0yD7t}YEp*f zFHRYjGCw8jNWVjU_w;Tu$HxDolznM8<$@}|a>4XT$_4ool?zf-C9_82m5Z@w_fJ*2 zrA$;}xRM@O=@@r+C2Km4pk>w=Iri+!x+@puk5Vp5aVcU1d(xZIYPwc*iQ+}Ao9*hV z^q&5((mVelrFY7MO801AWu0+vkPW;Uqhw$#U83b2ONyXPccm}->kIkpJ2kULz^U2` zIC}tRhXn_@knDk76#Mi{#h!0h?9Zcz4-|zcq)s=0tT^)hiUVUN zy}MV$jr(HqqYwIw@?;;V0ywN9XuEj<=sRB-R&|RqEWcVAmU6Qq=o=j?{ecv`?f=0>J6aO#CevJUmz)3>R2O|Oc~vXlWmlmUV6%7ChLWdQWY0E~6OnCv4L9C9>e z590Xk=)0$q`A82zzar2t1-k>&rgqLvv4c-lUBM?D$8-m-pi_PZ@jjA%NJ>ujkTj(a z@a+Q_eIBtN%Bbm4A?6JE03JEOBS(I3#qoU4BN#`S$?NPNul`HOL95ACX45Xi=S$ijT+rvR$Bw;Bft_d38W2i!6x z+N-!v`ezSKL)%`MQ<-RQS1x!Svn?ur+5NjHJ@R`fJ!+$~0_D`{k|%w^lio_d=i_*S z75582b|@DH`YIRZ_fal9Dq$^U8!;y!qtm-$PIOWFj=`MB>#ht5^i3I3)hA_0e(#ha zDLqrf%#7mCgd>(jW7aQlAfxh-<+D;32m|+(5sJN<^xaK z9H~=gLgr^c=C6aymr0qA(cc4deaef&0{)KPmVMTG_I~L!`_!3elOybUpt=<0(Sha9rQaLZn z7S{zl^Oh{AoEQC9f{BGw=iRn=$vjb3JFjiMq%!Z)gqqRDMD725{_my$h4BBUAH;j& zV(Po z-S_Cd=@uj;q>)lu1f-?A8>A229J*6LN?N)FK|s1ex|Bvh8VRKlY4GkN=lOk~`y2PZ z_n&u+_mB7PF_xdX=9+7+xneKQ+Gh_>qb$q@3*N~8m%~5n13s?y1%Rmy0MG!L?hgR9 zpiB|~0N=orxdi~Uj^w1CIfH}@&u_H3;>~^jWNhbFv0ZkAhE;lWI~X8 zV6p;jPC(|o0^0%Q5|Abl;LDMqYz5LX5&)<{*$Jd?3;Y@ZDR6Ra<={dW#7uYlCayBjNGkWmGof3R*m$aXLpfN~E=*y{)| z`4Hq>Ay^K|DN0Dwtqnz76tzKUfah!+yi06-*`a6N!>G)ReAupE>XKn8;8@4SPo2G4D^-@$nTS-Jqm2Fg_+_rL@j z+p$FepjZO^Zh+$g@*GULpiHt10IDnC*n_eT$Y?OZ)>RV7Gq?=SX;1jDeNo? z1#Mu2okL+VjIc8(OokD5{)EXe!p@#B8Aj>#I~hjUnG>dm5q92$$uQ!BvBPB8xl#-+ z!_Im&U?SNB{_pkw(-H6lzcbOy!c)Nj``@gM0CZ|009D{`{=sxepiV^>0XPTW>S9v; zkKLL90^p>90OYFN>0m>LZ-@ZEzJK9^`-A;aD)nGE~u0Fmo5p^#e=&4 z)pZND1-tNG-tijF?{Ln**#l=aoP}^E!FdSx;|tGQ!KnkM6r4P8Qp5RAOrrXC?SFy$ zse&^J&OkUV;8cTC3{ECE4Z-n*T~Ih9;7o(F0?r;dr{LU#^8`*ry*oc-a5BKj4W|U0 zT5wvx=?-TEoSAS|!#M!w6r7uIp2K+$J`S{Sa=?iX@1FuZZvdwqoPlu0!#$1;o)?DmF`R^O-oowr z;QS{JYH-c|`wISVc@=nG3{H#xR;~v3CkLk!f^6+^x0kcA>3Y+58fU=+<)s`znnukIMwc4v=AdRI=(e&;_P-hP$yon90kKlPKlasYCtSJAs8Y|LO+>qdbWZ2r@d z^Zzo*;S2NS$y;PqRBa-}t+{@yH!}s_rPdc*oH0!oPky$L{P|;_mb% zQe}VjcTs?!6NzFyVR8I(g$|NH|D7+d?fN^fnHP5?6zRE}XLyBjJR3Kd{qEyCay-4` zRENV~y)VICemm)oI#_plrr5iDBi#Ofqw{ZPanz1-POUv$;H|MY618n z8F`qwTASHBfuHO^8R}>a2qRm#Kp@~J%)ez0e+xa4?M>|L9L>PbjYvjrc2Gy~n`Sk@ zNXN_xDrId4g}4B@fRTy4tECad(;ECH)DgkR+QAwM7T5#ofRT~7k*gEL%-X`*%*e{b z!Q2k40NA^_o4G*QU=MbH`-tigsGF0NwS&15#1pD$0yVQzuy%lG1KkLJOC+qNAy5ey zYj=o?tb>K41O#egZKn-9xvK}3!K}p{-5j9W0C4X=-lVKuT>qA714egR6&FW)C#V|4 z)X@PvV2j#!7UFh}t`Jxio&R_MI}8po zI2Ky}vVkjs&w#k15$M$jbgSfO4lx4zXKDwrHv*q#)&J8fZ0!F1l@IRXdO{^`v;D)fN1hq~uTLlwW=-(i~dmEMq`(gIN z+}s7?>I%MFh9qt0Xli07^><~CASpPSnb^I!Tamo5mbJl^Ti{H1Q-;oOc>Qn?#w;Qe2X8pPGn&BY81eDH6LfARou z0EoLlOrQ{0kYIqIk3P8O-w_O>Xq#9=r5s(?>W zJFq?isut!n1_J%lG{HMKU1kj7U2~-hm%)}Blk_xafk_2xyad6V%VE}+X ziUxSgSv&kEH1MPjkL<2%^eEtT{%fqG{`U0mvICs|&I4>{HLUHy9pD>m1a1ElMG^Ad zGtqzdG4F4E*iC!qKNk4w>uy~Dj}RolyXUT3+JFawq^A?OU?d&ftz8@)>>&=&yZ(a% z*!%A}fh{1w0Y%*o0&xOFkX79vE?z1S7Yo=JIGEkt=inCd7#6R%n~MwR2tEX|<^bEj zv>I06G?{}+;0mTy_i}|o>|vdI;R*})Z#Riy>qo=d%=Yj00X|_sR)gA!n>az;T)>tb zpkUX4E|^Zi(a{#%qud<+-tCeOP;e;$gRl}UYZur)py}WNt|RaajiTvrx6PSLdYVC; zU^fof9Bi8ej9}yczb$6|SM2{xs=TC{lBB{@uDd&u4nfi#?C#&i0sypkIZX!_h@~~y zHy42VPNViu9&$Gy>JS&$Q*!vUfDcga<^`?>2oYghmAbg1i37O2VEe#>JI!4+FrR`5 zy8Js4S|)aGkiRpeiuhLnccKn8fx5YZ+YS&3vxPa7hj_sZbzu3w%K}sYCVz8(Zy$Jh zF-!vv%YQukz%){JZmw3a8ZQBHa5ya?@P@!iv9PuTW0L=$+W$xWLP87Nzy297R6yL( z9$Yox?d|~4aD3rn=?>OZmyuNXXGotS!ghmyZp1SLSy!+%mlt+URwhbr_TYA9rVX6` zTMO3LRF_oyrv*7c#RO^vTTbBZ=n4hbvbv0d_CH%_D6&1o-pmPHDG@Nq6$1Ws{J+=# z`y+t-*Cir=36dIo42B0%1|*2T7pxriJOBWX^v0l`1thps1HofbVElixgBiij8zuh> zJ>v1b*Y4d}YV02+$baOD;mfZ#nG0QUc5!>(&3T;Re0`@iz% zWe)*tQ2$Rka`{7`1nkH^c_Kg_Py{3ZDS#E=1lYjD2};_4ET9CE2h?zYNfG=MrV0F? zZDAhnY;pg~uMwaHNP?gC)Ip!hpjRVM76%m7#id~JVt&Md0gT}8LP7w)Glch^@UIH* zuZ^c5+yKNWn5e)JcDg`>EAPK(Rip;A)iu@C#a}3~nVFaZxYXEigZnS6VTE^p;d$6N zSmnjIc=(?2adNVH@^Jq(W&s@qkm7>g?!S=xe=ufsvb6;FRVRoG)EeT-1_ifv*zX*c zJ^VjcW%IPR10IZtAqxfof#ULR*B%-K%U3AT#R>5M2A<4zo=hdx3p{2FNfkUXRn>S4 zafyhC32{t{!qPxF44FFWU_@Fmt0*G8LUb`ExmRO8o;SBkE&I)X7HVc5C6+(6w8*Z` zX>T*8v$@9XJTUYo=4t zTajgSdC$5 zucYhPKJs2Znr~L=!4}F)qB&+`ai*n<(U{qxK0qh(r9RczyZ?e18=VJzPPbYx`Rl+- zex0@|3usr!{2;_^!(M-O9beXCwmx9lcrLMG8s9BpdX)zO_v;@Y_lxzm6Sq5J2#kvb~zs6nu?p*b{ zAOvu630tG~4fY(Ua~u^koWc3142*@!ySiSvzN|Ki>>WLqs}z64f9k}#DO;Hxw;D&) z<{7^r(!G?lEStr{ybzg_!mbd*3%)>RJ$>>!>vd|aB01Fg!Nvnz&D5voX7;hHSbk{_ zeAW2&>w=%+?^}A4Kg!8S_M)G)$l&`@MpBgfP`-A=>+_yxK8xkAH#l8HpZonZd~s-# zrpqH@MRKHpu!f_xf@=QT+>~T-DZwY9eP_d_v+DLvs#jS%Mb{*IIINhSx=19;BR_K7 zW{xAEx?+(x9+4UMfbi@9l`Ey^`C3Mg--y>VGd8Ejo`y3M9W3uO!!z zzO5PNc6G%48DZAXZpuE1iB#k{Yw@HA35{qSJ5sfh;|-yjPw3%eRelIht=+@?)NA`I z1x`$rV|?0*xOAqsA5d7uUL7++dU%JY z%1+K{^c!J!hVY%wLk4YZQq7Ik_Rxms8XExD?AcE|D!u>_nlRCOM#Nm({^vyHDHBc0 z7sW)*{<8YJZueE^N&MO|Zm&dr_I?do^KhYSKku|GL?Q!PGB<0&?(_4s-RyUpD&LH+ zIdgmP3FInxCr3V+ja{F8jGNmXZ7F4Tu^iLi(De>+zf&yWVNjbplrAFaUO{nh%g?a1 z8^mWwjIey1$B}+RtxG1{p3ddgq3z^HC-uTL74fbPEe7fNx z`Ks6&Y*)j;hT-3I+7J8t@s8oKvp*)Vy0Z7i$OkBZsBP2Z1i$mq6}1+oNAkp zeu*4EKI0QvFc|F8PeCVND7;7@Llir?(3IyJm~=_>&?^qDe)6jjYK~s`4c8^|(u{5L zLv@2Co|M~zjoB{Bw_j5-NS{&suFaO1eM-d=p2IhJK{I{WCs?Iae`B+VLx8=Xk8*ZK z&*$6O=BOF%Dx$>d^W$u_c1Y=Yx5_DkIlGB&SkSjwI*zg9?3kJCadOUspwjNmyn6!i z5X+g9TKC!%djy=rQ9S{7o9gpQ6XEjnBkLdK(;*mrz4|m4`tC1huDF=bPQ4O-=jD7C zS<+V$P#?$SeQ8FRz#b50eW6@*2uX3$Ri@v;lp3enQuL%?5Q{_KkZQ5OBHAqG z2k1Axgxp|PLm?#Xz&Q*?;hzdV8b>+w=%IKuaPo_E!;I5$cqPOPlZ8o}@ zhVF38zCuJnUHhEq5wl?QL&ooEYKQk89rd`!O#>;dJ<)4SFQQ-+VZ-MYkC~Pu^xlei zEyy=D8WJN6Wq)fxUEi}1B=h8Aqb@}?$oqvibIqCaD!_V%alZT6TuR`2i*EpQO`9|M z+GpqRy^~EZ>N2PCT)}6L+RBGh%`qh(8Y>2=HR$g<6<097^^rovU|t}S`uJyEtkVCp zEt;n`k3Cz%svz}H@^pZT;OINlP4>p(m0#vUg_TXgtjjU{IVk7#R&iy|rB{?=>W4^c zY!zs>d0pj$1KAQuo^qy~NzH%!-NILFcfRC2i}Fa=ZCVpi>$K)p$A|Ct*U@{CFG~ns z9UkXCyH*N~;mn1!j4Oqw6ZFkZiMt6|h=>skDe@qHVySC-xW*8ghQ^Y`bpC~u&ckHo zbeFl!$>zc~_NmTR??S#nlpZm&Fd8Z{3+XXpRQNrshk+uL=PFb>c|MCj8ChpKhfv8d ztC#)aF&pvUtf-TRr~218ke^K0ctULmbBNt*6<8jSpVdqw$J{Qt*LBR{ANum@$c#L- zc_p;?=N_8M@$)XuvPHh#l+IrbQ6`ToO&L#5)?B7IPubfot&eqlkS-m9n>j@}eSa;z zn|~I6edS4-ZGfp0{2?!lL7B8vd_(Z;a)C%f=u13t99DjQ(&5JH)AAL(s=J*8);%ori*8j*YQu8!%$kmUVpqUXptbS+#<6Tza#g;l3p zJm(2buL<^jLQ}O(&Ta>53=#7j-=7*PXT%Dm>yT(3@S~7t5=gxy*jDbQSG=7gIatFH zY-E%73UEqGR6dIudZw(uph#cfO@k9obu?vGaOh#Vy4(@m$6Gj?s*T}Zc+{OIl>#K& zA52~RZ1QKIz&mOfTp(ED#!SSex#mVp>`p6uBjVc44nAt?6?(nXBGoeJ&t@Cu~>h8o6faPgA(0 z!NM5F_>2+oXV>zxn+*!7^TNyw(Rp4FKR%IsAd8N4?-yeBGUL6`n&*WWf!=$k&v1BD1*Q*{X@=@jzn2WIEAvmSa8PC-xYuX*eIzt8md#9>4A%Ql6M! za~iJk{hlJqrm^S$vIl&dPV1gMZB@W>%QlWzaqWkWn=(}t#oc^`R^V3qMmt_G>m#n4 z>s$YJq?hx@GD*Cb4igu*Y=MM|)`+ygk$ubhD|Vaoe4p|!LFi}7b}8nf1FrZ(?@UV^ z>DGOMSFx5~a!Y>pUg_D2I()mm1a>wVyoPvb_Ct|LCDxl#TdGVp|z=QR(NLd_>Q8DOzQ)Gxv5(hLEAp z(zWHR3qo3Y^Z-r1VaW5259gb{Mc>Uv*;fd@sR?Yfi9EgeoNyLxB;R3$pJ{;75?wWe zG{%mpYOftNXM#qZmtP^`R>f|$mi5zD$-ITsb{%kg!{|v%$wy}C;`2)&>d?1zV-{Cu z=85RKVKkHHZZmzZ>(%BoVrJ3z3f0xfV26sgYPyh11pIT7sl^uDMkVyQr}B?qtRpFM zhL+=vZV0g~C|A9rwr(F@QRUuCG7`KzPWK~wBx4$nCc0DrH2l8uTUD#zDlqiL6zF?- zpz6#NPQy;PQboZBSf#zM5Ci{AblgCu$Sz+A4JV%IO~lp*Ah@v!6Rs z%gP_(>9Y6~abbQn4B){-*&F7e*Hh5V_cy?oBu$n>JS^h{%D0pQr@9NOD??1e{F>Y| z@BzeiD(|#O%2VO(XkN+`T|f2p_E-ktHA?9u}#9r|XxGuJ5(<@~QUAmRKjuC;BG*kF>N!SgxOnT4t1uO-P`VCSKW&nC83*K>lc; zf#uaMqy9(6>3j0H7jh$e?XwA{P2cN-C{3wRxfxWub9ws;#dPe{=ZuWkwD)k-SXOQI z1+JAgfA;#){+Q19=NU&*3rO{#7aAhMuo{^E-hsO2tA1>Z2b}KUd|deTYBfv*e|Z&h zT*=Um%P&?4wNcN`5^#K8gIr;irpsjk$t0MTBgNEqxSqfpM(vnlknGF5O+-Nsn3@-$ zw2m=Fd*xD2S0arpm?JN>OMv}{Qt5lfg5IX3?;vp0fEs`Kz2I^rv4$Be~pxH^biCsU-$> zK<2&YK<2*Ww{4PdDF{?yH{<9uubi#$Fc}936QH<$m-Hkn^|no&9hzZNL5f};H;&OW z*Y;UjGS!3UtHa+JfDQFSuY4NfLW^8`1+)5nr5mII9aO$t1LT;B6}EPy)U2!@SQ5hx zt|DR3*0Mw|CcJq|Yz!NT#I0J1$5>zgIOna;8O>O);!GVdI8DEpS;g0hdiJ_4?p9Y@ z*Ah1fMW!PMu_9w&M=pb#@5A@-V^3$PXCsr3rMJ`(BaJ^$3-2*2Y{?Xo~mJd*SB zeT&j#@4`90Wb{}kQ*}NWz7Zhtd{s%$~SY#o( zQ`Oojt6V{%@rcV_XX`xp)~;^9dGsRas^Pk0??Zfnm-!zivg8ieF_O0HIWY`WbGrwl zK_%pNR{=8!Ot~Aue;TQ6dqZh%M(I-8BAPJ>+NBC?9oIT+1G20%IdvbL<5K&m$iFty z>tC|#JFqwXfVHxIA>r?T)S?KSKXpMTF4X1To5UUFM~ihQjBKEts`S`q-||4s$u)=*@f_92Jz8Q&JqN(y*8oEI#hID(}(iiSy9J} zU-Y|Z&)xAy^AGkB9azwh3QBNOsfD~tLQalHK7RGd)rZvC2TFghYx`P+v0Wn)Q<;UB za2BfUGo2HSq9qfp@2)n#qVrZC^-ySI70KFdY=<~oqv4tGa9P(T|FVCDeazl9vSSRJ zLolYcq|Ry$_t~va-fF*>HiIS6XW^xN3G$w{C*MuzaBnCvg}j}^Y#m;sGlu`d?uzvm zyMA2hec7*kq0v9QmCAt1*f#uN9K$uI(~6QIBR4q5qwZJX!EjHE6_x$Q!%IPNB0G+l zjs?N1tH-4qoJQ57w-(in>8I=BOIMlZ43>Lhl~eLhlqZFj6en*=J_wy3+Eh6#-RpIy z^@ugWUQ#`M$hEQljpE1ikz)%Zk)K)hT_S+JVyq^)$j4kqM8jZNqE2p$KB?kt&Gl66 zzS~ZP@4ZRl>oYl?6pgG@-x?@iY7nb4vgSAmMi+P#Pmenly$O!GJd*tIs$bkv#>%xl zKkJEzK&fe@b~pcA05%rX<589m^V9wM=&N`3Y`5xFl^M@NG7Ncb^(xAbnAul50^MA~ zE0Wf|#5@9S4vX&@6Cp&WSN0hXcF*yMB&HT@NjWUG47cq$eA{Dx=w@>CK5W#dRKU6R zTLI;cAWcuilVxNrT1Z=QDodhp>Ah&Z4%ynZh>Xk+8b}-c8Ac^Nh6YVtuf(PMda!%3 zyrq779rhMmckq14l2yD~ym+nI%R@1tX;9zb`?c4MrLtg}WXI4H6iXzE5rv^d_2DRWnFY zzE&RF4CVCfk-6eG1O|nmHbwQ*0vx6W2dc-t$u9}wK2eV|k-HBM$x+AC+P293oSqXV z>Z`eCu48<5NU3>dx~1b2m&mz(bWk6_bMbHxZ$ti`A(2+1gC#%kouzKtF0-eN z?^etELgoFA29a-@b<%^>mesz64`s`K^0vew;&iIbL93$^^n`r0P`e(mCWu|ywKd!}B zHO;*6R5LBXE7RQ-!XB4A=1e5mnosX@->##=En#N2BcA@=Bh*J8#WCz{>MA3L#(q15 z-*=k6=@11w%(k?G|2zKL(?nbTc&4wXQKWp0Ul=aQJZ>*ii-rFPziZ(h zK3a_7xnH>z3n`bF=Q_ydcYNY4Dd7w?-5$3Z@uR<;mc8O7{;_-RxE=B^=_i^y9j0yE z9&^(cZLMnYOp$eN-R$Ln%89Y)dk0K02l1Zhd8=3pt0L*tEn8LF@v)n3C+_LWWz4BI zb{RcO2}X&0AqF~~;Nl-L>d32=DG}^R%~%OBLY-GzhnxyWP_xz&90ou9;T>Mdop*c6 zFU$914^rZvbC^VhjK<;o@SP1>sn`DOo!xDPHzN|7%YKh8i{6q83O76aUR@1$dhg_Px2$ISM%{~wE1>98Xf!2AeaHVJTO%yZlS(uvH zal-2>5alaWf+=bBZU=PG=!xpCCtv!>JMM>mL#~wAoc>YdFl%3W@W(~2#{4M6)6c#B z^Ow6HKkrS8w2o8K z?a0n9h)=Io9ka4W53gdOfnX3F0$M_dOgA^RmwttxANxAKJru=eqe#3&6!C2 zbB9jDY$G!69#`NY59K4xXJH>CKU)1H<3;&eer)nd9Tk&;y5!cTReZKiE!8lNNe(@7 zNx7MaKHV?$@#x#Ru%iBob=QC)gIzl|J+hn9Kt??O4uxM8$@uT}jbfg+(s(Yn^FHM- zr>%%T-v8xOuoofq(Zjg1B(g1phx60OkJ2dDC%QO!{!ioaIgD;6l5Mw8-9M29khm#- zC0ZQ8$dyJb%l-Py7mq3-d#59lFHmqlG*lwI08Q&5;l-Y=uKdpj6yAVu$m%MUGzajL zvXX{84wc2v6xh}In1C1RjtnR_Uj~Uel@s+g(UH&ke@;$29mfC3BYJ%>Kgw{f+@Pye zQ~gM*_&Fvrb96+x2bXjRxxjf`*U`(VEMwc-7ngv%An+mDh?Ywy_mW1~DdG$M)rXSH z6O=vzqC6sHx9#8+0wuDSN)VH{!xEaI&*2oiru@X1`H1GRpCFGRXvIozYpk*;@_-K0 zaC)oKac<$%R~Dfb{AfdnC1p|AooUht-=p##Y#kW+(!EHd`W@nt@I^X; zYI%O5x>GDBX~nkuCbK|Dn>u( zTj2(h6U-I2T&~(7Umn_oFTB^_e#(V#!$aLxr&;?N!2F)GcYFB$R=y`r3$0w^O$DBToVV;08~N5 z63MW_)qH2M>;|f|%>A`$jX7U%#7Sy z8mjTDIo!fc`o>6Ucq%eQsThJl6VzWs<7OvR&k>|(eX_gwh^r(Z+7uz42WgPi(4{Bd zcb#OBo)$kxXRwYUAr$?x{6IR9&N?7bVTF-45_!gsVLiaVfw*R3v54>^Zc_JEX}7%f zgQ9wp;uF)4vyXK<`I3!SoNb-)KWA0*)l>L&ib+eW{;@}{jqIKlUGb4G6>=S|J^#V7 zF~UZ;eISrZl@(on&A#;V=T~nVj7gT-$D;wkISa^{ z@AiwVKZs5Oj-A+hp0n(_^Hjc-QuI4o`)Ud*5EQwem*P6f!Cu!RnL{>dCcnU&;U79Zw4aXB-1xU zXRX-Z+!~k}U@j z?%GXlJFXMosx0FStp(*%I-PY?<4k>X-7lZc7%C4giG6wcZGYeyR_2VxQA#Z~^1UCI z#Ikl~&#-+>SQ(m!5H;p!1DEtUdn*s@g7f(eei=S#KrrD}k>;Z+c|+}wq}Vgb?`}RB z+(8#+i_(uTP4PY9l*wzNbskACdsSgo2I{M9Udyzrw&$^!K+3^X;xeKn#YIYem}-Ba zDp$={n0-V!SwXk5MJZrC(h~KYIQ~JFb|K0D|7j%;OMp59_KaA{SDqV%Nx)T#C5;rL zhrcQ0!8auHed&)L}=43PDKrQ5BWG?ilLpLSwnlTt0;)Gxmg&@5i5pd97QHq))7&1xNFN zb6P%bg8}{P*wMPPjECGdF(Kwx)WJ+RFw!9wjkPX`56>=A)^Zd z!wHF98htjDrF+1Vz;EV|vxL-a+$H&!HeI+7=7tk1>IEK(@>6DiqANtU7I}_M_9*5m z4>RKA8}Hf+he@VsOAjh35(6%ij#az3@%xI!(=$JW6uBOlH5z;&@TXbYt@~Yp>>xL| zQGc);65z6K`>A9w?qzLSPDNUV`jr~7HKNJ1!KpKX)t{8sH91B}(g)w0dpY%zFEt6# zfahOUu;0l}Jgwrwz%sTmL%!VGOkhl`x%j!*_V!C`cay3x{!VLo9dkIZB6h8t(mb9^ zWG)r!dL_Y&*>qH0M^XxIh4wIVaeuOlS_;GUE+9i&;!}2}ZaQ>nu0=7jMTXAQyy)P- zP=`UMoO`n9KA$o)>A0)shB9_%x$J?`@nE1EQfxBPdW$HFz(MsEo6}|B$7;UkZ8*Xs zlP6`3k~j&ze4twOzC`{ z35W97!%4TkgNlMnVRll9idl>J!XNu|9JP>)TC z4zoY{h!E0dD}7|?FU2~#^vxYDR<3*cGP$o~D{sa#_Qlwg{&F$K%RIZ<=YUot;dtXW z<94n^Lb4(#9~w%Wr*c++IEF1>AGaalQISr`ZqBW!^^Sn3cHbUELb80fpJ?cf&S))1 zyfX$_5-o-2T;{j5aKDC>zKP8uXx}c9z88k;)3Ues)Se`j4(3S5nAd9JjAy1X} z0FN%P9jDlMljKp_q5Zz(=EuE{;Sp#bomVbA)H}o3ec}bAxKdV(wH6N0cl`|vjK5m% z?)46K>4%0((VY!Ze!9p*_lVNe)yXXaT5F5v7%mvBardZO#% zgGh#0g?Fkke3BiAo#tYTE2Ax5H+N=J&*)z1+WNVoZCa^ejZD)Ndzyf4C9ikqG2%Mpjo91T37y`1`jxE}K^xM5Z}73*e@?q|mNSFxO%)yL zC!h6TKM%|ou0Hr&59|%<*4e24JSU~GKg_@|}fgMK{a?&;!j)h_;eXx$r3s!_z*o}*@QA|J>9==ulV zqEqGA$5-<2wkXIBYk#^&$#GwQu7Ai%e*!J1?4iKyvlS2@^;VDwo0G=OA8qaz5*gSs zTw25qX)}!t7>FAy$n{CWW8N$FL=e{(O^M=RkWOjhHB^no*!+HdMLy*sA=;i&Q=@&=A41xg8?Q<5!bawsPIOe2Z zNvbzmh74SZ0s875t+-+8ax>IeTtqZ9l-c7Fw?1210kZtYI3e;EIaya zF_U+8hCF=R8+>TF$aVgual7R{>V&pwr9#rB7fldm#FE?brX2Lb4BbtSn2!=#8x zLuebynVv}6V9SsBjV-hMS!?s7D=X#|>8tv%#Ms)oh+3k_tLzh68KU;f9<5lf7y%5BLp~86Iq4hi+|NEiEZd$WDgf=g(zFHcfu|@Y*aa?1J-3YHdwl zR!`qXTxpW&g>jiI0WuZN3coK!j;FE~y5296OO3I`!7TZ>^Z?gYwc66h2b#(D!*!6s z>{>`8ftlAY-{et6_3HbyOw%rc>8>?v!c%Br{Xe^n)@6OL9?AT233>keI6J5qN~=DZ zf*XUDU|9*U6zefZTBE+RJ^mcLqm9`NJZIRJBvp=dTFMxGws)~WZPQbm>4hKCoAL7b z@k9CQoBo0UENH4ku0w|jI_-u5bE$}we$NM~-DzZ`?8L0F87HjfDeDC6=KL~g(*;?XOQ_{hde#=Fk~FW%qdIwgKf#X3O-0WEdJnagFVi2EVsdeOYs zAo_gXC#FqSeV@hMz>_#8QuR0E_hd7nAJK$GPn{(t9ivXWRWNC9-FD@ndSA6&y+5gt zV~sov@~_!NE>+|im~=w$$a?jyeUh#7kM#=h6MI$g(0NiOlq5u@zeLQt^!9lv#G0Df z!e?-Yq2PYxSCW>a<==?zzoh6w4Zq{RZWN(@8{)y-TA*Ml@RAEHyLkjRiQQD3M+VyY zVUjy=gZ~dfQ8NU60@aY9u(0cdw5CT!RlqYMiR@sxbQsEl{1E?a`XP(&uHs^2 z!|2wV@vZmQ>GY4Eyhu)as=H#rTW9yF8`Vo@_uH=x0WrkM$@qpD;l*d0!TT7sr4>KZ zbhPLZnaWj3oqLc!WLkKNKj`GXmF%jF3^lNdrNALp@iw7peRVK!;nEfT*@F=okkB6b zxF)anwe3mErGk>kC&5*kUvDqpe({PmLwkprYhCUUQ7h6gfz9w{I$?;o{HQ!7kBakS z?m>M5y6?stgOM8rx^}zzEQD*Eo#IBGmCx^3;sYL&wd@iu&OF1|XXP1ejyK zwE9&8xR>6U#6Pj-4_qdzSf7l)GWV*c#HoeQQ9hsT;M#P1@B5W@+cH5>i2tN&OpW~6 z9|5+khOO%vhEENF&9_=9hzKzp^nzJ7ktbGo0)~hOgfjhCXW+YQmrDI=k^yep(Ix`R zp2d%b9q70E-U228V^TN^sv5d<$X4eMNJeAzJ8*782dGr6oxQ&jC6E|rqnVn3Pn%Wq zqrtEIc?=vxFDkcX{ML7qIJX?E%oB5qw|#oydalv@^1bi+a%?xwBus~7VK!~ z1iqKhTeNT!aj{$Zdj2X&hRAlLzL(m<D61{JI^$6J^ju5qbQ7~zYD!mg;&&(^?znzD)@8!I& z>Jojnh*+BPJ0X@7e9cr^Yg%#Z8}dTc55r*%da@xI@r?2_F)xOoKlk*jHO4Mqi!)Kr zw6X0ng$5WtH=Y#q{?z+O?d`9$8FKzBHr!&*;>`^4xNYJ_x!83b9^(P7fxa+Nm_kKhnmUz+D_34`#>D!G`phwCu zaGDH@_!w#DvhQOFCj6>cPMJGn7vC)9kGAMHs`}{Rd5inbfr>MRG#z}Tu3*wW7Jqp+=3Ak+K#pr&$4_L3w3x4G)AU#bqf%IdIC%8VO9 zk^hBtu*6q>dPRrlM`D>)pCf|zEfb}kT!JwB+rwrk_nDKF66hcL(tRu!k?s#JALK6C zDxRUntsppM!V2K>adfHG?&Qp%My9u)sQ>JA0ZC+-^B0)OQ{he!+MW1x7J=r;NiW=sUl{8n zGUnG9pYBz}Z+?H%jNw43voANzgb{T(o_F}*cm7uvpBU;vi)+JgN*bS_1ZWwGDt_z5 z7UuWkHh|c`=oHHtiJsXXBKE;u2Q_nO`99L?q-_!2xPz{$O&?P)+;daHW3ILZ4-%7- z%9QLKrBb8zNT0DomT&v`$$U^vhqwKH>9OZcshLl{D>!NW82>S4si%X->{w{FuaeSg zLvK>Qel|;Ux=g1lLLH+uMMmHBar8u*$n)VGjc|x!chGjc2C-E z3XE&Iu^D_LCJLh+D`|2`bjl_kDOU~}$r##X&0D)+TzTF|D_K6l0&c9nXkH^9dVc`Du|(Gvl%Pt}D*3*`8yN#o!{m{xmzPE}=op zHSg0c*~-Gmj_zeiEp0JpJ2Y6Na9pFb=7Ev{L-=-T6Apd#7g>Fh&kd#>&9=*KPf_ zB&TG~1XeENu}&LQjN^H)M4 z&=pet;n~oh5K$xder#*Xymx4cbv^1NjFkvrGV|qQoenhPA=&6%Mhm5i<1RZ+HWoxA6O7$ z8i<$I4jtQ#4m(8@P5WV(k+04kHxC^>&^J{1+Q3I6^XVO{m3xq65;vl7rG47(*}|ra zL~rgDinx52^d}kaxfE}+m_k-BqP_{lNz~^RRG>#OFdo!!hyGT{bmG-qNJv4*k)}7o z?fJNVKSukokPAQGv)Oj)slNDHk^66T*429M{r0d4v-=&F2tm8+)h9N$S=(m4h8bfj z2f+1Ky>w2dkWogv;Ox3AUY)I+m_Y;{OARs0bn}c>%aqQm?WkzNYd@98o;PTr;Y{=A z8|x`E5YNf7`{(X64aQjSf2WF+`{tbPmHLIQwEYhGRa2Q!gtfGtbru=da`|Mqm#^Yh zL47rm_165Q@?q0{Uzx&&a&Wl3Cf50)BDEg0zUnWtXjuB@g0_khtC|l5&vuy z{JG9BDSsP_6k;`$?O9x>?K5wSy*WEvyKEKRPj`m-HDj9mVWi`6<$S|$P4SkgOhuVv z+#n>YPahOXH0mJlRG#2Pu`VuSDpX4Zuu3H(L|AkNB`}GM)@15lYRlc`va_cgLZb<&_CJ-y=1MULIIGk?(vJ#YM3CbNR^e(_$*8~V9=F(r-y}Y8kc+zSYZdH3 zgvado*q+nepMNJvQPB0rqS9OU7TO6fd*L^2BUSC=<+al0O9?h|IVg5)Q}YB!B)M}Y zh}la#@2O(A$yTdYMiD)Y&`LMTvMDHHJklCnaRru#+`~MpxOY1l?@1T$zgYGu7b)P4 z`tD4YF+%;jg!T5#P7)=iniK9=0QKXcq_hqJ0p-Dt{ZLja27P3_AL|O5uG>!QR)VH$ zS}a_b-|R3ns#bs-p?GhOw)uwywUp>~>;gM968%(q0jDl+5TTi~QLe6p%qip9xgnXS zSQ7r5p+{yN#Jb`Q`{7THlA|!gofbFh4yWlqf6d{I&DxXws$ibX?`!7B%42AXcfrn! znbP)1vLpVOb*_rVrZ$lMC+}u%fo9kRB}MtS-UKmbuczsk${6=oEu+si`126~5naa) z?zKum%NOZ}hkaW7u_kdOecX80OG5^XpNy*BV78V|HpL9;^^MunmEn)&+z4(HyzDwv zvbfDQi1l~p!$DZ0zUH8O*;=@&-m_6MbS`Ynd+uGerA$W{mKynxyeN(Meofy%>x|@g z<9nLM%H4It1uj+hOeYrygFDrAiHuEDZI3?ahQID1X@fo?v;I<9XRlTBrwen-tFUy} z9?6N5Uv85(Z;8$j*Y|dkjp?-Me2HPtYi#)DB?O&6!FkcZN#fh1EoMfU4DYqCgK1j+ z{o-0(4+<$<4O9LH05w3$zr%$C=i?kg_=^39;^!Zw5fx5T$Sc=c`QIKo$%`GR>N zXCJ!CTOdBL9$D`@O6bJ}06yU|o-GAycLUgDOAUy3(Tn zFX}MF5WD_p6%ZagO`wUk#{xt<#495s<-NJ~m%GJnXb87W)>|om?JLWfWvt<|62K=> zy>RSnsUE6**r>xB`p2^om)da}v|Cwvjfn319R{PI@rTYvLjdN6Wql*NYt^%!#*2kZ zTw*LwCy2Bipp1dXuQd@=0lHV4pl$fmQDyAqs1&mc7A8i-`6Sz>UP!N>V-%8lNPZqb z$;g80|K9P;DGd;x2HGh{+72KCAyG^W_lPHeDevLDk;Z-~v2BAzZ?X&y0m&PrmLXA<^5U(~{NwZac)QH!~E;fMG|Fbi0Hd=tC!%Tr># zc4UazWYSzyZ`7ypL&T#y&a@p%Ny{xSB~iROcSIfQTr)UA%MiAxaRt zP#Cno7WCN~kyQ_zr`=hr)dYeLN$p8?A~QGEY2I0lX8%EL&u)=4hV^wz=_T!>M<; z%3eD#)6J^~{=T#Iz2)CgrziEdrb`JkqhZDp&(FkZ_4*0?tJOvX%WctK;gP+?D%Yztduxr^9!jU%x_MsiRbugoT^r;+ZD@ zLAIm*Qx)-vbSP>{J2GlcOlm#^Zo1?`?=9RVbVf<=)|9=Pz*bl|Tg@V4TGXTuQ9irV z_562Uf96QsdE%n6tKkA*eONNbCpACHZv6WqfI-_nVxLdX-6Jz*o-OQErhtUioC7Lr zp7|nGM_%k)AwqM`c&HY+0s&FYqUg4LuKbpdMv>NEdJ_@A^Y-h%>dNBx{cT4U6(`PNRpy z?SIn>K|1?sUwl~kr9XK=gV!Pk1NZ14l0bMAyd#n#Xs=x}o97A5U1&D}@(g1w#Mn0z z;sL{1*z~IcijXt|XL_sPqk|jrF=f15`k_0>hnhc^oc1A!yCw*z2XoxM{a6G&0svpvV?d=VYdD)wh#PTPAU}5Oky5{;ha$)1Fx%R5)IS zPZ=0QQXx&kdl}O4J!1AwASr(UIQHB2P zQP(cgtrnLgF*BXpruFw2H3%Fvu278p$`RinJE(I1h9A&fa5IlgXm^Z=!T#pp(qPsi zs}XLN$LTX|u1=9em=dOrzhM4=3akpZVXTh1X>S0Z9Rv(4SS32+2AUp5Lq688X_pF% z#LxB~j{tr1D|g%lH-^=h`FqUuYC7*ponsNC-zlxMl8Lu(mwM|Jg`UX6lb??}Jbfv& zico+fG; zDSpPS6D0^g$hzD_s07v$2;f~Ksd_Et|N7?dgo3=vOW@{g0#Rb!H5$Ls{0u_LddeHv zLdnMb!w~}W-G)sL9!=CrwRk@2l%Jt`$3q5gGu?P12r}5+qjDjWXF8-Mh1VzXSeVEz|haX(6=`R%=nZsU#^M6i zkKiUVjG6OYq4<4F)V1|!6X};zkl%cbuUOXb>*}}VXUBq?MD~N=PT-}GSF73@9 zd$s3)Nsh{4j5##;3BGz96W%UhykDx|m6S>|-)mnc_Fmv7rdcT`p(Xjw!Ch!K=(hU2 zP`PN748(9EKK*Y2fOol#!Qzd(KPjj4&;ltubD1(KL&l`IDHVJAO-Lfw>}h<^8f@hW zGy!;1na;c%D2s=7LL327hwT41Yoq2U0Mw-74TQ3FSRu+fUHV5DW1Cu6fh{+Ax?N8e z%nQf9F5}R8T38pan`3w(b(|xtnzzJT5MWvZKS|{%kt4K4qT~6T%>i&y8?_VbIY#VQ zYPN_f?9F2`1#@v_UOvj`w+U@;g?Bn=laNlox-pfarvBE4CYmRC->p z$|YOZ4~(@dX`%}NlNpuNUK3k8lw&8ySVZ(5%n3{8V459bej8ViF{q4;m@a+;P1(@J&e9nP zxAMH%A~EIJa%|<8H>YyR7?3NbJh)Q18KHEv3SEZtnp3~ zCvA!{!EuKrzm7-wxMLomm)F6!>3@580ot{3MMxk2ml) zXl=Mwz$J@)jFc&Fp!0I~8QA^KQ85xZdPqByj>cA;z@|N4U9m+TR9i4?Z& zTF=R2g>y?Z1c36D2H(Qrab1AhU9tqI61>YDhM!q1tPLMD`Cd9EKUlrl+5JK6LeY** z6`63urHONAO~NMu__N}m0*cP2-q5Fr5Qc>TR00yzH!R(yI*t!Eqy5xP0Qv=?m?AgO zmSX_@4{^0{kc*2H;leTE!G`JFMq>(hZY(_G_rO_~aqnVY=*@h7#CaPr(X>e(FXc)y zNTUARRb(F(FH)?PG0f6)b8%`;_~?YhygW|!Hxs>WOgc5dT3l_6wu3E3EVbN`p20=s zHbJGgdclRftcfN28?t!Fhcy#vkjgO8vs10W6Eqmh3yi1}usVe9YTh!Hhy!31Bz)%9 zJ;uq+p6At}IJqD}vjgk-`1<2Ae)I8YZd^~X<)Vi(B--z50PyC7hBVHi2{m!oQdYQ1 z#c;v%dyA!?gybtii}r{7>y;Y;X4Us$_fo55_t61+0;WKG@v|YNfNXIY zb>&C>WgnU7yYE3$A{F6ARb8N4srgv4=NZrAm_04kxqzsG)e2r7tu*9%`%^7l?h~ul zzhjlG{G+_xV@96LBh7`Yu+PGLY|SH(SCwfJ>m<78)f47aWC1+wq7t}1O_=)oWSlBi zd+(-ab9ki>NNwqRCBaO2)OZ*0aYOsk{w-$7yVtjur@_2*_KkfIxq54oU%;s>(_4VQ zlShTVu}l8|p`r~5&odZS2w3#v7)-%t8;oIVa-JjmsO7?wqoX4A8xjU^2Wt~&J6URU z?a68h&}p(PK5?hTxmjykSete&!>HX;^WfRu8T!~kp7=9( zU1y!~VnaUqA7!eO!<&mLAiz7~lq4}=oqzKrZ?hw0Bv6m7Y_|4$^eg;8*d%AE@6hZ% zH)TC(o@#}ibTe4RGk+V{yJu7l>{E8u(ljslN;P{O7?-i7#SBR-YSzS(*~MUXH}RQK zP*=OmmZqek8}5?e&DN{Da28(17!wUU1y_y-`!RVWUFy@u^z#^Z=i2Hf!@@jzb|RuR z{)6N>q!BL4xLmj`L4xnZ*+1i@ro`@qj73_h2eLqMcei5l)!)x4oq%GTspE$uM);}} zanv%xIr_M)6F*S1178`Dsq9j8v4BAT5yA_Ww-y3f8%S&|cG5GbiJyh?mmW7m;NHEX&-+Q6vvdl!HGjg}~!@b8#VV zj|Ki9@xwrK6*rWAb}Bx`R!mZIDWPL%sf4e<^VFmecu%S4=r!r8xv#v5;_e|%g8B#* zxhrEar)0D=`RWYBT?#nR@2n@tb&C|Z(G#*c(9ntnMySJ|YyUS@|JnNkY!iW0P+!`< zucghDjI;Yh=kRn3R!uk34E|wogyz5N@LYXB;t-eSAiypQb11PAr3i;#v*E-27okk- zn%1UK<(Q>ONRE!7@eQwCoTc_T(Bx;?5QLc%BC|8ZBuOPjWzT$ELv=HYzUV@+cO9Sr zXZv9NthPUPrn5n(gisc;pFSz%nXxg^<(Z9a<>$A8)JR)uHDQ>g`W>IV5Kh-=3) z{(N_CL{|GB|55rEOIvQyBX~fs9_R9y<$X;_WwfvVBM-hJ+wxu*bk3=@W1ag_e);QL z^P~@q-EVTrvw?&3Q|vk@3liP`v_l4tacMsy>&euwEucNS#a^V-_Q-N{NtYKL>sIfp zJ>`BFosK;j6dcmz${r4D+{0 z9EJOzQV8yw%WImTj-n?GN`U;Z*>Zj7jb~dxYq7mHXk}#ZKV~N8Zcc?ivYwDZz;*HZ z$u-{WARBKcGxP$Tr5or?KA+I$yH`Z0g4&=q%37_FFEtA9;K@Ls_y9%Yib&BGkK;2o z9`Z(QM=>%!73{mb*;QjeBz?OD_ZwrdkluZU5+Em+${l4L>Zv8!8nb_uLYW6&EmjdM zY3S9^;9itwD5i@|UgNaPRHIxV-hkX~@0$Q#T zQEmO#xS)ILe!c#^Fl6nUB%0ul(V(crSVjT{GkPYQt~UW#03v9(s!X) zMl$9rGJ%J3Qw=$KR;&h4qEuPca%o#qL2&!#5cu{(O@5%tb0SMv=^s7nf|$Xjdh7~3 zzn8@U5bxk+aFcuXfI|MLuglOyRv~m^IAM=gYX$i=b&55-T?F&+4YIcPkB38Om zOz#c|fD{_ozXhe&GB;04q^T3o;=8Zy#}42sl)y3D7imIecgiM&lB=u2G z3D;Tw^72~-yh0mj6+nKR-H3z@ZZn@o*?;T0lo-csVR`Si8K_mZI>nhV+9tr(c@(;OkwAPW!bLt3G}d6-ol(mv0RxPwAs=NpOL)=9Tm~(=Ohy5%I4|;<3QD7UFGh@J_bJ6--!EF=)Y@! ze}p53U~2~|XS2M{J9lRq@hSY@N~N@Buuwvhf(8a6>Rg$}JdrEoy9|P`h!%Wn?`c9% zyr%a(61sV+9KsskHy8a2Q{lFuy^sQ@y1Xy(rI>HgA(*`KttT;K{)m6zD z`V~y|?MlC~mYcjOF4o=SaQnKo7N^7+$86M5o%wH^eIy~UU=!)66z}OKjcBtl#2BTO z3H&{oWfruhs-@ur$#VuY0ifr5U3i4UexjGQlv}=Z1WxW`(J(RUe!)z8ApP-waWL}o zVrlZA+^eXJ)`BPC%ZQt3b%GsczU!z85r348{@cO}n(Q%W3GZ>z1Wu#79@^rj1#^`- z)QCwu4Foae=RXG+(k=mUFrJ!dhOMqWpJLS+R`e*CR#Vn1;rcw)Eif$TQk~h96=;-sX#Ylt@8Cq4= zw0D0?j`V6025lC7b>eGfJy5#SGc^fEkurGmbaP1!)eAny=vcqgaI~?YU4UYLZ)vmS z1&q86mX8v0jn+z6JVzcSoS*|QwEa`!IryOO$1r%p*yhUZ1V$N-}?4i-6WF=;}GMgA!*UX3m-da#d~-GwKI7$={U zW$SU{T>=gvPIgEIq4j~(YuC(WcoB9VBq2=vu}7(GfH(L5q1QwNFZ^dLu-_zOt`6pc zXmS4O5t8`AJdZvsy6hC)@GF7}6CJNxHgy9e-R=&dHlt_(j^^NiH>_7I2AVQ8b{tv9 zP{ACJzxU5?buUgeV2C&0id{yIF3CCbjvxINM~AdE3L&N|r2^1KK-zT$b85d)99$$5 zPug4|u`0s7=>(~B<}7#|`{z+KdHGpeqLH%;oh|KQ6f-4n^~#oKS#`|GuCZ{5caWmb z!Fbp4XWF92?FCbyZJt|s>~efb42G7(iSbPGm<2EZG5rJo(|krsq{t>SV-|dP$<1sh zCMscR)8|1*4G~r2Hz;?RhnEk)=@#db|40nxMk6nY{WS%bn-A?!iTC}q1NZsWk9QD< z%zfIXl*3QUS$eao5oy@86Tjc-+LCAzy!Og1EsmCLE{WcD(=R!`>v8#@ov`G`>%iv2 zAEbF{DU@~Kfs92V2kzxr#0fG+sh7R!=+RG{I5-VeJIcdh-tncI?tRWO3C|aNvswGH z!fXA(nH_p1@~WoF3;CX4>jL;!+f{D+FoCx=AY66ZUO{cw@t5eso{vFQ>K;6d+q|NW z4M+{1M0`wb&MOquP)rh`RM*|KIa2^w%xxpkzVpEHL9hgDCiCR}Z~Z!jRny`y*menNt4MS^qblo3UxQS~q0m3b+BL5WsK3%R z)&a{)MC%uTZ~+%xVoMMUh`0%7vySe+MiZKMZi{(F3r7iNa@IL9=9Id!zZ4x|ykEdr zRm>Jk;OV(xO{4nk4x;IXwVtIoiuI#>9C4f-1rt&4xFP$xV$QQI+=v@DW{n_+>hqJ z>A+Eqbv-ix=MGyAl*E~tw&J3wX&`O&=D#gTnZj7H1tmp*J;3asJUN)`4T*5vg$oA1{fXzrTzhf#5!o zBFx^ve(-kS)Rth-AvUD3Ad=Diod84%*pW-TL$EE*D$!(&K-5-X!HV`}`gyez|7xJC zdM*bOQf1%W^$(Xmrk;!9+pq0V==VpV|7lQ{+awP1i#ZKA=FdK5hUhp#dC6|K;csO< z9~b7`=}m&bR_R9DI12f~oGS1?R<+ATnEKEnlp>cY(Ue*dQr>eF@jq3ABEy)C*@ z?6NZZ?~v>}s4#@AAPwT^Q{Jft_QfKCWW{jJV?OlCMMZ=8`GjY~5~C-VOhDx~1t2hF}DSR$RM@OTr9+wo;bYF1xL9-$Be zpjvSq;|Z1tYmYooMVaVXFg?&Fw_{zolF}k-s~5c#4Y`av6;juX{wvP`fFz*LPVu9S z*oJC4fX}NmZ6fe!nWn}5?^1zl(Y+Zmn7o?!8{Vv5eU2HBas^FS*Fz2Xmj_^`hR+?ak&3?2|FR;@YR-{XXl8U*v#x25~EfEKsDx#9tXg zpKqad566;3qR=JD_z#n@IFb8!!rvWI6JX-S6i79)>Ne!E27Bs!#MKWtf^@PUc0{1&2KWYu%Cq0&u z!>=bK=56pBqDX%4%|fnwlSJ7^Z)X>H)@1Gj-^z^@ZiG9vR{6Z8{elWXhWo@2l>!DB zyeDWRzyt;5zjI^j;T;U?>|qkxci}^-1>t%-m8=Mc1~LVXV05l>gI;1a!kS9;{g8%- zuDHpJsUTc*T})-$ug99I^&^idUUHs~X~6`ia-h<3l8>{RIft7|TIPgGyNse$H@@$# zrR)m7-QWNXAte9?HF|WfHytNnAS1hP+F&tkXX-XlOT9)$$GqUrQ0@}!fLp=8A45y> zsjGietcY8Rfem?*Fa`q6NHZBTj5yD6EhX%$2~sNf#M2S zU_{wo<1Ovt9*Jr<)7~Vwo6nq=N}C}C;c4idLZ=)C^xrWNb^LW&V~0Fx zF`W+|b1;A7jbgf0kWNP|wdHR`1Qt}q?C=lX5|Eee=za*k44vosk-PiNSBq8f(fG7- z2Q#Ram>-QWf=lJ#r@8igaBG0Et0SrM*s^KY00ly32tgZX1+@2WcpgZkxpf}hVBbhD z*S3W!Xq0X_L<=^XWK#`|YA(nC?`$Zu2eefy{x-);ltq-jZK zy8`MDrY8+b6z$iKe}is$yC@u|iBHe_H9v?>I-}$R2^y10xLoJX@AM#e`9OQ%taVADJ;q7h zsRi*@!+_7r^45~+-(UF3=1rR0CD<>~;|&y;=x~0k(7M4gwK3#1QK0?iW?}Mz#pr}^ zb|>|xSB>SIf{{#;rzU%+F;r?a*F9YhL zQtR$afi{9=8A5!IuyIn>YGKT-79@aLnrXtb%P&UP<_ullu?FRO6Tq&$1x}E)02=z; z+B5)n`7HXabTU?jnl52?>7c(J0j#)isu#(>fqW6HRCy42Q^EO>eM)&#$De@9R=22v zzvhfx^5G((Ch?&fNXSsdCjJ-mZQRz^T`fga-Iu6~acutgN&(@u^i62)OUJbC-+WSk zH}%W48n(}tN4^)^<%vexBATRymmeJ7U&`l=ejjs0%VK9@@T(Hnf?B!BnKFC({^iH` zPtmZkiKe^=Pj%^G)AV5zldT=O`A15Gl=pOwnA|3Wx9X{OBr$bf*sqKHUg`QheGp3m z%;&amiQ-B zO=jS-oCz(m^au*$5|zeh5%GExALd>2{-tVhK@1GPRQZ`XOr3!6qo)@kuzzoxAP35Bv!Z8s`F5X z4r%%B>33lN8<8klsA=)QE{-(cvGrSM-V_FvGjF2w^yjNSD#>w1Y#Wp6LY9E9B-En7 zkGsf^Ey5mi@6IDzv~&-iS-qm&+rN2yN&QksdV#U~eu#jaNp~dXyYzH@lP4rsXfuBQ z0G>C3RogmEAN>S~U61`qGEA?pOqn)uUahxS5vVS744`kdAf@^A{) zH0qhm#?_6-2ZYd%+swKqxcxN3`z4A&%HgJT#-Po5d3H0TQ*gA{sg2%23i05P$R%T! zxzQhHjKbZY7q-GZcP;O<<6cFJZ%4)MQ3Gjf4>y>LoKfXP)7e+Ozl`rA@|^RjIEU(cibKt(pX&p-zsdrXJOd~fKDV_RGf&yA$xCS+WK zblTOm3#e7hIC@j37~fw?f@uF^)+I!Qb*r>SIqYf)2TfO_FP@GA74Nb{?X_=66q--d zc8qVg8u`3x25x;8AJ?+LNquvxvTh}cLe+c8OgSKJw!~Zjq*3Vt_ED}h+#>xGKDP>} zN7DZ3)|Oczo?-bz2$%o;a@+902u-!|s*jmhH;TU)34cq?l=DGps6O%OppWYv9Wg+h zKkm2O9c_(Flk&HfWkSm5i)c_p->3)@21Dj9L!{S8_|D7%zGK|(qDNs{JjY-x z$KI##eiTcNG8H5N^=d9K|DqgzMXuFyf|U*h4W13FdKL{6*!5EJ6IE}gDI@J)%b-Q( zDb*6QC{w7532kc$cIvXp#DKh3+S*b`s0{O#qry(oS@@2mE!lSEiJ3>r+)o zlX@(I;a9p|^!yd~*Qg?Z0O(RL5CxZr$L4e#Xk z_4neh>x2y43jX&@=`|&F-Ed|ifpsOo+y`NYCZ8NdU7KbQAQOh`(XhJOHVj~m&X7Ui z1I2haz3w&8X~>Vktw9A)y&o$Wj=Lk99$l+B{;x((Yh)|4hc2VL#1G6O?xLEgf{h;| z|K5b{CByzVi^7`WU`p>AwKu62;Fc#KUzu~>k}FuIHA z?{m$Zfb@e@gh)8s77z$)RK__Z?D*OeMnRTJpQ4TT@w5x#w3*pzM0U{qf;J8Zu;uxd zauY90gWeQ=4R>oggh+fTHZ4)9N|%|)U<0G|Nii~-O8wAB_M3?l7HPA`M1bDtLv01W zLS|Al? zIhgT!(USYm##B}$jN0QhW6Hlua4-$k_T7m{FV$6J^_Y|LLCZb+fu^MzT}`X`_u2^p z9h!_{QFUe~TUnA@?I|dweOa`25ah}$`pSUxj!a~7mgn(W(O1_xDemwcY|~-v4{P*e zWi%mbxKGGhgy&N4!JA;gyv;5Ful*ouM)Q^-*&v&2)*?O|X|X@rbbPv{es^&FUVzLieFs{65C$i8+PR^D}yi_zR^ z&H3fQ>`#9DNUO3Sias|K3mP01=7+v+rNL~E2i;$I@(IdkUSx`-vJ;xfg47xoN+Hnjv0KYmW$`*(4p}M@9nySj*@r?n!Zmdh zS?9H_VGoX5dUil~2+KGbIJbX0#sXB!Hiux7^hrd|wnGI3;OAPHEiWXQbCmEhh!KVa zS#L=?p3@-#Omv8>w$t7;9pQu+?hnGHq;iQWQ>o);@jvLFU=auiGsHNCM8O~7I=e`K zTwU;Z`jDDDKU8?K1MW~6AwW_Y!2d8KT=X+fMS@eZg@GDjsA#MmT6#4d=OFjqh7dTm z0llSUOKpfL)w;*QxW6^mnfQoI@ibI|c(>p*Tf^+}H^{Icc#O)Gg{@F(npMgYt049MXLePFx9|ql86+z3?-K}J@=V+z_;kpBm`d|o9w!H* zc{7$dnC+^wI{kB?Z(HHnBWTWq&ZX|aR!PLNb4;hnU16}ummKZ(R4GX-4#*mt0y!n? z>ZA3`>=-Z5d{Tg*x=Dz$J`6&_5)EY#@CfEnhvG<@{Lp>l7BJ>TaHV=d;uBp1A)5Ig zC80XtlB#T`DP!?m=8I0zt%a&jsPVr$G1EwF7jR9%FTJ#tgUQGhVt|z7e42Wb+}`#k zBf*(wv>nWA&pFxmJ%aZOjJZJv8egxnfsmtl|4G1=nI|uq0cf6z=3s|EEFcs|Sv;Ej z+U)5k6ts)STkR0+zc;jA1iPJZiJzrEnm(5mcG#V;K1Hi&J$;uI;Gx%)7`gpyhDS0% zYcEQtNWI)-_pRVU+9`$|*U$`m9_XY}muX5UdkVtW;EBF^XWXpu(uNR=_@tt`n36`bd(0wZx7}04%cwcgDk-y>&V0 zNPArwzFsh0s~PqQj;4~031>J37tMIQjwJAS|8KPOngAnXmasf_WcitBU}}5vV1$68 z+)ZLmYcf&-VVBKJ=F)n!U*$THZr4ip+Yik=6a$@y zSp2-fXD;?=U61r^{G`PjTp8MOTI7{I<%89)aZkB}{_BjG$ITz3eg*QRCdo0Bv0G;f zHuR7FOiB~Rl1(KOKX3$LhkeikxjZH>3KDq0GdI`-0mW|5??<|~@b@HjnLIY)b#;nh znd^fV&4vZZNtMz#&6XE;>=Jl_@pU3}CuD^!0E7}L>5y=EZ)F%(aALe!dJ?P|a|prd zCa_yt8apf)z-4_78#YWJv_PVU`MXp$N%BMx>n*GrNdZG~m0TZ{axLD=^Br^0;&7KK zj|;0SnI;l^i_{#!I{f7pe@i3bzgp%a1Cn9%w4BCTw9z_}Ns93j=)K(fbN)MTlKJRb z$$2buZt^Fn-A~i)1*@+Gx*+RD8{j>Adh+l#iniY-e8L6H6%|&{@5S;Wd?|;7l}WvH z__P+-IoX8;E!^$xco{GuhAM7zuQ=A4bls3=7~=vyl)>Fip}gsfW0yziTa0|_O| zB35tAkL@7^UmHL+-&kEtBdpu7fN(9($D{)agR5d>Ce?K-b57{i4cJ9Xf32Q|k9)No z5iL2r*WJ>7L(TSVJ_+92!ua~zg3VYB=qB_W>h{DNZISed;O~VN^zZGkFr*nO*u5Jt zq~w#9lIIB!#A%Ho><#Mr@8YW2lJrvo74nk4! z!Ejiz0Bf@VFaRmSNzJ45@_{Du1@^~cUQ^A96rmH$O&Rju3|WS^R)@C%Y*3u01j*qv5f z+5S|}Um3SNCV9SlSKe6rOpI(qaJ4B>{9otY4bNhtGHn$%v@-A6pa7Wdje_+?c8xRo3k5*d#pX10F1z5XfN zDB?>dB`bUXiCV@RlOvh9n`S4z)tFqEG}yf{r1~V8arQ?`Y01cwYnnZ_FJJ4NkngAZS=;4oSmr%omX)ttSx)}VjLX<_aN zq4;5xpVQU(>g_k#7D+C8ao>M>x#-C(MElLf$8}}t1bpBNv?vpi+5o4@8vVD@5as`0 z&L@*{-{*g$!!C_QdGCmukRQG=f3)0Ha&PCOI-k~`RZ=QJR z#q*r}@>e@8=kegz!-n%C+u5N<+Px=O!L_xA$<5yh;^X$mbKhpw2G?EgD-7aus{&Oo zCs6`Qul>0sQR&?-u7ByqsPHW4F7eX!ead2$toV_I$*b#AGZCXESC73eU+7UijO+fr zNH0D1cT_eYRCWCJYDA>N_f(tPzaM@ZG1WiuSzTEVzuseq!1p~cl`@uedCa?;eKsMi zXx941s4}quB$xTP68E+gl?ViTP99Rpwvsp`c;b z2~EYj!k=?eJ5-(j%X#*OEPA%v7V0OQl#`gwy?nJKR;I~Y&sKyuXZsdg@%FGJU zFYf(RS!^Fv_fH=zL|gJ6O?md^>&K0mH&s73D%(-9dbK6j&!Bq3Pr58L%*}n_Vf$;D zzCLvLdCqj}-^(0Kf)_uess8xwkddm_&b4!<311&uG1htRvfWUDo={>~P~L|t%q zZ=B9xUI{yE9nyR$(OI!QLP!zyRMI%_XhwE{g0I}}8-b^NV^uvqF=>0{<;thkZn29W z-n(*2C2T{>AuhtUmX^5>Dt>Wat@&Zer8c#8pZkcvip~bOr~corIFYP)&RLd*&~mTk zioE))6dr!d;AGN&1IOeqI@zjr=>-rP{F?i- z-}a}otL{JZC=RIYNG%+^;2XXTi4E(Gw06AXI_}hEd~7IH;?Dk#m~q@ybK;o9wE2$< z@z-vw8}F2^r0c7QW#R8h2iqEa>?Cw)mRzrPFEuRIeYA7E<-(a-lWGZmW+N_e`hjL$HwZ_jPld3f=VipZ5DHNUsN;lT-%itvgRF6 zD8G7?s&Q|Sd-T)1g3gnlZ|zTC^Lxx|=r$#3$WJ;Rc&qyMujk(H0$qQ_+=DCaxZQx$N9K?bBikJoQ(1E z?GSc;7dFr?`iwVpz>>bN^!c9Cg-7`#e~DU2l1JhqpTEhl`&N;h&!&?KzN^1l`#IC0 z;S_znO7wireq2y>T+j3^tsS#N9wK^epD@f0GY2L2LyZo%UM|1Vko-^oZF#Q#V*9)) zCcI4Qnv_+*xRAw7rk?WR@A07vu*Ht~jnyNMugC6QDsjmvSMyDu3mwa{RA%iA6A;ZIddldPea@j3~vs-_uz(OVMNQ_ncO~0 zJAak@oIp{+a&2Zqh4%OQ#{ot$H-}R4W0mx4v#NrEc8WgLe2OcT63tLQBN3T0C0$6= zd5}6d+~ex2H6EeA>2BrCG(IvuN0bP%9*ViX{B_J<)}!r2L+@tp=*-(&SdHQp+V$~&-uk_D;sPGODJ7CH|Ld}US}QotdTy7eo%C<}CI?M=wU{oS zc%dnhGhDLTe9-K3vskvD6kd7}!U^+@eIJm+P$b+YhbO){ar>Cfu>TY3^Bu`9bDuWC z7uIX8O&p0j4}w*S2{vAB{dhO{iJq`Qifrx6Tpz}E!-X%Qia`(GR8k)$>pq$M@ov6R z_#JQR7u$%{hQFfQil*$Of}x$o@4p>AZizgRTAcazU*nf}2lOMu#5d*}?{8qOcGi@o z=Z4954K_4K#|mVB++h-*N!|Y>rv2;r@W;(RMs3sdw#PPZMDAIlQNhB6Pof*^_joG& zKJRlM{5&39ZT92gr!$%^x?NIw0l}T(u94toll7R5yrPM*y5~9e4poC2IIBg8e z^y-e*ya~^dai6}0II2sRx^`VrqRIZjuXl6$8-Ce8Yf7JMUh}mxI!!y^`)Zm`zMfeW zFm*!lnqiXff1O`lq^HsYQ`~%x=&5o^OQVna^{)J~^;gz#+j^{_btdEb!-CI0#8GjBBtNwOM{d4?{BSMMYDTw*gs9g0syiXNdKeXSyRIy*c|8bByr1c<5$kFV5Qw1$Bgak~e0jaNf23a6_#5n3den`~AAz`Lmpb=9@KFC>y;mBC zPJb@0&{uH3eRZbYi*@x{){l)yVL zO@;?E<$qNt29sU;ZVrVXJFx!FKa-%&80r=r_v=pF`QGrM{oRv8I&L3p?1!#&4^Eq2 zOTO2eH9F+CZ(IM8=ZN5uvHq*|?!~`P%lr-v(vu!sdog;b=#+Zlj}NDI9M8#|4ZITm ze6M9S`9WjSlRZ+c_ikgqPyKVXvNvX9S9SBA*OqOsHeN9~bD4Z5Jniv^?;rQWpc?Pm z8Z|`EyNE4q$Q|_^K)5O|7Qg&{=w-{P#qm>5Pdt4zyIXVHL{@c?7@dO%eYaR*QJC|j z>bf=O_2DyH6(oha7iv2Qf0Ub)aNn=9N2aq94ayU&R{ePl1z)JC{v17@<@?C6_q`GI zW8Yd&+_l(e#xH`URfGA02D3oT4tQ zi9NV|-q=6dR>eHCLSLgSz^gYoDv&^>_f=tRyLX-19u4?RubbAYpV44bBffuKqEB!ZO zktbi7_Z+KmsbOpnd|fSJaOFmr7k_#G7p=m^phKB*Pt|Mgm(@;s8D0;{FsGf+Ip3gG zr{nncK1tUydrs}^}G7wo0qNnw=RSzzKk45(*F8n;cIEnv!HJG4~EWPZ~W4@;!`84+cVit zpV$JcQzCO@}J+SH@p#fe>sd(ViX7v6-V zJ!)<9bj9k$J^T1{UMA$6)1Xtx-GcN2Kz>r94mtYO)ad8gyVDPLw${_@Z8yYT8dkLy zexi+cu@jdcmYOg7y9#r8$8&ns8oWn}F1}2*a*O_WNGY#&jnvC~{H@ci8@~w}6US2b zV-trP)}Q}&dVu|Q{K&Dn^~xYcsazT7s~1}{MhtXcSye>T|}CuyL~fSJ|XueLu2Ur_|=_y>y@>XpqHNqMeM{L7K!Xg zW4}HRba)y?UI-NmMCBdR5nBW(kTlsWTX{*`s>GkPBzl1Atr@#FS zcXd!aQ(o2cYTLj3pF;)dBo96E@9ieN-Iqd&g%TIZteY+ZDEz!X@63t;MyHI zc{jPkLC%&Z6h5~-&c+-y7gQ~g;?u3iRm~BN;+0DNJioRKKTmrqIAUMuEB@`=^mo6E zukY)#luvMsmILif*4PC$cl}qYEV$W;$eXW4k%N*FeC2;l+{xYsrgzfcZ%D5xizaj# zX`5g6D2Hnty}{$_b=Lbg=$Pm|?4>f*{)_iFa_$^G@7I=_qm#KwxJ`K!uKJjw8e zj!O2|gqN-lq66;P)qgm%cK6er0@44@H^>N7WdEgLBhT3O-#elrQ564QiDLSN_LYY! zSJpJEN{{*{{vljk>lIinPrmPDM0nyu)e!U{ zB_=UR^>fb&!Gpz>$iPq5$q7>%?a4{0IyLvwSAx*3+~>-7KSfyH%u#rd_67d?z4eP$ zm9O85z7Xy|UBXKkeM&; z>)W5_$+LcQIaRyQw82P1?7DeEg68d8=QM1Z@BU*y&CritMUU1em)<3 z?6;9{d_KG93|Fw2_|!jKcOkGD7FwoLhC82JGAkf>ly6>cB#Cr$hpZ=QlX2_FlP?l! z?}2v}MNJvM3?3b~Vz2ZB%nc=U9-b;}_>gmY0&*+q1>sF=+Y_BzI*|QWMumrNj^9@G zop3?$_>1okHLaSiXIiyRSw_bC3{2@{eE^0FuljUcx(9dqz&CTI#1g(C82YVy0JD2P zQTU{b+RbAxNN@f)T~WDv{$f^5-=MGD;x6&Zkp~XtSHz8t9*&396E_;v&VMeOeybL_ zWq@inkPS3~?LP^gqm_Jm-E(tsZPd|Z<2n4*nF96G>9V}%hO`CjvQ#s;L8)x-G;-g@ z(bePX`X_w~rEecO^r)>UJM_&(#|j;tlOEYO^me-SHCehP*Y9S%x}d$FSgepL99L58 zV1=D%(APMBsjwp>v@<;mi|g>$Qie) z6O-OvEspA{+V@?@&Ay&IbpDl{9nF94T;`VwT8W97C`xTg`J|P^lK@2A!_x+-=i;uI zCLhE1q#Qq)z459xC*oSZ#>qE?u~+_*aFeC^@G-N5Y$6Ftg_2M>!bcH5nndoJ4VyKlJqc{r(4`_9emx{18I zyj$f(3g2*sG1|7rmpz-Y_o8Ak=E+uJUB>FKE$%o7Cun~<+WAPNU3081wxa2_rChiJ zQzOjf2EL#-XKvKpYxXVws!&?uaJ9+2#NG2Pr$hTB?_JKhLQGp0H7lK6)OfA&aJ6sB zZ}w@?uahrSaq}H~Vh`l?QvM%g)!Qy!P%3q~BSOTKM+|rBh9m<$f+8M8yx|)%6;a|7^xnq=F0DAl zNcXW<)ucCe$P?%_{Q{1|v7k~VoQi+F)6nV=kYbY6daWc=U4_)LnNElCi5JFHMg~R) z4%42>^YU75mlQ!P>_9PQLrMO9h~3>btZm5dLwDQQQn#~04ti&*%n`2KDxcDbKVr8} zF8#AbuL!u&U3OebcsR?HhU3}w$9Postc?CSWHY+) zC$2N;IlwW^N}C;ehU64dHi(1CmE0lHb;yWiEC~0OxGw8>h59ZARiq^j;7Fs{_K6?c zFkcXRiF0^-Ahp28JH4Vh!@Q*;k-h$9Y+T7pCm>T^havwJvq*VR;vl`EE&q}fILR*0 znOH*7HHYPaG>3*P;U$+aqLFnYBpW1XXYGkBS_zC?6J6$5{S$-0i&1^z63<(j*T3`7 zp)2Cl1|1xR%AgA!>|pWI9#NHVuWU>qUQL9(JSw@_Nky!ta^sp#(*IWg;KQijOtXV0 z;?V4d>GttohS=71XKA9^5gAGPY30O>Fp*)#)~nfRf{j;u@)74+Oox+_rILK}2Y-3V zmB~aU8?s~QD>lKN)S+XLYQH0uG-9qKxI-g`7=+wAki7Wh7{O4}68-dmOQETHe-31a zuvl1R?elC)M`y7JRo={o2p#y8ohl37%SMy_u}R7NwrQ*;VBuM{4ks*6w7l$ZjFJY)d6?!-eeQr9M%wSG_!(X26-m(eM#)Fef_`4>~`8#n)OhvE&j zTQIAB{D?SoP^_-0DO6c6Omi#9Jna?Kn&>+Rgrulncp6Ilk)5;6#>*l$XL#{sd9t%y zgr@2uq%_l&?9jTOONmgArK!!Nh!_U5jY-KuEQu?Im#;Z6gimRB5!x<0nh};{QpQ+O zq83M<^(?Q;Sr378PnmMsrYzol863AEVD)5v&b=jbdh+6L<~&HYI*)P~Ma2f9NR<;( zRZR_t0ycHgfa|_&lu`<5=QOe)?B6j$cdLv=7&5NINLD&Y?Y-AUPdp5z6%G23n84~K zaJ&&{xL!?KK6*WW%gR)F9wXIlnm9+f#~H+WuTyjV8;Xj1vxD!@AxD+rsR+NbK=Y+D zugW|cnwS^R7Cl&)br}Yx3=GC>1`~MSdDzob?Iihd6LC~3nK4rm^P_btk`#6-v6$Ap zb<=Vsq~26Y#G8_^X-w41y;bOBASYV#w6n=H|MG(>FeVA4M6oNCglL19MFI^ODk2L< zfy>xNvVh1^6mt#nhyAbs`blFxpV&Fhc*t-2YLCkbeDN>q(#L;9xe^=6yrYfA53(xm zP=_>XojBilXKjuu+D#mO?&*tR8g{$raec3$OZDj*#`Q3z_iOPZ5QmNu?O4Zt7%!kk z=%Mf8p10O9$YKBbWx+z@*#0_T91+38tx`?gnKKopbi3A3mY z+y4|zmUuKr{8$&4e3(((Vo!(p$638lHXzfYmbb=qQ&P^Pl#hO5|EDw5!O_B6z^X@& zvFyV>#!I+Zi^?4t@cMMyPATMpQ<8AaivP1pNrck`8^Qgj#!3@et|VwOwu+Lp!SWPm zIJ&O&O8w}!lBWzW<-AQzj09xTSX1_M7vr=qjwnT&miIrFA!CsFp|vKd@ePqT`J zDo2X4EIR5@>`=^J^El^(w2E3M6ZJ^EWX@9FQQM}vHk&0M&}lo7kyY@#w*Q7qWLfmE ziYAO&fUuhTK-G!u4SfEp*f$zB{|n&jhcGY17V06v!w0h{Ww3XVzLn6MHqaM&5o|l*RlPY3xnXU`^NcF(v+s{m(IBBJN); zhKG51YwFS|dDDiZ|4K)VpWQ0gAPO|mP-H6Wl8Dz|I3OL0G>f&UE8!SHm@lSva48<+ zhj z5CjJLR^}nM{?S$}+%J1Kl}~AZePpMv8i8|a*Hp~A?hRR>RZ=zV?i@CXM#Dyv`f>8{ zTfRd3H%x~q%6rjt-6*|2pdc=pE`@rzDFvT0_z=cDdLWHXF2-PU9^T4NF}X82qjX6Y zBe_z7PV#>gIOo?-k#0x^N)a^^bJ<}7S-%yq83o<$#foa@r?+*(UmXq9IM1TeOW7?n znHcNRocP!2^`vGD(R~ZDh@D~WH@qDED!;#8eE_y_OL5hnY|mF%ohK1qF;9IdO-vFC zQIsdPaEQ@>S`;d&(5g9}D3@7E#fquB)EURnw0)O{`p=7P-b=nB3dzJP;!%h(QFuot zK0m~jebalKE2g>8RxR-&#-!@Wa1`d%$r(;k*3U^knKw<39pR}OyQPsdOA&h|HUwCi zf8t0|v+9vFfDmK-O0gqa%vcZDP@d7~8hX1E|1Sn4%UBNxMhk1{(l%W|3PVFY z&}BO$xBgo?^6vExT(>>Lht|$6Km8-UhLjsDNg>NKJOA!kY2X#8ZIfKLQzMl<&JZfQ zzlce4HY6~_OM1Hn>PkqLDN61p2#B-Fv};XW%XVwgmOWUok|kWFmatDvAGOwOSuE{4 za@R6wa~z^RJ|5e(y&}%qF3&ZYRb^V_pv-mboCoceZ*l4V9!4fA_Hm({pZa2QWe>On zu;bQDZahk&bEpq0r>VU#ru978(#X##JbAKhMFpy3PnEPv%S25MFQc*3A!u&2L&i&Y zb<(@s3~TyYtlEru*ujtK5s{5j48~fSq;TpALh2B<`heM z_$e4$D2rDdbW@&uOL;6B4ZtF|Jx<;9iS;pyct+8vG zotvBK6>^k?oFz=3Sc$oX{b-j-a*Nbf21QN4H71`r3u9;*(0P)r^TkT*;hOnnmde|6 z%E5?s;xSBB#{7G!NoVY#=Rvm45fE=iD(?f$WRs7|$Pv-F(^*jC$M# zacrSXU@>F8u!6!k6k$O)T%b%s;Y)nHj-}dCIPwcnR80A3LFG=12_(y@$O@F!Kia*m zCzxD|y*w||w{OdmKXt64`ht)7xhET1Gpi5R=+sb;%4Bm=M{2nd1o=hZMsuSWU1l2B zrmtxDftms6nK{Z>&*$2_w{JVE%!xZxgfi=)dAH)xj7yaDEzhu5O%hvFR9+E6VvgC1m5ZYRXQBjT}pciPso0 z^@1_7k+G42zk*m=vV~5T0I7z)jPJGV8HXdfS#*(bhRP0S|lkzS4RELp;~90ii^ zLhY+ok|I{!uyNSFQyRErmARhwtHgR zW)5tfn~PhZXD(S{*`D0BBw2=YKKurWFO+`w=^Y3EQGj8TpG%3oUn6cPH(1geBdyh= z&aw`52hB2GlPZ}>^PyR_hTZnox4xke?YRAzf{)%BJ_lNHuK(icV|%LG_ic+clegIF_jS%a zyoB{EMpLYER&>Zg#Q%@#iVL%{{KB*I~f9di0}E!-%!lQR~O*U(Ay`@v)PQ z-rIZnCCk%5Q(B9)QQ~rqhKqrt+S8stkeQ{Ky4usOO%P*L(4Apb(*|sG%8y3_Z)~32 zlVI)Z+~W0OVRU`!d((mfsvu;KZn0U&qN*6=v#b??!U*V z2L1$Hmx)XZGPvk#|1HrWEM7O0h^(#UhW&Tb?3~N;2iCejYQkw=hR=A%e2Gs-RyJ~} zCPoHRDg$Ph+Uc9_7R+T#3o4MX0&zkx@JKLtC*i77kmwmc9Sj~x)pIh2J&kuCZvHgX z`BJBBGV`ZC{mrDgFO!;w;jDY51MUsV4{nJ|12dfSDY@D2n9@YLZZN~+C!24`iRKHn zzsk|^EAp<8iD_T?PjbdrSX_G~=v?2b}`1Q zW!T)wHt}YczXg7>?tg*g`ZDI8c9=ssRdg0d#&!K$gtIK~OpI+ zwO=|RKSn}I7B9VUqM2~cK$GC+$!^hO9wzRbIHDVx$#Bm~&xj64#>%xPdwPyx>E~@K z1o=Hou6&jLH>=gcbG-NeT=_fNyX_zxU4r4e1kqO)LWBKbhP^T;Y;ae-=;$t?Mc*e! zeWBWXr)zECu}&D;grt$i$AgndSQG3*Z6eRYVe?#(US{ZE<^wEP;Xv;WsY-9>=ZBJgIsK`iHw%*qZ zo`swgnAZ-a?cc>=W3L`uhY12!ZGkI^%YIv+7}8ogJz6JO^jNdKYNcO4-AH_b6nnyh2)Tck-+)?9Wyj z4w2x04X2}CTOFvJaOO_vEK>{7Y)Bh&3LT&IViV|Q75yTiOi{=E?F~9PcdrLXI8kj{ zxXz}?hZ?D`DT;3$ZX+0QH`l?~wRbzzLzFZvyB+}!EV0;7r0%7Rys2PlV}x)b&4Ii? z*BO{72lV=e3SUTO-dhk{zM5N&Yh4l6-!+la87!D9x7n!lN45k9=#sRVP)RKE8(FUCpK^}(Rf-)>ulJ;wrj_f^XXYH z~dL>=uRw9lo1#0uuIq`iVmuO8a`7 z3;(wbiX(Cu@^g3k#0a!(j5n8G;azT}X_n50sWj>iJj-j{Fmm8Kz)KAav{E7C~z6iUx(;1Rjl(Qn7Dv2cdac?ZtD%`#3=I=c;kwNQsoIxZKjOUlFCKpH_m*3GF;6*S{VX;OfH@=g$k<8|^Ry|aBFOqw0a*Xy)8y=;-sVsNrc~6>BZI9KM z3g)<_NCgBIy?5?vVXdc@t(_PnJ5(JQ7@rs(D@@_Y(5h6>c?{31lKo&B=)#M^}?+W8=kM;c_2){&Gf(KTnUO zE&kgtL%EF@hj}~Z7y4$1f5d0Zob;JC8|Hx#$n*7hJ*3z2H~+%emOqTA7VLYHcK(K! z_CG^_5cB?%KUF*BUl1enQu_Dutn(@Q3=CEIfBzqUWjW*j#}J>+TIbZ1y zY%qst#Q))dLXZE0^+=MD{$A#3@;CWol=!-agY`xviH6&T!s+}OhYs;`lQdg)=p;to8{q(Z3dzWgHPRGUViRV#mzbp1re#Vs$i<}{Pfa^d zz7WQ^shdtt)RCU*%SO>NZX97r6*tkSj~UfU#??FG!#U?4R&B(nJC*)9r|N1L`oD>x zLFoP@)+|G%bEd|oRp$8E)2RqkuZ-D`POIUgUBB`Kmo=xTWXR4fr$RLUMu(u}IBbi| zRK6jQeEC(CRc=!}`$rwsM$?F}KR;VWG?lT*dA06j^0S2c+v}Oe6sa4VHT4c+6r!#? zvylEDjNL)`@f*1%5pAj!I9 zs%0eA^%Qa1ZOMvKCp*_6NgEzv#<5wD-9YlJZg|VXN>9(jdQ{I%O->!3O0q{PHeJcY z(z|fIaot@j2sLClJ$cl`=Hs1UN?sMcK`xSmZ%z$yS}JdJkE6S|DU^hThg^J}AkwTG zva4yKRby4olOX0HggvcG)ot~&8f^b;YGuw+4oYq-P`=Qi$3Jkp+EF#%rE-LOhrt9w z(ZBkUSbndQezyBGuQM{ySST?u9~uCwPs3ne;C&$vQ5P2 z6mXKR5iT~oy_#{xgSKd+ova(*|6W6-N)Y-}Pox9Kqaz(YXRf8FQl5cyD~Bb^b)T<2 z`hST~rwd%hv4?YRgU8kjEcz4C@(41XlDNOy;1!-3t|a2np+7&#(g_d5{!cGCb0Sb8 zS63hJAXMExuEz-E4Y3)gm$5!vZ*YgZ0k40|?}b%x9<}evZnO~@(wu+sBFtF-F6{*p zjkY5rP7Wo7lj@}ZaE9eW{ArSaLn};XqN+br-_r;1pUTjv8yWdb4r-tX~7a<4AK>qw0O4c z+zDKp%fc)S)I^MeHR^7X^Mqw|Jc#4a_Xd9pqNXHZ@+C)(REQMzTv{-e=2M60U=oBd zVSqYZWWp}-HeAcC(N^QTojJcwehD-Iy{D7CHEtzKNy;-;AEO->nqD`OY7m5TxdxFP zh8*d}foz`#fYN-o(%8M;n?X>~C-a)0f-Wk!Rh;@-gbWd)(F-IJz5` zot$^!Er{JMG|~lw@>vKQ9o`c^nRBnE%9=Fh-1e(31@|AL!f(?;#XIxJ3B3JSQDc}& z#Oj`nZ^(soTe~(tVvwgyLf5jRa>yMK7NsDb-IX(H+%G8yrShDyuyIGn#~hrhIG~<` z$t)zw)~u5o4>L;krkCfDoei;T9@`HSb94uv(4V2bXwS<=kK6_l9NSXLs=t0(k&hj` zA0UxJ+Ug;&4DYk+gUkr81=Pe!+MAtI#Iz5xwy_*3GGR{uAKVf*LJJXD;$>CTkw`w)LZiX-2C>nOU zXrrFH9+F+2;#hUM`77m;q-_iRCv)SozZJldu^+g~iu;uWs9KDQ9CG)mLdDbe0b zCe+34l4Ynl3D(2iZ`va}k$O$WNb%Gkx7hik=!bbjS~kP#6+H!q?eTQCj$NmpyX(8p zacjFU-k#;up`d;`^6GhId#pfcor@=|jFW}9zunJl-mGVpa|#u83P%b`T+(elCu6Hj zGlt)%lbE>=esEiGuk_Rifca&|w$^!`yTv+i(?hA3zTQw1#=*9+N+9BC7_)7}*%N2P zG=rb8Lze6{K9^p5Vp$C{>1t2kaif0(exm2>hF6Kbavs%Fbc|Lk9z8nFn6!wii0(mB z?A^BH9Gos$L`RVGz2G(XikfpQ=MGf3N?lxaIZ2;;@Gh%6b1`16GVE;qwWp8WK+vi4 zrS&Utug;7p3r<{WLkbP?b`s<91iMcXWHm5?K-E z?!^z+bEHg_k7J{Fuq zxke4-Sn(|~6Q+zviFIPUXhDZG3#i$9UOsO1$_G+975CG;vzMpu?!(f@EfJl! z&3ZP@Zs2W4;ETEH=&NUitv1_m>ZW64i*0gcqhuwH_#E_>HRZdRQ!l?u$8?RLjpzkA zo$>AWHUnzG4YGo`9gmKg;q1ohw`CSx?#|7WIYn+o81`T5rvY`e;#qG^_EQ5{dVYHU zB6r=BckWiLl@O6vI4y`4dWv1Mc7;q=NJ;K;)@hA|?xG#=?#L5*3w9jMqtoW|{X@p8 z(|!0b$G2|pt^02>y#(+4F#_xET#_URew9>5>G)kAI+>Rm~-M>P@0Bk*(QTM)w3SdK~ipxgoSE@ab; zO&-1;lzn07vLW}m1}c!AP`(0X@6eE6kGNH}w3 zglx#>vWpL`V_x&Am}NQZ-XfbGv~HxnfR?Xps4AiIs_3fnlU3KNG96nV z#ExV{ey$@^(Wd9DW}OH!hX#kR)*d%Lbe&04AXh1=JnN-Q&~EjSkvw&Lm8e54NCs_^U8V~$cvR)F0Z4# z$wGT&etYYiKi3zdD*78p=C{3$zKg(9GC-=PjJsczTXPRt&WrKUY?pFK2 z!-J=?!tgYa^lNR3W#k--nuV|yW%N^J}ni7f6}(m)3FY|jf#Kd3rt7=~m<;zo7l-D)ZsC4G{+W&L~7fu1%y ziKNcT~FPvn7!+ zX^c5HIrxoi7q7xGDXI6*oL;#tLrl{avCz8{6SI^zv-fFFqF+m&bS;Ij$YhR*p4pc4 z>I`)Bm0P+F!)_Nrw924efslQ7Yu2xL4UHzKke5afD3kV^6@$>6T=m~IrBme7>TR*3 zHOPrPF++BlP4ro@`3^ZHU^#D+#(mxGVf18ibXFF;_lzljQiyfb$mo@~wMe}#r*e;04S7*HvDq!dkO}7DvEN${xf5xmMl6oNM8nsB5(C&(BIIkeqkD?UD)L=S zuPq{>*B;Sz=P34~oOZ^FE&US8>kh@I$)9W;w;NtOW>Idf%L2|zEzLZzzm_t=cd&`` z9LxzwR5o(Ex(orjG*?gWdu@#k&nsJK(}^ew~XdSd`7{HVHv@V@yZi5e3}Xwajv4g|D;Da*~sweP1^Ms znsjl0t0cj$Uw7q*D!jkN`R&&F|WJkt1Px&zbIx?ZVz=}{up2JjT_nBW1uutjuyP# zmxRKHkwoQ~?c=Gq`iB*H92y4ir7Mg!W3Tc8Z|dm9M(3^l`;)rcTm-R-3YA>6kqKs5 z9jnUUEbpN_ba8K&zRUxN$apQ%UqUleKfm2G(Q+80EAh|~w3A&-_rhv**-;~fn;iTI z%04A+k5c`7dz>nsrCrkGqE@Fany1X-7xVZqPSfs+SNk?F-t*s`u#?@!>h&2FT6;mK zsk%GJ`z2KjE$6Loz!B4#Z5Rm->)Ii-E3(Xs8R98`KLZmUasyo{hm z*f`hn2~{)sHk<+tU(M?|dvchf?Vz_rYA@R)c~Gk|xxM#&(jZ8~p}i|SVr^p6kK#Hr zHCp2mgpz6*Sc1+newH3~>@YWV!y1Dq;MOB;n$zHc)8}F=eUixvJwdN=QX`Rd_XybIR7zkb1c5(=&2o ziY2D~kdDzqGw=Sy=Gq?Y*Bi&7YgRq<(Td2Er>gA(%!8uDRes}m&8W{VTA5{>ja=H~ z>!~E=^p(xW?)^)LPF~T@QvcGz$4~j^H5d70PL63Zj$=FdOplNLpE&j`KSH70ds@=syfQL+cr{5S8XcV?VbnlIJAk4I8)icvm@=#2SWc; zX4}IML*_~+<&!CH3HkJ5MXX+3Xj-n+Qa7nH|-Z*r3it_ z_Se`%uU45E9`o4DWx6=`;>-EmA;`}x^R4zYsJ7iwV&8#vu<`o zPfN}3y0UU!bH*RFpvAOAx$F13vwQ5^63qi|YanA~SCZ*@EMrCSpZWa(niV(f${XHk zZt{h#fEF%-W7!#XQYhDD?3b!iT^<#~w4K_OZrF@2@;doN6GZkE(alCXB{yo?#k5}N zSd*&ucs>pw-%su!@~l?<8z-vWG-oXq?l~oz1~M_b)tZyyDVIva5hL{GrPxnyuYiPyeaL{waoma zWu#Y@LFswsDC;$u&i8TI_Ec+DZQA|vmR{| z2rW`jo*nACr)>`^6pGcmW6neiRznw6X-MabHu&9@f8A9k%xb!$fq)ZFqS|^x+iX@N z7?l;!WUGX^R^{Hi9ra)zSF2;kTiZIlX_&E*Q`Gzl396ku&=%j2M!<(hi?jCMj}~oO z$zLb0$TpPT5s*9h6&#)kA4eLYJ+tfr;P+^tVZ3qBwdc?tls0vz-YZ*f8&5$}yUox( zY%E@+9d^aeXcS4x&1NT$n~rkn+jU2-c~7*gON74L_F~y4JMA(H<#0O^M9MCyIQ4mv zKpKndN(|L=X4aBqMo2z;asw-V%3&ohx;smcoE#5*h{hTmcio{@yyZ3%3ogB#u?sU~ zD}~E>PLB*N2d>d%+Yfk!yLH!lFsZ*o2}}s-DzoI?w1)oA)=e@8MEdpY`mXSu4|slP|))7{V4UR z1x?Dpbm}%+#mb(DN`{>t>b31P?gV5@VZ`LB#=Y*x@jK+(FU`&#TYEoxA7jcAUy^qodR&&CVXVa5&8KU2tsNOA!ImaFZk5hSU^?u>OT~Xo__pBIt3`r~7i) z4M=&18CFsBdYw@^>UH~gjpp~^dz7C^a9%BSyd&V5l%~a;Z)^{2DqQ+DC0h8{>T^mS zN;`B~YtcHkbu%w#e38y8C35-RI_!kJ`ecSmjZXfF#gf1y;e}W?Y0HtaOInc}<@+y- z_kM6XP1ejj#hpvzamsgI%nGuU9D7g9?NyT5Nv%0wNXbH3f5R*0bCS#t+(eb+VJS$R z(3f@M*AxmFojKQ8y;IrCH}~pUtUZ_vD#zCaT$rn@EF(Lk(1%gGvuxy$W+6>8hcW1O zxO)uSJ4aDUslJ<$lwWO)HEi+6N%Mt!bft|E?l*G`N6Y~3+pn9B3_|DNb9KNu(fzzF zup5nlqtamZ34L~@%0wI<$3{XBNnVli-{8>g+i%2(>l5#MPXnuVykhc0Bd&`*c+qDZ zV-EPv^$TXqo$J2w?r(vT_vr{N?Z_3!k*ngyWtOWehU>9e2p<^2`*R;E|5*<#95&`6 z)wO*JQv)Ivl_<)~?T=&69^y(CvkT+cW3TZY&=UHSY#mmyt1KVdP#WiNR@n`&Q#tUF zN;tIzo1;qlXD7mbl_7WRe|PU!uHPMmW#ulVLlMQb#qZ@Au1L#XuhF%IP=4P_qL z1Q%(k5>bV0@Tu9Ib=01?(}-You~$ZXR*lZ9;p4Y?=0=4XyU62*8ar)L74^(GXe}-E z5gS=6+*8^7$1PC{`X<}=##6I=v&kl>p>%dMjHv#=Op{ za2Xiyo?UU>t9eW76BXJfhginOVWTC>rZRi$>5gJ7Jy@V9k%BX$iF2tLe3 zCS>ENkH39DLt+lllv_tD@Eb`xq^z*ajQO*IYYDld-?+`K+^Q-%+tgdWo>Pw`G{WA#tY! zjWV+&&Nx)Fq?$I|=k`g|tn9&CZD)Dz6pGP>HG@RDZh|krxob1%S2!v0o95@Ul@Gm3 z?*3G1h22!TJ)RbJ)`-Q@UP76uA}uXO&3Y4^PuhCB-zhR^hIy;S{-KnS;GP|mjh2_G z*vD@ZTwC~|O0p*fIgc&V#OVy5T(c|N$Cfwfw|x10b3WW}`0tz{-=6mC!_L*d-xV7f zR&{Pa+c9s?TN7pNx_BHb7gt0(q~+p-=q0-psV$u8r^3t)j`qQAzXvpqKR7d{GAHFE zTob2RF!8p)ZkJAu3ATkSE2t2ZZuz%jymz(XIAZ@jLCSyE$h1!*{r(lh_P9vlS!I0n zox>^*i9WQaj+wC6PSxCPJN#KJ(7xWFMe>@evFL=*v8e-<5{uA$OEZI-$gRLF!o15* z+okDH%=qb@{%pGIxyJ2^R6V~E-sbcoVtWKx>G9$TxJ1awUVd#K=G8+*%*$TiB`QCf z-ikxVJ{lkLi_lo0%SX+GVE& z7i}4zipy@&bH=BT79A4ipK_3wt$3Css8)%w=`iiYsw=~|?FGbI#G}v7?Oe?$te<DTX!cQ-|!@5j}OHM7=gD3AlaO*0Sd`R}~L2nS@AfxvTiT9o1aw&Q!+S4c*Bp&YTL zWQIlGpEPn9cE$QuZlIe$nFT|~^T#piNASBEwjCEHdtc4NleAB^Aj@~~D2(puu{pf^ z0lfk&U5yd~H@aWBu|ru90&~&ndSUE?m!@By!!Xb$L3>e!aDNGjUd% z)w?mIqcwa-mfV;&5M*+qg^}zM9)6d3t4@QqzyP-HOi3AVF5YK#3Ft270O5fxy!x@?w&^(Sys=FA(mZDM#AEp z<7OROdZ18M50tDuP4_CbyP~=mkyhxC+q*XM%*vO1iFlqjUU#@JM81Xk!)&;9-anQl zo=rIO8HawAg^#vz|G3K+yw7G>rn3i4$xwxxJ!lq;werVmhrwc{lj`kWj7x2#dtd4| z@sOzV4HMIQ604mYHQ7#~XMZzPKUIBNI;mbBUH1C$vJ!aP1p|O|!u2r|n$#6j7 zZ{8*?Qw}kw2zfVS)6V+JCRu-ugRIWg%coOO7bRFb-s0(HuW_BTLWX_C~CRL)-G&+xpQ`#%gGwRxLww$TQ)vBY;#8e*<)*TsJ58O>dSxc7X*Ha2_ zpK1gpH$+8qO@TS+eMqoth@@4<%o1(}E#g)ADkhN84*-<)@=$8Aj(a~N1T zpKl={nU1NE9X34|c4Cij!z1EbEg9{)At%lsM)#~_W-~;+sco?$F;`_8|5Xo-;x?Dn zR$C^L@z|q|x_kO^%ET$iY8=tagA2;#?9k&*tBh*ws?^zwZU51d&Af4A*If*R4*S|g zO*uXnp4h7Wnt;-u?9sT>+1-~3xd$5~-kaWW6H+s8btg*B@8~WU>SC|X);f8_t&$}p zMhj=Jh`GlwL(RE!Wn7r2_;ol2leywfp?ekAr+v%4xkp-~g)QT|x$Jg$08K!$zjRNW zwdiro2TSzHB8-l@?Wcpa*{0=3P?{CkDW|+*O>MYRrfK(lM2GjMr0nYRlmlWVezPL+ zO3WW+$B{nx747&vu0u+&K$X*-wy<}~dsiT3&&?IJQLJ=&4VFKQ#sw$G=m|^6jmoD4 zI`(L%$jYaOVgj??5shR=3YI@6Ul`BW`y=x3!u=dJa` zjAU%4%@0;5=k!r3rbCv92|pXf2hE}T@3E0;`~EwEm*`ePq9GjVoZUE5ZRrgQAv zuyrbLA^lp-0OwvTP`^BR@o1bb0uoo9*;bA+hX#98joQsZ$w%x~m-A&r?Os})Ns)}c zfw-$sYrwa~EM%rm9atNp&pH#ErdOhicZFQ%FqxGVp5@lNlB8OabC`k~^rp0LG;Kld zt)cU#>|JJ!bcoWh2~CqJq%b!+xt?5eKJ8ko9+*AZrp_?sjx9Ik(Yh1pJ9(-X$4i)9o494H@p) zhubVKA*OFLXd&w(EJFqR%wOs1EMPkvV;$mo918 zZmX~jn_=PyiqfgjqE8n;}I> zNzhOcYGMU{49TQ)AJkE)o^^<7lqIt$G?r&VsEVX` zO<9y+szE8wo}oaw;)t%(SXZ`{WQcm)EP96c#0|Y=_gE;zvih>e%hcME0p0t$U19nwp#a(Yr-qy5O3`fc+ga})_w{ddjt&dzp7(s6CsL#(6YGPLDs@-_3Yqn*7O##*)gV=43 zb%WKTy1x$F2W+bL%JvT>jwAIx#tn_x&W3CNrERwLv5E&nVpg!2hz`pTZ<;n8vPa*W zW25rHI~L+O_I>Z3=6q+1@%tqsR*7i(AlPKBa&T(f#Kxeh_UzV-omsZ+mH0NT`BE#B zH!6&rjzy%*m5*~GW~o%2B%M<6A4SxB>v;$HBlC)D3@$Zo9AR41z+Ci~WU^PN;aA08 zCpME9K9Th`%{+__BQqsKRl!Y$q0XvI7rEWB>#{HISN6*J%iITjNiMmNi>LCesa3Bq zmh3=tE1sxp>jN_g>F0g^L2`z9hthTFR3bBI^{_N^T|cefn@*PrBJ!z)v=+Nu+E2Sh z88NR_sCGEqk>tM(tmXI8D?C*#idZHP;~Pn@BReQjj)<24<_E8&n5^9r^o~ zOmB9}iOEnneqe*?lW@4iwumxW@_85GOoXKADt9)$RHAzLjE#xKQ07zWVg$Lxu003{ zWgq=@4eSpa(Ry)CW@FCSBYtD6-rPP??+R5V<~24DvZm~-R`cWVB%Yi$nmBrk%m|%U zilt9Bv<&vA_0B;%s_JE$@_0JLNmSf<%p#3WiYM-HH>_@l$jOi6G9hDNRv=|Z`GZ`4 zy*?Qv5|_gZC8r(?5q;3n!aorcwd|`OA zopB=Szl2O@Oc(J5PoUMw}Y0axLY*=*u@7o0f`2W9h`eVf| zK8b&n%I#@|$vw$qKLd|p~&x4h4K0xA4NpWt;TAQZyb6t%jOgEQvDaYFPa}OlW zvdsjD#mYn#tPSNlCKNJ_TC(1%joQ2A=OH+9tp+ze`la3nnxetkBuZ%;5%GI7uX6eQ zOp7T2)T}x>Me$y()_%_GdhA)Re{?&#U$(hjTQoKvy~=UZSGfyVQNFUN44*{1 zB|szCP1WOTWa5f`r$J@2GW4SmAC6;r0{cz`CnX&jU{jApUvWEYB zi^IW*kN9!KQQB-7t0K3%Y?RG*e5MwNg7XFrc-gK6acade z+e>Agx|q)#wDpoS^=5mo&S6KGU$vy|=`^oQ=bY>PbfVTCsWewB%OKwG9xq$Ca824W z!N-QRAu`vj_WUP$R$cdn$TztV@rq^?SnG}Pj@Pd4jX6`om-xL!49aYj%X5jZ)&f>PUb z1m1WnyGgcEHUdfLJu2eWyxm}mcZ#puNXoKGPSBk)$;jt=WedLJ(wO}_!#_^d_UFU2 z1g2oDux4ZY;#Yg+uye^kt4$yhIRkcM9oiw{TLM@TnW@m42 zAR$LGZ9lVCxFOC%L7;S2b&^OO>Wx#kV^J&Jyt)u?E6P}jVlot+_nV`hk{aU6_1Psv z^|?{l_FtOzFRe*XWaHcC;;yIcQNJ3qCfhOQIow4!^a!JlaXo9NU03c+ETf*1sp8O! z2XM&u`h8MRGDvNfb^73b+uPp0&h%3mdYuuk#7AN^Nra$!y(?faC(mLnl))Wm)p;LF zOr0{Tb2~|NnojyU=D+YCQ?Rnf%Sy&a#PupMmla!6KDO#>pLyQ2)*{Fe6k%dh zCtpb?!!~KxrhX>D|Ay%LEI2T=m10j(nRT>PR60#q@2;;}IZZ>Mn_bPIz(^dN+B5g@ zl+zx8l0l^rqxoYwIk;{?{w4?5;jgd6yzCV7_T==|dCo~Xj~RRUsvK#qoO}LZpFX`r ztmT=W!9`A2S!=?Z$|R2o^lGeevGR$OGK`H7MHZEVedMfUd2jGL}^ODbFy4wbC9w# zRWhPAGGA8EVB|q$o2)0_VzFlY++rKYR#lJ$uZ9I2u><#Lqrk_b0w;2W^zQ(*twc@N~i4?6dV zDQ3256mxenMjD+dj(WnH3%XBroO0}-;8?60>+_AhJ>TH!92R@wSzYjw)cYs8T-Us` zm*i>fm>l{6a;hXjZAz{Vr&_W1nMEd3QoE0qi!aLNzU!EB#<-{M>H9iPc5hNBo8fxf zLYE(Wx$@Z0)_8ATdnIex>o7jQU!Y#R@T+OpLOd6fRf4(z0XcT(H0{F6pqo z_&nE!NmH+^DL>|!lq>Y*Itcxyx(@HBUu9m8NpQX7wxZl#z_(uEbjmT+9r0q8#1u1U z{rLq)X{>CZVy{knwd+2cx*4FW9p)YJaSnVMgV;{r)nd)_ccypt|QXTSGFvTwTQZR%B73gt?nMo$Bswz zW4Wg@h1|wR!S?}0V7VMfs_?M$tEReq2-W)zbNcgo^wDIWapp0YT)d3y)RL81mYv^l zJqfZm{UnCI?c5vgTh(s1=Zj5EICx`(C9+OTIk=*jsg^rledk^)6)8u+w9WGcNY%$evsyLb-AeG&LbM8S0GXkWS4rtx?#+HY|f}s?VcXVq|I( znsr$aQHSrw9+elN&6cXAn~5?M=lygQN}@Qn;zaH-)-fVoS!Fvz6zecC^UPs-o3`M4 zM66;tQBtpjreiPCdNUMTBO5{|<4DLhV@y!%M24ojli8*2LBd*P2Mg8nkt+%gIlWr= zS^}F@PXHf|JPJ)QwakujCX-u}EMVB2Q}ChRh>a)dek7gBdhw)ZfRMA4#j?mN1CECSTgjdQ}PHg0FqTGD^xncS#Y z?r9xe?6PpAD2lbL8G1wOaMg`^rD=sdhFY2o~+rn0b%t&y4U4w^Wq z(mUSfmLgKfOuJ)3U2>*oZQ_aIwQnQqE=LAJ1y{08lJDxrpf}(OdXX8-_9dI<42s#W zYI$v**t@mb+?QCjbM-2tRf-$!cBhrHR$(|yOSjW?=UwtCoHgV;Ih*HL)H9*4)=@bvD9+gzGgXU=&(FCA>Gr!{7>1i{2e7<`}gl)kY!}UFV1a_Vd}~MIZ`S$5^&N8a=n`n zT_E;9W67#TyuZaS^YctZ#oP$Bygwhdv;WRu_U^zzlPukA%Y6EVPHd?6zp-8U1aUdM$;b`% z^~yU87Ti1nZ|MIAoz&zN+Z!ytvT`muZeMzfUbXn>AvA|sf_o!^X@!af6x2&iV zoy)kHqN+0DZJa?dQtd@^l=gat<`+eI1>q`V)E2oN#j0i#QRs-v)s%&kftagneQYKe zh}D&|)b;jhknsma$#E#KlW=Ro_^wk_B&`y^4*Q-DPt38vD~`+W(e&l@-NoJxXI;;I z+~t_jpXefQhO;fB$E4g!M+5q;9Rb5K$&X!0cU{RLP<7pE^_(Q033av6j<;8x;HDj2 z%-kgVbNg;GzV(F1k#=zV=%7JE+0}J2OEIg{7~d>4Q3Z)KDiPk5Nvy`d&q*ugiREcX zS~itYSA7U>su7nFZM+M*op^T6A8^N0I(snIT{lOrN5)GmtBsLZq z1N2xY$%ukNE1QIN22m)w>?H(t&KC=qjHt%#S#?<}eb{=}apcNgbPofAaC=XmLNqtN zW+(lT1#~NpeNlltV?W_@qsST%%AHwAhMn?C6MmYD$wVY~ALUlS87a4FA8fqvhj-n6 zyRv8I-JWXcNdOws>^!z3_TbPI7fnhs>BAi46=dz@LW ziFsF>iri>X-89d{Iu4kVH(2aDx3;UvsBW`vb5m;hj%vqkHGyy;9Js}sGFZ*ATEimn zFcvpebcMKyJY+5Pr{=a9Q!##O##nT4W9_P4Y79I5RQZ7o?t;oogy3{-?vfB?{ zj(M}-l>2EJ=?-thr)s`_RWMj6*!E3!d(N)Y!w*fKklKoIjQnAT4L@Rorp=63+vGo$ zUn}Iz8c(_9nV$$;+R|}_j4@ZHIoCqvHgsH*wVf14vQjEXv5tB1?!5ZV{lO-vzHgDR zFMEme#&%mKW)DShl*TbTCwlH16k?6d8kVwF;(w>JI#?tjhfoPw{z**Fj&$}5EfuaA z>~ojiH}xWRcE% z)=4cjT}i5Mop?a|nMZcqEme2DLD*24k8`=LQX-Sa*|N_BdaZZrWZqWxNU_kYW8kM{uYKquvu!ri{3?RmIm%HI}Ov zbQ;+5QH;4LUXpjjsQfw1Rpm7H=rBf)<)V~M(oSC0^|KPX5-s9Fs~)EoMh7~0Y(&#L zo-SFscU5Y8NqkX6vmaT}C2gt@itI_MqCEK@osy&5sVg?rS*^8fPuRs)XL6C`l>HVi z&P35ievcsSy~$G{F>KdmHMY%A5{<>!1*YeB_1YK2X7bG^yT3bBwf56^Oz%VMyegC} z=$%?a&GZX9l|*k<#)=_*ArptOHOu9)xGeX5^yRVnnAOxWLYxvNWj^oSVHsbSv&pf_ z8Y&rb+r6|l9K?!seCBut&!#&I9f46DN~h;UUk z@9vm5^rf1Oml4s*+`iOYbCbnU?OJlr5t_D{HKR2qqgZGrFdv1n*wW! zWw%V@I7GARCNqkVF`_698BEVZoE*$Fb+-FB4xmJ=A;+R*!bRi z*s3t3s69WpkTNt*GUJ-#qw70ORhwi@DEFZ7aZt4$@_wU{IQ9y*HhT1hdY?woxNIYi z8E*=tac(1!sXYvxH}l&Sx3f^sI%vdCgXic@3iA()`dCV_`Sar(WuET%^lH;j);-Tj z?KG}bonjpuvo~WgJt{rytIB@;^u5`{WDKS9mS}|CwJL3jT9x-Gv_KyxO3-shy7Os*cFKucCIDOF4EXXl7f3RRTSO{QRopx!oR$ZUH*w&F0-> z%E~P3P?i9tzbCkOs-eBqmTqSFO>#MiODNl%JEo?SgRuVMD*NX|bO;@BSbDfg{3iJBeJFXj> zxX%^}8Dw)#n|yFpfsPfSNNZ@bpPqnIsEM*Ar#o0d?VnioDK*OP@Sa;{s|BJ_3T-Q5 z18zQd>TU|PqtzNQ7-B9n=~yGi%(pf&yVJ+aC+I~cx;GD-Z;Ey#2qJd!E_(AZc~eE1 zgy|}5GduwcG$zGuODo9qD8^N6L9w(*Yz!C761^_R&kqs(_Ph(t>HBtJcJ5`|*rGOoWlddSy6B~!Utr=s@g%U_e`#&3Nf zq$3(W$T>rg_9*9}imS3CEG;fK<@Am`)5Jno{y72bNY8vglP*kysZ32vC3NU=srQ=q z1iGE9!$gzZBs~^gLM4GInMi*{W@S90bCS;3yvs!$L+wHdbFO(?e|Blgdx$@&&vOl+ zjkFW1aI70Fu9Nk+GWn>@okZNlo9)qDtQz&J^df~?sV_s>GtA|>lk>0|!{M!LY5qAj zW>6~}$Bt^%r=N^XTRqEjqPTe{*l0EO-9OJ8!I0?Xx~NqfH$66usUO5qF90==LO=45 zno4k?_B36C${Ue62Yx~ylphsiUd|%vT*IS3cz1|w@GdcBO)YX>5FcAluHjRl2<_=; zP!sAH<56>EsZpg@k?yej$*I(Nbt#xpW?kmX7g%RR5+wvu>!0>bYt9T#HM0hDWAM6O z$fc;pAnMC=9;7${w_1WAakjT6Bsiq$9>JDM6qkZ8xBm1onh!4*b$$ ziH2?eKvOW=F+V2TxpVHcn5dj$`W4beXNhfD6}|R}#ufvhth)7jtCTgyfEXyK7(tg@ zMsclsPuux?9izD>qu78X;!UcB!Rla>Tbwn`|j607XMYBOEH|O z>d6dQVomWm$5T`34uz3XvO4PvulYu(s?D};kGJd%jA`7}D&9QV@J~9PuClInzx~)$ zQOKGHZz~-r6U3aYw$4&b&C;kezU}v<`pvu!M+&`#znx#~fJc zR5By&{WcNeE>lW(P{)!b)==G%$`=i6II%nQtOuH%xt{!QE}x9<$Zkm6Y#sA@oYFh2 z^iCNOwo0itO&dcidlWGZTh*i>$B$)EA+t_ey5douH{MQIcW?edsQr8W`HMGZU&)*2 zRTeMF@%omWlIv|6tVh3bO|;w|MPk#B>6Ow7BxKg& z4sbM(k9?%b1j-CR%?8TLc)Y7Dw(oB4%ul<_n$_D^pOe3rwyH)M_F?6xf5nZeTwG1o z9#}Vyl0>XIkCf<8jF_pb^EAbdoG3$=#!}iUI3hoH8(ogX$XJrhGssvGy*yHtk zNO;(FeXgGO1w|;qTQWKs)we>V5Va6J4CAx;;S=7@|bqI5DO6#`|TGkULwu8ksJ0-k@)9$@q6yj31z`g=&4V#oJo2 zx6W~H6(#qbleH8sDU*sOYaV~Q@KywSn5_~@)IL@yMR{4Tl~-jpFS~zd&Zae(%Tm{? zw?;{wNY_q@9nHPkpd)S5HcM8juaUEz>eQ|cf32q&6U|OBM>eikNE}%$-qUGQw|RG? z-i~@6eVpN2b8Xt>>!x!Wsb7^VYHJeO(MymrQcx=w^0_D0dsLMg-7RZ6EDnmd+HF`^ zo6?!c5|#FuHNB{YJBN3dbn2qp@eS#??Tsyj^ABfvjA*C+Sv-vd6Z~Y;2{f}ge{oWl zt=ebJEwM2tA-cGnRV#4Wq2;U_ylIY&nK~5{WcDKR%EHf!jcA!CCQT+DY%V?)-a#iL zQTN2hHWT1?j>?N9tl?D8Hina1Ve0L1EEBxBq zRd+Prrrz0qkT(%m=uL6HI!_00a?Zt0f0K#5sPyj3+LIB+3p@K%`pTR@C% z7BLg1Fvsy31@ZB8+3x*m$$QvZmU{e|K0&BFqgIJtVc4Z5E@k%9M&BqPUf>rTwP#r) zF7aY^nhBjUs)uA*BZfI0@k!Ejznkkesp2+FYzvvLAQyBp8Jnwee8gcH^}(KQ00!BR ztmL-)WDzIWNA6^y;@4}_Ni7UNF-o(JV_wGd3G7B{Hg80Rsb;HIud6EKd~_zaNPQZk z4jgU2>@*2pVn%vmu$fH#a!qn%cT3c8QDe4eqNr8W9MJ4y-4rNJ&@H7D8*^iMO9lQs zQ*52ywtW#MHM^dwHBQ7jqqFUXDB6hbWw8yOE$3NADOs)2rEHlbR02H}IIO&Rw_iGM zfr_||HPFUOE2^^RN>t0`my@~#CrJG*_EH-c>(&|YJk5=+p_f+7eCD%x&)I2f&~q%> z3nNXUYj>H1Uzqh9aK$qc6!k-ArPG$n+}E;?NvhfQ=UL4LopxD8$JU3TXnivwla(OP zy;;&(xsAZQrt1)!_`Ln1g&W)K zb%A9-*D|VJOuW1FDmDxSukp{M#y3f&I!-=?%T*AFnk44gPs&G`X#Ox<9N6K;h%-@b z7gq>6*WCG!rLC88&MwP7SakZsupb3I9?gq$@w|=ls1s9C#Tdgt53i(eEi780vYMW6 zv9T#RwY=Qf@Y&5BPFJjrilEKT2J7VW>l8+}`!@Hzd})hIPI;_v)zsXrR~Z{8urIJ6 z=G(D_BdL6Wkxq_kl-WRqf%0{|q!y=;s@kT$e2_+<-a$jTGvS|(KRcno#m~UvR$&sO zQ%}ki+@H}UE1M@jEyl34I~!D*ZGK6+A_)AQW%mvv$jXS*{(gWDR`hpX2o(LFR+w3)=To!z?7rC!*)ugxRNd%c(vC7Q)$(T1uZ1nw zZq%3xQ-%dZG>N|QW*IxUA5JKGZGAMwShh^?6jHO6JY!@`LrPTFQmZ{>w5j06&ii$H z6z7;CMy`#yoOujmjp4mX&^7b&xtVv``Rwd=zLPe!z?Mw2y=30;qFgU7cI*s=lB-0V6(cft zCbEhcvoFO_yNz7@b(MaaN#BhkMAm*dBBrTYDOp{)iK~+4+e%`T5UM1QB$*U@+Nj$} zdhXH=YfPuKV|$Gk-Z6R?YxTKa{IRAZ#XNJ#S3Z@ukj}TXaOk$%F!{U#rE24Taf>yk zMCFe%si~?pW~FD(IEBkJq9>f>TH6ib@VDEPuaTwA&v{UI$l2fY=FNn1D3+?2{d4Gj zd7_5w*put-y2(BjY}Kj}sL^_squU!bud=O>RIcWdii--3+xA4Wo-#hLzd*GmrcGEm zL#RS-t9e?k&n(J9A#4zHofuCX_WjK2+Z=CmZYTG!$L?14{;oc#xl;B*PR|UTN|{cC z!)B6MmgRZ1lh5+c^!j~M{;WGki&{BQZzLuObJ z#ly=R6h2ex!m05d-CCFM%AWJRW$xLy_-CXoz8!lP?~ZNjk7Bot;YWKj3UaY!g{{-j z(HN&w*O|;)UBoTpv^M23Q&ZbI$DeTB*=)t;N~q-1O1H5{d_{BQ^wNyPk(NfCh*d>o z^;y$96K0z`YN&d5D9x0kY|i9TRdSV=7u_inLMx5RGE?`SP16}?ynCu}bvkufnmip_ zL;^BD;u2C_hj6~pL2x{qVfiLnQ$`nPSyGD|jE53x+!Pn#1OqUuLa`gU%_(EV1WO%j}pTd}it7_;RRH z3Lo-FcK)imP`Gflh?!7DQSA$6FY2UK)Fbg*?Ezo5shD4pcCn+LK~$IPk6K7e9VoWQ ztnzSwnCcx9lzC*!GnWaNxvRMDH&RwK@fmw6;m|-JtNZPc!>z9ui%dO{1t3<=$Pg|&|;IKMw8B)WRXd&yQlZ zVM?2y{lW(;OV+lwt@`Niezkqro%(jCko^^{ndvc<0TJ)#6zVc?S7w-~V{0pu zo4LJWa6&LcKSDjax^c@fRM~B~=A1VVi&HsGb6s_8NE~q;VVX&VCTQV~SRHLh;M3f@ z>}Z>f4!?eom6+S`4r{4=@iS(ri+&S=p$(^XlAmS~rNJoKWl((0IX6irgG~ln= z)9O~~TN$abbHY2lk}CSTL|!EB;%jO%hsm6tWQ94krdA$@s|~bdd|UW+x*~lQ0~|RC zf59?If|)XvQn`dao8LKdFGF}~?B_7=&T?LvwWOiaib!S%c$&ELk?wg_X8pO6am%nw zo4j>)=`^CccuS62=CI?r&=()KMR=|wI#y`Wfv7keJbiUKudWR#KW(Zn&{g!-F2;wu zQQX*oW_h7ekDc0c_E%UPz6KW2VXRtg8G&7yL>~!&?b`4h%+A?StNvsw>cF(kBvpdv0Vhgi`)3joAfzV=cDJ zyc(Q5LoPqG7bfRQ$oP+mZM1}y(_2<{Esy@v(KBV59%b7vlqFG1b6v>zJKAy%&444# z$1Bd>Ej5j9wkvGql1;6-?FR_1CW@LIE^Z6Qu-SpQ<#BE0N@g3}3o4#9Vdxo0^EqFX z$Mo=jJ8>*ZISPrU8P~E()-DD!N5FR~9_Q*tH!qPC9u;b9e*5U;d%hGB*S=JB#`XkT zLb#j7imw^eF2%Sp7sUJoys@NuRzPP0DU zqqHWhm0Xs^o;n}Tr0aqCzTZEeJi?;M0TTakJ?NTcQ=S zUBWYE)=rY8+I8hp7r(KKnvpgU()DFS@?D5}{!aTUwnkRjl1Mgldd|8gk#^b|g(q#A znzycwn8-kFW)&JHojlqa18MHZ2nzUX2w7?W-9Iu4n>EUO4DT70lt#=0I*eP))TxYK zoSE%7QciZ!v{PDr4$aEA2 z3XTlEciXi~OlC_;^lK-SGyduPgR7dpReap-w>W15RjkIA^rhb_)7F!8Z!pr9xc$cX z-(wUoM6NK~ZFO>#@|Hl*b&|?rx^)L5O8#8J;hAht(Jfu4vQeX;M9px|0F4px(ix|! zeW8Kb(Q3Gip}XzNMzOw?-XD%yW|OC4DC#E&W*=22S70DJd1CIhK6fKQE-RnJqr*gT z?z$xQ?IWAA8!IJHAVD-GvNU#sv*+S!bNo<0j4QN77RDp%{7_vV%Vkxphq7i%cS-!V zDatNO-q7M>9L#54Qg>`}yERGL)?EFSo4QI}{y#aDUY0DFS+Bimn@=)VS()2QN%pQ< zc*a6=ERQAQt&DSQ^x<}?VUKmwtl#04yD9X0&)Y?&cxlF^NJ*H@+_70|J2`vtm}T!)(WlefXdtDzRT+EUV$5dDj;NFER?_^@ zDr^NcqDWa)qEFqFhe_8|aw=g~TZmHQAP&n3865RRoe{Ar#o0#98ED|dV1Qu1WMj7f z)TcBwDNQ6OI{j-)(;Xk|uvh1Zio8#}jO9~p=k{Su75q+=vU|0~mR*^qBp32DV~^6) zFE^mdSN9fpc3hiHQ_cgpBAa1(usG`*V(;UQfpY61w_&L&QtGp4TyJjD4td(hFBvC0 z#U`c|RL=Z@*;I*r;R@o3p-UT;zp7)V+I05I`DtZX&*@c0udx(_3Ob~?;<K;lpfnDsO)+lP(Blid%+mU< zGfb>s-d?fa_txL*L(rm3EEU|zCL0zQASW_U6@-!$`B(?48+Vf0tsNIs_i4qJS+qyr zL!!AaLf6RkCwVOO8TFV;c6Fkv74EaJCrlkCJfScSJB}3BG0RDB(vZtxr}<1=w!Zmp z+=;4W-=nOZOFfiQrOIWSVm}XmMjb`u)2hK~Qi*i?#~s&IHvbj1AH7ev+f?Jr9CeB{ z9J{m{IXDw)Pxxe>o7rg?(6(a^oeOgEo=e%*yh6glX1vS^?^CypDXfOKJDH}9*Qvm1 zxpg;{%;DSz_tV2Ort1fqBB*7g$3}TX)U14M3V#x|l*%rIPm26S^Fw9DrIbn05i&4i zCf+4^F|GyGgZjH}ilXy9xYa$+$?4vEJM%~i)w~s~Qh|1Ziz3WmTzyGpvdlZQOdoHD zy7Kzz<<5n%y3u4a%ob0)Cv5sbOz*iQQ>G`Aux-vTWcgg~SO+o+B zcEjs}jds_n)p=w5lA^qf^F-Vke}Sys-kFYC-O6rwXMvEGpe2jvqt`RLwMBf&fH`QQ zN1~-`u~9>Wn=nd$wSZF~C#>Nzup+?SJo0KD<0P>II58u0JyvZy=Wmr#MnTIO#QcA9 zl`zd3D488XsU{y9daQMHVzuT)_BvcpD|OyNkV>M8$Gfj`BXZJ z(LuYhZSv?XqLHi`ac=8*gi~*%X@8Aa?{o8xzC9Mb^Brnmk7q5D;GCiAR5KndQ8y;4 zsAw@7Zl1H*9B8;gl-)W_c>K+G6`89wZZMB3%Ohtn z;qNK2cU|R2E2nOgZ8#f8{_`NrH?l)Bla4`jCFo;6m7lyV7ItGN=g1Xh=6uO3BoqT? z7e*Fjcy7JZfZRc#-E0+<4KqkMq|CHM-|E(v5@mYe$Mx|h1kISu0Xt-R2eS*K7mcmD zrf%!BL%keDOfF<+#w4e_3h2}0Xm_VQ#{Z@J01*d)gGG+X zFm<<7x$3D~wY3sG4b0uzHise%dz*qFWi;=@`9e<4p;ZtsT#(!7qurz+-tZeI{>*bc z%ihemz|gal4IRNfs2dM;BNBLreXIzQI6082gkG}DRc`6#F}OMnwMFw@wB(Psz9C3b zDYtN1!}mGloYLW_^b? zpz_tYGhVc1{y<;1LA`*JCe~GPaS_rZGsnYlbQD%I<8>>IZLH6e26F%HOCk{6!>I1$ zWLCI1@oKJ{K|VulU-M?Alb3<{&YDCpcb?3!Gye0GJSVDq+8C=p@l zv|erV6*^2yClK5R}nd`Pq#>1fK9-@Vt|i#dG50>~7hV`@^Wmx6hBE@D4$E zBdkH+y3XCD!KKezjNAB62_po+7DjfD+;TDsGLaXB&9l!A| znB2djmHTd?e07DlLdnRD0)yo&uam`{l z*3|wU^AnF=eaX4X6b7vUz_NNzcsmJ z*ZYJeed4C~-Ps<+i}F1Nq5HQ@4Nq5$5AlH{w)}gP%Pz+)t7lWr;$sY1G@Si;=f2%$ zG8-RH%Q}s1afEicB1%B!TD8V4Jda8>9_Q;?9*y?VY7&?rztt zrZ=>Ej^u&H?Gf6z1VQ0u+w7EZ^Nf3%wzjYm*kbIctMa?8zIF;dXx8@F;(qvpxDRSn*GGh|5{l@WKgpc4YBeZ(y9(b5$L$yteANo_8B;=^?^ zX?!E*hVmi=x%3JqX{hx}B$y?+G@?}ReH>nurFstrL8dp~w@XWIlo;cCCG(UerC; zM5UM1Lz_}9aO6?uwq1R#V>T{(0zzXA>q>DlQ$1sV#8x$?s9DXr@&&mW8;D!{x9^~F zgq@SU*C2k*&T~wOqI~t@2VVE6PJ#d1&8cEl_6H2pl|ED0ou1-|+7q^YOjzM^+srpgkp`tE zOtYGf^LViv(p#kv_hH#v>q|6xaXPlAzv?mUS00p52cjv;Hqb=JkEqt?nDXs!RJTUv z!D2y23u~pTGj!#db5=AAS`7bL#lPYHel&Qm;IAp&AMwwi5>aaVRCiTRs5Xm}dlcOY z{e&_nYv_G5Vw-H`wbcU9?>8hZFPrI#=KE3As-ybLeItXYqoOLg5JX?i5v$9cz2 zjfqLq^_h9*tFkK^Gm|a$k6vNnq*c=Eo7<&xm|d18JwCRteR|Pjb=s(O@X?$#4KS0v z8s)HTn4c@Tp1h-uehpz(FY@lH(8buPjFpPCgi6=~S$_XqcZml^> z;>u%1m+o0W=S7=f+#lEILWUf?Hp;HaCnn(xc7uverbrvDRHtRQcg(z4j~8Xt-E3=nN{-Pz(KEEJ zd=p2>zFR0q8N<1wVcu6~x%c!&COvi%$tXt|+Gvs~-Qx|}ZE?=07DjROh-GkvmZrV+ z)cK1jns?Lmeo;>4jp$7KtxtVUw}Pab$!1)x9}^cho3YMkY$XNeObBuZ9J(?{H-U|t zlIC@4a+^k;yD){`mvvrdRZ;R%@HMErj$Haeu7VlrJcH&12Q^qli@Q9QZPIyENXcD^jFZsNu$e66ZwpMg^^CadSKD zl#cR9nXxlj*N!=sp}azLCm8G17d&=5Myx_3K}p1j43rd3?@xF~R#mLm{B5^vjZr={oZF-N)V1Z7Xn3&qoc7JKv-UKojBddEW`cH) zpQ<(}y#A6{&)rOEO;Qim_PcAfN6?wF%GbGu`O)iSz8YhW#ls};Q7ch+^qZ1>zucEp zz#^wYuTx68Tbog8j9apE+TlROmi8LDmpIB<=6*sy&oc04(8YJf6S0l@(RjugkRi$8 z7PlYoyv=vxH6r$@P5c^8d}N>Gj~kncML*SFko0)kS;a-FYD_48u|;;{ z1}Ho<)D;Z-gE(3a-jNZvy85*toA+fmy92$2)oCZ&@kdC}wzke?T|8V*y@s+QQReB7 zHjZ7v>y@_7m%J!@u5sC7`CvccFAuz$?n3S)H*uX=)7)1Z6soPf^C%l$|oJ+DS_EPMvg{8=B=fy_1tt?Ww*oQN`tzQn{Aa)ee&@d*)dk ztp`_CelqLMGIH(O@ove@OQ&%%eI;yfOD|XDzKQF+1>f_+tz64^7EUF7uCxMUWG4 znsUw3rhzao330c;TisRb-OI|L%=d*YE|3ieT*s-x7c#~70tR)-3_T+We$r)t>(hC9P=Wc!Yb2IL94Dm$T;6y|#B^<}%1j-&xK z+&#vmbnhxO4TqOCyN$KRJ?SY{iW5oh)4^xj)%bc(5#3g4YCyI`oO)%UM;&^%!a$Bs z-AA4A=`{M>uC7(z+ivMiwKwzJYl*YHh7%!U z&n7`>m2q}DUdXlO)eOCqS#6*VMe62lzV4>AKfi05!R@0cZ=M_~bT3X4G{$So1m$D- zx!wDlSD)E2Er#*nl$Sc40~Lw=dHHoN+&(8_yKs4wFShP&yg4W<-DlO_h(D~Ri&h{Y zb1!=hEb?=PtiyHAHXU|TW`;QCb+!BQG=0y=9u;uR{;{C-r_4!aY|Z4|cZy6I)`>CS zJH}>SkFV3>mOSQ;sJPC!3$v~ZcSf*ntgyq#5YWD4$3uK3R9>S=Vy1W_T2022Ew9$-9e2h}W*z{-V(7x4InCG95^%F0zy zTxyfsS*vPSv1qKRayo5xl%&{m=hMyvhkyP;t7W)6J9OxB5>Sj1UpahexXGCTpYU0zvOXzkmhB( z9TDrzfDE?!vbv%Suqr7xMvVL#J>;v)O&IT_iEYk$qn zlOEi+S%_*MLCl`&swGjody+4WP3{>KW!9X#L*~_Cjmcf}H`V^wJuZuPgRIwg8B@n5 zEXpdy_9c*8LrVbwfd7B8?Dow(@wqx!Wxby5)Th-e0i{dKy$0sIO1>KA3>!&A7wURz z%%2759^5L>F%oZs_yYr-d4OjWo8>V5s0hiIv8Jb9IBV9jBAWV!*bCo($ERsg>meCP z>pXLa!{gLXejHEMe7>7lT^TX4L962NrK*nwBogh2oLtHdiDP9mlwN zZl_VAGz?SD+}BK{w#Ok?TtMzcx=rP-7~Jhlhm&rtDW2a&_84S>)~s<!}@-wj~i{qhnS``#=6B$%eoP;(^%PbaxrMV?F6^QXwEpb+loG~MR7dZ zvaC%^4_(QJE7GNh_YfN_&G#B!JDvlh^v#Ifl&INHotnVi9d^f2>>*x;IB-wK9fj2t zg94v(-dS;DIa0{5>l{&b?!EbJb{Wy(fkI*Y4AJQ0!Hkye_I>8?2)&ZmNnu5gYNVx`+Lz;4wXmWh*ODXvVlpcM1;HTr8B znxw8Wv5q#TLMz z36L@_d%~_~Ep)+|c8g)%o~G8{!c9ZryY34po;McvMIn%dLY5i5-EDV5Lp-$5nd(Xtp1RB*2|4*Rx+iNTWp~wlDQW#B2h{x` z;-e3}2x^y|G-q)tjkn?Wka|%vu;j_LX5&Q7)YotXz4VygS3ZKNRz~AXow-Rd99pHt z8O%8(QLmaumewdPEKX(+w48@uYk3EmXUBUwRlPuv_Klel$*#|nU?)$g9ru^+T(;97 zWzUAPS?|)Gd0mZ7YrlTJeUrURqQkh+;I#`+do7x%>KV+(Y)`qaC)D)n1Vj=~)Y>@S zX=XPEEwyFt>ZGgMH41(uFRFU+v<78uf3~+pjwx`HZkIJ6@Y-5Jk50m#cioMzY5jQ@ zxweg7fuoeyqbb|bv}_Q|238~1ClB@{x?S@B?!Um-Ctj6dMH`a~_WLr8X_a2bD^$ef ztac+z*}!(0_=Ih9+Pxx3p)q(RVA@)|H~np!WOC`IxcIlr-TNDKoilEqb?+s&@C_P$ z*G`YTU7RjRno(|S*R)_nc@xR>J%UpCp=sxLY67`w%1TPEO-+?AH`yog%erx9t`CJm zR-!fTVwdsr|IHQlcLq-WHlfk6zKCni$+GI_H5vGw^_p9&lD07t=R0P!NzO{$(5@+; z+BPvJ$J6aoD=`WQhyBkhHbJfF16s>cDOnjJi?=}=KTuX{KIqDOQa4T+NLa?BoT@Yr zEs;xpwT1@Uo8IER z`-!7JZe7CAxi)Z#qwaMXFh=^`Jh_i`7ep1gWbfK(or&ff^L=dLPTTg}S=r*zI6HF( zS&#edH(j;7`Gt4oz~4rwlkcwYob$Ua1w9-VJlEFEUEbna_xU%De1$!i3TuVtyHdqj z*^u(n_FP?bsdrtiYG%LTVeMnevNzb8QlfBg`iP0k7{_E@tUuRN+^A=6ODNlIpQvXu zc~Gm{v5xd(adqyO3$c!(p072vtg&vDjdlEUZGEO8>-5oV`K=J$5uPr-iomZ=H`^}O zN$^@a#zhV4WVFxryEW~%u5P_#b)ubR0Sy^6m4#u;!7Hm3kmeSm} zR=7^A*jLYF!Qdtn)m3vpnHbv%!o`mWqaQ7ZiI^ZvyaXZQ!w6sxCioIBLA3Y=i1-1lqtJ995O zZa!7$Z7oILxgxW7)*~~H6)lWvSX8W9EH344me(;;`e&H#&zt7 zyS%Gr#8+2doEfW9O}>3Hp}JUZ%No1>#EBsxtU2!IEX%H7kyhZ8>M7lGH;M4vE=jwo zoEF!nHjN}QZ_=S2qKLJo(upyKRXqUuJ8bja=AQ+w`Q<`-RJT)EwA5#=gN=&5)Z*_*^eH zNPfKqe|PizXi^wVpjQF z-A8f13fr4^sol?^KQ!#bTO}h73ipF+3d~z*N~M_Cpt(eC4XfV;_WNA1oEwBCT)o{x z!_0SS47a9aMiaH}T%U(?s@Ndc-VNhT9-8u-H0#l~bKVMUHSBulzK0fw({$hwv2D*g zoluNL?52gSGibZ=N4D{Fc2In1BD{R=bMxKNd;Kk$4tF25N*c-Be|z{AHLMQ=9+BQc z2iB0|W;U0jtLvz2Ll3gD?kCht^h_LW|4;W+&F$wN^z#he^Ml@1WL=Q7jvC=Tr0qqL zuDo|Ga+U{Lf?FrWP1V7rR-4f$J;kP#ceh5DbgP}DEqBI$DBzt3_}%m)18zqbA!1X> ziSRGVbawZvH>`P_p)!evH3vf6Uxr9z;zwO`H+G1VJ({-C-p;w8;(mq7xU)tGqjI z8Pt}Rv14-W)$!<&782>Wj`w>E>9(@lxqXRu50pWSw0oRu##8k?eQeCS&TI5tZA_qh zcjeSwv3nbB#7ir$_LMnW+H@-1w{uLNMOzP)*Y;Mgwr_29UdNBr1Fl`83>`P6$C`C* z-Ps>U@2=hqcIZO6LpDxS1H50 zl*H~!E7Nf{CEAdFY^!QPvfFz9zN(gcN9PUullZ&%YcdJ?J7oPH5rlKxks`J@-xJ!O z%ACMRTJ~(j7>3vV{CBfa2hqYfYa90XKeT_F(Zg_$OTX;(NEEe8y*jN!6|UZA+Kj1b zQ0~gop=5SJNR~CLwkU?isR9 z+v9Y0LIRbCZ=&MK>x(WLAR4l@WGH z89i^a0L%xS@`YGpKCL8cyQO|V-_*b?y_4)N;TgHcp0+EbJsCsIk3`7UyHeG2Qhm2E z{#(0>85z$HO%B?}!<&yH^n_zs^zrApGn^0cCBP1QcPBVJLM9 z>1-TIw~iQbv1a&b2DwiOGe|i4;)+D9Qh`#QG+lIgGkR6QGrC?$M4x|8;5Z+QHdpmj zZFwXm^8-d5V?KxUfGA|c(6E=yl2akKCckE)q;S0C=A#fhrke<}bgZSmd+Jtl$7Aq7 z6Q{nM2z{Kb-7wi2Ga&I5{A<>!d;*B{EyP?Sbd;N4#?w1Ak|XCxBwNe(X2XkHpVE786&OZ}ue$ofSeF9nJmSAuA=Wv#*b8 zi}! z|EyM5#YAYinoL)ucgVA)%aCCd+U8G{NHo-%mwaRykA8u3Q^>gRGv~MTq=>uZ$E5Ve z;tjLDDQJOO&+eF(TSY=bg+OOrOUE|GZ@MJ&nXOv>wl9~|q^Zdq5A)?C+Bcs{#dvAn zmy)^3ipC;U{vZcpa?p#0Mx*HlZa9%8T@RgMFIApSXv-KZOH4K&+T+ZJInurdt6np) zn)Ag2A;NdF+mVgjA{b{^9h{x3&Q`A*{4#q~9z^GL&>Z$W24w3H5a1n)XR|8uw!(WQ5u=sS@X5r z@IfGCI5CEMS9&(K#XW8#M;Vo|D7OnR+`vMa#$^>>M!Y>l#AzaVp7FKLm7Upi72yjNl6!I6%d>g0>=bl6 zv9Hw!1eMP_-3;cDd|i(T1jfTH9dsQ*I6DQJ37j-z*C#SOb79WUKA>*QK_a6}Ol;IBmyA$I zb;-#E>JAF#%q=6-ud88j&=#j$}?Kt(gcKrWs(VIw^SBHi8t4CrS6RpQMKj!mq^GSwK(egB@-h@3ucNk zV@BI!1Inz4_PKo_?hsdzTUol1S+?hL5hRpxEjLmat=Do~dA`*?i`O`*kzRz!d*jxJ zC}8Y&7>NBIGw~7ek^+RvrahsCR^vG3pZ~$li!ZVh-s|{$YE=dgp73m+ZTcQ>bvB)Vf;BVbxpX3gv1DeN zv}U`By+XIHF`J@&aGB_IcFC@J+!>4FG}m$eX5BAocx#LFskANu?F^bKm7*hoK8Mkp z9@~;9y+)U&Qnp6Ft&BQl^tW1ihyISXj&CW|wJd<*yDz6#%d>M0y(1rtLOuOwE=n$H z_({Je-6>xvfvCojCS)Z8x{2PZ&Kc>6vO0FuzjAm__E0y<)n|58NL&bKc+A4wT8ufh zLn~6?Mu{=5Y7r)}Xt7T2}Oe^>?OmFui7&Z~*Z@Dwqy!q*bG}rhE8-^iEZB_p(qsokyNjuRy zS7;zd9c0X&NqERPv~Rp|D_}tdV_Z+=OlgkmJ5Rgs)baMY^?V$HUd6CVgHF!e&PbExug^e1I zGkL)d*}nYrV-}W9W=dUo*|hp$_e1`{YeDWT@`vVWUIPhJNjiv1Slc#2kH_v&3S~J< zTO_?crZex-pazSjIo@k#u~#?uuk+D_GNPqOS%<2aR}ZAA2@ zn9Vsc&g1b@9jLYrhox1hwwowy566m%#PD`|KCNI(qB@R7CFFO#sLGPsycYkj`fm{R zB3TWtGwYmX8*i;Om7cweI$dTx$Q+?jaYC9ww@*FIAmfnE9*bbmqR$ddqAnEaussm= zRV4DNp9*Xi*+{2r&{67=_+gais3esqcLyES>iVs887d_fS|iH2D?9tj!w`b}qjOHh z9%r;&akl=o_@nkqe3_5hLLyA6-1pk$*|ui+PfTq@OPE|d@_{+QMn2YUg)!%st}}wE z*tPHDWL6I&85?P(lB@pzw`Cbhlzq%EN7w4{Lgso}Z{b>F=L9Pr!<-hKd_Eg3(L4ia zI{M7#jEunOUF>3c<0qQuHdqUH4#RuWh+}H%N;8-weW~563p_LZ0_BCy%YH#vm&>N5 z009Z_ruMv#p3UOlM_+R96myr?P-H`-qD9DcOqAD%;#vz3uFe6izkaqr(`^CMA?_!%w{Yf zsChS!F8`vwE{Sii4e8@FVp_^^KTYj0zZS(St~xwb#f%lszz`~|q@DTZ=81pDAG74j^LiR_k_*rW6fDthbSf4% z?@FtksZ{M0H`Zt&dm67rN0*7Jd!)vCShzK0>iMACm_ojV-8tU#u8nUE)i!T({A3Pd zhb@s2Q?Ns1X&Zq|p-!HTU4$(z%lm&9k+g>{rW13F5N7UOgP$$XWh3{_yNGWjt4KDS zQ)`2LwXwvH#%MV<%Gu~uN8DA9Fuv98#r|-xv#QY$Q|qOeGvbeowrPYF)D)D??XtqB zE}Dt(XX4i_D?@t7KXib)Rz-Cu4#pVvdk$PR%`bKRsOIM#f@Ff_FF%;|1X%1SFzv+R4;whN*8IFK@H*$Gl-cQqQ3r!r30^;b(KZ2PZ zX1QUb@9b@+o(<{jo=uUfKJ{f>Os&K};)PmIr6nCHj?r^LCbB^lW{lP3BBnEK@Nfg} zE=Wt+{Gs!Of^j}?;ea@=f~Bgpw2aR!qv`B*Iin+IHF+(#DKqwrwqnYuvU-05W*-%2 zs6B$myyUn@HSL)4YFPGgb(qec?GMgswe`6()2)%;tBR=$RE2~fkX28bB)m7eEO$3} zrOYQlnv#@}bYBs4h|M`&V?vKW*B!T!po&22*5*)dR+SG}>!8P6`+zE+Uy>B@G}JAnslt|Sec z9at~V<;|zJSKc>jv#cQOipTS8TH9VG+NoB}Cm0f5zi&+&GUfeOQ|(e-s|$Y@ZANbj zyOiVTi1x2*G|R3SV=Q4)72V{}kbAeQ>Mvv>1P3<>tGNy2Up_F6^eAeyP}b?al25Gv z384^qz3oaB9c@Es72|W2q-(KoEwr;1^H~RHYe{pge(p?Nl>@G~N_Nhe zRE_!WT6+J>lZIp)Z_P!Bs_CvwaoqX!n$t#s-ovfWVp1=m$Bl9A&nOAUV)_$o^mRodG+P3L0Qk?;7X4PxuVTeYrC=SuBvEAOl=65 z$N&HU0001h0UQ(H-aYq^+o|d|>Z%^Ds=BH(>OIugRaI4W)mPP5U0qd8R}qQ9;o+Ul z6kH8U1@+ou^)t_J&pscXKS*C)_4*RfLAor;qUa5cOFs1Igd=z{fQ7u{U~p28D@taQ zGd6h$vnPnCCY3#S3CN)BBv_k7w04g-?0*(-g<%r7TN~I8(NU4;C@Ql3VUDQ@iiJfH ze)sEt{{pnCshFvNDu5||5PLp4vm3LYN_;+t`0QX_fodm-Shozvxe zv=g7n#U1PdH-8j+LF!VSb59QRNm|2=z1zpRURX81Ug}N=^d#3j^!cPsRy~;)>KMhn z3-zCI=rO4&Gl?QWl0BVc@IDG0x1Tj7)S!f)3nwJYMtIJ=d?K^P%!XF^rDQbqm@_wf zH`t5l_w$RNw!zRd&0I1z$Fz21m36W@4UWo)AMsJQ0HBT#Apl6ewRmgEmBq&SmFfUsZ+Xhj>SdT`L=lvv42L~i}(9svhdacwJu zdMH3BWvH|Yk|>HM8Q^{q=Y?a&XPFp6<0X7*ov`ZWTEB6s?4A>N`uwmhPO^B`>|4}f zY>|wK*iWcyvvrJ&UOtTFOjH9qgwazP)j!`+XR~u80sCf%x=-P>BRjE0*hmn4r|Ji|*^D%c9geLw_!% zp)o?TaC!Rc+Wov!Gz-1MAO1WR;fQ~+1IF4ps`jU|l=KEF8})LBf|K}Q3~3<40*>@s zGhV_Aj}O#QTiX@L<0NP?QL>|`pqs7=cUY?s)f4$cxW)qXz{-Wx@8(-vjdua~OF%9I zJ_Rgi)iqq+|4SbQ{!Z*5Zu^4Djz6=pcIkF^#qr`Q1k|LCrs8{Rlm^^z5RWAFp0wp-F(B z9o6xd5r%BtD#JDu`t_@uN3W$IN37Z-=O$lMQXjWT{7)z7;Fc(ooh!<3OOR9kyGj4( zL;3d*u>$ftjPf#w?vst#$g|Sy&-53$_BPmapth(|3y@=ZCxEspaVc~4VqSunK( zC;*wZtSq7$ThjguG16}4ycfe0584NQ?3`U=qCAh=OoFr@9jPU zBMP6l223%XTc4{Zje#ADnpLnzbLE++#tSJj{nN_q&f^aVsUYj0J{I_t2Y^W!JZCgU zmJ_7E*itpQ+J>~2Ao2=&wn{s<)mSYXidT+)tf?MP`?{9%%+rPyj}uZrk2_XmE&~9^ zzh5Flog>6ruUCNmiyDgGa)jOh+_EJkOrjk%a1Np~vTk0N`@$Y`&vZ4IEuozrVM|Fc zocDPv*%Zn6k#MS`B+?6xu!ILtDCNrj@1P*si4$`i+aPbY0D?+sUvQ<-g=d>Wv@DBV zLl6C2=1W73U^{pK{5Hf16xZ@K@?NO)ow?D-xjTkG@i2-&}~y z1;}b>VG;i+Qx3X^{>t`xp#Hns1Z#U>uxdZ46YF2UrGE`ih__Ip{h?KSZ#S^wB6fUH zz&V-OUzs7`bjB$}kX{BLQPPDBIhHp?a%Ig94Mu7|L_~OX^N z*b?u>%HEQBGV&}Ltnf1xr;QmxF^#r(LDWN%lT1#0tn4NB8NP&Dzz%ZRC5J)0yB30^ z;@#kTB<||y_9_}89z+)BVhdQS&;FlUyQbr?lI(qcWVV4d9$_LxO|ECvz2e_qIBeJd zgCMU9{I;c#@cMYZg_e!u

@GQVY-2jp{stc0xVWx3qXUDHE6&Qo@4S!SbKR+6#b4 z2~kM?R^dxw&57PzVCf=lS>H@KklI0SvcMG<0}){5N-)xMkWzaN>?eRfwy)+2LFdwg zM^FDyCt{7c|52a-=zA4{4BAWn0Z8!%W-WrHrY3Ph{^L$1B2c#Z#U91oR*hpf9+PhYb@T%QZ7Nq`qt+hG8#5k!?$ z1fBO`G9nADgCozs5`8O2^8_pN_S#F{eV3B2}5iljDM&Ka3_j|IqaRbL1KItudS0na$PZ%})AQ|6WV>Cn4Z`4AvZp@(?Z|4Ie^&n4yY_oN4zKDXa> zPw&L2dh>VSG|-6|q4@*17;Yr%5R$s#G96mkoUWCX7Kc6uUg=+`j(Wh7>1}O?z*k1R?K)V6JiB0g3xMn zyN{A)hOPd&!kEfGV<3>F`8N5HGb-wX!Gd^{SMKADPJma$fE`N$X~y& zJc82Ch)RN$ZUz1!FLPBC`0T$dmS&G(Iptp78g|Y8GNKZ4V*8h(Ass+d6=?O@raoI4 z`&BK!zl-<;Oy1Mr9}6A9X(~v?o&)_LCJ+b30L?$8eKI`%ceO1BqP6q$5+ zfx7J&pcN5nX->d=@Fh< z4Ok8j)_d2$nkgHv4|$&B*svJ}<{%bab(1MZo3#$aax_h$+A(M^4QIYM=iHuzpCa5S>5ZQ6DD(CY)k^TBm z5B+$wQvYQt>Pst> zO7QZLT|mnLey@mIsH3o15DLJLWg}{zU$CY`B)SnKu?exogR#l9<*$0;<;XR4{3n!Y z@7zbjq4c!KWVx}NR^4*$ZL-mhG7(=&;I!*UA49tJtbP>$Z5})l-6g-7;%}+R8~U}$ zncR1ioDKJxvA`_ITK9ahO2Q67Jmmgt7|3BS`09`V;2)Spo51A-d`JLrkr+mAwBaOP z5FzFyfg?UsZm)r}&z%{Ay$9c=E$RNzWP_g?LC9}8g{Hj}f0E{|tHMUyB#Dkjo z=hsX2{@5Kmw!}R@R8t@bL1`-T0h2d4>U%-NxA%|2&vffqmV*4>J=eN_lo35&wQJPT zR>o+)yEFa9BeO8=!Fv#iT>CqYHWDbPJIJFl?{*_@i^gf?06W-%6lz0qhx`w5k)z3V zf%BCeSQ(`E141)BPmW*RP90xCLlMplRr3tWfWIq{5uR$rDP6O%jTQr+MQE6SJ+$?Z z-nI!eQE$Yz0Rh6oKFVgOPkxvf<9syERUk{J(A4{70oew@qbuo^K^iYoBgy>xGW*

0WL&5HWr1{=}=jAod<%;$Yio@AsTnF@Q9X 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̱h&WQ3m~90FGR$FaM{?^vx`?NC?PY%y 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≪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ξr# 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

P6tx%?`e8A_kD_-#6ui*Ku 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%0AryrAoK$I1$`W*WTX* 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

uxFJHqynhL#hwBwfQXtE^r-_dqb8(qxp3 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