int main( int argc, char ** argv ) { QCoreApplication a(argc, argv); //Check whether running as root if( getuid() != 0){ qDebug() << "pc-restserver must be started as root!"; return 1; } //Setup the log file if(DEBUG){ qDebug() << "pc-restserver Log File:" << logfile.fileName(); if(QFile::exists(logfile.fileName()+".old")){ QFile::remove(logfile.fileName()+".old"); } if(logfile.exists()){ QFile::rename(logfile.fileName(), logfile.fileName()+".old"); } //Make sure the parent directory exists if(!QFile::exists("/var/log")){ QDir dir; dir.mkpath("/var/log"); } logfile.open(QIODevice::WriteOnly | QIODevice::Append); qInstallMessageHandler(MessageOutput); } //Create and start the daemon qDebug() << "Starting the PC-BSD REST server interface...."; WebServer *w = new WebServer(); if( w->startServer() ){ //Now start the event loop QTimer::singleShot(1000, w, SLOT(stopServer()) ); //for testing purposes int ret = a.exec(); logfile.close(); return ret; }else{ return 1; } }
int main( int argc, char ** argv ) { QCoreApplication a(argc, argv); //Check whether running as root if( getuid() != 0){ qDebug() << "sysadm-server must be started as root!"; return 1; } //Evaluate input arguments bool websocket = false; quint16 port = 0; for(int i=1; i<argc; i++){ if( QString(argv[i])=="-ws" ){ websocket = true; WS_MODE = true;} else if( QString(argv[i])=="-p" && (i+1<argc) ){ i++; port = QString(argv[i]).toUInt(); } } if(port==0){ if(websocket){ port = WSPORTNUMBER; } else{ port = PORTNUMBER; } } //Setup the log file LogManager::checkLogDir(); //ensure the logging directory exists if(!websocket){ logfile.setFileName("/var/log/sysadm-server-tcp.log"); } else{ logfile.setFileName("/var/log/sysadm-server-ws.log"); } if(DEBUG){ qDebug() << "Log File:" << logfile.fileName(); } if(QFile::exists(logfile.fileName()+".old")){ QFile::remove(logfile.fileName()+".old"); } if(logfile.exists()){ QFile::rename(logfile.fileName(), logfile.fileName()+".old"); } //Make sure the parent directory exists if(!QFile::exists("/var/log")){ QDir dir; dir.mkpath("/var/log"); } logfile.open(QIODevice::WriteOnly | QIODevice::Append); qInstallMessageHandler(MessageOutput); //Connect the background classes QObject::connect(DISPATCHER, SIGNAL(DispatchFinished(QJsonObject)), EVENTS, SLOT(DispatchFinished(QJsonObject)) ); QObject::connect(DISPATCHER, SIGNAL(DispatchStarting(QString)), EVENTS, SLOT(DispatchStarting(QString)) ); //Create the daemon qDebug() << "Starting the PC-BSD sysadm server...." << (websocket ? "(WebSocket)" : "(TCP)"); WebServer *w = new WebServer(); //Start the daemon int ret = 1; //error return value if( w->startServer(port, websocket) ){ qDebug() << " - Configuration File:" << CONFIG->fileName(); QThread TBACK, TBACK2; EVENTS->moveToThread(&TBACK); DISPATCHER->moveToThread(&TBACK2); TBACK.start(); TBACK2.start(); QTimer::singleShot(0,EVENTS, SLOT(start()) ); //Now start the main event loop ret = a.exec(); qDebug() << "Server Stopped:" << QDateTime::currentDateTime().toString(Qt::ISODate); //TBACK.stop(); }else{ qDebug() << "[FATAL] Server could not be started:" << QDateTime::currentDateTime().toString(Qt::ISODate); qDebug() << " - Tried port:" << port; } //Cleanup any globals delete CONFIG; logfile.close(); //Return return ret; }