mirror of
https://github.com/YACReader/yacreader
synced 2025-06-04 01:28:55 -04:00
QtWebapp installs a custom logger/message handler which reroutes all debug messages to it's custom logger class. As the default logging level for QtWebApp's logger is set to "critical" this means that all debug messages are sent to nirvana. Solution: Replace QtWebApp's messageHandler with our own (using QsLog).
153 lines
4.9 KiB
C++
153 lines
4.9 KiB
C++
/**
|
|
@file
|
|
@author Stefan Frings
|
|
*/
|
|
|
|
#include "static.h"
|
|
#include "startup.h"
|
|
//#include "dualfilelogger.h"
|
|
#include "httplistener.h"
|
|
#include "requestmapper.h"
|
|
#include "staticfilecontroller.h"
|
|
|
|
#include "yacreader_global.h"
|
|
|
|
#include <QDir>
|
|
#include <QCoreApplication>
|
|
|
|
/** Name of this application */
|
|
#define APPNAME "YACReaderLibrary"
|
|
|
|
/** Publisher of this application */
|
|
#define ORGANISATION "YACReader"
|
|
|
|
/** Short description of this application */
|
|
#define DESCRIPTION "Comic reader and organizer"
|
|
|
|
void Startup::start() {
|
|
// Initialize the core application
|
|
QCoreApplication* app = QCoreApplication::instance();
|
|
QString configFileName=YACReader::getSettingsPath()+"/"+QCoreApplication::applicationName()+".ini";
|
|
|
|
/*
|
|
// Configure logging into files
|
|
QSettings* mainLogSettings=new QSettings(configFileName,QSettings::IniFormat,app);
|
|
mainLogSettings->beginGroup("mainLogFile");
|
|
//QSettings* debugLogSettings=new QSettings(configFileName,QSettings::IniFormat,app);
|
|
//debugLogSettings->beginGroup("debugLogFile");
|
|
|
|
if(mainLogSettings->value("fileName").isNull())
|
|
mainLogSettings->setValue("fileName", QFileInfo(YACReader::getSettingsPath(), "server_log.log").absoluteFilePath());
|
|
|
|
if(mainLogSettings->value("maxSize").isNull())
|
|
mainLogSettings->setValue("maxSize",1048576);
|
|
|
|
if(mainLogSettings->value("maxBackups").isNull())
|
|
mainLogSettings->setValue("maxBackups",1);
|
|
|
|
if(mainLogSettings->value("minLevel").isNull())
|
|
mainLogSettings->setValue("minLevel",QtCriticalMsg);
|
|
|
|
Logger* logger=new FileLogger(mainLogSettings,10000,app);
|
|
logger->installMsgHandler();*/
|
|
|
|
// Configure template loader and cache
|
|
QSettings* templateSettings=new QSettings(configFileName,QSettings::IniFormat,app);
|
|
templateSettings->beginGroup("templates");
|
|
|
|
if(templateSettings->value("cacheSize").isNull())
|
|
templateSettings->setValue("cacheSize","160000");
|
|
|
|
QString baseTemplatePath = QString("./server/templates");
|
|
QString templatePath;
|
|
|
|
#if defined Q_OS_UNIX && !defined Q_OS_MAC
|
|
templatePath=QFileInfo(QString(DATADIR)+"/yacreader",baseTemplatePath).absoluteFilePath();
|
|
#else
|
|
templatePath=QFileInfo(QCoreApplication::applicationDirPath(),baseTemplatePath).absoluteFilePath();
|
|
#endif
|
|
|
|
if(templateSettings->value("path").isNull())
|
|
templateSettings->setValue("path",templatePath);
|
|
|
|
Static::templateLoader=new TemplateCache(templateSettings,app);
|
|
|
|
// Configure session store
|
|
QSettings* sessionSettings=new QSettings(configFileName,QSettings::IniFormat,app);
|
|
sessionSettings->beginGroup("sessions");
|
|
|
|
if(sessionSettings->value("expirationTime").isNull())
|
|
sessionSettings->setValue("expirationTime",864000000);
|
|
|
|
Static::sessionStore=new HttpSessionStore(sessionSettings,app);
|
|
|
|
Static::yacreaderSessionStore = new YACReaderHttpSessionStore(Static::sessionStore, app);
|
|
|
|
// Configure static file controller
|
|
QSettings* fileSettings=new QSettings(configFileName,QSettings::IniFormat,app);
|
|
fileSettings->beginGroup("docroot");
|
|
|
|
QString basedocroot = "./server/docroot";
|
|
QString docroot;
|
|
|
|
#if defined Q_OS_UNIX && ! defined Q_OS_MAC
|
|
QFileInfo configFile(QString(DATADIR)+"/yacreader");
|
|
docroot=QFileInfo(QString(DATADIR)+"/yacreader",basedocroot).absoluteFilePath();
|
|
#else
|
|
QFileInfo configFile(QCoreApplication::applicationDirPath());
|
|
docroot=QFileInfo(QCoreApplication::applicationDirPath(),basedocroot).absoluteFilePath();
|
|
#endif
|
|
|
|
if(fileSettings->value("path").isNull())
|
|
fileSettings->setValue("path",docroot);
|
|
|
|
Static::staticFileController=new StaticFileController(fileSettings,app);
|
|
|
|
// Configure and start the TCP listener
|
|
qDebug("ServiceHelper: Starting service");
|
|
QSettings* listenerSettings=new QSettings(configFileName,QSettings::IniFormat,app);
|
|
listenerSettings->beginGroup("listener");
|
|
|
|
if(listenerSettings->value("maxRequestSize").isNull())
|
|
listenerSettings->setValue("maxRequestSize","32000000");
|
|
|
|
if(listenerSettings->value("maxMultiPartSize").isNull())
|
|
listenerSettings->setValue("maxMultiPartSize","32000000");
|
|
|
|
if(listenerSettings->value("cleanupInterval").isNull())
|
|
listenerSettings->setValue("cleanupInterval",10000);
|
|
|
|
if(listenerSettings->value("minThreads").isNull())
|
|
listenerSettings->setValue("maxThreads",1000);
|
|
|
|
if(listenerSettings->value("minThreads").isNull())
|
|
listenerSettings->setValue("minThreads",50);
|
|
|
|
listener = new HttpListener(listenerSettings,new RequestMapper(app),app);
|
|
|
|
qDebug("ServiceHelper: Service has started");
|
|
}
|
|
|
|
|
|
void Startup::stop() {
|
|
qDebug("ServiceHelper: Service has been stopped");
|
|
// QCoreApplication destroys all objects that have been created in start().
|
|
if(listener!=nullptr)
|
|
{
|
|
listener->close();
|
|
delete listener;
|
|
listener = nullptr;
|
|
}
|
|
}
|
|
|
|
|
|
Startup::Startup()
|
|
{
|
|
|
|
}
|
|
|
|
QString Startup::getPort()
|
|
{
|
|
return QString("%1").arg(listener->serverPort());
|
|
}
|