diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2013-12-12 13:02:02 -0800 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2013-12-12 13:02:02 -0800 |
| commit | 54d1b11b1981481ba177c8f7c84c179977f5652d (patch) | |
| tree | aa8eacfe1d0badfca3f9cb6e9856b9f458e1a785 /node/NodeConfig.cpp | |
| parent | f038ed9ca2f3e65e063571e77cd48f1072f2d3e3 (diff) | |
| parent | 68defd998008e83e5348d29cab5535dab3d444e8 (diff) | |
| download | infinitytier-54d1b11b1981481ba177c8f7c84c179977f5652d.tar.gz infinitytier-54d1b11b1981481ba177c8f7c84c179977f5652d.zip | |
Merge branch 'adamierymenko-dev'
Diffstat (limited to 'node/NodeConfig.cpp')
| -rw-r--r-- | node/NodeConfig.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/node/NodeConfig.cpp b/node/NodeConfig.cpp index 027f65ce..770f1f6f 100644 --- a/node/NodeConfig.cpp +++ b/node/NodeConfig.cpp @@ -56,6 +56,7 @@ #include "Poly1305.hpp" #include "SHA512.hpp" #include "Node.hpp" +#include "SoftwareUpdater.hpp" namespace ZeroTier { @@ -184,6 +185,7 @@ std::vector<std::string> NodeConfig::execute(const char *command) _P("200 help join <network ID>"); _P("200 help leave <network ID>"); _P("200 help terminate [<reason>]"); + _P("200 help updatecheck"); } else if (cmd[0] == "info") { bool isOnline = false; uint64_t now = Utils::now(); @@ -200,7 +202,7 @@ std::vector<std::string> NodeConfig::execute(const char *command) _r->topology->eachPeer(_DumpPeerStatistics(r)); } else if (cmd[0] == "listnetworks") { Mutex::Lock _l(_networks_m); - _P("200 listnetworks <nwid> <status> <type> <dev> <ips>"); + _P("200 listnetworks <nwid> <name> <status> <config age> <type> <dev> <ips>"); for(std::map< uint64_t,SharedPtr<Network> >::const_iterator nw(_networks.begin());nw!=_networks.end();++nw) { std::string tmp; std::set<InetAddress> ips(nw->second->tap().ips()); @@ -211,9 +213,17 @@ std::vector<std::string> NodeConfig::execute(const char *command) } SharedPtr<NetworkConfig> nconf(nw->second->config2()); - _P("200 listnetworks %.16llx %s %s %s %s", + + long long age = (nconf) ? ((long long)Utils::now() - (long long)nconf->timestamp()) : (long long)0; + if (age < 0) + age = 0; + age /= 1000; + + _P("200 listnetworks %.16llx %s %s %lld %s %s %s", (unsigned long long)nw->first, + ((nconf) ? nconf->name().c_str() : "?"), Network::statusString(nw->second->status()), + age, ((nconf) ? (nconf->isOpen() ? "public" : "private") : "?"), nw->second->tap().deviceName().c_str(), ((tmp.length() > 0) ? tmp.c_str() : "-")); @@ -260,6 +270,13 @@ std::vector<std::string> NodeConfig::execute(const char *command) if (cmd.size() > 1) _r->node->terminate(Node::NODE_NORMAL_TERMINATION,cmd[1].c_str()); else _r->node->terminate(Node::NODE_NORMAL_TERMINATION,(const char *)0); + } else if (cmd[0] == "updatecheck") { + if (_r->updater) { + _P("200 checking for software updates now at: %s",ZT_DEFAULTS.updateLatestNfoURL.c_str()); + _r->updater->checkNow(); + } else { + _P("500 software updates are not enabled"); + } } else { _P("404 %s No such command. Use 'help' for help.",cmd[0].c_str()); } |
