summaryrefslogtreecommitdiff
path: root/one.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2018-01-10 14:31:31 -0800
committerAdam Ierymenko <adam.ierymenko@gmail.com>2018-01-10 14:31:31 -0800
commit6304c85d3fe81ee6d89584e70e0af0d206f44997 (patch)
treeb6888433ace4c36c380ea335ced1ab8f89845723 /one.cpp
parenta1992d76f2026c784c8a4f15bf1a4ef164ae74c6 (diff)
parent98b07f7f3c100bce017669f6a904ee5dace47412 (diff)
downloadinfinitytier-6304c85d3fe81ee6d89584e70e0af0d206f44997.tar.gz
infinitytier-6304c85d3fe81ee6d89584e70e0af0d206f44997.zip
Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev
Diffstat (limited to 'one.cpp')
-rw-r--r--one.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/one.cpp b/one.cpp
index 8d4b8fc5..0a945b33 100644
--- a/one.cpp
+++ b/one.cpp
@@ -607,6 +607,43 @@ static int cli(int argc,char **argv)
cliPrintHelp(argv[0],stderr);
return 2;
}
+ } else if (command == "get") {
+ if (arg1.length() != 16) {
+ cliPrintHelp(argv[0],stderr);
+ return 2;
+ }
+ char jsons[1024], cl[128];
+ OSUtils::ztsnprintf(cl,sizeof(cl),"%u",(unsigned int)strlen(jsons));
+ requestHeaders["Content-Type"] = "application/json";
+ requestHeaders["Content-Length"] = cl;
+ const unsigned int scode = Http::GET(1024 * 1024 * 16,60000,(const struct sockaddr *)&addr,"/network",requestHeaders,responseHeaders,responseBody);
+
+ nlohmann::json j;
+ try {
+ j = OSUtils::jsonParse(responseBody);
+ } catch (std::exception &exc) {
+ printf("%u %s invalid JSON response (%s)" ZT_EOL_S,scode,command.c_str(),exc.what());
+ return 1;
+ } catch ( ... ) {
+ printf("%u %s invalid JSON response (unknown exception)" ZT_EOL_S,scode,command.c_str());
+ return 1;
+ }
+ if (j.is_array()) {
+ for(unsigned long i=0;i<j.size();++i) {
+ nlohmann::json &n = j[i];
+ if (n.is_object()) {
+ if (n["id"] == arg1) {
+ printf("%s\n", OSUtils::jsonString(n[arg2],"-").c_str());
+ }
+ }
+ }
+ }
+ if (scode == 200) {
+ return 0;
+ } else {
+ printf("%u %s %s" ZT_EOL_S,scode,command.c_str(),responseBody.c_str());
+ return 1;
+ }
} else {
cliPrintHelp(argv[0],stderr);
return 0;