diff --git a/YACReaderLibrary/server/yacreader_http_server.cpp b/YACReaderLibrary/server/yacreader_http_server.cpp index 39f9e3980..5ddf2d6d8 100644 --- a/YACReaderLibrary/server/yacreader_http_server.cpp +++ b/YACReaderLibrary/server/yacreader_http_server.cpp @@ -150,3 +150,12 @@ QString YACReaderHttpServer::getPort() return QString("%1").arg(listener->serverPort()); } + +QString YACReaderHttpServer::errorString() const +{ + if (listener == nullptr) { + return QString(); + } + + return listener->errorString(); +} diff --git a/YACReaderLibrary/server/yacreader_http_server.h b/YACReaderLibrary/server/yacreader_http_server.h index 0acc8a19d..0afa3ae4d 100644 --- a/YACReaderLibrary/server/yacreader_http_server.h +++ b/YACReaderLibrary/server/yacreader_http_server.h @@ -20,6 +20,7 @@ class YACReaderHttpServer : public QObject bool isRunning(); QString getPort(); + QString errorString() const; signals: void clientSync(); diff --git a/YACReaderLibraryServer/main.cpp b/YACReaderLibraryServer/main.cpp index fc988ec7e..928345559 100644 --- a/YACReaderLibraryServer/main.cpp +++ b/YACReaderLibraryServer/main.cpp @@ -127,8 +127,8 @@ int main(int argc, char **argv) } else // error { parser.process(app); - parser.showHelp(); - return 0; + parser.showHelp(1); + return 1; } } @@ -158,7 +158,7 @@ int start(QCoreApplication &app, QCommandLineParser &parser, const QStringList & } else if (parser.value("loglevel") == "error") { logger.setLoggingLevel(QsLogging::ErrorLevel); } else { - parser.showHelp(); + parser.showHelp(1); } } @@ -209,8 +209,8 @@ int start(QCoreApplication &app, QCommandLineParser &parser, const QStringList & qint32 port = parser.value("port").toInt(&valid); if (!valid || port < 1 || port > 65535) { qout << "Error: " << parser.value("port") << " is not a valid port" << Qt::endl; - parser.showHelp(); - return 0; + parser.showHelp(1); + return 1; } else { httpServer->start(port); } @@ -219,6 +219,15 @@ int start(QCoreApplication &app, QCommandLineParser &parser, const QStringList & httpServer->start(); } + if (!httpServer->isRunning()) { + QLOG_ERROR() << "Unable to start HTTP server:" << httpServer->errorString(); + delete httpServer; +#ifdef Q_OS_WIN + logger.shutDownLoggerThread(); +#endif + return 1; + } + printServerInfo(httpServer); // Update libraries to new versions @@ -269,8 +278,8 @@ int createLibrary(QCoreApplication &app, QCommandLineParser &parser, QSettings * const QStringList args = parser.positionalArguments(); if (args.length() != 3) { - parser.showHelp(); - return 0; + parser.showHelp(1); + return 1; } ConsoleUILibraryCreator *libraryCreatorUI = new ConsoleUILibraryCreator(settings); @@ -291,8 +300,8 @@ int updateLibrary(QCoreApplication &app, QCommandLineParser &parser, QSettings * const QStringList args = parser.positionalArguments(); if (args.length() != 2) { - parser.showHelp(); - return 0; + parser.showHelp(1); + return 1; } ConsoleUILibraryCreator *libraryCreatorUI = new ConsoleUILibraryCreator(settings); @@ -314,8 +323,8 @@ int addLibrary(QCoreApplication &app, QCommandLineParser &parser, QSettings *set const QStringList args = parser.positionalArguments(); if (args.length() != 3) { - parser.showHelp(); - return 0; + parser.showHelp(1); + return 1; } ConsoleUILibraryCreator *libraryCreatorUI = new ConsoleUILibraryCreator(settings); @@ -336,8 +345,8 @@ int removeLibrary(QCoreApplication &app, QCommandLineParser &parser, QSettings * const QStringList args = parser.positionalArguments(); if (args.length() != 2) { - parser.showHelp(); - return 0; + parser.showHelp(1); + return 1; } ConsoleUILibraryCreator *libraryCreatorUI = new ConsoleUILibraryCreator(settings); @@ -374,16 +383,16 @@ int setPort(QCoreApplication &app, QCommandLineParser &parser, QTextStream &qout const QStringList args = parser.positionalArguments(); if (args.length() != 2) { - parser.showHelp(); - return 0; + parser.showHelp(1); + return 1; } bool valid; qint32 port = args.at(1).toInt(&valid); if (!valid || port < 1 || port > 65535) { qout << "Invalid server port"; - parser.showHelp(); - return 0; + parser.showHelp(1); + return 1; } QSettings *settings = new QSettings(YACReader::getSettingsPath() + "/" + QCoreApplication::applicationName() + ".ini", QSettings::IniFormat); @@ -404,8 +413,8 @@ int rescanXmlInfo(QCoreApplication &app, QCommandLineParser &parser, QSettings * const QStringList args = parser.positionalArguments(); if (args.length() != 2) { - parser.showHelp(); - return 0; + parser.showHelp(1); + return 1; } ConsoleUILibraryCreator *libraryCreatorUI = new ConsoleUILibraryCreator(settings); @@ -469,6 +478,11 @@ void logSystemAndConfig() void printServerInfo(YACReaderHttpServer *httpServer) { auto addresses = getIpAddresses(); + if (addresses.isEmpty()) { + QLOG_WARN() << "Running, but no global network interfaces were detected"; + return; + } + QLOG_INFO() << "Running on" << addresses.first() + ":" + httpServer->getPort().toLocal8Bit() << "\n"; qrcodegen::QrCode code = qrcodegen::QrCode::encodeText(