mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-04-09 20:21:14 +00:00
osdep/ compile fixes, and remove some lingering OS-specific stuff from node/Defaults
This commit is contained in:
parent
d761330465
commit
7192fe6d15
@ -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)
|
||||
{
|
||||
}
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -34,7 +34,7 @@
|
||||
#include <stdexcept>
|
||||
|
||||
#include "EthernetTap.hpp"
|
||||
#include "../node/Thread.hpp"
|
||||
#include "Thread.hpp"
|
||||
|
||||
namespace ZeroTier {
|
||||
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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;
|
||||
|
@ -32,8 +32,7 @@
|
||||
#include <map>
|
||||
#include <set>
|
||||
|
||||
#include "Constants.hpp"
|
||||
#include "Mutex.hpp"
|
||||
#include "../node/Mutex.hpp"
|
||||
|
||||
namespace ZeroTier {
|
||||
|
||||
|
@ -33,8 +33,8 @@
|
||||
|
||||
#include <stdexcept>
|
||||
|
||||
#include "../node/EthernetTap.hpp"
|
||||
#include "../node/Thread.hpp"
|
||||
#include "EthernetTap.hpp"
|
||||
#include "Thread.hpp"
|
||||
|
||||
namespace ZeroTier {
|
||||
|
||||
|
@ -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()
|
||||
|
@ -33,8 +33,8 @@
|
||||
|
||||
#include <stdexcept>
|
||||
|
||||
#include "../node/EthernetTap.hpp"
|
||||
#include "../node/Thread.hpp"
|
||||
#include "EthernetTap.hpp"
|
||||
#include "Thread.hpp"
|
||||
|
||||
namespace ZeroTier {
|
||||
|
||||
|
@ -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)),
|
||||
|
@ -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 {
|
||||
|
@ -30,7 +30,7 @@
|
||||
|
||||
#include <stdexcept>
|
||||
|
||||
#include "Constants.hpp"
|
||||
#include "../node/Constants.hpp"
|
||||
|
||||
#ifdef __WINDOWS__
|
||||
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user