diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-04-15 19:14:12 -0700 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-04-15 19:14:12 -0700 |
| commit | 21a7e774bba4832848687dbd8d2e0a1df33650ce (patch) | |
| tree | f7258ed063b0fca601e33f7f49417f42f95b9600 /service/OneService.cpp | |
| parent | c301d8e43859066155801b44b9953d38e3e36d03 (diff) | |
| download | infinitytier-21a7e774bba4832848687dbd8d2e0a1df33650ce.tar.gz infinitytier-21a7e774bba4832848687dbd8d2e0a1df33650ce.zip | |
Wire API auth token stuff.
Diffstat (limited to 'service/OneService.cpp')
| -rw-r--r-- | service/OneService.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/service/OneService.cpp b/service/OneService.cpp index f84af0ae..1ba7a8c5 100644 --- a/service/OneService.cpp +++ b/service/OneService.cpp @@ -173,6 +173,25 @@ public: virtual ReasonForTermination run() { try { + std::string authToken; + { + std::string authTokenPath(_homePath + ZT_PATH_SEPARATOR_S + "authtoken.secret"); + if (!OSUtils::readFile(authTokenPath.c_str(),authToken)) { + unsigned char foo[24]; + Utils::getSecureRandom(foo,sizeof(foo)); + authToken = ""; + for(unsigned int i=0;i<sizeof(foo);++i) + authToken.push_back("abcdefghijklmnopqrstuvwxyz0123456789"[(unsigned long)foo[i] % 36]); + if (!OSUtils::writeFile(authTokenPath.c_str(),authToken)) { + Mutex::Lock _l(_termReason_m); + _termReason = ONE_UNRECOVERABLE_ERROR; + _fatalErrorMessage = "authtoken.secret could not be written"; + return _termReason; + } else OSUtils::lockDownFile(authTokenPath.c_str(),false); + } + } + authToken = Utils::trim(authToken); + _node = new Node( OSUtils::now(), this, @@ -188,6 +207,7 @@ public: _node->setNetconfMaster((void *)_master); _controlPlane = new ControlPlane(this,_node); + _controlPlane->addAuthToken(authToken.c_str()); { // Remember networks from previous session std::vector<std::string> networksDotD(OSUtils::listDirectory((_homePath + ZT_PATH_SEPARATOR_S + "networks.d").c_str())); |
