mirror of
https://github.com/mumble-voip/mumble.git
synced 2025-10-26 11:19:16 +00:00
Initial multi-database support
git-svn-id: https://mumble.svn.sourceforge.net/svnroot/mumble/trunk@465 05730e5d-ab1b-0410-a4ac-84af385074fa
This commit is contained in:
parent
8a1f436cbf
commit
9577644104
@ -62,6 +62,8 @@ ServerParams::ServerParams() {
|
||||
iMaxUsers = 1000;
|
||||
qsWelcomeText = QString("Welcome to this server");
|
||||
qsDatabase = QString();
|
||||
iDBPort = 0;
|
||||
qsDBDriver = "QSQLITE";
|
||||
}
|
||||
|
||||
void ServerParams::read(QString fname) {
|
||||
@ -76,7 +78,14 @@ void ServerParams::read(QString fname) {
|
||||
iMaxBandwidth = qs.value("bandwidth", iMaxBandwidth).toInt();
|
||||
iMaxUsers = qs.value("users", iMaxUsers).toInt();
|
||||
qsWelcomeText = qs.value("welcometext", qsWelcomeText).toString();
|
||||
|
||||
qsDatabase = qs.value("database", qsDatabase).toString();
|
||||
|
||||
qsDBDriver = qs.value("dbDriver", qsDBDriver).toString();
|
||||
qsDBUserName = qs.value("dbUsername", qsDBUserName).toString();
|
||||
qsDBPassword = qs.value("dbPassword", qsDBPassword).toString();
|
||||
qsDBHostName = qs.value("dbHost", qsDBHostName).toString();
|
||||
iDBPort = qs.value("dbPort", iDBPort).toInt();
|
||||
}
|
||||
|
||||
BandwidthRecord::BandwidthRecord() {
|
||||
|
||||
@ -127,8 +127,16 @@ struct ServerParams {
|
||||
int iMaxUsers;
|
||||
QString qsPassword;
|
||||
QString qsWelcomeText;
|
||||
QString qsDatabase;
|
||||
bool bTestloop;
|
||||
|
||||
QString qsDatabase;
|
||||
|
||||
QString qsDBDriver;
|
||||
QString qsDBUserName;
|
||||
QString qsDBPassword;
|
||||
QString qsDBHostName;
|
||||
int iDBPort;
|
||||
|
||||
ServerParams();
|
||||
void read(QString fname = QString("murmur.ini"));
|
||||
};
|
||||
|
||||
@ -61,46 +61,56 @@ class TransactionHolder {
|
||||
};
|
||||
|
||||
ServerDB::ServerDB() {
|
||||
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
|
||||
QSettings qs;
|
||||
if (! QSqlDatabase::isDriverAvailable(g_sp.qsDBDriver)) {
|
||||
qFatal("Database driver %s not available", qPrintable(g_sp.qsDBDriver));
|
||||
}
|
||||
QSqlDatabase db = QSqlDatabase::addDatabase(g_sp.qsDBDriver);
|
||||
QStringList datapaths;
|
||||
int i;
|
||||
|
||||
bool found = false;
|
||||
|
||||
if (! g_sp.qsDatabase.isEmpty()) {
|
||||
db.setDatabaseName(g_sp.qsDatabase);
|
||||
found = db.open();
|
||||
} else {
|
||||
if (g_sp.qsDBDriver == "QSQLITE") {
|
||||
if (! g_sp.qsDatabase.isEmpty()) {
|
||||
db.setDatabaseName(g_sp.qsDatabase);
|
||||
found = db.open();
|
||||
} else {
|
||||
datapaths << QCoreApplication::instance()->applicationDirPath();
|
||||
datapaths << QDir::currentPath();
|
||||
datapaths << QDir::homePath();
|
||||
|
||||
datapaths << qs.value("DBPath").toString();
|
||||
datapaths << QCoreApplication::instance()->applicationDirPath();
|
||||
datapaths << QDir::currentPath();
|
||||
datapaths << QDir::homePath();
|
||||
|
||||
for(i = 0; (i < datapaths.size()) && ! found; i++) {
|
||||
if (!datapaths[i].isEmpty()) {
|
||||
QFile f(datapaths[i] + "/murmur.sqlite");
|
||||
if (f.exists()) {
|
||||
db.setDatabaseName(f.fileName());
|
||||
found = db.open();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (! found) {
|
||||
for(i = 0; (i < datapaths.size()) && ! found; i++) {
|
||||
if (!datapaths[i].isEmpty()) {
|
||||
QFile f(datapaths[i] + "/murmur.sqlite");
|
||||
db.setDatabaseName(f.fileName());
|
||||
found = db.open();
|
||||
if (f.exists()) {
|
||||
db.setDatabaseName(f.fileName());
|
||||
found = db.open();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (! found) {
|
||||
for(i = 0; (i < datapaths.size()) && ! found; i++) {
|
||||
if (!datapaths[i].isEmpty()) {
|
||||
QFile f(datapaths[i] + "/murmur.sqlite");
|
||||
db.setDatabaseName(f.fileName());
|
||||
found = db.open();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
db.setDatabaseName(g_sp.qsDatabase);
|
||||
db.setHostName(g_sp.qsDBHostName);
|
||||
db.setPort(g_sp.iDBPort);
|
||||
db.setUserName(g_sp.qsDBUserName);
|
||||
db.setPassword(g_sp.qsDBPassword);
|
||||
found = db.open();
|
||||
}
|
||||
|
||||
if (! found) {
|
||||
qFatal("ServerDB: Failed initialization");
|
||||
QSqlError e = db.lastError();
|
||||
qFatal("ServerDB: Failed initialization: %s",qPrintable(e.text()));
|
||||
} else {
|
||||
qWarning("ServerDB: Opened successfully");
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user