QByteArray AutoUpdater::getUpdateFlist() { QByteArray flist; QNetworkAccessManager *manager = new QNetworkAccessManager; manager->setProxy(Settings::getInstance().getProxy()); QNetworkReply* reply = manager->get(QNetworkRequest(QUrl(flistURI))); while (!reply->isFinished()) { if (abortFlag) return flist; qApp->processEvents(); } if (reply->error() != QNetworkReply::NoError) { qWarning() << "getUpdateFlist: network error: " + reply->errorString(); reply->deleteLater(); manager->deleteLater(); return flist; } flist = reply->readAll(); reply->deleteLater(); manager->deleteLater(); return flist; }
AutoUpdater::UpdateFile AutoUpdater::getUpdateFile(UpdateFileMeta fileMeta, std::function<void(int,int)> progressCallback) { UpdateFile file; file.metadata = fileMeta; QNetworkAccessManager *manager = new QNetworkAccessManager; manager->setProxy(Settings::getInstance().getProxy()); QNetworkReply* reply = manager->get(QNetworkRequest(QUrl(filesURI+fileMeta.id))); QObject::connect(reply, &QNetworkReply::downloadProgress, progressCallback); while (!reply->isFinished()) { if (abortFlag) return file; qApp->processEvents(); } if (reply->error() != QNetworkReply::NoError) { qWarning() << "getUpdateFile: network error: " + reply->errorString(); reply->deleteLater(); manager->deleteLater(); return file; } file.data = reply->readAll(); reply->deleteLater(); manager->deleteLater(); return file; }
void KDSoapThreadTask::process(QNetworkAccessManager& accessManager) { // Can't use m_iface->asyncCall, it would use the accessmanager from the main thread //KDSoapPendingCall pendingCall = m_iface->asyncCall(m_method, m_message, m_action); //Headers should be always qualified for (KDSoapHeaders::Iterator it = m_data->m_headers.begin(); it != m_data->m_headers.end(); ++it) { it->setQualified(true); } #if QT_VERSION >= 0x040700 QNetworkCookieJar* jar = m_data->m_iface->d->accessManager()->cookieJar(); // Qt-4.6: this aborts in setParent(this) because the jar is from another thread // Qt-4.7: it's from a different thread, so this won't change the parent object accessManager.setCookieJar(jar); #endif accessManager.setProxy( m_data->m_iface->d->accessManager()->proxy() ); QBuffer* buffer = m_data->m_iface->d->prepareRequestBuffer(m_data->m_method, m_data->m_message, m_data->m_headers); QNetworkRequest request = m_data->m_iface->d->prepareRequest(m_data->m_method, m_data->m_action); QNetworkReply* reply = accessManager.post(request, buffer); m_data->m_iface->d->setupReply(reply); KDSoapPendingCall pendingCall(reply, buffer); KDSoapPendingCallWatcher *watcher = new KDSoapPendingCallWatcher(pendingCall, this); connect(watcher, SIGNAL(finished(KDSoapPendingCallWatcher*)), this, SLOT(slotFinished(KDSoapPendingCallWatcher*))); }
bool Utils::sendBlockingNetRequest(const QUrl& theUrl, QString& reply) { QNetworkAccessManager manager; QEventLoop q; QTimer tT; manager.setProxy(M_PREFS->getProxy(QUrl("http://merkaartor.be"))); tT.setSingleShot(true); connect(&tT, SIGNAL(timeout()), &q, SLOT(quit())); connect(&manager, SIGNAL(finished(QNetworkReply*)), &q, SLOT(quit())); QNetworkReply *netReply = manager.get(QNetworkRequest(theUrl)); tT.start(M_PREFS->getNetworkTimeout()); q.exec(); if(tT.isActive()) { // download complete tT.stop(); } else { return false; } reply = netReply->readAll(); return true; }
QByteArray Toxme::makeJsonRequest(QString url, QString json, QNetworkReply::NetworkError &error) { if (error) return QByteArray(); QNetworkAccessManager netman; netman.setProxy(Settings::getInstance().getProxy()); QNetworkRequest request{url}; request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); QNetworkReply* reply = netman.post(request,json.toUtf8()); while (!reply->isFinished()) { QThread::msleep(1); qApp->processEvents(); } error = reply->error(); if (error) { qWarning() << "makeJsonRequest: A network error occured:" << reply->errorString(); return QByteArray(); } return reply->readAll(); }
bool AWebservice::makeRequest(const QNetworkRequest& request, const QString& data) { QNetworkAccessManager http; http.setProxy(defaultProxy()); QNetworkReply* reply = NULL; if (data.length() == 0) reply = http.get(request); else reply = http.post(request, data.toUtf8()); QObject::connect(reply, SIGNAL(sslErrors(const QList<QSslError>&)), this, SLOT(process_ssl_errors(const QList<QSslError>&))); QObject::connect(reply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(process_download_progress(qint64, qint64))); QObject::connect(reply, SIGNAL(uploadProgress(qint64, qint64)), this, SLOT(process_upload_progress(qint64, qint64))); QEventLoop loop; QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); loop.exec(); bool result = parseReply(reply); delete reply; return result; }
QByteArray QWget::exec(QUrl url, QByteArray postData) { QNetworkAccessManager * manager = network_manager(); manager->setProxy(_proxy); connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(onFinished(QNetworkReply*))); QNetworkRequest * nr = new QNetworkRequest(url); //nr->setRawHeader("User-Agent","Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"); nr->setRawHeader("User-Agent","Opera/9.0"); qDebug() << url; finished = false; if(postData.isNull()) manager->get(*nr); else manager->post(*nr,postData); while(!finished) { QCoreApplication::instance()->processEvents(); #ifdef WIN32 Sleep(50); #else usleep(50000); #endif } delete nr; QCoreApplication::instance()->processEvents(); //qDebug() << "Ans: " << ans; // delete nr; return ans; return QByteArray(); }
QNetworkAccessManager* newManager(QObject* parent) { QNetworkAccessManager* netman = new QNetworkAccessManager(parent); if(Options::instance()->useProxy()) { netman->setProxy(Options::instance()->getProxy()); } return netman; }
QNetworkAccessManager *MyNetworkAccessManagerFactory::create(QObject *parent) { QNetworkAccessManager *nam = new QNetworkAccessManager(parent); if (!proxyHost.isEmpty()) { qDebug() << "Created QNetworkAccessManager using proxy" << (proxyHost + ":" + QString::number(proxyPort)); QNetworkProxy proxy(QNetworkProxy::HttpCachingProxy, proxyHost, proxyPort); nam->setProxy(proxy); } return nam; }
bool DataModelGUI::updateMIRIAM(CMIRIAMResources & miriamResources) { bool success = true; mpMiriamResources = &miriamResources; QNetworkAccessManager *manager = new QNetworkAccessManager(this); QString server = FROM_UTF8(CCopasiRootContainer::getConfiguration()->getProxyServer()); // if we have a proxy server use it if (!server.isEmpty()) { int port = CCopasiRootContainer::getConfiguration()->getProxyPort(); QString user = FROM_UTF8(CCopasiRootContainer::getConfiguration()->getProxyUser()); QString pass = FROM_UTF8(CCopasiRootContainer::getConfiguration()->getProxyPassword()); // if we have a username, but no password stored (which would be in clear text), then // ask for password. if (!user.isEmpty() && pass.isEmpty()) { bool flag = false; QString temp = QInputDialog::getText( (QWidget*)((CQCopasiApplication*)qApp)->getMainWindow(), QString("Enter proxy password"), QString("You specified a proxy username, but no pasword, please enter the proxy password"), QLineEdit::Password, QString(""), &flag ); if (flag) pass = temp; } manager->setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, server, port, user, pass)); } // start progress dialog mpProgressBar = CProgressBar::create(); mpProgressBar->setName("MIRIAM Resources Update..."); mDownloadedBytes = 0; mDownloadedTotalBytes = 100; mUpdateItem = ((CProcessReport*)mpProgressBar)->addItem("Download MIRIAM info", mDownloadedBytes, &mDownloadedTotalBytes); connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(miriamDownloadFinished(QNetworkReply*))); QNetworkReply* reply = manager->get(QNetworkRequest(QUrl("http://www.ebi.ac.uk/miriam/main/export/xml/"))); connect(reply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(miriamDownloadProgress(qint64, qint64))); return success; }
//ダウンロードしてアップデートする 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)); }
void ProxyCheckThread::run() { QNetworkAccessManager *manager = new QNetworkAccessManager(); manager->setProxy(proxy); QNetworkRequest request = QNetworkRequest(QUrl("http://www.google.com")); request.setRawHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/534.27+ (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27"); QNetworkReply *reply = manager->get(request); QEventLoop loop; connect(manager, SIGNAL(finished(QNetworkReply *)), &loop, SLOT(quit())); loop.exec(); QByteArray data = reply->readAll(); result = data.contains("<title>Google</title>"); delete reply; delete manager; }
QByteArray Toxme::getServerPubkey(QString url, QNetworkReply::NetworkError &error) { if (error) return QByteArray(); // Get key QNetworkAccessManager netman; netman.setProxy(Settings::getInstance().getProxy()); QNetworkRequest request{url}; request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); QNetworkReply* reply = netman.get(request); while (!reply->isFinished()) { QThread::msleep(1); qApp->processEvents(); } error = reply->error(); if (error) { qWarning() << "getServerPubkey: A network error occured:" << reply->errorString(); return QByteArray(); } // Extract key static const QByteArray pattern{"key\":\""}; QString json = reply->readAll(); delete reply; json = json.remove(' '); int start = json.indexOf(pattern) + pattern.length(); int end = json.indexOf("\"", start); int pubkeySize = (end - start) / 2; QString rawKey = json.mid(start, pubkeySize*2); QByteArray key; // I think, exist more easy way to convert key to ByteArray for (int i = 0; i < pubkeySize; i++) { QString byte = rawKey.mid(i*2, 2); key[i] = byte.toInt(nullptr, 16); } return key; }
/** * @brief Check wether the user password is correct * * @see signal authentificationResponse(bool response) * * @param QString userName the user name * @param QString userPassword the user password */ void ImageShackUploader::checkUserPassword(QString userName , QString userPassword) { QUrl url = QUrl(authentificationUrl + "?username="******"&password="******"&nocookie=1&format=xml"); QNetworkRequest request(url); QNetworkAccessManager * manager = new QNetworkAccessManager; this->uploadAborted = false; // manage proxy if(this->proxy != NULL) manager->setProxy(*this->proxy); this->networkReply = manager->get(request); connect(this->networkReply, SIGNAL(error(QNetworkReply::NetworkError)), this , SLOT(manageUploadError(QNetworkReply::NetworkError))); connect(this->networkReply, SIGNAL(finished()), this, SLOT(manageAuthentificationResponse())); }
std::pair<QNetworkReply::NetworkError, QString> NetworkProxyDialog::testProxyConnection(const QNetworkProxy &t_proxy, QWidget *t_parent) { QProgressDialog dlg("Verifying Proxy Connection", "Cancel",0, 1000, t_parent); dlg.setWindowModality(Qt::WindowModal); dlg.setValue(0); dlg.setMinimumDuration(1000); QNetworkAccessManager nam; nam.setProxy(t_proxy); QNetworkReply *head = nam.head(QNetworkRequest(QUrl("https://bcl.nrel.gov/"))); if (!head) return std::make_pair(QNetworkReply::UnknownNetworkError, QString("Unknown error creating connection to proxy.")); boost::posix_time::ptime start = boost::posix_time::microsec_clock::universal_time(); while ( !head->isFinished() && (boost::posix_time::microsec_clock::universal_time() - start).total_milliseconds() < 10000 && !dlg.wasCanceled()) { int time = (boost::posix_time::microsec_clock::universal_time() - start).total_milliseconds(); dlg.setValue(time); if (time >= 950 && dlg.maximum() < 10000) { dlg.setMaximum(10000); } } dlg.reset(); Application::instance().processEvents(); head->deleteLater(); if (!head->isFinished()) { head->abort(); return std::make_pair(QNetworkReply::TimeoutError, QString("Timed out while attempting to verify proxy connection")); } LOG(Debug, " errorString from proxy test " << toString(head->errorString()) << " " << head->error()); return std::make_pair(head->error(), head->errorString()); }
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))); }
/** * Upload an image. This method is called by * userUploadImage and anonymousUploadImage * methods * * @access public */ void ImageShackUploader::sendImage(ImageShackObject * imageToUpload , QHash<QString, QString> headers) { QString imagePath = imageToUpload->getObjectPath(); QFile image(imagePath); QFileInfo imageInfos(imagePath); QNetworkAccessManager * manager = new QNetworkAccessManager; QNetworkRequest request(this->imageUploadUrl); QByteArray boundary = "IMAGESHACKUPLOADER"; QByteArray cr = "\r\n"; QByteArray data; if(!image.open(QIODevice::ReadOnly)) { if(uploadAborted==false) { emit uploadError(ImageShackError::FailedOpeningTheFile); this->abortUploads(); } return; } // build of the header data.append("--" + boundary + cr); data.append("Content-Disposition: form-data; "); data.append( "name=\"fileupload\"; filename=\"" + imageInfos.absoluteFilePath() + "\";" + cr); data.append("Content-Type: " + this->mimeType(imagePath) + cr + cr); // insertion of the image data.append(image.readAll() + cr); image.close(); // build the footer QHashIterator<QString, QString> h(headers); while (h.hasNext()) { h.next(); data.append("--" + boundary + cr); data.append("Content-Disposition: form-data; "); data.append("name=\"" + h.key() + "\"" + cr + cr); data.append(h.value() + cr); } data.append("--" + boundary + "--" + cr); request.setHeader(QNetworkRequest::ContentTypeHeader, "multipart/form-data; boundary=" + boundary); request.setHeader(QNetworkRequest::ContentLengthHeader, QString::number(data.size()).toAscii()); // manage proxy if(this->proxy != NULL) manager->setProxy(*this->proxy); this->fileBeingUploaded = imageToUpload; //this->uploadsProcessing = true; timeoutTimer->start(TIMEOUT); this->networkReply = manager->post(request, data); connect(this->networkReply, SIGNAL(finished()) , this , SLOT (imageUploaded())); connect(this->networkReply, SIGNAL(error(QNetworkReply::NetworkError)) , this , SLOT (manageUploadError(QNetworkReply::NetworkError))); connect(this->networkReply, SIGNAL(uploadProgress(qint64,qint64)), this , SLOT (manageUploadProgress(qint64,qint64))); connect(manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), this , SLOT (manageAuthentificationRequired(QNetworkReply*,QAuthenticator*))); connect(manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), this , SLOT (manageProxyAuthentificationRequired(QNetworkProxy,QAuthenticator*))); }
void UrlFactory::TryCorrectGoogleVersions() { static bool versionRetrieved = false; if (versionRetrieved) { return; } QMutexLocker locker(&mutex); if(CorrectGoogleVersions && !IsCorrectGoogleVersions()) { QNetworkReply *reply; QNetworkRequest qheader; QNetworkAccessManager network; QEventLoop q; QTimer tT; tT.setSingleShot(true); connect(&network, SIGNAL(finished(QNetworkReply*)), &q, SLOT(quit())); connect(&tT, SIGNAL(timeout()), &q, SLOT(quit())); network.setProxy(Proxy); #ifdef DEBUG_URLFACTORY qDebug()<<"Correct GoogleVersion"; #endif //DEBUG_URLFACTORY setIsCorrectGoogleVersions(true); QString url = "http://maps.google.com"; qheader.setUrl(QUrl(url)); qheader.setRawHeader("User-Agent",UserAgent); reply=network.get(qheader); tT.start(Timeout); q.exec(); if(!tT.isActive()) return; tT.stop(); if( (reply->error()!=QNetworkReply::NoError)) { #ifdef DEBUG_URLFACTORY qDebug()<<"Try corrected version withou abort or error:"<<reply->errorString(); #endif //DEBUG_URLFACTORY return; } QString html=QString(reply->readAll()); QRegExp reg("\"*http://mt0.google.com/vt/lyrs=m@(\\d*)",Qt::CaseInsensitive); if(reg.indexIn(html)!=-1) { QStringList gc=reg.capturedTexts(); VersionGoogleMap = QString("m@%1").arg(gc[1]); VersionGoogleMapChina = VersionGoogleMap; #ifdef DEBUG_URLFACTORY qDebug()<<"TryCorrectGoogleVersions, VersionGoogleMap: "<<VersionGoogleMap; #endif //DEBUG_URLFACTORY } reg=QRegExp("\"*http://mt0.google.com/vt/lyrs=h@(\\d*)",Qt::CaseInsensitive); if(reg.indexIn(html)!=-1) { QStringList gc=reg.capturedTexts(); VersionGoogleLabels = QString("h@%1").arg(gc[1]); VersionGoogleLabelsChina = VersionGoogleLabels; #ifdef DEBUG_URLFACTORY qDebug()<<"TryCorrectGoogleVersions, VersionGoogleLabels: "<<VersionGoogleLabels; #endif //DEBUG_URLFACTORY } reg=QRegExp("\"*http://khm\\D?\\d.google.com/kh/v=(\\d*)",Qt::CaseInsensitive); if(reg.indexIn(html)!=-1) { QStringList gc=reg.capturedTexts(); VersionGoogleSatellite = gc[1]; VersionGoogleSatelliteKorea = VersionGoogleSatellite; VersionGoogleSatelliteChina = "s@" + VersionGoogleSatellite; qDebug()<<"TryCorrectGoogleVersions, VersionGoogleSatellite: "<<VersionGoogleSatellite; } reg=QRegExp("\"*http://mt0.google.com/vt/lyrs=t@(\\d*),r@(\\d*)",Qt::CaseInsensitive); if(reg.indexIn(html)!=-1) { QStringList gc=reg.capturedTexts(); VersionGoogleTerrain = QString("t@%1,r@%2").arg(gc[1]).arg(gc[2]); VersionGoogleTerrainChina = VersionGoogleTerrain; #ifdef DEBUG_URLFACTORY qDebug()<<"TryCorrectGoogleVersions, VersionGoogleTerrain: "<<VersionGoogleTerrain; #endif //DEBUG_URLFACTORY } reply->deleteLater(); }
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()))); }
bool HermelinWebPage::handleUri(const QString& originmsg) { QString msg = originmsg; if (msg.startsWith("hermelin:")) { msg = msg.mid(6); QString type = msg.section("/", 0, 0); QString method = msg.section("/", 1, 1); if (type == "system") { if (method == "notify") { QString notify_type = QUrl::fromPercentEncoding(msg.section("/", 2, 2).toUtf8()); QString title = QUrl::fromPercentEncoding(msg.section("/", 3, 3).toUtf8()); QString summary = QUrl::fromPercentEncoding(msg.section("/", 4, 4).toUtf8()); QString image = QUrl::fromPercentEncoding(msg.section("/", 5, 5).toUtf8()); m_mainWindow->notification(notify_type, title, summary, image); } else if (method == "unread_alert") { QString number = QUrl::fromPercentEncoding(msg.section("/", 2, 2).toUtf8()); m_mainWindow->unreadAlert(number); } else if (method == "load_settings") { QString settingString = QUrl::fromPercentEncoding(msg.section("/", 2, -1).toUtf8()); currentFrame()->evaluateJavaScript("hermelin_qt = " + settingString + ";"); QString proxyType = currentFrame()->evaluateJavaScript("hermelin_qt.proxy_type").toString(); QNetworkProxy proxy; QNetworkAccessManager* nm = NULL; #ifdef HAVE_KDE if (proxyType == "none") { nm = new QNetworkAccessManager(this); } #else if (proxyType == "system") { nm = new QNetworkAccessManager(this); QList<QNetworkProxy> proxies = QNetworkProxyFactory::systemProxyForQuery(); proxy = proxies[0]; } #endif if (proxyType == "http" || proxyType == "socks") { nm = new QNetworkAccessManager(this); bool proxyAuth = currentFrame()->evaluateJavaScript("hermelin_qt.proxy_auth").toBool(); int proxyPort = currentFrame()->evaluateJavaScript("hermelin_qt.proxy_port").toInt(); QString proxyHost = currentFrame()->evaluateJavaScript("hermelin_qt.proxy_host").toString(); QString proxyAuthName = currentFrame()->evaluateJavaScript("hermelin_qt.proxy_auth_name").toString(); QString proxyAuthPassword = currentFrame()->evaluateJavaScript("hermelin_qt.proxy_auth_password").toString(); proxy = QNetworkProxy(proxyType == "socks" ? QNetworkProxy::Socks5Proxy : QNetworkProxy::HttpProxy, proxyHost, proxyPort); if (proxyAuth) { proxy.setUser(proxyAuthName); proxy.setPassword(proxyAuthPassword); } } if (proxy.type() != QNetworkProxy::NoProxy) { QNetworkProxy::setApplicationProxy(proxy); } if (nm != NULL) { QNetworkAccessManager* oldnm = networkAccessManager(); oldnm->setParent(NULL); oldnm->deleteLater(); nm->setProxy(QNetworkProxy::DefaultProxy); setNetworkAccessManager(nm); } } else if (method == "sign_in") { m_mainWindow->setSignIn(true); } else if (method == "sign_out") { m_mainWindow->setSignIn(false); } } else if (type == "action") { if (method == "search") { } else if (method == "choose_file") { QFileDialog dialog; dialog.setAcceptMode(QFileDialog::AcceptOpen); dialog.setFileMode(QFileDialog::ExistingFile); dialog.setNameFilter(tr("Images (*.png *.bmp *.jpg *.gif)")); int result = dialog.exec(); if (result) { QStringList fileNames = dialog.selectedFiles(); if (fileNames.size() > 0) { QString callback = msg.section("/", 2, 2); currentFrame()->evaluateJavaScript(QString("%1(\"%2\")").arg(callback, QUrl::fromLocalFile(fileNames[0]).toString().replace("file://", ""))); } } } else if (method == "save_avatar") { } else if (method == "log") { qDebug() << msg; } else if (method == "paste_clipboard_text") { triggerAction(QWebPage::Paste); } else if (method == "set_clipboard_text") { QClipboard *clipboard = QApplication::clipboard(); if (clipboard) clipboard->setText(msg.section("/", 2, -1)); } } else if (type == "request") { QString json = QUrl::fromPercentEncoding(msg.section("/", 1, -1).toUtf8()); currentFrame()->evaluateJavaScript(QString("hermelin_qt_request_json = %1 ;").arg(json)); QString request_uuid = currentFrame()->evaluateJavaScript(QString("hermelin_qt_request_json.uuid")).toString(); QString request_method = currentFrame()->evaluateJavaScript(QString("hermelin_qt_request_json.method")).toString(); QString request_url = currentFrame()->evaluateJavaScript(QString("hermelin_qt_request_json.url")).toString(); QMap<QString, QVariant> request_params = currentFrame()->evaluateJavaScript(QString("hermelin_qt_request_json.params")).toMap(); QMap<QString, QVariant> request_headers = currentFrame()->evaluateJavaScript(QString("hermelin_qt_request_json.headers")).toMap(); QList<QVariant> request_files = currentFrame()->evaluateJavaScript(QString("hermelin_qt_request_json.files")).toList(); HermelinRequest* request = new HermelinRequest( request_uuid, request_method, request_url, request_params, request_headers, request_files, userAgentForUrl(request_url), networkAccessManager()); connect(request, SIGNAL(requestFinished(HermelinRequest*, QByteArray, QString, bool)), this, SLOT(requestFinished(HermelinRequest*, QByteArray, QString, bool))); if (!request->doRequest()) delete request; }
void UrlFactory::TryCorrectGoogleVersions() { static bool versionRetrieved = false; if (versionRetrieved) { return; } QMutexLocker locker(&mutex); if (CorrectGoogleVersions && !IsCorrectGoogleVersions()) { QNetworkReply *reply; QNetworkRequest qheader; // This SSL Hack is half assed... technically bad *security* joojoo. // Required due to a QT5 bug on linux and Mac // QSslConfiguration conf = qheader.sslConfiguration(); conf.setPeerVerifyMode(QSslSocket::VerifyNone); qheader.setSslConfiguration(conf); QNetworkAccessManager network; QEventLoop q; QTimer tT; tT.setSingleShot(true); connect(&network, SIGNAL(finished(QNetworkReply *)), &q, SLOT(quit())); connect(&tT, SIGNAL(timeout()), &q, SLOT(quit())); network.setProxy(Proxy); #ifdef DEBUG_URLFACTORY qDebug() << "Correct GoogleVersion"; #endif // DEBUG_URLFACTORY // setIsCorrectGoogleVersions(true); // QString url = "https://www.google.com/maps/@0,-0,7z?dg=dbrw&newdg=1"; // We need to switch to the Above url... the /lochp method will be depreciated soon // https://productforums.google.com/forum/#!category-topic/maps/navigation/k6EFrp7J7Jk QString url = "http://www.google.com/lochp"; qheader.setUrl(QUrl(url)); qheader.setRawHeader("User-Agent", UserAgent); reply = network.get(qheader); tT.start(Timeout); q.exec(); if (!tT.isActive()) { return; } tT.stop(); if ((reply->error() != QNetworkReply::NoError)) { #ifdef DEBUG_URLFACTORY qDebug() << "Try corrected version withou abort or error:" << reply->errorString(); #endif // DEBUG_URLFACTORY return; } QString html = QString(reply->readAll()); #ifdef DEBUG_URLFACTORY qDebug() << html; #endif // DEBUG_URLFACTORY QRegExp reg("\"*http://mts0.google.com/vt/lyrs=m@(\\d*)", Qt::CaseInsensitive); if (reg.indexIn(html) != -1) { QStringList gc = reg.capturedTexts(); VersionGoogleMap = QString("m@%1").arg(gc[1]); VersionGoogleMapChina = VersionGoogleMap; VersionGoogleMapKorea = VersionGoogleMap; #ifdef DEBUG_URLFACTORY qDebug() << "TryCorrectGoogleVersions, VersionGoogleMap: " << VersionGoogleMap; #endif // DEBUG_URLFACTORY } reg = QRegExp("\"*http://mts0.google.com/vt/lyrs=h@(\\d*)", Qt::CaseInsensitive); if (reg.indexIn(html) != -1) { QStringList gc = reg.capturedTexts(); VersionGoogleLabels = QString("h@%1").arg(gc[1]); VersionGoogleLabelsChina = VersionGoogleLabels; VersionGoogleLabelsKorea = VersionGoogleLabels; #ifdef DEBUG_URLFACTORY qDebug() << "TryCorrectGoogleVersions, VersionGoogleLabels: " << VersionGoogleLabels; #endif // DEBUG_URLFACTORY } reg = QRegExp("\"*http://khms0.google.com/kh/v=(\\d*)", Qt::CaseInsensitive); if (reg.indexIn(html) != -1) { QStringList gc = reg.capturedTexts(); VersionGoogleSatellite = gc[1]; VersionGoogleSatelliteKorea = VersionGoogleSatellite; VersionGoogleSatelliteChina = "s@" + VersionGoogleSatellite; #ifdef DEBUG_URLFACTORY qDebug() << "TryCorrectGoogleVersions, VersionGoogleSatellite: " << VersionGoogleSatellite; #endif // DEBUG_URLFACTORY } reg = QRegExp("\"*http://mts0.google.com/vt/lyrs=t@(\\d*),r@(\\d*)", Qt::CaseInsensitive); if (reg.indexIn(html) != -1) { QStringList gc = reg.capturedTexts(); VersionGoogleTerrain = QString("t@%1,r@%2").arg(gc[1]).arg(gc[2]); VersionGoogleTerrainChina = VersionGoogleTerrain; VersionGoogleTerrainChina = VersionGoogleTerrain; #ifdef DEBUG_URLFACTORY qDebug() << "TryCorrectGoogleVersions, VersionGoogleTerrain: " << VersionGoogleTerrain; #endif // DEBUG_URLFACTORY } reply->deleteLater(); versionRetrieved = true; }
AutoUpdater::VersionInfo AutoUpdater::getUpdateVersion() { VersionInfo versionInfo; versionInfo.timestamp = 0; // Updates only for supported platforms if (platform.isEmpty()) return versionInfo; if (abortFlag) return versionInfo; QNetworkAccessManager *manager = new QNetworkAccessManager; manager->setProxy(Settings::getInstance().getProxy()); QNetworkReply* reply = manager->get(QNetworkRequest(QUrl(checkURI))); while (!reply->isFinished()) { if (abortFlag) return versionInfo; qApp->processEvents(); } if (reply->error() != QNetworkReply::NoError) { qWarning() << "getUpdateVersion: network error: " + reply->errorString(); reply->deleteLater(); manager->deleteLater(); return versionInfo; } QByteArray data = reply->readAll(); reply->deleteLater(); manager->deleteLater(); if (data.size() < (int)(1+crypto_sign_BYTES)) return versionInfo; // Check updater protocol version if ((int)data[0] != '3') { qWarning() << "getUpdateVersion: Bad version " << (uint8_t)data[0]; return versionInfo; } // Check the signature QByteArray sigData = data.mid(1, crypto_sign_BYTES); unsigned char* sig = (unsigned char*)sigData.data(); QByteArray msgData = data.mid(1+crypto_sign_BYTES); unsigned char* msg = (unsigned char*)msgData.data(); if (crypto_sign_verify_detached(sig, msg, msgData.size(), key) != 0) { qCritical() << "getUpdateVersion: RECEIVED FORGED VERSION FILE FROM "<<updateServer; return versionInfo; } int sepPos = msgData.indexOf('!'); versionInfo.timestamp = QString(msgData.left(sepPos)).toInt(); versionInfo.versionString = msgData.mid(sepPos+1); qDebug() << "timestamp:"<<versionInfo.timestamp << ", str:"<<versionInfo.versionString; return versionInfo; }
RadioCL* PlaylistCL::Parse(QUrl pURL){ RadioCL* newRadio=NULL; if (pURL.isLocalFile()){ QString tFileName=pURL.path().mid(1,pURL.path().length()-1); QStringList tFileNameParts=tFileName.split("."); QFile drFile(tFileName); if (!drFile.open(QIODevice::ReadOnly)){ qDebug()<<"Unable to open"<<drFile.fileName(); } else{ drFile.close(); if ( tFileNameParts.last()=="pls" || tFileNameParts.last()=="m3u"){ qDebug()<<"Dropped content is acceptable"; if (tFileNameParts.last()=="pls"){ newRadio=ParsePls(tFileName); newRadio->SetPlaylist(pURL.url()); } if (tFileNameParts.last()=="m3u"){ newRadio=ParseM3U(tFileName); newRadio->SetPlaylist(pURL.url()); } } else{ qDebug()<<"Parse works with pls and m3u only"; } } } else{ // remote url qDebug()<<"Getting playlist from "<<pURL.url(); QNetworkAccessManager *manager = new QNetworkAccessManager(this); if (Proxy!=""){ manager->setProxy(QNetworkProxy(QNetworkProxy::HttpProxy,Proxy,ProxyPort.toInt(),ProxyUser,ProxyPass)); } QNetworkRequest req; req.setUrl(pURL); QNetworkReply *tRemotePlaylist=manager->get(req); QEventLoop loop; connect(manager, SIGNAL(finished(QNetworkReply*)), &loop, SLOT(quit())); QApplication::setOverrideCursor(Qt::WaitCursor); loop.exec(); QApplication::restoreOverrideCursor(); qDebug()<<"Got replay:"<<tRemotePlaylist->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if (tRemotePlaylist->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()==0) return(NULL); QString tPlaylist=QString(tRemotePlaylist->readAll()); qDebug()<<"Got playlist as:"<<tPlaylist; if (tPlaylist=="") return(NULL); //qDebug()<<"Headers are:"<<tRemotePlaylist->rawHeaderList(); //qDebug()<<"Content-Disposition:"<<tRemotePlaylist->rawHeader("Content-Disposition"); QFile tTempFile(GetTempFilePath()); if (!tTempFile.open(QIODevice::WriteOnly | QIODevice::Truncate)){ qDebug()<<"Unable to open"<<tTempFile.fileName(); } int tFileNamePos=tPlaylist.indexOf("filename=",0,Qt::CaseInsensitive); int tFileNameEndPos=tPlaylist.indexOf("\n",tFileNamePos,Qt::CaseInsensitive); int tFileBeginningPos=tPlaylist.indexOf("\n\n",tFileNameEndPos); QString tFileBody; if (tFileNamePos!=-1){ if (tFileNameEndPos!=-1 && tFileBeginningPos!=-1){ QString tPlaylistName=tPlaylist.mid(tFileNamePos+9,tFileNameEndPos-9-tFileNamePos); qDebug()<<"Playlist filename="<<tPlaylistName; tFileBody=tPlaylist.right(tPlaylist.length()-tFileBeginningPos-2); } else{ qDebug()<<"Error in playlist"; } } else{ tFileBody=tPlaylist; } qDebug()<<"FileBody:"<<tFileBody; tTempFile.write(tFileBody.toLocal8Bit(),tFileBody.length()); tTempFile.close(); if (tFileBody.indexOf("[playlist]",Qt::CaseInsensitive)!=-1){ newRadio=ParsePls(tTempFile.fileName()); } else{ newRadio=ParseM3U(tTempFile.fileName()); } newRadio->SetPlaylist(pURL.url()); } return(newRadio); }