Ground work for reincorporating software updater for select platforms.

This commit is contained in:
Adam Ierymenko 2015-05-20 16:35:33 -07:00
commit b6698d8415
5 changed files with 60 additions and 11 deletions

View file

@ -96,6 +96,8 @@ namespace ZeroTier { typedef BSDEthernetTap EthernetTap; }
namespace ZeroTier {
namespace {
class OneServiceImpl;
static int SnodeVirtualNetworkConfigFunction(ZT1_Node *node,void *uptr,uint64_t nwid,enum ZT1_VirtualNetworkConfigOperation op,const ZT1_VirtualNetworkConfig *nwconf);
@ -903,6 +905,8 @@ static int ShttpOnMessageComplete(http_parser *parser)
return 0;
}
} // anonymous namespace
std::string OneService::platformDefaultHomePath()
{
#ifdef __UNIX_LIKE__
@ -939,6 +943,30 @@ std::string OneService::platformDefaultHomePath()
#endif // __UNIX_LIKE__ or not...
}
std::string OneService::autoUpdateUrl()
{
#ifdef ZT_AUTO_UPDATE
/*
#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";
#endif
*/
#if defined(__APPLE__) && ( defined(__i386__) || defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(__i386) )
return "http://download.zerotier.com/update/mac_intel/LATEST.nfo";
#endif
#ifdef __WINDOWS__
return "http://download.zerotier.com/update/win_intel/LATEST.nfo";
#endif
#endif // ZT_AUTO_UPDATE
return std::string();
}
OneService *OneService::newInstance(const char *hp,unsigned int port,const char *overrideRootTopology) { return new OneServiceImpl(hp,port,overrideRootTopology); }
OneService::~OneService() {}

View file

@ -34,6 +34,15 @@ namespace ZeroTier {
/**
* Local service for ZeroTier One as system VPN/NFV provider
*
* If built with ZT_ENABLE_NETWORK_CONTROLLER defined, this includes and
* runs controller/SqliteNetworkController with a database called
* controller.db in the specified home directory.
*
* If built with ZT_AUTO_UPDATE, an official ZeroTier update URL is
* periodically checked and updates are automatically downloaded, verified
* against a built-in list of update signing keys, and installed. This is
* only supported for certain platforms.
*/
class OneService
{
@ -69,6 +78,11 @@ public:
*/
static std::string platformDefaultHomePath();
/**
* @return Auto-update URL or empty string if auto-updates unsupported or not enabled
*/
static std::string autoUpdateUrl();
/**
* Create a new instance of the service
*