Wire API auth token stuff.

This commit is contained in:
Adam Ierymenko 2015-04-15 19:14:12 -07:00
parent c301d8e438
commit 21a7e774bb
4 changed files with 46 additions and 21 deletions

View file

@ -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()));