diff --git a/lib/config.cpp b/lib/config.cpp index debc51c8..ec37cba0 100644 --- a/lib/config.cpp +++ b/lib/config.cpp @@ -35,7 +35,6 @@ bool Util::Config::is_active = false; unsigned int Util::Config::printDebugLevel = DEBUG;// -std::string Util::Config::libver = PACKAGE_VERSION; Util::Config::Config() { //global options here @@ -44,14 +43,10 @@ Util::Config::Config() { vals["debug"]["arg"] = "integer"; vals["debug"]["help"] = "The debug level at which messages need to be printed."; vals["debug"]["value"].append((long long)DEBUG); - /*capabilities["optional"]["debug level"]["name"] = "debug"; - capabilities["optional"]["debug level"]["help"] = "The debug level at which messages need to be printed."; - capabilities["optional"]["debug level"]["option"] = "--debug"; - capabilities["optional"]["debug level"]["type"] = "integer";*/ } /// Creates a new configuration manager. -Util::Config::Config(std::string cmd, std::string version) { +Util::Config::Config(std::string cmd) { vals.null(); long_count = 2; vals["cmd"]["value"].append(cmd); @@ -61,8 +56,6 @@ Util::Config::Config(std::string cmd, std::string version) { vals["help"]["long"] = "help"; vals["help"]["short"] = "h"; vals["help"]["help"] = "Display usage and version information, then exit."; - vals["version"]["value"].append((std::string)PACKAGE_VERSION); - vals["version"]["value"].append(version); vals["debug"]["long"] = "debug"; vals["debug"]["short"] = "g"; vals["debug"]["arg"] = "integer"; @@ -246,8 +239,17 @@ bool Util::Config::parseArgs(int & argc, char ** & argv) { case '?': printHelp(std::cout); case 'v': - std::cout << "Library version: " PACKAGE_VERSION << std::endl; - std::cout << "Application version: " << getString("version") << std::endl; + std::cout << "Version: " PACKAGE_VERSION ", release " RELEASE << std::endl; + #ifdef NOCRASHCHECK + std::cout << "- Flag: No crash check. Will not attempt to detect and kill crashed processes." << std::endl; + #endif + #ifndef SHM_ENABLED + std::cout << "- Flag: Shared memory disabled. Will use shared files in stead of shared memory as IPC method." << std::endl; + #endif + #ifdef WITH_THREADNAMES + std::cout << "- Flag: With threadnames. Debuggers will show sensible human-readable thread names." << std::endl; + #endif + std::cout << "Built on " __DATE__ ", " __TIME__ << std::endl; exit(1); break; default: diff --git a/lib/config.h b/lib/config.h index 642194ae..a070e6b6 100644 --- a/lib/config.h +++ b/lib/config.h @@ -21,12 +21,11 @@ namespace Util { static void signal_handler(int signum); public: //variables - static std::string libver; ///< Version number of the library as a string. static bool is_active; ///< Set to true by activate(), set to false by the signal handler. static unsigned int printDebugLevel; //functions Config(); - Config(std::string cmd, std::string version); + Config(std::string cmd); void addOption(std::string optname, JSON::Value option); void printHelp(std::ostream & output); bool parseArgs(int & argc, char ** & argv); diff --git a/src/analysers/amf_analyser.cpp b/src/analysers/amf_analyser.cpp index 3d3bb0cf..ba581507 100644 --- a/src/analysers/amf_analyser.cpp +++ b/src/analysers/amf_analyser.cpp @@ -32,7 +32,7 @@ namespace Analysers { } int main(int argc, char ** argv){ - Util::Config conf = Util::Config(argv[0], PACKAGE_VERSION); + Util::Config conf = Util::Config(argv[0]); conf.parseArgs(argc, argv); return Analysers::analyseAMF(); diff --git a/src/analysers/dtsc_analyser.cpp b/src/analysers/dtsc_analyser.cpp index 57df2df1..e9462b78 100644 --- a/src/analysers/dtsc_analyser.cpp +++ b/src/analysers/dtsc_analyser.cpp @@ -55,7 +55,7 @@ namespace Analysers { /// Reads an DTSC file and prints all readable data about it int main(int argc, char ** argv){ - Util::Config conf = Util::Config(argv[0], PACKAGE_VERSION); + Util::Config conf = Util::Config(argv[0]); conf.addOption("filename", JSON::fromString("{\"arg_num\":1, \"arg\":\"string\", \"help\":\"Filename of the DTSC file to analyse.\"}")); conf.parseArgs(argc, argv); return Analysers::analyseDTSC(conf); diff --git a/src/analysers/flv_analyser.cpp b/src/analysers/flv_analyser.cpp index a123c936..7a8b5f6d 100644 --- a/src/analysers/flv_analyser.cpp +++ b/src/analysers/flv_analyser.cpp @@ -17,7 +17,7 @@ ///Debugging tool for FLV data. /// Expects FLV data through stdin, outputs human-readable information to stderr. int main(int argc, char ** argv){ - Util::Config conf = Util::Config(argv[0], PACKAGE_VERSION); + Util::Config conf = Util::Config(argv[0]); conf.addOption("filter", JSON::fromString("{\"arg\":\"num\", \"short\":\"f\", \"long\":\"filter\", \"default\":0, \"help\":\"Only print info about this tag type (8 = audio, 9 = video, 0 = all)\"}")); conf.parseArgs(argc, argv); diff --git a/src/analysers/mp4_analyser.cpp b/src/analysers/mp4_analyser.cpp index dcce50fa..bc268e47 100644 --- a/src/analysers/mp4_analyser.cpp +++ b/src/analysers/mp4_analyser.cpp @@ -35,7 +35,7 @@ namespace Analysers { /// Debugging tool for MP4 data. /// Expects MP4 data through stdin, outputs human-readable information to stderr. int main(int argc, char ** argv){ - Util::Config conf = Util::Config(argv[0], PACKAGE_VERSION); + Util::Config conf = Util::Config(argv[0]); conf.parseArgs(argc, argv); return Analysers::analyseMP4(); } diff --git a/src/analysers/ogg_analyser.cpp b/src/analysers/ogg_analyser.cpp index c7b2df91..9150c0a8 100644 --- a/src/analysers/ogg_analyser.cpp +++ b/src/analysers/ogg_analyser.cpp @@ -115,7 +115,7 @@ namespace Analysers { } int analyseOGG(int argc, char ** argv){ - Util::Config conf = Util::Config(argv[0], PACKAGE_VERSION); + Util::Config conf = Util::Config(argv[0]); conf.addOption("pages", JSON::fromString("{\"long\":\"pages\", \"short\":\"p\", \"long_off\":\"nopages\", \"short_off\":\"P\", \"default\":0, \"help\":\"Enable/disable printing of Ogg pages\"}")); conf.parseArgs(argc, argv); diff --git a/src/analysers/rtmp_analyser.cpp b/src/analysers/rtmp_analyser.cpp index 954a3c23..766d0de7 100644 --- a/src/analysers/rtmp_analyser.cpp +++ b/src/analysers/rtmp_analyser.cpp @@ -209,7 +209,7 @@ namespace Analysers { } int main(int argc, char ** argv){ - Util::Config conf = Util::Config(argv[0], PACKAGE_VERSION); + Util::Config conf = Util::Config(argv[0]); conf.addOption("detail", JSON::fromString( "{\"arg_num\":1, \"arg\":\"integer\", \"default\":0, \"help\":\"Bitmask, 1 = Reconstruct, 2 = Explicit media info, 4 = Verbose chunks\"}")); diff --git a/src/controller/controller.cpp b/src/controller/controller.cpp index 063c28ce..a33bb233 100644 --- a/src/controller/controller.cpp +++ b/src/controller/controller.cpp @@ -133,7 +133,7 @@ int main(int argc, char ** argv){ if ( !stored_user["default"]){ stored_user["default"] = "root"; } - Controller::conf = Util::Config(argv[0], PACKAGE_VERSION " / " RELEASE); + Controller::conf = Util::Config(argv[0]); Controller::conf.addOption("listen_port", stored_port); Controller::conf.addOption("listen_interface", stored_interface); Controller::conf.addOption("username", stored_user); diff --git a/src/controller/controller_api.cpp b/src/controller/controller_api.cpp index 5de70999..96e3fe23 100644 --- a/src/controller/controller_api.cpp +++ b/src/controller/controller_api.cpp @@ -167,7 +167,7 @@ int Controller::handleAPIConnection(Socket::Connection & conn){ H.Clean(); H.SetHeader("Content-Type", "text/html"); H.SetHeader("X-Info", "To force an API response, request the file /api"); - H.SetHeader("Server", "mistserver/" PACKAGE_VERSION "/" + Util::Config::libver + "/" RELEASE); + H.SetHeader("Server", "MistServer/" PACKAGE_VERSION); H.SetHeader("Content-Length", server_html_len); H.SendResponse("200", "OK", conn); conn.SendNow(server_html, server_html_len); @@ -313,7 +313,7 @@ int Controller::handleAPIConnection(Socket::Connection & conn){ } //sent current configuration, no matter if it was changed or not Response["config"] = Controller::Storage["config"]; - Response["config"]["version"] = PACKAGE_VERSION "/" + Util::Config::libver + "/" RELEASE; + Response["config"]["version"] = PACKAGE_VERSION; Response["streams"] = Controller::Storage["streams"]; //add required data to the current unix time to the config, for syncing reasons Response["config"]["time"] = Util::epoch(); diff --git a/src/input/mist_in.cpp b/src/input/mist_in.cpp index a222f0cf..162cd11c 100644 --- a/src/input/mist_in.cpp +++ b/src/input/mist_in.cpp @@ -12,7 +12,7 @@ #include int main(int argc, char * argv[]) { - Util::Config conf(argv[0], PACKAGE_VERSION); + Util::Config conf(argv[0]); mistIn conv(&conf); if (conf.parseArgs(argc, argv)) { std::string streamName = conf.getString("streamname"); diff --git a/src/output/mist_out.cpp b/src/output/mist_out.cpp index 127e4e87..6337a3ad 100644 --- a/src/output/mist_out.cpp +++ b/src/output/mist_out.cpp @@ -8,7 +8,7 @@ int spawnForked(Socket::Connection & S){ } int main(int argc, char * argv[]) { - Util::Config conf(argv[0], PACKAGE_VERSION); + Util::Config conf(argv[0]); mistOut::init(&conf); if (conf.parseArgs(argc, argv)) { if (conf.getBool("json")) { diff --git a/src/output/output_hls.cpp b/src/output/output_hls.cpp index fba78cc1..7cc64e73 100644 --- a/src/output/output_hls.cpp +++ b/src/output/output_hls.cpp @@ -143,7 +143,7 @@ namespace Mist { if (H.url == "/crossdomain.xml"){ H.Clean(); H.SetHeader("Content-Type", "text/xml"); - H.SetHeader("Server", "mistserver/" PACKAGE_VERSION "/" + Util::Config::libver); + H.SetHeader("Server", "MistServer/" PACKAGE_VERSION); H.setCORSHeaders(); H.SetBody(""); H.SendResponse("200", "OK", myConn); diff --git a/src/output/output_http.cpp b/src/output/output_http.cpp index 6f268a36..4d72c11c 100644 --- a/src/output/output_http.cpp +++ b/src/output/output_http.cpp @@ -162,7 +162,7 @@ namespace Mist { DEBUG_MSG(DLVL_MEDIUM, "Received request: %s => %s (%s)", H.getUrl().c_str(), handler.c_str(), H.GetVar("stream").c_str()); if (!handler.size()){ H.Clean(); - H.SetHeader("Server", "mistserver/" PACKAGE_VERSION); + H.SetHeader("Server", "MistServer/" PACKAGE_VERSION); H.SetBody("Unsupported Media Type

Unsupported Media Type

The server isn't quite sure what you wanted to receive from it."); H.SendResponse("415", "Unsupported Media Type", myConn); myConn.close(); diff --git a/src/output/output_http_internal.cpp b/src/output/output_http_internal.cpp index 9e4f05b3..9bef86f2 100644 --- a/src/output/output_http_internal.cpp +++ b/src/output/output_http_internal.cpp @@ -147,7 +147,7 @@ namespace Mist { if (H.url == "/crossdomain.xml"){ H.Clean(); H.SetHeader("Content-Type", "text/xml"); - H.SetHeader("Server", "mistserver/" PACKAGE_VERSION); + H.SetHeader("Server", "MistServer/" PACKAGE_VERSION); H.setCORSHeaders(); H.SetBody(""); H.SendResponse("200", "OK", myConn); @@ -157,7 +157,7 @@ namespace Mist { if (H.url == "/clientaccesspolicy.xml"){ H.Clean(); H.SetHeader("Content-Type", "text/xml"); - H.SetHeader("Server", "mistserver/" PACKAGE_VERSION); + H.SetHeader("Server", "MistServer/" PACKAGE_VERSION); H.setCORSHeaders(); H.SetBody(""); H.SendResponse("200", "OK", myConn); @@ -169,7 +169,7 @@ namespace Mist { H.Clean(); #include "../icon.h" H.SetHeader("Content-Type", "image/x-icon"); - H.SetHeader("Server", "mistserver/" PACKAGE_VERSION); + H.SetHeader("Server", "MistServer/" PACKAGE_VERSION); H.SetHeader("Content-Length", icon_len); H.SendResponse("200", "OK", myConn); myConn.SendNow((const char*)icon_data, icon_len); @@ -180,7 +180,7 @@ namespace Mist { if (H.url.length() > 6 && H.url.substr(H.url.length() - 5, 5) == ".html"){ H.Clean(); H.SetHeader("Content-Type", "text/html"); - H.SetHeader("Server", "mistserver/" PACKAGE_VERSION); + H.SetHeader("Server", "MistServer/" PACKAGE_VERSION); H.setCORSHeaders(); H.SetBody("Stream "+streamName+""); H.SendResponse("200", "OK", myConn);