bool OptionsModel::getProxySettings(QNetworkProxy& proxy) const { // Directly query current base proxy, because // GUI settings can be overridden with -proxy. proxyType curProxy; if (GetProxy(NET_IPV4, curProxy)) { proxy.setType(QNetworkProxy::Socks5Proxy); proxy.setHostName(QString::fromStdString(curProxy.proxy.ToStringIP())); proxy.setPort(curProxy.proxy.GetPort()); return true; } else proxy.setType(QNetworkProxy::NoProxy); return false; }
void NetworkAccessManager::loadSettings() { QSettings settings; settings.beginGroup(QLatin1String("proxy")); QNetworkProxy proxy; if (settings.value(QLatin1String("enabled"), false).toBool()) { if (settings.value(QLatin1String("type"), 0).toInt() == 0) proxy = QNetworkProxy::Socks5Proxy; else proxy = QNetworkProxy::HttpProxy; proxy.setHostName(settings.value(QLatin1String("hostName")).toString()); proxy.setPort(settings.value(QLatin1String("port"), 1080).toInt()); proxy.setUser(settings.value(QLatin1String("userName")).toString()); proxy.setPassword(settings.value(QLatin1String("password")).toString()); } setProxy(proxy); }
void httpsocket::getUrl(QString url) { if(this->useProxy==true){ QNetworkProxy proxy; proxy.setType(QNetworkProxy::HttpProxy); proxy.setHostName(this->proxyAddress);//"200.50.166.43" proxy.setPort(this->proxyPort);//8080 //proxy.setUser("username"); //proxy.setPassword("password"); QNetworkProxy::setApplicationProxy(proxy); } qDebug()<< "Connecting..."; QNetworkAccessManager *manager = new QNetworkAccessManager(this); connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(replyFinished(QNetworkReply*))); manager->get(QNetworkRequest(QUrl(url))); }
void JuickDownloader::setProxyHostPort(const QString& host, int port, const QString& username, const QString& pass, const QString& type) { QNetworkProxy prx; if(!host.isEmpty()) { prx.setType(QNetworkProxy::HttpCachingProxy); if(type == "socks") prx.setType(QNetworkProxy::Socks5Proxy); prx.setPort(port); prx.setHostName(host); if(!username.isEmpty()) { prx.setUser(username); prx.setPassword(pass); } } manager_->setProxy(prx); }
bool setProxy(QString hostName, int port) { QNetworkProxy myProxy; myProxy.setType(QNetworkProxy::HttpProxy); myProxy.setHostName(hostName); myProxy.setPort(port); qDebug("Init Proxy..."); try { QNetworkProxy::setApplicationProxy(myProxy); } catch (...) { qDebug("Error in proxy configuration!"); return false; } return true; }
QNetworkProxy ProxySettings::httpProxy () { QSettings settings; QNetworkProxy proxy; bool proxyInUse = settings.value ("http_proxy/use", 0).toBool (); if (proxyInUse) { proxy.setType (QNetworkProxy::HttpProxy); proxy.setHostName (settings.value ("http_proxy/hostname", "").toString ());// "192.168.220.5" proxy.setPort (settings.value ("http_proxy/port", 80).toInt ()); // 8080 proxy.setUser (settings.value ("http_proxy/username", "").toString ()); proxy.setPassword (settings.value ("http_proxy/password", "").toString ()); //QNetworkProxy::setApplicationProxy (proxy); } else { proxy.setType (QNetworkProxy::NoProxy); } return proxy; }
void NetworkManager::loadSettings() { Settings settings; settings.beginGroup("Language"); QStringList langs = settings.value("acceptLanguage", AcceptLanguage::defaultLanguage()).toStringList(); settings.endGroup(); mApp->webProfile()->setHttpAcceptLanguage(AcceptLanguage::generateHeader(langs)); QNetworkProxy proxy; settings.beginGroup("Web-Proxy"); proxy.setType(QNetworkProxy::ProxyType(settings.value("ProxyType", QNetworkProxy::NoProxy).toInt())); proxy.setHostName(settings.value("HostName", QString()).toString()); proxy.setPort(settings.value("Port", 8080).toInt()); proxy.setUser(settings.value("Username", QString()).toString()); proxy.setPassword(settings.value("Password", QString()).toString()); settings.endGroup(); QNetworkProxy::setApplicationProxy(proxy); m_urlInterceptor->loadSettings(); }
void GameUIConfig::applyProxySettings() { QNetworkProxy proxy; int proxyType = Form->ui.pageOptions->cbProxyType->currentIndex(); if(proxyType == PageOptions::SystemProxy) { // use system proxy settings proxy = QNetworkProxyFactory::systemProxyForQuery().at(0); } else { proxy.setType(proxyTypesMap[proxyType]); proxy.setHostName(Form->ui.pageOptions->leProxy->text()); proxy.setPort(Form->ui.pageOptions->sbProxyPort->value()); proxy.setUser(Form->ui.pageOptions->leProxyLogin->text()); proxy.setPassword(Form->ui.pageOptions->leProxyPassword->text()); } QNetworkProxy::setApplicationProxy(proxy); }
QNetworkProxy* UBSettings::httpProxy() { QNetworkProxy* proxy = 0; if (mAppSettings->value("Proxy/Enabled", false).toBool()) { proxy = new QNetworkProxy(); if (mAppSettings->value("Proxy/Type", "HTTP").toString() == "Socks5") proxy->setType(QNetworkProxy::Socks5Proxy); else proxy->setType(QNetworkProxy::HttpProxy); proxy->setHostName(mAppSettings->value("Proxy/HostName").toString()); proxy->setPort(mAppSettings->value("Proxy/Port", 1080).toInt()); proxy->setUser(mAppSettings->value("Proxy/UserName").toString()); proxy->setPassword(mAppSettings->value("Proxy/Password").toString()); } return proxy; }
void ProxyPreferencesWidget::saveToSettings(Core::ISettings *sets) { Core::ISettings *s; if (!sets) s = settings(); else s = sets; if (ui->proxyHostName->text().isEmpty()) { QNetworkProxy::setApplicationProxy(QNetworkProxy::NoProxy); } else { QNetworkProxy proxy; proxy.setType(QNetworkProxy::HttpProxy); proxy.setHostName(ui->proxyHostName->text()); proxy.setPort(ui->proxyPort->value()); proxy.setUser(ui->proxyUserName->text()); proxy.setPassword(ui->proxyUserPassword->text()); s->setValue(Core::Constants::S_PROXY, Utils::Serializer::serializeProxy(proxy)); QNetworkProxy::setApplicationProxy(proxy); } }
QNetworkProxy Settings::getProxy() const { QNetworkProxy proxy; switch(Settings::getProxyType()) { case ProxyType::ptNone: proxy.setType(QNetworkProxy::NoProxy); break; case ProxyType::ptSOCKS5: proxy.setType(QNetworkProxy::Socks5Proxy); break; case ProxyType::ptHTTP: proxy.setType(QNetworkProxy::HttpProxy); break; default: proxy.setType(QNetworkProxy::NoProxy); qWarning() << "Invalid Proxy type, setting to NoProxy"; } proxy.setHostName(Settings::getProxyAddr()); proxy.setPort(Settings::getProxyPort()); return proxy; }
Application::Application(int &argc, char **argv, AppCliOptions *cli_opts) : Super(argc, argv) , m_cliOptions(cli_opts) { auto *style = qf::qmlwidgets::Style::instance(); style->setIconPath(":/qf/qmlwidgets/images/flat"); loadStyleSheet(); QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); QString http_proxy = env.value(QStringLiteral("http_proxy")); if(!http_proxy.isEmpty()) { if(http_proxy.startsWith(QLatin1String("http://"))) http_proxy = http_proxy.mid(7); QString host = http_proxy.section(':', 0, 0); int port = http_proxy.section(':', 1).toInt(); if(!host.isEmpty() && port > 0) { qfInfo() << QString("Setting app http proxy to: %1:%2").arg(host).arg(port); QNetworkProxy proxy; proxy.setType(QNetworkProxy::HttpProxy); proxy.setHostName(host); proxy.setPort(port); //proxy.setUser("username"); //proxy.setPassword("password"); QNetworkProxy::setApplicationProxy(proxy); } } #ifdef Q_OS_UNIX QString plugin_path = QCoreApplication::applicationDirPath() + "/../lib/qml/" + QCoreApplication::applicationName().toLower(); #else QString plugin_path = QCoreApplication::applicationDirPath() + "/qml/" + QCoreApplication::applicationName().toLower(); #ifdef Q_OS_WIN qfInfo() << "Adding DLL search path:" << plugin_path; SetDllDirectory(reinterpret_cast<LPCWSTR>(plugin_path.utf16())); #endif #endif qf::qmlwidgets::reports::ReportProcessor::qmlEngineImportPaths().append(plugin_path); }
Application::Application(int &argc, char **argv) : Super(argc, argv) { QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); QString http_proxy = env.value(QStringLiteral("http_proxy")); if(!http_proxy.isEmpty()) { if(http_proxy.startsWith(QLatin1String("http://"))) http_proxy = http_proxy.mid(7); QString host = http_proxy.section(':', 0, 0); int port = http_proxy.section(':', 1).toInt(); if(!host.isEmpty() && port > 0) { qfInfo() << QString("Setting app http proxy to: %1:%2").arg(host).arg(port); QNetworkProxy proxy; proxy.setType(QNetworkProxy::HttpProxy); proxy.setHostName(host); proxy.setPort(port); //proxy.setUser("username"); //proxy.setPassword("password"); QNetworkProxy::setApplicationProxy(proxy); } } qf::qmlwidgets::reports::ReportProcessor::qmlEngineImportPaths().append(QCoreApplication::applicationDirPath() + "/divers/" + QCoreApplication::applicationName() + "/plugins"); }
//ダウンロードしてアップデートする void FavoriteMenu::updateFromInternet(bool force) { QFileInfo fi(FAVORITE_DOWNLOAD_FILE); if(!force && (fi.lastModified().addDays(1) >= QDateTime::currentDateTime())){ //更新期間すぎてないのでなにもしない // qDebug() << "don't update, last modify+2days=" << fi.lastModified().addDays(2) // << ", today=" << QDateTime::currentDateTime(); return; } qDebug() << "start download"; QNetworkAccessManager *net = new QNetworkAccessManager(this); connect(net, &QNetworkAccessManager::finished, [this](QNetworkReply *reply) { if(reply->error() == QNetworkReply::NoError){ QFile file(FAVORITE_DOWNLOAD_FILE); if(file.open(QIODevice::WriteOnly)){ file.write(reply->readAll()); file.close(); //通知 emit downloadFinished(); } } }); //プロキシ QSettings settings(QSettings::IniFormat, QSettings::UserScope, KANMEMO_PROJECT, KANMEMO_NAME); QNetworkProxy *proxy = new QNetworkProxy(); bool enable = settings.value(SETTING_GENERAL_PROXY_ENABLE, false).toBool(); QString host = settings.value(SETTING_GENERAL_PROXY_HOST).toString(); if(host.length() > 0 && enable){ proxy->setType(QNetworkProxy::HttpProxy); proxy->setHostName(host); proxy->setPort(settings.value(SETTING_GENERAL_PROXY_PORT, 8888).toInt()); net->setProxy(*proxy); }else{ net->setProxy(QNetworkProxy::NoProxy); } net->get(QNetworkRequest(FAVORITE_DOWNLOAD_URL)); }
UpdateChecker::UpdateChecker(QObject* parent_) : QObject(parent_){ setObjectName("UpdateChecker"); QNetworkAccessManager* networkManager = new QNetworkAccessManager(this); connect(networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(finished(QNetworkReply*))); //Proxy Settings Settings settings; if(settings.getProxyEnable()){ QNetworkProxy proxy; proxy.setType(QNetworkProxy::HttpProxy); proxy.setHostName(settings.getProxyAddress()); proxy.setPort(settings.getProxyPort()); if(settings.getProxyAuthentification()){ proxy.setUser(settings.getProxyUser()); proxy.setPassword(settings.getProxyPassword()); } networkManager->setProxy(proxy); } //qDebug() << networkManager->proxy().hostName(); //qDebug() << networkManager->proxy().port(); networkManager->get(QNetworkRequest(QUrl(_downloadsUrl))); }
void NetworkAccessManagerWrapper::configurationUpdated() { NetworkProxy networkProxy; if (Application::instance()->configuration()->deprecatedApi()->readBoolEntry("SMS", "DefaultProxy", true)) networkProxy = NetworkProxyManager::instance()->defaultProxy(); else networkProxy = NetworkProxyManager::instance()->byUuid(Application::instance()->configuration()->deprecatedApi()->readEntry("SMS", "Proxy")); QNetworkProxy proxy; if (networkProxy) { proxy.setType(QNetworkProxy::HttpProxy); proxy.setHostName(networkProxy.address()); proxy.setPort(networkProxy.port()); proxy.setUser(networkProxy.user()); proxy.setPassword(networkProxy.password()); } else proxy.setType(QNetworkProxy::NoProxy); setProxy(proxy); }
void FindSubtitlesWindow::setupProxy() { QNetworkProxy proxy; if ((use_proxy) && (!proxy_host.isEmpty())) { proxy.setType((QNetworkProxy::ProxyType) proxy_type); proxy.setHostName(proxy_host); proxy.setPort(proxy_port); if ((!proxy_username.isEmpty()) && (!proxy_password.isEmpty())) { proxy.setUser(proxy_username); proxy.setPassword(proxy_password); } qDebug("FindSubtitlesWindow::userProxy: using proxy: host: %s, port: %d, type: %d", proxy_host.toUtf8().constData(), proxy_port, proxy_type); } else { // No proxy proxy.setType(QNetworkProxy::NoProxy); qDebug("FindSubtitlesDialog::userProxy: no proxy"); } setProxy(proxy); }
void StelApp::setupNetworkProxy() { QString proxyHost = confSettings->value("proxy/host_name").toString(); QString proxyPort = confSettings->value("proxy/port").toString(); QString proxyUser = confSettings->value("proxy/user").toString(); QString proxyPass = confSettings->value("proxy/password").toString(); QString proxyType = confSettings->value("proxy/type").toString(); bool useSocksProxy = proxyType.contains("socks", Qt::CaseInsensitive); // If proxy settings not found in config, use environment variable // if it is defined. (Config file over-rides environment). if (proxyHost.isEmpty() && proxyUser.isEmpty() && proxyPass.isEmpty() && proxyPort.isEmpty()) { char *httpProxyEnv; httpProxyEnv = std::getenv("http_proxy"); if (!httpProxyEnv) { httpProxyEnv = std::getenv("HTTP_PROXY"); } if (httpProxyEnv) { QString proxyString = QString(httpProxyEnv); if (!proxyString.isEmpty()) { // Handle http_proxy of the form // proto://username:password@fqdn:port // e.g.: // http://usr:[email protected]:3128/ // http://proxy.loc:3128/ // http://2001:62a:4:203:6ab5:99ff:fef2:560b:3128/ // http://foo:bar@2001:62a:4:203:6ab5:99ff:fef2:560b:3128/ QRegExp pre("^([^:]+://)?(?:([^:]+):([^@]*)@)?(.+):([\\d]+)"); if (pre.indexIn(proxyString) >= 0) { proxyUser = pre.cap(2); proxyPass = pre.cap(3); proxyHost = pre.cap(4); proxyPort = pre.cap(5); } else { qDebug() << "indecipherable environment variable http_proxy:" << proxyString; return; } } } } if (!proxyHost.isEmpty()) { QNetworkProxy proxy; if (useSocksProxy) proxy.setType(QNetworkProxy::Socks5Proxy); else proxy.setType(QNetworkProxy::HttpProxy); proxy.setHostName(proxyHost); if (!proxyPort.isEmpty()) proxy.setPort(proxyPort.toUShort()); if (!proxyUser.isEmpty()) proxy.setUser(proxyUser); if (!proxyPass.isEmpty()) proxy.setPassword(proxyPass); QString ppDisp = proxyPass; ppDisp.fill('*'); if (useSocksProxy) qDebug() << "Using SOCKS proxy:" << proxyUser << ppDisp << proxyHost << proxyPort; else qDebug() << "Using HTTP proxy:" << proxyUser << ppDisp << proxyHost << proxyPort; QNetworkProxy::setApplicationProxy(proxy); } }
void UpdateInfoDialog::CheckUpdate() { int os_num = 0; #if defined(Q_OS_WIN32) if(QT_POINTER_SIZE == 4){ os_num = OS_NUM_WIN_32; }else{ os_num = OS_NUM_WIN_64; } #elif defined(Q_OS_MAC) if(QT_POINTER_SIZE == 4){ os_num = OS_NUM_MAC_32; }else{ os_num = OS_NUM_MAC_64; } #else if(QT_POINTER_SIZE == 4){ os_num = OS_NUM_LINUX_32; }else{ os_num = OS_NUM_LINUX_64; } #endif // qDebug() << "check update"; QNetworkAccessManager *net = new QNetworkAccessManager(this); connect(net, &QNetworkAccessManager::finished, [this](QNetworkReply *reply) { if(reply->error() == QNetworkReply::NoError){ QJsonDocument json = QJsonDocument::fromJson(reply->readAll()); bool exist = json.object().value(KEY_UPDATE_EXIST).toBool(); // qDebug() << "download " << json.object().value(KEY_DOWNLOAD_URL).toString(); // qDebug() << "web " << json.object().value(KEY_WEBPAGE_URL).toString(); // qDebug() << "exist " << exist; // qDebug() << "ver " << json.object().value(KEY_NEW_VERSION).toString(); // qDebug() << "ver code " << json.object().value(KEY_NEW_VERSION_CODE).toDouble() << "<=" << KANMEMO_VERSION_CODE; //バージョンコード m_newVersionCode = static_cast<int>(json.object().value(KEY_NEW_VERSION_CODE).toDouble()); if(isHide(m_newVersionCode) && !m_force){ m_force = true; //1度通ったらはユーザー操作なので強制表示 return; //非表示 } if(exist){ //ダイアログ表示 //Download QString download_url = json.object().value(KEY_DOWNLOAD_URL).toString(); QStringList url_list = download_url.split("|"); ui->downloadUrlLabel1->setText(QString("<a href='%1'>%1</a>").arg(url_list[0])); if(url_list.count() > 1){ ui->downloadUrlLabel2->setText(QString("<a href='%1'>%1</a>").arg(url_list[1])); }else{ ui->downloadUrlLabel2->clear(); } //WebPage ui->webpageUrlLabel->setText(QString("<a href='%1'>%1</a>").arg(json.object().value(KEY_WEBPAGE_URL).toString())); //Version Number ui->versionNumberLabel->setText(json.object().value(KEY_NEW_VERSION).toString()); //message ui->messageTextEdit->setPlainText(json.object().value(KEY_MESSAGE).toString()); //必ずチェックを外す ui->hideNextUpdatecheckBox->setChecked(false); show(); }else if(m_force){ //更新なし QMessageBox::information(this , tr("Kan Memo") , tr("There was no update.") , QMessageBox::Yes); } m_force = true; //1度通ったらはユーザー操作なので強制表示 } }); //プロキシ if(m_settings != NULL){ QNetworkProxy *proxy = new QNetworkProxy(); bool enable = m_settings->value(SETTING_GENERAL_PROXY_ENABLE, false).toBool(); QString host = m_settings->value(SETTING_GENERAL_PROXY_HOST).toString(); if(host.length() > 0 && enable){ proxy->setType(QNetworkProxy::HttpProxy); proxy->setHostName(host); proxy->setPort(m_settings->value(SETTING_GENERAL_PROXY_PORT, 8888).toInt()); net->setProxy(*proxy); }else{ net->setProxy(QNetworkProxy::NoProxy); } } //アクセス開始 net->get(QNetworkRequest(CHECK_UPDATE_URL .arg(KANMEMO_VERSION) .arg(KANMEMO_VERSION_CODE) .arg(os_num) .arg(QLocale::system().name()))); }
QT_BEGIN_NAMESPACE QList<QNetworkProxy> QNetworkProxyFactory::systemProxyForQuery(const QNetworkProxyQuery &query) { QNetworkProxy proxy; if (query.queryType() != QNetworkProxyQuery::UrlRequest) { qWarning("Unsupported query type: %d", query.queryType()); return QList<QNetworkProxy>() << QNetworkProxy(QNetworkProxy::NoProxy); } QUrl url = query.url(); if (!url.isValid()) { qWarning("Invalid URL: %s", qPrintable(url.toString())); return QList<QNetworkProxy>() << QNetworkProxy(QNetworkProxy::NoProxy); } netstatus_proxy_details_t details; memset(&details, 0, sizeof(netstatus_proxy_details_t)); #if BPS_VERSION >= 3001001 QByteArray bUrl(url.toEncoded()); QString sInterface(query.networkConfiguration().name()); QByteArray bInterface; if (!sInterface.isEmpty()) { if (query.networkConfiguration().type() != QNetworkConfiguration::InternetAccessPoint) { qWarning("Unsupported configuration type: %d", query.networkConfiguration().type()); return QList<QNetworkProxy>() << QNetworkProxy(QNetworkProxy::NoProxy); } bInterface = sInterface.toUtf8(); } if (netstatus_get_proxy_details_for_url(bUrl.constData(), (bInterface.isEmpty() ? NULL : bInterface.constData()), &details) != BPS_SUCCESS) { qWarning("netstatus_get_proxy_details_for_url failed! errno: %d", errno); return QList<QNetworkProxy>() << QNetworkProxy(QNetworkProxy::NoProxy); } #else if (netstatus_get_proxy_details(&details) != BPS_SUCCESS) { qWarning("netstatus_get_proxy_details failed! errno: %d", errno); return QList<QNetworkProxy>() << QNetworkProxy(QNetworkProxy::NoProxy); } #endif if (details.http_proxy_host == NULL) { // No proxy netstatus_free_proxy_details(&details); return QList<QNetworkProxy>() << QNetworkProxy(QNetworkProxy::NoProxy); } QString protocol = query.protocolTag(); if (protocol.startsWith(QLatin1String("http"), Qt::CaseInsensitive)) { // http, https proxy.setType((QNetworkProxy::HttpProxy)); } else if (protocol == QLatin1String("ftp")) { proxy.setType(QNetworkProxy::FtpCachingProxy); } else { // assume http proxy qDebug("Proxy type: %s assumed to be http proxy", qPrintable(protocol)); proxy.setType((QNetworkProxy::HttpProxy)); } // Set host // Note: ftp and https proxy type fields *are* obsolete. // The user interface allows only one host/port which gets duplicated // to all proxy type fields. proxy.setHostName(QString::fromUtf8(details.http_proxy_host)); // Set port proxy.setPort(details.http_proxy_port); // Set username if (details.http_proxy_login_user) proxy.setUser(QString::fromUtf8(details.http_proxy_login_user)); // Set password if (details.http_proxy_login_password) proxy.setPassword(QString::fromUtf8(details.http_proxy_login_password)); netstatus_free_proxy_details(&details); return QList<QNetworkProxy>() << proxy; }
int mainCore(int argc, char *argv[]) { #if QT_VERSION > 0x050000 #ifdef Q_OS_MAC // QDir dir(argv[0]); // e.g. appdir/Contents/MacOS/appname // dir.cdUp(); // dir.cdUp(); // dir.cd("PlugIns"); // QCoreApplication::setLibraryPaths(QStringList(dir.absolutePath())); // printf("after change, libraryPaths=(%s)\n", QCoreApplication::libraryPaths().join(",").toUtf8().data()); #endif QApplication a(argc, argv); qInstallMessageHandler(Utils::Logger::messageHandler); QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); #else QApplication a(argc, argv); qInstallMsgHandler(Utils::Logger::messageHandler); #endif QApplication::setApplicationName(QObject::tr("WizNote")); QApplication::setOrganizationName(QObject::tr("cn.wiz.wiznoteformac")); QIcon icon; icon.addPixmap(QPixmap(":/logo_16.png")); icon.addPixmap(QPixmap(":/logo_32.png")); icon.addPixmap(QPixmap(":/logo_48.png")); icon.addPixmap(QPixmap(":/logo_96.png")); icon.addPixmap(QPixmap(":/logo_128.png")); icon.addPixmap(QPixmap(":/logo_256.png")); QApplication::setWindowIcon(icon); #ifdef Q_OS_MAC wizMacInitUncaughtExceptionHandler(); #endif // setup settings QSettings::setDefaultFormat(QSettings::IniFormat); QSettings* globalSettings = new QSettings(Utils::PathResolve::globalSettingsFile(), QSettings::IniFormat); //#ifdef Q_OS_WIN // QString strDefaultFontName = settings.GetString("Common", "DefaultFont", ""); // QFont f = WizCreateWindowsUIFont(a, strDefaultFontName); // a.setFont(f); //#endif // setup plugin manager PluginManager pluginManager; PluginManager::setFileExtension(QLatin1String("pluginspec")); PluginManager::setGlobalSettings(globalSettings); const QStringList pluginPaths = getPluginPaths(); PluginManager::setPluginPaths(pluginPaths); // use 3 times(30M) of Qt default usage int nCacheSize = globalSettings->value("Common/Cache", 10240*3).toInt(); QPixmapCache::setCacheLimit(nCacheSize); QString strUserId = globalSettings->value("Users/DefaultUser").toString(); QString strPassword; CWizUserSettings userSettings(strUserId); // setup locale for welcome dialog QString strLocale = userSettings.locale(); QLocale::setDefault(strLocale); QTranslator translatorWizNote; QString strLocaleFile = Utils::PathResolve::localeFileName(strLocale); translatorWizNote.load(strLocaleFile); a.installTranslator(&translatorWizNote); QTranslator translatorQt; strLocaleFile = Utils::PathResolve::qtLocaleFileName(strLocale); translatorQt.load(strLocaleFile); a.installTranslator(&translatorQt); #ifndef Q_OS_MAC if (globalSettings->value("Common/Installed", 0).toInt() == 0) { globalSettings->setValue("Common/Installed", 1); installOnLinux(); } #endif // figure out auto login or manually login bool bFallback = true; // FIXME: move to WizService plugin initialize WizService::Token token; bool bAutoLogin = userSettings.autoLogin(); strPassword = userSettings.password(); if (bAutoLogin && !strPassword.isEmpty()) { bFallback = false; } QSettings* settings = new QSettings(Utils::PathResolve::userSettingsFile(strUserId), QSettings::IniFormat); PluginManager::setSettings(settings); //set network proxy CWizSettings wizSettings(Utils::PathResolve::globalSettingsFile()); if (wizSettings.GetProxyStatus()) { QNetworkProxy proxy; proxy.setType(QNetworkProxy::HttpProxy); proxy.setHostName(wizSettings.GetProxyHost()); proxy.setPort(wizSettings.GetProxyPort()); proxy.setUser(wizSettings.GetProxyUserName()); proxy.setPassword(wizSettings.GetProxyPassword()); QNetworkProxy::setApplicationProxy(proxy); } // manually login if (bFallback) { CWizLoginDialog loginDialog(strUserId, strLocale); if (QDialog::Accepted != loginDialog.exec()) return 0; strUserId = loginDialog.userId(); strPassword = loginDialog.password(); } // // // reset locale for current user. userSettings.setUser(strUserId); strLocale = userSettings.locale(); a.removeTranslator(&translatorWizNote); strLocaleFile = Utils::PathResolve::localeFileName(strLocale); translatorWizNote.load(strLocaleFile); a.installTranslator(&translatorWizNote); a.removeTranslator(&translatorQt); strLocaleFile = Utils::PathResolve::qtLocaleFileName(strLocale); translatorQt.load(strLocaleFile); a.installTranslator(&translatorQt); CWizDatabaseManager dbMgr(strUserId); if (!dbMgr.openAll()) { QMessageBox::critical(NULL, "", QObject::tr("Can not open database")); return 0; } WizService::Token::setUserId(strUserId); WizService::Token::setPasswd(strPassword); dbMgr.db().SetPassword(::WizEncryptPassword(strPassword)); // FIXME: move to plugins WizService::AvatarHost avatarHost; // FIXME: move to core plugin initialize Core::ThumbCache cache; MainWindow w(dbMgr); //settings->setValue("Users/DefaultUser", strUserId); PluginManager::loadPlugins(); w.show(); w.init(); int ret = a.exec(); if (w.isLogout()) { userSettings.setPassword(""); #ifndef BUILD4APPSTORE QProcess::startDetached(argv[0], QStringList()); #else QString strAppFile = QApplication::applicationDirPath().remove("/Contents/MacOS"); if (!QProcess::startDetached("/usr/bin/open -W "+strAppFile)) { QMessageBox::information(0, "Info", "open " + strAppFile + " failed"); } #endif } return ret; }
int main(int argc, char *argv[]) { AsemanApplication app(argc, argv); app.setApplicationName("Cutegram"); app.setApplicationDisplayName("Cutegram"); app.setApplicationVersion("2.4.0"); app.setOrganizationDomain("land.aseman"); app.setOrganizationName("Aseman"); app.setWindowIcon(QIcon(":/qml/Cutegram/files/icon.png")); app.setQuitOnLastWindowClosed(false); QCommandLineOption verboseOption(QStringList() << "V" << "verbose", QCoreApplication::translate("main", "Verbose Mode.")); QCommandLineOption forceOption(QStringList() << "f" << "force", QCoreApplication::translate("main", "Force to run multiple instance of Cutegram.")); QCommandLineOption dcIdOption(QStringList() << "dc-id", QCoreApplication::translate("main", "Sets default DC ID to <id>"), "id"); QCommandLineOption ipAdrsOption(QStringList() << "ip-address", QCoreApplication::translate("main", "Sets default IP Address to <ip>"), "ip"); QCommandLineParser parser; parser.setApplicationDescription(ABOUT_TEXT); parser.addHelpOption(); parser.addVersionOption(); parser.addOption(forceOption); parser.addOption(verboseOption); parser.addOption(dcIdOption); parser.addOption(ipAdrsOption); parser.process(app); if(!parser.isSet(verboseOption)) qputenv("QT_LOGGING_RULES", "tg.*=false"); else qputenv("QT_LOGGING_RULES", "tg.core.settings=false\n" "tg.core.outboundpkt=false\n" "tg.core.inboundpkt=false"); Telegram::setDefaultHostAddress( parser.isSet(ipAdrsOption)? parser.value(ipAdrsOption) : "149.154.167.50"); Telegram::setDefaultHostPort(443); Telegram::setDefaultHostDcId(parser.isSet(dcIdOption)? parser.value(dcIdOption).toInt() : 2); Telegram::setAppId(13682); Telegram::setAppHash("de37bcf00f4688de900510f4f87384bb"); if(app.readSetting("Proxy/enable",false).toBool()) { const int type = app.readSetting("Proxy/type",QNetworkProxy::HttpProxy).toInt(); const QString host = app.readSetting("Proxy/host").toString(); const quint16 port = app.readSetting("Proxy/port").toInt(); const QString user = app.readSetting("Proxy/user").toString(); const QString pass = app.readSetting("Proxy/pass").toString(); QNetworkProxy proxy; proxy.setType( static_cast<QNetworkProxy::ProxyType>(type) ); proxy.setHostName(host); proxy.setPort(port); proxy.setUser(user); proxy.setPassword(pass); QNetworkProxy::setApplicationProxy(proxy); } #ifdef Q_OS_MAC QPalette palette; palette.setColor(QPalette::Highlight, "#0d80ec"); palette.setColor(QPalette::HighlightedText, "#ffffff"); app.setPalette(palette); #endif #ifdef DESKTOP_DEVICE if( !parser.isSet(forceOption) && app.isRunning() ) { app.sendMessage("show"); return 0; } #endif CompabilityTools::version1(); Cutegram cutegram; cutegram.start( parser.isSet(forceOption) ); #ifdef DESKTOP_DEVICE QObject::connect( &app, SIGNAL(messageReceived(QString)), &cutegram, SLOT(incomingAppMessage(QString)) ); QObject::connect( &app, SIGNAL(clickedOnDock()) , &cutegram, SLOT(incomingAppMessage()) ); #endif return app.exec(); }
Q_DECL_EXPORT int main(int argc, char *argv[]) { QScopedPointer<QApplication> app(createApplication(argc, argv)); //qDebug()<<QString::fromUtf8("主线程地址是:")<<QThread::currentThread(); #if defined(Q_OS_SYMBIAN)||defined(Q_WS_SIMULATOR) QPixmap pixmap(":/Image/Symbian.png"); QSplashScreen *splash = new QSplashScreen(pixmap); splash->show(); splash->raise(); #endif #ifndef QT_NO_DEBUG QNetworkProxy proxy; proxy.setType(QNetworkProxy::HttpProxy); proxy.setHostName("localhost"); proxy.setPort(8888); QNetworkProxy::setApplicationProxy(proxy); #endif //int width=QApplication::desktop()->width(); //int height=QApplication::desktop()->height(); app->setApplicationName (QString::fromUtf8("IT之家")); app->setOrganizationName ("Stars"); app->setApplicationVersion ("1.2.2"); Settings *setting=new Settings; Utility *unility=new Utility; Cache *cacheContent=new Cache(setting); //qmlRegisterType<MyXmlListModel>("myXmlListModel",1,0,"MyXmlListModel"); //qmlRegisterType<MyXmlRole>("myXmlListModel", 1, 0, "MyXmlRole"); QmlApplicationViewer viewer; MyNetworkAccessManagerFactory *network = new MyNetworkAccessManagerFactory(); viewer.engine()->setNetworkAccessManagerFactory(network); viewer.rootContext ()->setContextProperty ("cacheContent",cacheContent); viewer.rootContext()->setContextProperty("settings",setting); viewer.rootContext()->setContextProperty("utility",unility); QWebSettings::globalSettings ()->setAttribute (QWebSettings::LocalContentCanAccessRemoteUrls,true); QWebSettings::globalSettings ()->setAttribute (QWebSettings::SpatialNavigationEnabled,true); QWebSettings::globalSettings ()->setAttribute (QWebSettings::SpatialNavigationEnabled, true); #if defined(Q_OS_SYMBIAN)||defined(Q_WS_SIMULATOR) #if defined(Q_OS_S60V5)//判断qt的版本 qWarning("build symbian s60v5"); viewer.setMainQmlFile(QLatin1String("qml/symbian-v5/main.qml")); if(setting->getValue("night_mode",false).toBool()) unility->setCss("./qml/symbian-v5/theme_black.css",viewer.width()-20);//设置默认的css else unility->setCss("./qml/symbian-v5/theme_white.css",viewer.width()-20); #elif defined(Q_OS_S60V3) qWarning("build symbian s60v3"); viewer.setMainQmlFile(QLatin1String("qml/symbian-v3/main.qml")); if(setting->getValue("night_mode",false).toBool()) unility->setCss("./qml/symbian-v3/theme_black.css",viewer.width()-20);//设置默认的css else unility->setCss("./qml/symbian-v3/theme_white.css",viewer.width()-20); #else qWarning("build symbian anna or simulator"); viewer.setMainQmlFile(QLatin1String("qml/symbian-anna/main.qml")); if(setting->getValue("night_mode",false).toBool()) unility->setCss("./qml/symbian-anna/theme_black.css",viewer.width()-20);//设置默认的css else unility->setCss("./qml/symbian-anna/theme_white.css",viewer.width()-20); #endif viewer.showExpanded(); splash->finish(&viewer); splash->deleteLater(); #elif defined(Q_OS_HARMATTAN) qWarning("build meego"); viewer.setMainQmlFile(QLatin1String("qml/meego/main.qml")); if(setting->getValue("night_mode",false).toBool()) unility->setCss("/opt/ithome/qml/meego/theme_black.css",460);//设置默认的css else unility->setCss("/opt/ithome/qml/meego/theme_white.css",460); viewer.showExpanded(); #endif return app->exec(); }
void MainWindow::init(AnyOption *opts) { cmdopts = opts; if (cmdopts->getValue("config") || cmdopts->getValue('c')) { qDebug(">> Config option in command prompt..."); QString cfgPath = cmdopts->getValue('c'); if (cfgPath.isEmpty()) { cfgPath = cmdopts->getValue("config"); } loadSettings(cfgPath); } else { loadSettings(QString("")); } if (mainSettings->value("signals/enable").toBool()) { connect(handler, SIGNAL(sigUSR1()), SLOT(unixSignalUsr1())); connect(handler, SIGNAL(sigUSR2()), SLOT(unixSignalUsr2())); } handler->start(); setMinimumWidth(320); setMinimumHeight(200); quint16 minimalWidth = mainSettings->value("view/minimal-width").toUInt(); quint16 minimalHeight = mainSettings->value("view/minimal-height").toUInt(); if (minimalWidth) { setMinimumWidth(minimalWidth); } if (minimalHeight) { setMinimumHeight(minimalHeight); } hiddenCurdor = new QCursor(Qt::BlankCursor); qDebug() << "Application icon: " << mainSettings->value("application/icon").toString(); setWindowIcon(QIcon( mainSettings->value("application/icon").toString() )); if (cmdopts->getValue("uri") || cmdopts->getValue('u')) { qDebug(">> Uri option in command prompt..."); QString uri = cmdopts->getValue('u'); if (uri.isEmpty()) { uri = cmdopts->getValue("uri"); } mainSettings->setValue("browser/homepage", uri); } QCoreApplication::setOrganizationName( mainSettings->value("application/organization").toString() ); QCoreApplication::setOrganizationDomain( mainSettings->value("application/organization-domain").toString() ); QCoreApplication::setApplicationName( mainSettings->value("application/name").toString() ); QCoreApplication::setApplicationVersion( mainSettings->value("application/version").toString() ); // --- Network --- // if (mainSettings->value("proxy/enable").toBool()) { bool system = mainSettings->value("proxy/system").toBool(); if (system) { QNetworkProxyFactory::setUseSystemConfiguration(system); } else { QNetworkProxy proxy; proxy.setType(QNetworkProxy::HttpProxy); proxy.setHostName( mainSettings->value("proxy/host").toString() ); proxy.setPort(mainSettings->value("proxy/port").toUInt()); if (mainSettings->value("proxy/auth").toBool()) { proxy.setUser(mainSettings->value("proxy/username").toString()); proxy.setPassword(mainSettings->value("proxy/password").toString()); } QNetworkProxy::setApplicationProxy(proxy); } } // --- Web View --- // view = new WebView(this); if (mainSettings->value("view/show_load_progress").toBool()) { // --- Progress Bar --- // loadProgress = new QProgressBar(view); loadProgress->setContentsMargins(2, 2, 2, 2); loadProgress->setMinimumWidth(100); loadProgress->setMinimumHeight(16); loadProgress->setFixedHeight(16); loadProgress->setAutoFillBackground(true); QPalette palette = this->palette(); palette.setColor(QPalette::Window, QColor(255,255,255,63)); loadProgress->setPalette(palette); // Do not work... Need Layout... loadProgress->setAlignment(Qt::AlignTop); loadProgress->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); loadProgress->hide(); } setCentralWidget(view); view->setSettings(mainSettings); view->setPage(new QWebPage(view)); // --- Disk cache --- // if (mainSettings->value("cache/enable").toBool()) { diskCache = new QNetworkDiskCache(this); QString location = mainSettings->value("cache/location").toString(); if (!location.length()) { #ifdef QT5 location = QStandardPaths::writableLocation(QStandardPaths::CacheLocation); #else location = QDesktopServices::storageLocation(QDesktopServices::CacheLocation); #endif } diskCache->setCacheDirectory(location); diskCache->setMaximumCacheSize(mainSettings->value("cache/size").toUInt()); if (mainSettings->value("cache/clear-on-start").toBool()) { diskCache->clear(); } else if (cmdopts->getFlag('C') || cmdopts->getFlag("clear-cache")) { diskCache->clear(); } CachingNetworkManager *nm = new CachingNetworkManager(); nm->setCache(diskCache); view->page()->setNetworkAccessManager(nm); } if (mainSettings->value("browser/cookiejar").toBool()) { view->page()->networkAccessManager()->setCookieJar(new PersistentCookieJar()); } view->settings()->setAttribute(QWebSettings::JavascriptEnabled, mainSettings->value("browser/javascript").toBool() ); view->settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, mainSettings->value("browser/javascript_can_open_windows").toBool() ); view->settings()->setAttribute(QWebSettings::JavascriptCanCloseWindows, mainSettings->value("browser/javascript_can_close_windows").toBool() ); view->settings()->setAttribute(QWebSettings::WebGLEnabled, mainSettings->value("browser/webgl").toBool() ); view->settings()->setAttribute(QWebSettings::JavaEnabled, mainSettings->value("browser/java").toBool() ); view->settings()->setAttribute(QWebSettings::PluginsEnabled, mainSettings->value("browser/plugins").toBool() ); if (mainSettings->value("inspector/enable").toBool()) { view->settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true); inspector = new QWebInspector(); inspector->setVisible(mainSettings->value("inspector/visible").toBool()); inspector->setMinimumSize(800, 600); inspector->setWindowTitle(mainSettings->value("application/name").toString() + " - WebInspector"); inspector->setWindowIcon(this->windowIcon()); inspector->setPage(view->page()); } connect(view, SIGNAL(titleChanged(QString)), SLOT(adjustTitle())); connect(view, SIGNAL(loadStarted()), SLOT(startLoading())); connect(view, SIGNAL(urlChanged(const QUrl &)), SLOT(urlChanged(const QUrl &))); connect(view, SIGNAL(loadProgress(int)), SLOT(setProgress(int))); connect(view, SIGNAL(loadFinished(bool)), SLOT(finishLoading(bool))); connect(view, SIGNAL(iconChanged()), SLOT(pageIconLoaded())); QDesktopWidget *desktop = QApplication::desktop(); connect(desktop, SIGNAL(resized(int)), SLOT(desktopResized(int))); // Window show, start events loop show(); view->page()->view()->setFocusPolicy(Qt::StrongFocus); view->setFocusPolicy(Qt::StrongFocus); if (mainSettings->value("view/hide_mouse_cursor").toBool()) { QApplication::setOverrideCursor(Qt::BlankCursor); view->setCursor(*hiddenCurdor); } int delay_resize = 0; if (mainSettings->value("view/startup_resize_delayed").toBool()) { delay_resize = mainSettings->value("view/startup_resize_delay").toInt(); } delayedResize->singleShot(delay_resize, this, SLOT(delayedWindowResize())); int delay_load = 0; if (mainSettings->value("browser/startup_load_delayed").toBool()) { delay_load = mainSettings->value("browser/startup_load_delay").toInt(); } delayedLoad->singleShot(delay_load, this, SLOT(delayedPageLoad())); }
//using namespace cv; //********************************************************************* //* Main entry point to the program. //********************************************************************* int main(int argc, char *argv[]) { signal(SIGSEGV, fault_handler); // install our handler // Setup the QApplication so we can begin Application *a = new Application(argc, argv); global.application = a; // Setup the QLOG functions for debugging & messages QsLogging::Logger& logger = QsLogging::Logger::instance(); logger.setLoggingLevel(QsLogging::TraceLevel); // const QString sLogPath(a->applicationDirPath()); QsLogging::DestinationPtr debugDestination( QsLogging::DestinationFactory::MakeDebugOutputDestination() ); logger.addDestination(debugDestination.get()); // Begin setting up the environment StartupConfig startupConfig; global.argc = argc; global.argv = argv; startupConfig.accountId = -1; for (int i=1; i<=argc; i++) { QString parm(argv[i]); if (parm == "--help" || parm == "-?") { printf("\n\n"); printf("NixNote command line options:\n"); printf(" --help or -? Show this message\n"); printf(" --accountId=<id> Start with specified user account\n"); printf(" --dontStartMinimized Override option to start minimized\n"); printf(" --disableEditing Disable note editing\n"); printf(" --enableIndexing Enable background Indexing (can cause problems)\n"); printf(" --openNote=<lid> Open a specific note on startup\n"); printf(" --forceSystemTrayAvailable Force the program to accept that\n"); printf(" the desktop supports tray icons.\n"); printf(" --startMinimized Force a startup with NixNote minimized\n"); printf(" --syncAndExit Synchronize and exit the program.\n"); printf("\n\n"); return 0; } if (parm.startsWith("--accountId=", Qt::CaseSensitive)) { parm = parm.mid(12); startupConfig.accountId = parm.toInt(); } if (parm.startsWith("--openNote=", Qt::CaseSensitive)) { parm = parm.mid(11); startupConfig.startupNoteLid = parm.toInt(); } if (parm == "--disableEditing") { startupConfig.disableEditing = true; } if (parm == "--dontStartMinimized") { startupConfig.forceNoStartMinimized = true; } if (parm == "--startMinimized") { startupConfig.forceStartMinimized = true; } if (parm == "--newNote") { startupConfig.startupNewNote = true; } if (parm == "--syncAndExit") { startupConfig.syncAndExit = true; } if (parm == "--enableIndexing") { startupConfig.enableIndexing = true; } if (parm == "--forceSystemTrayAvailable") { startupConfig.forceSystemTrayAvailable = true; } } startupConfig.programDirPath = global.getProgramDirPath() + QDir().separator(); startupConfig.name = "NixNote"; global.setup(startupConfig); QString logPath = global.fileManager.getLogsDirPath("")+"messages.log"; QsLogging::DestinationPtr fileDestination( QsLogging::DestinationFactory::MakeFileDestination(logPath) ) ; logger.addDestination(fileDestination.get()); // Show Qt version. This is useful for debugging QLOG_DEBUG() << "Program Home: " << global.fileManager.getProgramDirPath(""); QLOG_INFO() << "Built on " << __DATE__ << " at " << __TIME__; QLOG_INFO() << "Built with Qt" << QT_VERSION_STR << "running on" << qVersion(); //QLOG_INFO() << "Thrift version: " << PACKAGE_VERSION; // Create a shared memory region. We use this to communicate // with any other instance that may be running. If another instance // is found we need to either show that one or kill this one. bool memInitNeeded = true; if( !global.sharedMemory->create( 512*1024, QSharedMemory::ReadWrite) ) { // Attach to it and detach. This is done in case it crashed. global.sharedMemory->attach(); global.sharedMemory->detach(); if( !global.sharedMemory->create( 512*1024, QSharedMemory::ReadWrite) ) { if (startupConfig.startupNewNote) { global.sharedMemory->attach(); global.sharedMemory->lock(); void *dataptr = global.sharedMemory->data(); memcpy(dataptr, "NEW_NOTE", 8); // Tell the other guy create a new note QLOG_INFO() << "Another NixNote was found. Requesting it to start another note"; exit(0); // Exit this one } if (startupConfig.startupNoteLid > 0) { global.sharedMemory->attach(); global.sharedMemory->lock(); void *dataptr = global.sharedMemory->data(); QString msg = "OPEN_NOTE:" +QString::number(startupConfig.startupNoteLid) + " "; memcpy(dataptr, msg.toStdString().c_str(), msg.length()); // Tell the other guy to open a note QLOG_INFO() << "Another NixNote was found. Requesting it to open a note"; exit(0); // Exit this one } // If we've gotten this far, we need to either stop this instance or stop the other global.settings->beginGroup("Debugging"); QString startup = global.settings->value("onMultipleInstances", "SHOW_OTHER").toString(); global.settings->endGroup(); global.sharedMemory->attach(); global.sharedMemory->lock(); void *dataptr = global.sharedMemory->data(); if (startup == "SHOW_OTHER") { memcpy(dataptr, "SHOW_WINDOW", 11); // Tell the other guy to show himself QLOG_INFO() << "Another NixNote was found. Stopping this instance"; exit(0); // Exit this one } if (startup == "STOP_OTHER") { memcpy(dataptr, "IMMEDIATE_SHUTDOWN", 18); // Tell the other guy to shut down memInitNeeded = false; } global.sharedMemory->unlock(); } } if (memInitNeeded) { global.sharedMemory->lock(); memset(global.sharedMemory->data(), 0, global.sharedMemory->size()); global.sharedMemory->unlock(); } // Save the clipboard global.clipboard = QApplication::clipboard(); NixNote *w = new NixNote(); w->setAttribute(Qt::WA_QuitOnClose); bool show = true; if (global.syncAndExit) show = false; if (global.minimizeToTray() && global.startMinimized) show = false; if (show) w->show(); else w->hide(); if (global.startMinimized) w->showMinimized(); // Setup the proxy QNetworkProxy proxy; proxy.setType(QNetworkProxy::HttpProxy); if (global.isProxyEnabled()) { QString host = global.getProxyHost(); int port = global.getProxyPort(); QString user = global.getProxyUserid(); QString password = global.getProxyPassword(); if (host.trimmed() != "") proxy.setHostName(host.trimmed()); if (port > 0) proxy.setPort(port); if (user.trimmed() != "") proxy.setUser(user.trimmed()); if (password.trimmed() != "") proxy.setPassword(password.trimmed()); QNetworkProxy::setApplicationProxy(proxy); } int rc = a->exec(); QLOG_DEBUG() << "Unlocking memory"; global.sharedMemory->unlock(); QLOG_DEBUG() << "Deleting NixNote instance"; delete w; QLOG_DEBUG() << "Quitting application instance"; a->exit(rc); QLOG_DEBUG() << "Deleting application instance"; delete a; QLOG_DEBUG() << "Exiting: RC=" << rc; exit(rc); return rc; }
void QueryThread::run() { qRegisterMetaType<UpdateInfo>("UpdateInfo"); this->networkManager = new QNetworkAccessManager(); this->cookieJar = new NetWorkCookieJar(NULL); this->networkManager->setCookieJar(this->cookieJar); this->timer = new QTimer(); this->timer->setSingleShot(true); QNetworkRequest request; for(int i = 0; i < clickInfos.count(); i++) { ClickInfo clickInfo = clickInfos.at(i); const QList<QPair<QString, int> >& proxys = clickInfo.getProxys(); const QList<QPair<QString, QString> >& keyWords = clickInfo.getKeyWords(); for(int j = 0; j < proxys.count(); j++) { QString hostname = proxys.at(j).first; int port = proxys.at(j).second; // //------------------- // QString currentIp = CommonUtils::getMyIp(); // hostname = currentIp; // //------------------- qDebug() << "use proxy->" << hostname << ":" << port; QNetworkProxy proxy; proxy.setType(QNetworkProxy::HttpProxy); proxy.setHostName(hostname); proxy.setPort(port); // proxy.setType(QNetworkProxy::NoProxy); this->networkManager->setProxy(proxy); lastUrl = ""; //clear cookie this->clearCookies(); for(int m = 0; m < keyWords.count(); m++) { const QPair<QString, QString>& keyWord = keyWords.at(m); for(int k = 0; k < 20; k++) { this->sleep(3); int resultCode = this->queryWord(keyWord.first, keyWord.second, request, hostname); if (resultCode == 1) { qDebug() << "thread:" << id << " " << hostname << " not get result value, current times:" << k; continue; } else if (resultCode == 2) { qDebug() << "thread:" << id << " " << hostname << " not accessable, current times:" << k; break; } this->sleep(3); resultCode = this->queryWord(keyWord.second, keyWord.first, request, hostname); if (resultCode == 1) { qDebug() << "thread:" << id << " " << hostname << " not get result value, current times:" << k; continue; } else if (resultCode == 2) { qDebug() << "thread:" << id << " " << hostname << " not accessable, current times:" << k; break; } qDebug() << "thread:" << id << " " << hostname << " recieve data, current times:" << k; } } } } delete this->networkManager; delete this->cookieJar; delete this->timer; }
bool HttpClient::downloadFile( QString &urlIn, QString &destinationIn ) { // qDebug() << "HttpClient::downloadFile: url=" << urlIn << ", dest=" << destinationIn; if( downloadRunning == true ) { qWarning( "HttpClient(%d): download is running!", __LINE__ ); return false; } _url = urlIn; _destination = destinationIn; QUrl url( urlIn ); QFileInfo fileInfo( destinationIn ); if( urlIn.isEmpty() || ! url.isValid() || fileInfo.fileName().isEmpty() ) { qWarning( "HttpClient(%d): Url or destination file are invalid!", __LINE__ ); return false; } tmpFile = new QFile( destinationIn + "." + QDateTime::currentDateTime().toString("yyyyMMdd_hhmmss") ); if( ! tmpFile->open( QIODevice::WriteOnly ) ) { qWarning( "HttpClient(%d): Unable to open the file %s: %s", __LINE__, tmpFile->fileName ().toLatin1().data(), tmpFile->errorString().toLatin1().data() ); delete tmpFile; tmpFile = static_cast<QFile *> (0); return false; } // Check, if a proxy is defined in the configuration data. If true, we do use it. extern QSettings _settings; QString proxy = _settings.value( "/Internet/Proxy", "" ).toString(); if( proxy.isEmpty() ) { // Check the user's environment, if a proxy is defined there. char* proxyFromEnv = getenv("http_proxy"); if( proxyFromEnv == 0 ) { proxyFromEnv = getenv("HTTP_PROXY"); } if( proxyFromEnv ) { QString qProxy( proxyFromEnv ); // remove an existing http prefix proxy = qProxy.remove("http://"); } } if( ! proxy.isEmpty() ) { QString hostName; quint16 port; if( parseProxy( proxy, hostName, port ) == true ) { QNetworkProxy proxy; proxy.setType( QNetworkProxy::HttpProxy ); proxy.setHostName( hostName ); proxy.setPort( port ); manager->setProxy( proxy ); } } QNetworkRequest request; QString appl = QCoreApplication::applicationName() + "/" + QCoreApplication::applicationVersion() + " (Qt" + QT_VERSION_STR + "/X11)"; request.setUrl( QUrl( _url, QUrl::TolerantMode )); request.setRawHeader( "User-Agent", appl.toLatin1() ); reply = manager->get(request); if( ! reply ) { qWarning( "HttpClient(%d): Reply object is invalid!", __LINE__ ); return false; } reply->setReadBufferSize(0); connect( reply, SIGNAL(readyRead()), this, SLOT(slotReadyRead()) ); connect( reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(slotError(QNetworkReply::NetworkError)) ); connect( reply, SIGNAL(finished()), this, SLOT(slotFinished()) ); connect( reply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(slotDownloadProgress( qint64, qint64 )) ); downloadRunning = true; if ( _progressDialog != static_cast<QProgressDialog *> (0) ) { _progressDialog->setWindowTitle( tr( "HTTP" ) ); _progressDialog->setLabelText( tr( "Downloading %1" ).arg( fileInfo.fileName() ) ); _progressDialog->show(); } timer->start(); return true; }
frmMain::frmMain(QWidget *parent) : QDialog(parent), ui(new Ui::frmMain) { ui->setupUi(this); // Сбрасываем флаг выхода после выполнения запроса: bExitOnReply = false; // Назначаем заголовок для таба с настройками подключения: ui->tabWidget->setTabText(0, tr("Connection settings")); // Добавляем типы прокси: ui->cbProxyType->addItem(tr("HTTP proxy")); ui->cbProxyType->addItem(tr("SOCKS 5 proxy")); // Создаём объект QNetworkAccessManager и назначаем для него обработчик // завершения запроса: nman = new QNetworkAccessManager(); connect(nman, SIGNAL(finished(QNetworkReply*)), this, SLOT(readReply(QNetworkReply*))); // Подключаем обработчик тика таймера таймаута: connect(&timer, SIGNAL(timeout()), this, SLOT(requestTimeout())); // Формируем путь к директории данных программы. // Получаем путь к директории пользователя: QString sAppDataFolder = QDir::homePath(); // Добавляем универсальный разделитель путей: sAppDataFolder.append(QDir::separator()); // Добавляем директорию с файлами конфигурации приложений: sAppDataFolder.append(CONFIG_FOLDER); // Снова добавляем универсальный разделитель путей: sAppDataFolder.append(QDir::separator()); // Добавляем название программы (директория данных программы будет называться // так же, как и сама программа): sAppDataFolder.append(APP_NAME_SIGN); // Формируем путь к файлу с настройками приложения: QString sSetsFile = sAppDataFolder; sSetsFile.append(QDir::separator()); sSetsFile.append(APP_NAME_SIGN); sSetsFile.append(INI_FILESUF); // Создаём объект для работы с настройками: QSettings sets(sSetsFile, QSettings::IniFormat, this); sets.setIniCodec(UTF8_ABBR); // Считываем настройки приложения. // Считываем таймаут: iTimeout = sets.value(SETS_TIMEOUT, DEF_TIMEOUT).toInt(); if (iTimeout < 5 || iTimeout > 360) iTimeout = DEF_TIMEOUT; // Считываем флаг использования прокси: bUseProxy = sets.value(SETS_USE_PROXY, DEF_USE_PROXY).toBool(); // Считываем тип прокси: iProxyType = sets.value(SETS_PROXY_TYPE, DEF_PROXY_TYPE).toInt(); // Может использоваться только два типа прокси - SOCKS 5 и HTTP // (т.е., соответственно, 0 и 1). Если что-то другое - ставим тип 0 (HTTP): if (iProxyType < DEF_PROXY_TYPE || iProxyType > 1) iProxyType = DEF_PROXY_TYPE; // Считываем хост прокси: sProxyHost = sets.value(SETS_PROXY_HOST, DEF_PROXY_HOST).toString(); // Считываем порт прокси: iProxyPort = sets.value(SETS_PROXY_PORT, DEF_PROXY_PORT).toInt(); if (iProxyPort < 1 || iProxyType > 65535) iProxyPort = DEF_PROXY_PORT; // Считываем флаг аутентификации прокси: bProxyAuth = sets.value(SETS_PROXY_AUTH, DEF_PROXY_AUTH).toBool(); // Считываем имя пользователя и пароль аутентификации прокси: sProxyUser = sets.value(SETS_PROXY_USER, DEF_PROXY_USER).toString(); sProxyPass = sets.value(SETS_PROXY_PASS, DEF_PROXY_PASS).toString(); // Настройки прочитаны. Выводим их в контролы: ui->sbTimeout->setValue(iTimeout); ui->cbUseProxy->setChecked(bUseProxy); ui->cbProxyType->setCurrentIndex(iProxyType); ui->leProxyHost->setText(sProxyHost); ui->sbProxyPort->setValue(iProxyPort); ui->cbAuth->setChecked(bProxyAuth); ui->leProxyUser->setText(sProxyUser); ui->leProxyPass->setText(sProxyPass); ui->curver->setText(qApp->applicationVersion()); connect( ui->btnCheck, SIGNAL( clicked() ), this, SLOT( slotCheckUpdate() ) ); // В случае, если включено использование прокси - устанавливаем прокси для // приложения: if (bUseProxy && !sProxyHost.isEmpty()) { QNetworkProxy proxy; if (iProxyType > 0) proxy.setType(QNetworkProxy::Socks5Proxy); else proxy.setType(QNetworkProxy::HttpProxy); proxy.setHostName(sProxyHost); proxy.setPort(iProxyPort); if (bProxyAuth && !sProxyUser.isEmpty()) { proxy.setUser(sProxyUser); proxy.setPassword(sProxyPass); } QNetworkProxy::setApplicationProxy(proxy); } }
int main(int argc, char** argv) { // Parse options // TODO: http://api.kde.org/4.x-api/kdelibs-apidocs/kdecore/html/classKCmdLineArgs.html { QStringList arguments = getCliArguments(argc, argv); if ((arguments.indexOf("-h") != -1) || (arguments.indexOf("--help") != -1)) { qDebug() << "QtWeb options:"; qDebug() << ""; qDebug() << "--maximize"; qDebug() << ""; qDebug() << "--url"; qDebug() << "--user-agent"; qDebug() << "--socks host:port"; qDebug() << "--socks-resolver"; qDebug() << "--extra-enabled"; return EXIT_SUCCESS; } int optionIndex = 0; // maximize if ((optionIndex = arguments.indexOf("--maximize")) != -1) { options.maximize = true; } // url if ((optionIndex = arguments.indexOf("--url")) != -1) { options.url = arguments.at(optionIndex + 1); } // user agent if ((optionIndex = arguments.indexOf("--user-agent")) != -1) { options.userAgent = arguments.at(optionIndex + 1); Wrapper::QWebPage::userAgent = options.userAgent; } // socks if ((optionIndex = arguments.indexOf("--socks")) != -1) { options.socks = arguments.at(optionIndex + 1); } // socks resolver if ((optionIndex = arguments.indexOf("--socks-resolver")) != -1) { options.socksResolver = true; } // enable extra if ((optionIndex = arguments.indexOf("--extra-enabled")) != -1) { options.extraEnabled = true; } qDebug() << "Maximize" << options.maximize; qDebug() << "Load" << options.url; qDebug() << "User-agent" << options.userAgent; qDebug() << "Socks" << options.socks; qDebug() << "Socks resolver" << options.socksResolver; qDebug() << "Extra enabled" << options.extraEnabled; } QApplication a(argc, argv); // release view Lambda qHandler([&]() { view.reset(); }); QObject::connect(&a, SIGNAL(aboutToQuit()), &qHandler, SLOT(call())); view.reset(new QWebView); view->setPage(new Wrapper::QWebPage); // add "http://" if (options.url.indexOf("://") == -1) { options.url = QLatin1String("http://") + options.url; } // socks if (options.socks.length()) { QNetworkProxy proxy; proxy.setType(QNetworkProxy::Socks5Proxy); int colonPosition = options.socks.lastIndexOf(":"); if (colonPosition == -1) { qDebug() << "Malformed proxy (HOST:PORT is needed)"; return EXIT_FAILURE; } proxy.setHostName(options.socks.left(colonPosition)); proxy.setPort(options.socks.right(options.socks.length() - 1 - colonPosition).toInt()); if (options.socksResolver) { proxy.setCapabilities(proxy.capabilities() | QNetworkProxy::HostNameLookupCapability); } else { proxy.setCapabilities(proxy.capabilities() & ~QNetworkProxy::HostNameLookupCapability); } view->page()->networkAccessManager()->setProxy(proxy); qDebug() << "Proxy installed"; } // Add inspector. view->page()->settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true); if (options.extraEnabled) { view->page()->settings()->setAttribute(QWebSettings::PluginsEnabled, true); view->page()->settings()->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, true); view->page()->settings()->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, true); view->page()->settings()->setAttribute(QWebSettings::LocalStorageEnabled, true); view->page()->settings()->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, true); } view->load(QUrl(options.url)); if (options.maximize) { view->showMaximized(); } else { view->show(); } // execute JS { // Reinterpret pointer to Wrapper class Wrapper::QWebPage *page = reinterpret_cast<Wrapper::QWebPage *>(view->page()); // async read from STDIN // and eval this as JS code stdinNotifier.reset(new QSocketNotifier(STDIN_FILENO, QSocketNotifier::Read)); QObject::connect(&(*stdinNotifier), SIGNAL(activated(int)), new Lambda([&] { qDebug() << Q_FUNC_INFO; QTextStream stream(stdin, QIODevice::ReadOnly); QString jsToExecute; forever { fd_set stdinfd; FD_ZERO( &stdinfd ); FD_SET( STDIN_FILENO, &stdinfd ); struct timeval tv; tv.tv_sec = 0; tv.tv_usec = 0; int ready = select(1, &stdinfd, NULL, NULL, &tv); if (ready > 0) { jsToExecute += stream.readLine(); } else { break; } } // TODO : drop code duplicating if (jsToExecute.startsWith(options.moveToElementPrefix)) { QString moveMouseToElementSelector = jsToExecute.remove(0, options.moveToElementPrefix.length()); page->moveMouseTo(page->mainFrame()->findFirstElement(moveMouseToElementSelector)); } else if (jsToExecute.startsWith(options.clickToElementPrefix)) { QString clickMouseToElementSelector = jsToExecute.remove(0, options.clickToElementPrefix.length()); page->clickTo(page->mainFrame()->findFirstElement(clickMouseToElementSelector)); } else if (jsToExecute.startsWith(options.cursorSetToElementPrefix)) { QString setCursorToElementSelector = jsToExecute.remove(0, options.cursorSetToElementPrefix.length()); page->setCursorTo(page->mainFrame()->findFirstElement(setCursorToElementSelector)); } else { view->page()->mainFrame()->evaluateJavaScript(jsToExecute); } }), SLOT(call())); stdinNotifier->setEnabled(true); }
void RemoteDatabase::reloadSettings() { // Load all configured client certificates m_clientCertFiles.clear(); auto client_certs = Settings::getValue("remote", "client_certificates").toStringList(); for(const QString& path : client_certs) { QFile file(path); file.open(QFile::ReadOnly); QSslCertificate cert(&file); file.close(); m_clientCertFiles.insert({path, cert}); } // Always add the default certificate for anonymous access to dbhub.io { QFile file(":/user_certs/public.cert.pem"); file.open(QFile::ReadOnly); QSslCertificate cert(&file); file.close(); m_clientCertFiles.insert({":/user_certs/public.cert.pem", cert}); } // Configure proxy to use { QString type = Settings::getValue("proxy", "type").toString(); QNetworkProxy proxy; if(type == "system") { // For system settings we have to get the system-wide proxy and use that // Get list of proxies for accessing dbhub.io via HTTPS and use the first one auto list = QNetworkProxyFactory::systemProxyForQuery(QNetworkProxyQuery(QUrl("https://db4s.dbhub.io/"))); proxy = list.front(); } else { // For any other type we have to set up our own proxy configuration // Retrieve the required settings QString host = Settings::getValue("proxy", "host").toString(); unsigned short port = static_cast<unsigned short>(Settings::getValue("proxy", "port").toUInt()); bool authentication = Settings::getValue("proxy", "authentication").toBool(); if(type == "http") proxy.setType(QNetworkProxy::HttpProxy); else if(type == "socks5") proxy.setType(QNetworkProxy::Socks5Proxy); else proxy.setType(QNetworkProxy::NoProxy); proxy.setHostName(host); proxy.setPort(port); // Only set authentication details when authentication is required if(authentication) { QString user = Settings::getValue("proxy", "user").toString(); QString password = Settings::getValue("proxy", "password").toString(); proxy.setUser(user); proxy.setPassword(password); } } // Start using the new proxy configuration QNetworkProxy::setApplicationProxy(proxy); } }