#include #include "version.h" #include "localserver.h" #include "logger.h" #include "systemservice.h" #include "utilities.h" #ifdef Q_OS_WIN #include "platforms/windows/daemon/windowsdaemontunnel.h" namespace { int s_argc = 0; char** s_argv = nullptr; } // namespace #endif int runApplication(int argc, char** argv) { QCoreApplication app(argc,argv); #ifdef Q_OS_WIN if(argc > 2){ s_argc = argc; s_argv = argv; QStringList tokens; for (int i = 1; i < argc; ++i) { tokens.append(QString(argv[i])); } if (!tokens.empty() && tokens[0] == "tunneldaemon") { WindowsDaemonTunnel *daemon = new WindowsDaemonTunnel(); daemon->run(tokens); } } #endif LocalServer localServer; return app.exec(); } int main(int argc, char **argv) { Utils::initializePath(Utils::systemLogPath()); if (argc >= 2) { qInfo() << "Started as console application"; return runApplication(argc, argv); } else { qInfo() << "Started as system service"; #ifdef Q_OS_WIN SystemService systemService(argc, argv); return systemService.exec(); #else return runApplication(argc, argv); #endif } }