diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2014-09-16 15:47:00 -0700 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2014-09-16 15:47:00 -0700 |
| commit | e22fae2397f69302820b7a1af2fe2291bb6865e0 (patch) | |
| tree | 9ecb4c23cc4235bd0ce204233402618a03d5a4c5 /control/NodeControlService.cpp | |
| parent | 73dd9d3b74ecee4d7da1368265c780d5464910e4 (diff) | |
| download | infinitytier-e22fae2397f69302820b7a1af2fe2291bb6865e0.tar.gz infinitytier-e22fae2397f69302820b7a1af2fe2291bb6865e0.zip | |
it compiles again!
Diffstat (limited to 'control/NodeControlService.cpp')
| -rw-r--r-- | control/NodeControlService.cpp | 21 |
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 |
