Ported servatrice

This commit is contained in:
Fabio Bas 2014-06-24 18:42:46 +02:00
parent 80f68306b5
commit 2953c6ba2a
2 changed files with 38 additions and 4 deletions

View file

@ -93,6 +93,17 @@ void myMessageOutput2(QtMsgType /*type*/, const char *msg)
std::cerr << msg << std::endl; std::cerr << msg << std::endl;
} }
void myMessageOutputQt5(QtMsgType /*type*/, const QMessageLogContext &, const QString &msg)
{
logger->logMessage(msg);
}
void myMessageOutput2Qt5(QtMsgType /*type*/, const QMessageLogContext &, const QString &msg)
{
logger->logMessage(msg);
std::cerr << msg.toStdString() << std::endl;
}
#ifdef Q_OS_UNIX #ifdef Q_OS_UNIX
void sigSegvHandler(int sig) void sigSegvHandler(int sig)
{ {
@ -121,9 +132,12 @@ int main(int argc, char *argv[])
bool logToConsole = args.contains("--log-to-console"); bool logToConsole = args.contains("--log-to-console");
qRegisterMetaType<QList<int> >("QList<int>"); qRegisterMetaType<QList<int> >("QList<int>");
#if QT_VERSION < 0x050000
// gone in Qt5, all source files _MUST_ be utf8-encoded
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
#endif
QSettings *settings = new QSettings("servatrice.ini", QSettings::IniFormat); QSettings *settings = new QSettings("servatrice.ini", QSettings::IniFormat);
loggerThread = new QThread; loggerThread = new QThread;
@ -133,11 +147,19 @@ int main(int argc, char *argv[])
loggerThread->start(); loggerThread->start();
QMetaObject::invokeMethod(logger, "startLog", Qt::BlockingQueuedConnection, Q_ARG(QString, settings->value("server/logfile").toString())); QMetaObject::invokeMethod(logger, "startLog", Qt::BlockingQueuedConnection, Q_ARG(QString, settings->value("server/logfile").toString()));
#if QT_VERSION < 0x050000
if (logToConsole) if (logToConsole)
qInstallMsgHandler(myMessageOutput); qInstallMsgHandler(myMessageOutput);
else else
qInstallMsgHandler(myMessageOutput2); qInstallMsgHandler(myMessageOutput2);
#else
if (logToConsole)
qInstallMessageHandler(myMessageOutputQt5);
else
qInstallMessageHandler(myMessageOutput2Qt5);
#endif
#ifdef Q_OS_UNIX #ifdef Q_OS_UNIX
struct sigaction hup; struct sigaction hup;
hup.sa_handler = ServerLogger::hupSignalHandler; hup.sa_handler = ServerLogger::hupSignalHandler;
@ -173,8 +195,12 @@ int main(int argc, char *argv[])
if (server->initServer()) { if (server->initServer()) {
std::cerr << "-------------------------" << std::endl; std::cerr << "-------------------------" << std::endl;
std::cerr << "Server initialized." << std::endl; std::cerr << "Server initialized." << std::endl;
#if QT_VERSION < 0x050000
qInstallMsgHandler(myMessageOutput); qInstallMsgHandler(myMessageOutput);
#else
qInstallMessageHandler(myMessageOutputQt5);
#endif
retval = app.exec(); retval = app.exec();
std::cerr << "Server quit." << std::endl; std::cerr << "Server quit." << std::endl;

View file

@ -234,8 +234,16 @@ bool Servatrice::initServer()
if (!certFile.open(QIODevice::ReadOnly)) if (!certFile.open(QIODevice::ReadOnly))
throw QString("Error opening certificate file: %1").arg(certFileName); throw QString("Error opening certificate file: %1").arg(certFileName);
QSslCertificate cert(&certFile); QSslCertificate cert(&certFile);
#if QT_VERSION < 0x050000
if (!cert.isValid()) if (!cert.isValid())
throw(QString("Invalid certificate.")); throw(QString("Invalid certificate."));
#else
const QDateTime currentTime = QDateTime::currentDateTime();
if(currentTime < cert.effectiveDate() ||
currentTime > cert.expiryDate() ||
cert.isBlacklisted())
throw(QString("Invalid certificate."));
#endif
qDebug() << "Loading private key..."; qDebug() << "Loading private key...";
QFile keyFile(keyFileName); QFile keyFile(keyFileName);
if (!keyFile.open(QIODevice::ReadOnly)) if (!keyFile.open(QIODevice::ReadOnly))