#include "applicationdata.h" #include "ircclientstarter.h" #include "ircclient.h" #include "httpserver.h" #include "global.h" #include "version.h" #include #include #include int main(int argc, char *argv[]) { if (argc < 2) { qInfo().noquote() << "No parameters passed. Use -h or --help for usage information."; return 1; } QCoreApplication a(argc, argv); QString configFile; for (int i = 1; i < argc; i++) { QString param(argv[i]); if ((param == "--example" or param == "-e") and i+1 < argc) { ApplicationData::createConfigExample (QString{argv[i+1]}); return 0; } else if (param == "--help" or param == "-h") { qInfo().noquote() << "Usage: Pass the configuration file via --config and let's go!\n" "Possible arguments:\n" "-e --example - create example config file\n" "-c --config - path to configuration file\n" "-v --version - print version"; return 0; } else if ((param == "--config" or param == "-c") and i+1 < argc) { configFile = QString{argv[i+1]}; } else if ((param == "--version" or param == "-v")) { qInfo().noquote() << "IRCaBot" << IRCABOT_VERSION; return 0; } } if (configFile.isEmpty()) { qInfo().noquote() << "Configuration file not passed. Use -h or --help for usage information."; return 1; } qInfo().noquote() << " /$$$$$$ /$$$$$$$ /$$$$$$ /$$$$$$$ /$$ \n" "|_ $$_/| $$__ $$ /$$__ $$ | $$__ $$ | $$ \n" " | $$ | $$ \\ $$| $$ \\__/ /$$$$$$ | $$ \\ $$ /$$$$$$ /$$$$$$ \n" " | $$ | $$$$$$$/| $$ |____ $$| $$$$$$$ /$$__ $$|_ $$_/ \n" " | $$ | $$__ $$| $$ /$$$$$$$| $$__ $$| $$ \\ $$ | $$ \n" " | $$ | $$ \\ $$| $$ $$ /$$__ $$| $$ \\ $$| $$ | $$ | $$ /$$\n" " /$$$$$$| $$ | $$| $$$$$$/| $$$$$$$| $$$$$$$/| $$$$$$/ | $$$$/\n" "|______/|__/ |__/ \\______/ \\_______/|_______/ \\______/ \\___/"; qInfo().noquote() << "IRCaBot" << IRCABOT_VERSION << "| Source code: https://notabug.org/acetone/ircabot"; qInfo().noquote() << "GPLv3 (c) acetone," << COPYRIGHT_YEAR << "\n"; ApplicationData configuration(configFile); auto webInterfaceAddress = configuration.getWebInterfaceAddress(); HttpServer webInterface(webInterfaceAddress.first, webInterfaceAddress.second, configuration.getDataFolder(), configuration.getServiceName(), configuration.getServiceEmoji(), configuration.getAjaxIsDisabled()); auto serversData = configuration.getConnections(); for (auto server: serversData) { if (not server.isOk()) continue; IrcClientStarter* wrapper = new IrcClientStarter(server, &webInterface); QThread* thread = new QThread; wrapper->moveToThread(thread); QObject::connect (thread, SIGNAL(started()), wrapper, SLOT(RunInit())); thread->start(); } return a.exec(); }