diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-04-08 19:03:30 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-04-08 19:03:30 -0700 |
commit | 7192fe6d15265a8f3ae65631e464837fd396d4b6 (patch) | |
tree | 573513ef5e480780bfc4d35a899f683511d65c9f | |
parent | d76133046518e71025000ec6322f5b8f1c98529f (diff) | |
download | infinitytier-7192fe6d15265a8f3ae65631e464837fd396d4b6.tar.gz infinitytier-7192fe6d15265a8f3ae65631e464837fd396d4b6.zip |
osdep/ compile fixes, and remove some lingering OS-specific stuff from node/Defaults
-rw-r--r-- | node/Defaults.cpp | 85 | ||||
-rw-r--r-- | node/Defaults.hpp | 21 | ||||
-rw-r--r-- | osdep/BSDEthernetTap.hpp | 2 | ||||
-rw-r--r-- | osdep/EthernetTap.hpp | 5 | ||||
-rw-r--r-- | osdep/HttpClient.cpp | 18 | ||||
-rw-r--r-- | osdep/HttpClient.hpp | 3 | ||||
-rw-r--r-- | osdep/LinuxEthernetTap.hpp | 4 | ||||
-rw-r--r-- | osdep/OSUtils.cpp | 34 | ||||
-rw-r--r-- | osdep/OSXEthernetTap.hpp | 4 | ||||
-rw-r--r-- | osdep/SoftwareUpdater.cpp | 48 | ||||
-rw-r--r-- | osdep/SoftwareUpdater.hpp | 16 | ||||
-rw-r--r-- | osdep/Thread.hpp | 2 | ||||
-rw-r--r-- | osdep/WindowsEthernetTap.cpp | 5 | ||||
-rw-r--r-- | osdep/WindowsEthernetTap.hpp | 3 |
14 files changed, 110 insertions, 140 deletions
diff --git a/node/Defaults.cpp b/node/Defaults.cpp index c235ef2c..e64f3844 100644 --- a/node/Defaults.cpp +++ b/node/Defaults.cpp @@ -48,40 +48,6 @@ namespace ZeroTier { const Defaults ZT_DEFAULTS; -static inline std::string _mkDefaultHomePath() -{ -#ifdef __UNIX_LIKE__ - -#ifdef __APPLE__ - // /Library/... on Apple - return std::string("/Library/Application Support/ZeroTier/One"); -#else - -#ifdef __FreeBSD__ - // FreeBSD likes /var/db instead of /var/lib - return std::string("/var/db/zerotier-one"); -#else - // Use /var/lib for Linux and other *nix - return std::string("/var/lib/zerotier-one"); -#endif - -#endif - -#else // not __UNIX_LIKE__ - -#ifdef __WINDOWS__ - // Look up app data folder on Windows, e.g. C:\ProgramData\... - char buf[16384]; - if (SUCCEEDED(SHGetFolderPathA(NULL,CSIDL_COMMON_APPDATA,NULL,0,buf))) - return (std::string(buf) + "\\ZeroTier\\One"); - else return std::string("C:\\ZeroTier\\One"); -#else -#error Unknown platform, please define a default home path! -#endif - -#endif // __UNIX_LIKE__ or not... -} - static inline std::map< Address,Identity > _mkRootTopologyAuth() { std::map< Address,Identity > ua; @@ -106,60 +72,9 @@ static inline std::map< Address,Identity > _mkRootTopologyAuth() return ua; } -static inline std::map< Address,Identity > _mkUpdateAuth() -{ - std::map< Address,Identity > ua; - - { // 0001 - Identity id("e9bc3707b5:0:c4cef17bde99eadf9748c4fd11b9b06dc5cd8eb429227811d2c336e6b96a8d329e8abd0a4f45e47fe1bcebf878c004c822d952ff77fc2833af4c74e65985c435"); - ua[id.address()] = id; - } - { // 0002 - Identity id("56520eaf93:0:7d858b47988b34399a9a31136de07b46104d7edb4a98fa1d6da3e583d3a33e48be531532b886f0b12cd16794a66ab9220749ec5112cbe96296b18fe0cc79ca05"); - ua[id.address()] = id; - } - { // 0003 - Identity id("7c195de2e0:0:9f659071c960f9b0f0b96f9f9ecdaa27c7295feed9c79b7db6eedcc11feb705e6dd85c70fa21655204d24c897865b99eb946b753a2bbcf2be5f5e006ae618c54"); - ua[id.address()] = id; - } - { // 0004 - Identity id("415f4cfde7:0:54118e87777b0ea5d922c10b337c4f4bd1db7141845bd54004b3255551a6e356ba6b9e1e85357dbfafc45630b8faa2ebf992f31479e9005f0472685f2d8cbd6e"); - ua[id.address()] = id; - } - - return ua; -} - -static inline const char *_mkUpdateUrl() -{ -#if defined(__LINUX__) && ( defined(__i386__) || defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(__i386) ) - if (sizeof(void *) == 8) - return "http://download.zerotier.com/ZeroTierOneInstaller-linux-x64-LATEST.nfo"; - else return "http://download.zerotier.com/ZeroTierOneInstaller-linux-x86-LATEST.nfo"; -#define GOT_UPDATE_URL -#endif - -#ifdef __APPLE__ - return "http://download.zerotier.com/ZeroTierOneInstaller-mac-combined-LATEST.nfo"; -#define GOT_UPDATE_URL -#endif - -#ifdef __WINDOWS__ - return "http://download.zerotier.com/ZeroTierOneInstaller-windows-intel-LATEST.nfo"; -#define GOT_UPDATE_URL -#endif - -#ifndef GOT_UPDATE_URL - return ""; -#endif -} - Defaults::Defaults() : - defaultHomePath(_mkDefaultHomePath()), defaultRootTopology((const char *)ZT_DEFAULT_ROOT_TOPOLOGY,ZT_DEFAULT_ROOT_TOPOLOGY_LEN), rootTopologyAuthorities(_mkRootTopologyAuth()), - updateAuthorities(_mkUpdateAuth()), - updateLatestNfoURL(_mkUpdateUrl()), v4Broadcast(((uint32_t)0xffffffff),ZT1_DEFAULT_PORT) { } diff --git a/node/Defaults.hpp b/node/Defaults.hpp index a4c839ea..c1df919b 100644 --- a/node/Defaults.hpp +++ b/node/Defaults.hpp @@ -52,11 +52,6 @@ public: Defaults(); /** - * Default home path for this platform - */ - const std::string defaultHomePath; - - /** * Default root topology dictionary */ const std::string defaultRootTopology; @@ -67,22 +62,6 @@ public: const std::map< Address,Identity > rootTopologyAuthorities; /** - * Identities permitted to sign software updates - * - * ZTN can keep multiple signing identities and rotate them, keeping some in - * "cold storage" and obsoleting others gradually. - * - * If you don't build with ZT_OFFICIAL_BUILD, this isn't used since your - * build will not auto-update. - */ - const std::map< Address,Identity > updateAuthorities; - - /** - * URL to latest .nfo for software updates - */ - const std::string updateLatestNfoURL; - - /** * Address for IPv4 LAN auto-location broadcasts: 255.255.255.255:9993 */ const InetAddress v4Broadcast; diff --git a/osdep/BSDEthernetTap.hpp b/osdep/BSDEthernetTap.hpp index 453edea1..a96c39b9 100644 --- a/osdep/BSDEthernetTap.hpp +++ b/osdep/BSDEthernetTap.hpp @@ -34,7 +34,7 @@ #include <stdexcept> #include "EthernetTap.hpp" -#include "../node/Thread.hpp" +#include "Thread.hpp" namespace ZeroTier { diff --git a/osdep/EthernetTap.hpp b/osdep/EthernetTap.hpp index f2675e11..f26d838d 100644 --- a/osdep/EthernetTap.hpp +++ b/osdep/EthernetTap.hpp @@ -37,9 +37,8 @@ #include "../node/Constants.hpp" #include "../node/MAC.hpp" #include "../node/InetAddress.hpp" -#include "../node/Buffer.hpp" -#include "MulticastGroup.hpp" -#include "NonCopyable.hpp" +#include "../node/MulticastGroup.hpp" +#include "../node/NonCopyable.hpp" namespace ZeroTier { diff --git a/osdep/HttpClient.cpp b/osdep/HttpClient.cpp index 6b96960b..251320ab 100644 --- a/osdep/HttpClient.cpp +++ b/osdep/HttpClient.cpp @@ -25,7 +25,7 @@ * LLC. Start here: http://www.zerotier.com/ */ -#include "Constants.hpp" +#include "../node/Constants.hpp" #include <stdio.h> #include <stdlib.h> @@ -56,9 +56,7 @@ #include "HttpClient.hpp" #include "Thread.hpp" -#include "Utils.hpp" -#include "NonCopyable.hpp" -#include "Defaults.hpp" +#include "OSUtils.hpp" namespace ZeroTier { @@ -82,7 +80,7 @@ static const char *CURL_PATHS[NUM_CURL_PATHS] = { "/usr/bin/curl","/bin/curl","/ // Internal private thread class that performs request, notifies handler, // and then commits suicide by deleting itself. -class HttpClient_Private_Request : NonCopyable +class HttpClient_Private_Request { public: HttpClient_Private_Request(HttpClient *parent,const char *method,const std::string &url,const std::map<std::string,std::string> &headers,unsigned int timeout,void (*handler)(void *,int,const std::string &,const std::string &),void *arg) : @@ -113,7 +111,7 @@ public: std::string curlPath; for(int i=0;i<NUM_CURL_PATHS;++i) { - if (Utils::fileExists(CURL_PATHS[i])) { + if (OSUtils::fileExists(CURL_PATHS[i])) { curlPath = CURL_PATHS[i]; break; } @@ -177,7 +175,7 @@ public: fcntl(curlStderr[0],F_SETFL,O_NONBLOCK); int exitCode = -1; - unsigned long long timesOutAt = Utils::now() + ((unsigned long long)_timeout * 1000ULL); + unsigned long long timesOutAt = OSUtils::now() + ((unsigned long long)_timeout * 1000ULL); bool timedOut = false; bool tooLong = false; @@ -198,7 +196,7 @@ public: if (n > 0) { _body.append(buf,n); // Reset timeout when data is read... - timesOutAt = Utils::now() + ((unsigned long long)_timeout * 1000ULL); + timesOutAt = OSUtils::now() + ((unsigned long long)_timeout * 1000ULL); } else if (n < 0) break; if (_body.length() > CURL_MAX_MESSAGE_LENGTH) { @@ -213,7 +211,7 @@ public: if (FD_ISSET(curlStdout[0],&errfds)||FD_ISSET(curlStderr[0],&errfds)) break; - if (Utils::now() >= timesOutAt) { + if (OSUtils::now() >= timesOutAt) { timedOut = true; break; } @@ -283,7 +281,7 @@ public: return; } ++scPos; - unsigned int rcode = Utils::strToUInt(headers.front().substr(scPos,3).c_str()); + unsigned int rcode = OSUtils::strToUInt(headers.front().substr(scPos,3).c_str()); if ((!rcode)||(rcode > 999)) { _doH(_arg,-1,_url,"invalid HTTP response (invalid response code)"); delete this; diff --git a/osdep/HttpClient.hpp b/osdep/HttpClient.hpp index 925ce76e..00400a8c 100644 --- a/osdep/HttpClient.hpp +++ b/osdep/HttpClient.hpp @@ -32,8 +32,7 @@ #include <map> #include <set> -#include "Constants.hpp" -#include "Mutex.hpp" +#include "../node/Mutex.hpp" namespace ZeroTier { diff --git a/osdep/LinuxEthernetTap.hpp b/osdep/LinuxEthernetTap.hpp index 31980ea0..ed1b8b45 100644 --- a/osdep/LinuxEthernetTap.hpp +++ b/osdep/LinuxEthernetTap.hpp @@ -33,8 +33,8 @@ #include <stdexcept> -#include "../node/EthernetTap.hpp" -#include "../node/Thread.hpp" +#include "EthernetTap.hpp" +#include "Thread.hpp" namespace ZeroTier { diff --git a/osdep/OSUtils.cpp b/osdep/OSUtils.cpp index f98f7e03..e0e8ca3d 100644 --- a/osdep/OSUtils.cpp +++ b/osdep/OSUtils.cpp @@ -51,6 +51,40 @@ namespace ZeroTier { +static inline std::string _mkDefaultHomePath() +{ +#ifdef __UNIX_LIKE__ + +#ifdef __APPLE__ + // /Library/... on Apple + return std::string("/Library/Application Support/ZeroTier/One"); +#else + +#ifdef __FreeBSD__ + // FreeBSD likes /var/db instead of /var/lib + return std::string("/var/db/zerotier-one"); +#else + // Use /var/lib for Linux and other *nix + return std::string("/var/lib/zerotier-one"); +#endif + +#endif + +#else // not __UNIX_LIKE__ + +#ifdef __WINDOWS__ + // Look up app data folder on Windows, e.g. C:\ProgramData\... + char buf[16384]; + if (SUCCEEDED(SHGetFolderPathA(NULL,CSIDL_COMMON_APPDATA,NULL,0,buf))) + return (std::string(buf) + "\\ZeroTier\\One"); + else return std::string("C:\\ZeroTier\\One"); +#else +#error Unknown platform, please define a default home path! +#endif + +#endif // __UNIX_LIKE__ or not... +} + #ifdef __UNIX_LIKE__ bool OSUtils::redirectUnixOutputs(const char *stdoutPath,const char *stderrPath) throw() diff --git a/osdep/OSXEthernetTap.hpp b/osdep/OSXEthernetTap.hpp index efcb550f..2c9e6217 100644 --- a/osdep/OSXEthernetTap.hpp +++ b/osdep/OSXEthernetTap.hpp @@ -33,8 +33,8 @@ #include <stdexcept> -#include "../node/EthernetTap.hpp" -#include "../node/Thread.hpp" +#include "EthernetTap.hpp" +#include "Thread.hpp" namespace ZeroTier { diff --git a/osdep/SoftwareUpdater.cpp b/osdep/SoftwareUpdater.cpp index 345fc28e..e3789bcb 100644 --- a/osdep/SoftwareUpdater.cpp +++ b/osdep/SoftwareUpdater.cpp @@ -54,6 +54,54 @@ namespace ZeroTier { +static inline std::map< Address,Identity > _mkUpdateAuth() +{ + std::map< Address,Identity > ua; + + { // 0001 + Identity id("e9bc3707b5:0:c4cef17bde99eadf9748c4fd11b9b06dc5cd8eb429227811d2c336e6b96a8d329e8abd0a4f45e47fe1bcebf878c004c822d952ff77fc2833af4c74e65985c435"); + ua[id.address()] = id; + } + { // 0002 + Identity id("56520eaf93:0:7d858b47988b34399a9a31136de07b46104d7edb4a98fa1d6da3e583d3a33e48be531532b886f0b12cd16794a66ab9220749ec5112cbe96296b18fe0cc79ca05"); + ua[id.address()] = id; + } + { // 0003 + Identity id("7c195de2e0:0:9f659071c960f9b0f0b96f9f9ecdaa27c7295feed9c79b7db6eedcc11feb705e6dd85c70fa21655204d24c897865b99eb946b753a2bbcf2be5f5e006ae618c54"); + ua[id.address()] = id; + } + { // 0004 + Identity id("415f4cfde7:0:54118e87777b0ea5d922c10b337c4f4bd1db7141845bd54004b3255551a6e356ba6b9e1e85357dbfafc45630b8faa2ebf992f31479e9005f0472685f2d8cbd6e"); + ua[id.address()] = id; + } + + return ua; +} + +static inline const char *_mkUpdateUrl() +{ +#if defined(__LINUX__) && ( defined(__i386__) || defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(__i386) ) + if (sizeof(void *) == 8) + return "http://download.zerotier.com/ZeroTierOneInstaller-linux-x64-LATEST.nfo"; + else return "http://download.zerotier.com/ZeroTierOneInstaller-linux-x86-LATEST.nfo"; +#define GOT_UPDATE_URL +#endif + +#ifdef __APPLE__ + return "http://download.zerotier.com/ZeroTierOneInstaller-mac-combined-LATEST.nfo"; +#define GOT_UPDATE_URL +#endif + +#ifdef __WINDOWS__ + return "http://download.zerotier.com/ZeroTierOneInstaller-windows-intel-LATEST.nfo"; +#define GOT_UPDATE_URL +#endif + +#ifndef GOT_UPDATE_URL + return ""; +#endif +} + SoftwareUpdater::SoftwareUpdater(const RuntimeEnvironment *renv) : RR(renv), _myVersion(packVersion(ZEROTIER_ONE_VERSION_MAJOR,ZEROTIER_ONE_VERSION_MINOR,ZEROTIER_ONE_VERSION_REVISION)), diff --git a/osdep/SoftwareUpdater.hpp b/osdep/SoftwareUpdater.hpp index 3c0181c6..9beaa8ad 100644 --- a/osdep/SoftwareUpdater.hpp +++ b/osdep/SoftwareUpdater.hpp @@ -32,11 +32,11 @@ #include <string> -#include "Constants.hpp" -#include "Mutex.hpp" -#include "Utils.hpp" -#include "Defaults.hpp" -#include "Address.hpp" +#include "../node/Constants.hpp" +#include "../node/Mutex.hpp" +#include "../node/Address.hpp" + +#include "HttpClient.hpp" /** * Delay between fetches of the root topology update URL @@ -62,15 +62,13 @@ namespace ZeroTier { -class RuntimeEnvironment; - /** * Software updater */ class SoftwareUpdater { public: - SoftwareUpdater(const RuntimeEnvironment *renv); + SoftwareUpdater(); ~SoftwareUpdater(); /** @@ -169,7 +167,7 @@ private: static void _cbHandleGetLatestVersionInfo(void *arg,int code,const std::string &url,const std::string &body); static void _cbHandleGetLatestVersionBinary(void *arg,int code,const std::string &url,const std::string &body); - const RuntimeEnvironment *RR; + HttpClient httpClient; const uint64_t _myVersion; volatile uint64_t _lastUpdateAttempt; volatile enum { diff --git a/osdep/Thread.hpp b/osdep/Thread.hpp index c8c99f29..f0dd3777 100644 --- a/osdep/Thread.hpp +++ b/osdep/Thread.hpp @@ -30,7 +30,7 @@ #include <stdexcept>
-#include "Constants.hpp"
+#include "../node/Constants.hpp"
#ifdef __WINDOWS__
diff --git a/osdep/WindowsEthernetTap.cpp b/osdep/WindowsEthernetTap.cpp index 5d445380..682e33d7 100644 --- a/osdep/WindowsEthernetTap.cpp +++ b/osdep/WindowsEthernetTap.cpp @@ -46,12 +46,11 @@ #include <iostream> #include "../node/Constants.hpp" - -#include "WindowsEthernetTap.hpp" -#include "WindowsEthernetTapFactory.hpp" #include "../node/Utils.hpp" #include "../node/Mutex.hpp" +#include "WindowsEthernetTap.hpp" + #include "..\windows\TapDriver\tap-windows.h" // ff:ff:ff:ff:ff:ff with no ADI diff --git a/osdep/WindowsEthernetTap.hpp b/osdep/WindowsEthernetTap.hpp index 08dc8d17..9c513a5d 100644 --- a/osdep/WindowsEthernetTap.hpp +++ b/osdep/WindowsEthernetTap.hpp @@ -37,8 +37,9 @@ #include <queue> #include <stdexcept> +#include "EthernetTap.hpp" + #include "../node/Constants.hpp" -#include "../node/EthernetTap.hpp" #include "../node/Mutex.hpp" #include "../node/Thread.hpp" #include "../node/Array.hpp" |