void login2::sChangeURL() { buildDatabaseURL(_databaseURL, "psql", _server->text(), _database->lineEdit()->text(), _port->text()); _databaseURL.replace("https://", ""); _databaseURL.replace("http://", ""); populateDatabaseInfo(); }
void login2Options::sSave() { buildDatabaseURL(_databaseURL, "psql", _server->text(), _database->text(), _port->text()); if (_saveSettings) { xtsettingsSetValue("/xTuple/_databaseURL", _databaseURL); } accept(); }
void login2Options::sSave() { buildDatabaseURL(_databaseURL, "psql", _server->text(), _database->text(), _port->text()); if (_saveSettings) { xtsettingsSetValue("/xTuple/_databaseURL", _databaseURL); xtsettingsSetValue("/xTuple/_enhancedAuthentication", (bool)_enhancedAuth->isChecked()); xtsettingsSetValue("/xTuple/_requireSSL", (bool)_requireSSL->isChecked()); } accept(); }
void login2Options::sSave() { buildDatabaseURL(_databaseURL, "psql", _server->text(), _database->text(), _port->text()); if (_saveSettings) { QSettings setting(QSettings::UserScope, "OpenMFG.com", "OpenMFG"); setting.writeEntry("/OpenMFG/_databaseURL", _databaseURL); setting.writeEntry("/OpenMFG/_enhancedAuthentication", (bool)_enhancedAuth->isChecked()); setting.writeEntry("/OpenMFG/_requireSSL", (bool)_requireSSL->isChecked()); } accept(); }
void loginOptions::sSave() { QString protocol = _driver->currentText(); for(int l = 0; !_driverInfoList[l].isNull(); l++) { if(_driverInfoList[l].name == protocol) { protocol = _driverInfoList[l].driver; break; } } buildDatabaseURL(_databaseURL, protocol, _server->text(), _database->text(), _port->text()); QSettings setting(QSettings::UserScope, "OpenMFG.com", "OpenRPT"); setting.setValue("/OpenRPT/_databaseURL", _databaseURL); accept(); }
void company::sTest() { XSqlQuery companyTest; if (DEBUG) qDebug("company::sTest()"); QString dbURL; QString protocol = "psql"; QString host = _extServer->text(); QString db = _extDB->text(); QString port = _extPort->cleanText(); buildDatabaseURL(dbURL, protocol, host, db, port); if (DEBUG) qDebug("company::sTest() dbURL before login2 = %s", qPrintable(dbURL)); ParameterList params; params.append("databaseURL", dbURL); params.append("multipleConnections"); params.append("applicationName", _ConnAppName); login2 newdlg(this, "testLogin", false); newdlg.set(params); if (newdlg.exec() == QDialog::Rejected) return; dbURL = newdlg._databaseURL; if (DEBUG) qDebug("company::sTest() dbURL after login2 = %s", qPrintable(dbURL)); parseDatabaseURL(dbURL, protocol, host, db, port); QSqlDatabase testDB = QSqlDatabase::addDatabase("QPSQL7", db); testDB.setHostName(host); testDB.setDatabaseName(db); testDB.setUserName(newdlg.username()); testDB.setPassword(newdlg.password()); testDB.setPort(port.toInt()); if (testDB.open()) { if (DEBUG) qDebug("company::sTest() opened testDB!"); XSqlQuery rmq(testDB); rmq.prepare("SELECT fetchMetricText('ServerVersion') AS result;"); rmq.exec(); if (rmq.first()) { if (rmq.value("result").toString() != _metrics->value("ServerVersion")) { QMessageBox::warning(this, tr("Versions Incompatible"), tr("<p>The version of the child database is not " "the same as the version of the parent " "database (%1 vs. %2). The data cannot safely " "be synchronized.") .arg(rmq.value("result").toString()) .arg(_metrics->value("ServerVersion"))); return; } } else if (rmq.lastError().type() != QSqlError::NoError) { systemError(this, rmq.lastError().databaseText(), __FILE__, __LINE__); return; } rmq.exec("SELECT * FROM curr_symbol WHERE curr_base;"); if (_external->isChecked()) { companyTest.prepare("SELECT * FROM curr_symbol WHERE curr_id=:curr_id;"); companyTest.bindValue(":curr_id", _currency->id()); companyTest.exec(); } else companyTest.exec("SELECT * FROM curr_symbol WHERE curr_base;"); if (companyTest.first() && rmq.first()) { if (rmq.value("curr_symbol").toString() != companyTest.value("curr_symbol").toString() && rmq.value("curr_abbr").toString() != companyTest.value("curr_abbr").toString()) { QMessageBox::warning(this, tr("Currencies Incompatible"), tr("<p>The currency of the child database does " "not appear to match the selected currency for " "the company (%1 %2 %3 vs. %4 %5 %6). The data may " "not synchronize properly.") .arg(rmq.value("curr_name").toString()) .arg(rmq.value("curr_symbol").toString()) .arg(rmq.value("curr_abbr").toString()) .arg(companyTest.value("curr_name").toString()) .arg(companyTest.value("curr_symbol").toString()) .arg(companyTest.value("curr_abbr").toString())); return; } } else if (rmq.lastError().type() != QSqlError::NoError) { systemError(this, rmq.lastError().databaseText(), __FILE__, __LINE__); return; } else if (companyTest.lastError().type() != QSqlError::NoError) { systemError(this, companyTest.lastError().databaseText(), __FILE__, __LINE__); return; } else if (!rmq.first()) { QMessageBox::warning(this, tr("No Base Currency"), tr("<p>The child database does not appear to have " "a base currency defined. The data cannot safely " "be synchronized.")); return; } else if (!companyTest.first()) { QMessageBox::warning(this, tr("No Base Currency"), tr("<p>The parent database does not appear to have " "a base currency defined. The data cannot safely " "be synchronized.")); return; } rmq.prepare("SELECT * FROM company WHERE (company_number=:number);"); rmq.bindValue(":number", _number->text()); rmq.exec(); if (rmq.first()) { QMessageBox::warning(this, windowTitle(), tr("Test Successful.")); return; } else if (rmq.lastError().type() != QSqlError::NoError) { systemError(this, rmq.lastError().databaseText(), __FILE__, __LINE__); return; } else { QMessageBox::warning(this, tr("No Corresponding Company"), tr("<p>The child database does not appear to have " "a Company %1 defined. The data cannot safely " "be synchronized.").arg(_number->text())); return; } } }
int main(int argc, char* argv[]) { QSqlDatabase db; QString dbName; QString hostName; QString passwd; QString pkgfile; QString port; QString username; XAbstractMessageHandler *handler; bool autoRunArg = false; bool autoRunCheck = false; bool debugpkg = false; bool haveDatabaseURL = false; bool acceptDefaults = false; QApplication app(argc, argv); app.addLibraryPath("."); #ifndef Q_OS_MAC app.setWindowIcon(QIcon(":/images/updater-32x32.png")); #endif if (argc > 1) { for (int intCounter = 1; intCounter < argc; intCounter++) { QString argument(argv[intCounter]); if (argument.startsWith("-help", Qt::CaseInsensitive)) { qWarning("%s [ -databaseURL=PSQL7://hostname:port/databasename ]" " [ -h hostname ]" " [ -p port ]" " [ -d databasename ]" " [ -U username | -username=username ]" " [ -passwd=databasePassword ]" " [ -debug ]" " [ -file=updaterFile.gz | -f updaterFile.gz ]" " [ -autorun [ -D ] ]", argv[0]); return 0; } else if (argument.startsWith("-databaseURL=", Qt::CaseInsensitive)) { QString protocol; haveDatabaseURL = true; _databaseURL = argument.right(argument.length() - 13); parseDatabaseURL(_databaseURL, protocol, hostName, dbName, port); } else if (argument == "-h") { hostName = argv[++intCounter]; } else if (argument == "-p") { port = argv[++intCounter]; } else if (argument == "-d") { dbName = argv[++intCounter]; } else if (argument == "-U") { username = argv[++intCounter]; } else if (argument.startsWith("-username="******"-passwd=", Qt::CaseInsensitive)) { passwd = argument.right(argument.length() - 8); } else if (argument.toLower() == "-debug") { debugpkg = true; } else if (argument == "-f") { pkgfile = argv[++intCounter]; } else if (argument.startsWith("-file=", Qt::CaseInsensitive)) { pkgfile = argument.right(argument.size() - argument.indexOf("=") - 1); } else if (argument.toLower() == "-autorun") { autoRunArg = true; } else if (argument == "-D") { acceptDefaults = true; } } } LoaderWindow * mainwin = new LoaderWindow(); mainwin->setDebugPkg(debugpkg); mainwin->setCmdline(autoRunArg); handler = mainwin->handler(); handler->setAcceptDefaults(autoRunArg && acceptDefaults); ParameterList params; params.append("name", Updater::name); params.append("copyright", Updater::copyright); params.append("version", Updater::version); params.append("build", Updater::build); if (username.length() > 0) params.append("username", username); params.append("password", passwd); if (haveDatabaseURL) params.append("databaseURL", _databaseURL.toLatin1().data()); if (autoRunArg) { if (!haveDatabaseURL) { buildDatabaseURL(_databaseURL, "psql", hostName, dbName, port); params.append("databaseURL", _databaseURL.toLatin1().data()); } params.append("cmd"); params.append("login"); } login2 newdlg(0, "", true); newdlg.set(params, 0); if (!QSqlDatabase::database(QSqlDatabase::defaultConnection, false).isOpen() && autoRunArg) { handler->message(QtFatalMsg, QObject::tr("Unable to connect to the database " "with the given information.")); return 1; } if (!autoRunArg) { if (newdlg.exec() == QDialog::Rejected) return 2; _databaseURL = newdlg._databaseURL; username = newdlg._user; } Updater::loggedIn = true; mainwin->setWindowTitle(); QSqlQuery set("SET standard_conforming_strings TO true;"); if (set.lastError().type() != QSqlError::NoError) handler->message(QtWarningMsg, QObject::tr("Unable to set standard_conforming_strings. " "Updates may fail with unexpected errors.")); QSqlQuery su; su.prepare("SELECT rolsuper FROM pg_roles WHERE (rolname=:user);"); su.bindValue(":user", username); su.exec(); if (su.first()) { if (! su.value(0).toBool() && handler->question(QObject::tr("You are not logged in as a " "database super user. The update " "may fail. Are you sure you want " "to continue?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::No) return 3; } else if (su.lastError().type() != QSqlError::NoError && handler->question(QObject::tr("<p>The application received a database " "error while trying to check the user " "status of %1. Would you like to try to " "update anyway?</p><pre>%2</pre>") .arg(username, su.lastError().databaseText()), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::No) return 4; if (! pkgfile.isEmpty()) { autoRunCheck = mainwin->openFile(pkgfile); } if (autoRunArg) { bool successful = autoRunCheck && ! pkgfile.isEmpty(); if (successful) { successful = mainwin->sStart(); } if (successful) // not else if return 0; else { #ifdef Q_OS_WIN32 mainwin->show(); #else qWarning("%s", qPrintable(mainwin->_text->toPlainText())); return 5; #endif } } else mainwin->show(); return app.exec(); }
void packages::sLoad() { QProcess proc(this); #ifdef Q_WS_MACX QString proc_path = QDir::cleanPath(qApp->applicationDirPath() + "/../../../updater.app/Contents/MacOS/updater"); QString proc_path2= QDir::cleanPath(qApp->applicationDirPath() + "/../../../../Updater/updater.app/Contents/MacOS/updater"); #elif defined Q_WS_WIN QString proc_path = QDir::cleanPath(qApp->applicationDirPath() + "/updater.exe"); QString proc_path2= QDir::cleanPath(qApp->applicationDirPath() + "/../Updater/updater.exe"); #else QString proc_path = QDir::cleanPath(qApp->applicationDirPath() + "/updater"); QString proc_path2= QDir::cleanPath(qApp->applicationDirPath() + "/../Updater/updater"); #endif if (! QFile::exists(proc_path)) proc_path = proc_path2; if (! QFile::exists(proc_path)) { #ifdef Q_WS_MACX if (QMessageBox::question(this, tr("Could Not Find Updater"), tr("<p>xTuple ERP could not find the Updater " "application. Would you like to look for it?"), QMessageBox::Yes | QMessageBox::Default, QMessageBox::No) == QMessageBox::No) return; #endif proc_path = QFileDialog::getOpenFileName(this, tr("Find Updater Application")); if (proc_path.isEmpty()) return; #ifdef Q_WS_MACX proc_path += "/Contents/MacOS/updater"; #endif } QStringList proc_args; QSqlDatabase db = QSqlDatabase::database(); QString dbURL; buildDatabaseURL(dbURL, "QPSQL", db.hostName(), db.databaseName(), QString::number(db.port())); proc_args << "-databaseURL=" + dbURL; if (! db.userName().isEmpty()) proc_args << "-username="******"-passwd=" + db.password(); QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); proc.start(proc_path, proc_args); if (proc.waitForStarted() && proc.waitForFinished(-1) && proc.exitStatus() == QProcess::NormalExit && proc.exitCode() == 0) { QApplication::restoreOverrideCursor(); sFillList(); } else { if (! db.password().isEmpty()) { proc_args.removeLast(); proc_args << "-passwd=XXXXX"; } QApplication::restoreOverrideCursor(); systemError(this, tr("<p>There was an error running the Updater program: " "<br>%1 %2<br><br><pre>%3</pre>") .arg(proc_path) .arg(proc_args.join(" ")) .arg(QString(proc.readAllStandardError()))); return; } sFillList(); }