summaryrefslogtreecommitdiff
path: root/control/NodeControlService.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2014-09-16 15:47:00 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2014-09-16 15:47:00 -0700
commite22fae2397f69302820b7a1af2fe2291bb6865e0 (patch)
tree9ecb4c23cc4235bd0ce204233402618a03d5a4c5 /control/NodeControlService.cpp
parent73dd9d3b74ecee4d7da1368265c780d5464910e4 (diff)
downloadinfinitytier-e22fae2397f69302820b7a1af2fe2291bb6865e0.tar.gz
infinitytier-e22fae2397f69302820b7a1af2fe2291bb6865e0.zip
it compiles again!
Diffstat (limited to 'control/NodeControlService.cpp')
-rw-r--r--control/NodeControlService.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/control/NodeControlService.cpp b/control/NodeControlService.cpp
index a3b1eca6..536752cc 100644
--- a/control/NodeControlService.cpp
+++ b/control/NodeControlService.cpp
@@ -226,4 +226,25 @@ void NodeControlService::_doCommand(IpcConnection *ipcc,const char *commandLine)
ipcc->printf("."ZT_EOL_S); // blank line ends response
}
+std::string NodeControlService::readOrCreateAuthtoken(const char *path,bool generateIfNotFound)
+{
+ unsigned char randbuf[24];
+ std::string token;
+
+ if (Utils::readFile(path,token))
+ return token;
+ else token = "";
+
+ if (generateIfNotFound) {
+ Utils::getSecureRandom(randbuf,sizeof(randbuf));
+ for(unsigned int i=0;i<sizeof(randbuf);++i)
+ token.push_back(("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")[(unsigned int)randbuf[i] % 62]);
+ if (!Utils::writeFile(path,token))
+ return std::string();
+ Utils::lockDownFile(path,false);
+ }
+
+ return token;
+}
+
} // namespace ZeroTier