summaryrefslogtreecommitdiff
path: root/node/NodeConfig.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2013-12-12 13:02:02 -0800
committerAdam Ierymenko <adam.ierymenko@gmail.com>2013-12-12 13:02:02 -0800
commit54d1b11b1981481ba177c8f7c84c179977f5652d (patch)
treeaa8eacfe1d0badfca3f9cb6e9856b9f458e1a785 /node/NodeConfig.cpp
parentf038ed9ca2f3e65e063571e77cd48f1072f2d3e3 (diff)
parent68defd998008e83e5348d29cab5535dab3d444e8 (diff)
downloadinfinitytier-54d1b11b1981481ba177c8f7c84c179977f5652d.tar.gz
infinitytier-54d1b11b1981481ba177c8f7c84c179977f5652d.zip
Merge branch 'adamierymenko-dev'
Diffstat (limited to 'node/NodeConfig.cpp')
-rw-r--r--node/NodeConfig.cpp21
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());
}