summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2015-04-08 19:03:30 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2015-04-08 19:03:30 -0700
commit7192fe6d15265a8f3ae65631e464837fd396d4b6 (patch)
tree573513ef5e480780bfc4d35a899f683511d65c9f
parentd76133046518e71025000ec6322f5b8f1c98529f (diff)
downloadinfinitytier-7192fe6d15265a8f3ae65631e464837fd396d4b6.tar.gz
infinitytier-7192fe6d15265a8f3ae65631e464837fd396d4b6.zip
osdep/ compile fixes, and remove some lingering OS-specific stuff from node/Defaults
-rw-r--r--node/Defaults.cpp85
-rw-r--r--node/Defaults.hpp21
-rw-r--r--osdep/BSDEthernetTap.hpp2
-rw-r--r--osdep/EthernetTap.hpp5
-rw-r--r--osdep/HttpClient.cpp18
-rw-r--r--osdep/HttpClient.hpp3
-rw-r--r--osdep/LinuxEthernetTap.hpp4
-rw-r--r--osdep/OSUtils.cpp34
-rw-r--r--osdep/OSXEthernetTap.hpp4
-rw-r--r--osdep/SoftwareUpdater.cpp48
-rw-r--r--osdep/SoftwareUpdater.hpp16
-rw-r--r--osdep/Thread.hpp2
-rw-r--r--osdep/WindowsEthernetTap.cpp5
-rw-r--r--osdep/WindowsEthernetTap.hpp3
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"