X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FNetwork%2Fhttpd.cxx;h=162bf45ec6ec92816ce0b45f78d8f774205fba58;hb=f3d4f741f097e1a9e1545389b95413d8b78f3b0f;hp=97ab9b5d4b768d158a644110a0ca96d6206362df;hpb=a28b35f3f2a48187965f6063806cbc52e1d26bc9;p=flightgear.git diff --git a/src/Network/httpd.cxx b/src/Network/httpd.cxx index 97ab9b5d4..162bf45ec 100644 --- a/src/Network/httpd.cxx +++ b/src/Network/httpd.cxx @@ -39,6 +39,7 @@ #include #include #include +#include #include #include
@@ -47,10 +48,8 @@ #include "httpd.hxx" SG_USING_STD(string); -#if !defined(SG_HAVE_NATIVE_SGI_COMPILERS) SG_USING_STD(cout); SG_USING_STD(istrstream); -#endif bool FGHttpd::open() { @@ -62,7 +61,7 @@ bool FGHttpd::open() { server = new HttpdServer( port ); - set_hz( 5 ); // default to processing requests @ 5Hz + set_hz( 15 ); // default to processing requests @ 15Hz set_enabled( true ); return true; @@ -132,9 +131,26 @@ void HttpdChannel::foundTerminator (void) { string a = arg.substr( 0, apos ); string b = arg.substr( apos + 1 ); printf(" a = %s b = %s\n", a.c_str(), b.c_str() ); - if ( a == "value" ) { - fgSetString( request.c_str(), urlDecode(b).c_str() ); - } + if ( request == "/run.cgi" ) { + // execute a command + if ( a == "value" ) { + SGPropertyNode args; + if ( !globals->get_commands() + ->execute(urlDecode(b).c_str(), &args) ) + { + SG_LOG( SG_GENERAL, SG_ALERT, + "Command " << urlDecode(b) + << " failed."); + } + + } + } else { + if ( a == "value" ) { + // update a property value + fgSetString( request.c_str(), + urlDecode(b).c_str() ); + } + } } } } else { @@ -178,12 +194,7 @@ void HttpdChannel::foundTerminator (void) { for (int i = 0; i < node->nChildren(); i++) { SGPropertyNode *child = node->getChild(i); - string name = child->getName(); - if ( node->getChild(name.c_str(), 1) ) { - char buf[16]; - sprintf(buf, "[%d]", child->getIndex()); - name += buf; - } + string name = child->getDisplayName(true); string line = ""; if ( child->nChildren() > 0 ) { line += "