Make server 12-factor compatible. (#3546)

* Docker

* Herokuize

* Use mysql method with database_url

* cleanup
This commit is contained in:
Rob Blanckaert 2019-02-03 12:58:54 -08:00 committed by ctrlaltca
parent 5a4f020196
commit 544c66edde
2 changed files with 33 additions and 5 deletions

View file

@ -7,18 +7,16 @@ RUN apt-get update && apt-get install -y\
git\
libprotobuf-dev\
libqt5sql5-mysql\
libqt5websockets5-dev\
protobuf-compiler\
qt5-default\
qtbase5-dev\
qttools5-dev-tools\
qttools5-dev\
software-properties-common
qttools5-dev
COPY . /home/servatrice/code/
WORKDIR /home/servatrice/code
RUN mkdir oracle
WORKDIR build
RUN cmake .. -DWITH_SERVER=1 -DWITH_CLIENT=0 -DWITH_ORACLE=0 &&\
make &&\
@ -28,4 +26,4 @@ WORKDIR /home/servatrice
EXPOSE 4747
ENTRYPOINT [ "servatrice" ]
CMD [ "servatrice", "--log-to-console" ]

View file

@ -35,10 +35,12 @@
#include <QDateTime>
#include <QDebug>
#include <QFile>
#include <QProcessEnvironment>
#include <QSqlQuery>
#include <QString>
#include <QStringList>
#include <QTimer>
#include <QUrl>
#include <iostream>
Servatrice_GameServer::Servatrice_GameServer(Servatrice *_server,
@ -790,6 +792,9 @@ bool Servatrice::getRegOnlyServerEnabled() const
QString Servatrice::getAuthenticationMethodString() const
{
if (QProcessEnvironment::systemEnvironment().contains("DATABASE_URL")) {
return QString("sql");
}
return settingsCache->value("authentication/method").toString();
}
@ -830,36 +835,58 @@ QString Servatrice::getRequiredFeatures() const
QString Servatrice::getDBTypeString() const
{
if (QProcessEnvironment::systemEnvironment().contains("DATABASE_URL")) {
return QString("mysql");
}
return settingsCache->value("database/type").toString();
}
QString Servatrice::getDBPrefixString() const
{
if (QProcessEnvironment::systemEnvironment().contains("DATABASE_URL")) {
return QString("cockatrice");
}
return settingsCache->value("database/prefix").toString();
}
QString Servatrice::getDBHostNameString() const
{
if (QProcessEnvironment::systemEnvironment().contains("DATABASE_URL")) {
return QUrl(QProcessEnvironment::systemEnvironment().value("DATABASE_URL")).host();
}
return settingsCache->value("database/hostname").toString();
}
QString Servatrice::getDBDatabaseNameString() const
{
if (QProcessEnvironment::systemEnvironment().contains("DATABASE_URL")) {
QString path = QUrl(QProcessEnvironment::systemEnvironment().value("DATABASE_URL")).path();
return path.right(path.length() - 1);
}
return settingsCache->value("database/database").toString();
}
QString Servatrice::getDBUserNameString() const
{
if (QProcessEnvironment::systemEnvironment().contains("DATABASE_URL")) {
return QUrl(QProcessEnvironment::systemEnvironment().value("DATABASE_URL")).userName();
}
return settingsCache->value("database/user").toString();
}
QString Servatrice::getDBPasswordString() const
{
if (QProcessEnvironment::systemEnvironment().contains("DATABASE_URL")) {
return QUrl(QProcessEnvironment::systemEnvironment().value("DATABASE_URL")).password();
}
return settingsCache->value("database/password").toString();
}
QString Servatrice::getRoomsMethodString() const
{
if (QProcessEnvironment::systemEnvironment().contains("DATABASE_URL")) {
return QString("sql");
}
return settingsCache->value("rooms/method").toString();
}
@ -953,6 +980,9 @@ QHostAddress Servatrice::getServerWebSocketHost() const
int Servatrice::getServerWebSocketPort() const
{
if (QProcessEnvironment::systemEnvironment().contains("PORT")) {
return QProcessEnvironment::systemEnvironment().value("PORT").toInt();
}
return settingsCache->value("server/websocket_port", 4748).toInt();
}