Ver código fonte

osdep/ compile fixes, and remove some lingering OS-specific stuff from node/Defaults

Adam Ierymenko 10 anos atrás
pai
commit
7192fe6d15

+ 0 - 85
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)
 {
 }

+ 0 - 21
node/Defaults.hpp

@@ -51,11 +51,6 @@ class Defaults
 public:
 	Defaults();
 
-	/**
-	 * Default home path for this platform
-	 */
-	const std::string defaultHomePath;
-
 	/**
 	 * Default root topology dictionary
 	 */
@@ -66,22 +61,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
 	 */

+ 1 - 1
osdep/BSDEthernetTap.hpp

@@ -34,7 +34,7 @@
 #include <stdexcept>
 
 #include "EthernetTap.hpp"
-#include "../node/Thread.hpp"
+#include "Thread.hpp"
 
 namespace ZeroTier {
 

+ 2 - 3
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 {
 

+ 8 - 10
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;

+ 1 - 2
osdep/HttpClient.hpp

@@ -32,8 +32,7 @@
 #include <map>
 #include <set>
 
-#include "Constants.hpp"
-#include "Mutex.hpp"
+#include "../node/Mutex.hpp"
 
 namespace ZeroTier {
 

+ 2 - 2
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 {
 

+ 34 - 0
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()

+ 2 - 2
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 {
 

+ 48 - 0
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)),

+ 7 - 9
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 {

+ 1 - 1
osdep/Thread.hpp

@@ -30,7 +30,7 @@
 
 #include <stdexcept>
 
-#include "Constants.hpp"
+#include "../node/Constants.hpp"
 
 #ifdef __WINDOWS__
 

+ 2 - 3
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

+ 2 - 1
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"