diff options
Diffstat (limited to 'service/ControlPlane.cpp')
| -rw-r--r-- | service/ControlPlane.cpp | 61 | 
1 files changed, 32 insertions, 29 deletions
diff --git a/service/ControlPlane.cpp b/service/ControlPlane.cpp index 3604dd1e..c92087f7 100644 --- a/service/ControlPlane.cpp +++ b/service/ControlPlane.cpp @@ -37,8 +37,7 @@  #include "../node/InetAddress.hpp"  #include "../node/Node.hpp"  #include "../node/Utils.hpp" - -#define ZT_BUILD_IN_WEB_UI +#include "../osdep/OSUtils.hpp"  namespace ZeroTier { @@ -242,9 +241,10 @@ static void _jsonAppend(unsigned int depth,std::string &buf,const ZT1_Peer *peer  	buf.append(json);  } -ControlPlane::ControlPlane(OneService *svc,Node *n) : +ControlPlane::ControlPlane(OneService *svc,Node *n,const char *uiStaticPath) :  	_svc(svc), -	_node(n) +	_node(n), +	_uiStaticPath((uiStaticPath) ? uiStaticPath : "")  {  } @@ -316,31 +316,34 @@ unsigned int ControlPlane::handleRequest(  			 * dot in the first path element (e.g. foo.html) is considered a static page,  			 * as nothing in the API is so named. */ -#ifdef ZT_BUILD_IN_WEB_UI -			if (ext == ".html") -				responseContentType = "text/html"; -			else if (ext == ".js") -				responseContentType = "application/javascript"; -			else if (ext == ".json") -				responseContentType = "application/json"; -			else if (ext == ".css") -				responseContentType = "text/css"; -			else if (ext == ".png") -				responseContentType = "image/png"; -			else if (ext == ".jpg") -				responseContentType = "image/jpeg"; -			else if (ext == ".gif") -				responseContentType = "image/gif"; -			else if (ext == ".txt") -				responseContentType = "text/plain"; -			else if (ext == ".xml") -				responseContentType = "text/xml"; -			else if (ext == ".svg") -				responseContentType = "image/svg+xml"; -			else responseContentType = "application/octet-stream"; -			responseBody = "<html><body>Hello World!</body></html>"; -			scode = 200; -#endif // ZT_BUILD_IN_WEB_UI +			if (_uiStaticPath.length() > 0) { +				if (ext == ".html") +					responseContentType = "text/html"; +				else if (ext == ".js") +					responseContentType = "application/javascript"; +				else if (ext == ".jsx") +					responseContentType = "text/jsx"; +				else if (ext == ".json") +					responseContentType = "application/json"; +				else if (ext == ".css") +					responseContentType = "text/css"; +				else if (ext == ".png") +					responseContentType = "image/png"; +				else if (ext == ".jpg") +					responseContentType = "image/jpeg"; +				else if (ext == ".gif") +					responseContentType = "image/gif"; +				else if (ext == ".txt") +					responseContentType = "text/plain"; +				else if (ext == ".xml") +					responseContentType = "text/xml"; +				else if (ext == ".svg") +					responseContentType = "image/svg+xml"; +				else responseContentType = "application/octet-stream"; +				scode = OSUtils::readFile((_uiStaticPath + ZT_PATH_SEPARATOR_S + ps[0]).c_str(),responseBody) ? 200 : 404; +			} else { +				scode = 404; +			}  		} else if (isAuth) {  			/* Things that require authentication -- a.k.a. everything but static web app pages. */  | 
