diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2017-04-18 17:37:44 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2017-04-18 17:37:44 -0700 |
commit | bc61357a44cf4906dda2b30c4474ae891982e620 (patch) | |
tree | 284d70f7c20b1d057f3d52c9f437b6d9312b7a37 /service | |
parent | f6d92eb737507e6c56cf59aa7b4c4fce679e23cd (diff) | |
download | infinitytier-bc61357a44cf4906dda2b30c4474ae891982e620.tar.gz infinitytier-bc61357a44cf4906dda2b30c4474ae891982e620.zip |
HTTP backend support for JSONDB
Diffstat (limited to 'service')
-rw-r--r-- | service/OneService.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/service/OneService.cpp b/service/OneService.cpp index c07b3ba4..5f2adfe3 100644 --- a/service/OneService.cpp +++ b/service/OneService.cpp @@ -381,6 +381,7 @@ public: const std::string _homePath; std::string _authToken; + std::string _controllerDbPath; EmbeddedNetworkController *_controller; Phy<OneServiceImpl *> _phy; Node *_node; @@ -482,6 +483,7 @@ public: OneServiceImpl(const char *hp,unsigned int port) : _homePath((hp) ? hp : ".") + ,_controllerDbPath(_homePath + ZT_PATH_SEPARATOR_S ZT_CONTROLLER_DB_PATH) ,_controller((EmbeddedNetworkController *)0) ,_phy(this,false,true) ,_node((Node *)0) @@ -747,7 +749,7 @@ public: for(int i=0;i<3;++i) _portsBE[i] = Utils::hton((uint16_t)_ports[i]); - _controller = new EmbeddedNetworkController(_node,(_homePath + ZT_PATH_SEPARATOR_S ZT_CONTROLLER_DB_PATH).c_str()); + _controller = new EmbeddedNetworkController(_node,_controllerDbPath.c_str()); _node->setNetconfMaster((void *)_controller); #ifdef ZT_ENABLE_CLUSTER @@ -1522,6 +1524,26 @@ public: _allowManagementFrom.push_back(nw); } } + + json &controllerDbHttpHost = settings["controllerDbHttpHost"]; + json &controllerDbHttpPort = settings["controllerDbHttpPort"]; + json &controllerDbHttpPath = settings["controllerDbHttpPath"]; + if ((controllerDbHttpHost.is_string())&&(controllerDbHttpPort.is_number())) { + _controllerDbPath = "http://"; + _controllerDbPath.append(controllerDbHttpHost); + char dbp[128]; + Utils::snprintf(dbp,sizeof(dbp),"%d",(int)controllerDbHttpPort); + _controllerDbPath.push_back(':'); + _controllerDbPath.append(dbp); + if (controllerDbHttpPath.is_string()) { + std::string p = controllerDbHttpPath; + if ((p.length() == 0)||(p[0] != '/')) + _controllerDbPath.push_back('/'); + _controllerDbPath.append(p); + } else { + _controllerDbPath.push_back('/'); + } + } } // Checks if a managed IP or route target is allowed |