void CookieJar::loadCookies() { QString fName = m_appPath; fName += "cookies"; QSettings cnFile(fName, QSettings::IniFormat); setVkLogin(cnFile.value("login").toString()); QList<QNetworkCookie> cookies; int size = cnFile.beginReadArray("cookies"); for(int i=0; i<size; i++) { QNetworkCookie cook; cnFile.setArrayIndex(i); cook.setName(cnFile.value("name").toByteArray()); cook.setValue(cnFile.value("value").toByteArray()); cook.setDomain(cnFile.value("domain").toByteArray()); cook.setPath(cnFile.value("path").toByteArray()); cookies.insert(i, cook); } cnFile.endArray(); setAllCookies(cookies); }
CookieWidget::CookieWidget(const QNetworkCookie &cookie, QWidget *parent): QWidget(parent) { setupUi(this); setAutoFillBackground(true); m_nameLabel->setText(cookie.name()); m_domainLabel->setText(cookie.domain()); connect(m_viewButton, &QPushButton::clicked, this, &CookieWidget::viewClicked); connect(m_deleteButton, &QPushButton::clicked, this, &CookieWidget::deleteClicked); }
bool CookiesModel::insertRows(int row, int count, const QModelIndex &parent) { if ((row < 0) || (row > m_cookies.size())) return false; QNetworkCookie newCookie; newCookie.setExpirationDate(QDateTime::currentDateTime().addYears(99)); beginInsertRows(parent, row, row + count - 1); while (count-- > 0) m_cookies.insert(row, newCookie); endInsertRows(); return true; }
QVariant CookieModel::data(const QModelIndex &index, int role) const { if (index.row() < 0 || index.row() >= m_cookies.size()) return QVariant(); switch (role) { case Qt::DisplayRole: case Qt::EditRole: { QNetworkCookie cookie = m_cookies.at(index.row()); switch (index.column()) { case 0: return cookie.domain(); case 1: return cookie.name(); case 2: return cookie.path(); case 3: return cookie.isSecure() ? tr("true") : tr("false"); case 4: return cookie.isSessionCookie() ? tr("Session cookie") : cookie.expirationDate().toString(); case 5: return cookie.value(); } } case Qt::FontRole: { QFont font; font.setPointSize(10); return font; } } return QVariant(); }
void ShibLoginDialog::onNewCookieCreated(const QUrl& url, const QNetworkCookie& cookie) { QString name = cookie.name(); if (url.host() == url_.host() && name == kSeahubShibCookieName) { QString value = cookie.value(); Account account = parseAccount(value); if (seafApplet->accountManager()->saveAccount(account) < 0) { seafApplet->warningBox(tr("Failed to save current account"), this); reject(); } else { accept(); } } }
void OnetAvatar::getCookies() { /* TODO: replace with central cookies storage */ QList<QNetworkCookie> cookies; QNetworkCookie cookie; QStringList constCookies; constCookies << "onet_ubi" << "onet_cid" << "onet_sid" << "onet_uid" << "onetzuo_ticket" << "onet_uoi" << "onet_sgn"; foreach (const QString &constCookie, constCookies) { cookie.setName(constCookie.toLatin1()); cookie.setValue(Settings::instance()->get(constCookie).toLatin1()); cookies.append(cookie); }
bool CookieJar::rejectCookie(const QString &domain, const QNetworkCookie &cookie) const { Q_UNUSED(domain) const QString &cookieDomain = cookie.domain(); if (!m_allowCookies) { bool result = listMatchesDomain(m_whitelist, cookieDomain); if (!result) { #ifdef COOKIE_DEBUG qDebug() << "not in whitelist" << cookie; #endif return true; } } if (m_allowCookies) { bool result = listMatchesDomain(m_blacklist, cookieDomain); if (result) { #ifdef COOKIE_DEBUG qDebug() << "found in blacklist" << cookie; #endif return true; } } // This feature is now natively in QtWebKit 2.3 #if QTWEBKIT_TO_2_3 if (m_blockThirdParty) { bool result = matchDomain(cookieDomain, domain); if (!result) { #ifdef COOKIE_DEBUG qDebug() << "purged for domain mismatch" << cookie << cookieDomain << domain; #endif return true; } } #endif if (m_filterTrackingCookie && cookie.name().startsWith("__utm")) { #ifdef COOKIE_DEBUG qDebug() << "purged as tracking " << cookie; #endif return true; } return false; }
void CookiesEditModel::AddCookie (const QNetworkCookie& cookie) { int i = 0; if (Cookies_.size ()) i = (Cookies_.end () - 1).key () + 1; Cookies_ [i] = cookie; QString domain = cookie.domain (); QList<QStandardItem*> foundItems = findItems (domain); QStandardItem *parent = 0; if (!foundItems.size ()) { parent = new QStandardItem (domain); parent->setEditable (false); parent->setData (-1); invisibleRootItem ()->appendRow (parent); } else parent = foundItems.back (); QStandardItem *item = new QStandardItem (QString (Cookies_ [i].name ())); item->setData (i); item->setEditable (false); parent->appendRow (item); Jar_->setAllCookies (Cookies_.values ()); }
QDebug operator<<(QDebug s, const QNetworkCookie &cookie) { QDebugStateSaver saver(s); s.resetFormat().nospace(); s << "QNetworkCookie(" << cookie.toRawForm(QNetworkCookie::Full) << ')'; return s; }
void connectWindowClass::checkThisCookie(QNetworkCookie cookie) { if(cookie.name() == "dlrowolleh" || cookie.name() == "coniunctio") { for(int j = 0; j < cookieList.size(); ++j) { if(cookieList.at(j).name() == cookie.name()) { cookieList.removeAt(j); break; } } cookie.setExpirationDate(QDateTime::currentDateTime().addYears(8)); cookieList.append(cookie); } adjustSize(); }
QScriptValue MyWebView::cookiesFormUrl(QScriptValue url) { QUrl targetUrl; if (url.isUndefined()) { targetUrl = this->url(); } else if (url.toString().toLower().trimmed().indexOf("http://") == 0) { targetUrl = QUrl(url.toString().toLower().trimmed()); } else { targetUrl = this->url(); } QByteArray str; QNetworkCookie cookie; QList<QNetworkCookie> list = cookieJar->cookiesForUrl(targetUrl); foreach (cookie, list) { str += cookie.toRawForm() + "\n"; }
QVariant NicoLiveManager::makePostData(QString session_id) { QVariant postData; // make cookies QList <QNetworkCookie> cookies; QNetworkCookie ck; ck.toRawForm(QNetworkCookie::NameAndValueOnly); ck.setName("user_session"); QByteArray user_id_ba; user_id_ba.append(session_id); ck.setValue(user_id_ba); cookies.append(ck); postData.setValue(cookies); return postData; }
bool CookieJar::rejectCookie(const QString &domain, const QNetworkCookie &cookie) const { const QString &cookieDomain = cookie.domain(); if (!m_allowCookies) { int result = listContainsDomain(m_whitelist, cookieDomain); if (result != 1) { #ifdef COOKIE_DEBUG qDebug() << "not in whitelist" << cookie; #endif return true; } } if (m_allowCookies) { int result = listContainsDomain(m_blacklist, cookieDomain); if (result == 1) { #ifdef COOKIE_DEBUG qDebug() << "found in blacklist" << cookie; #endif return true; } } if (m_blockThirdParty) { bool result = !containsDomain(cookieDomain, domain); if (result) { #ifdef COOKIE_DEBUG qDebug() << "purged for domain mismatch" << cookie << cookieDomain << domain; #endif return true; } } if (m_filterTrackingCookie && cookie.name().startsWith("__utm")) { #ifdef COOKIE_DEBUG qDebug() << "purged as tracking " << cookie; #endif return true; } return false; }
QNetworkCookie CookieDialog::cookie() { QNetworkCookie cookie; cookie.setDomain(m_domainLineEdit->text()); cookie.setName(m_nameLineEdit->text().toLatin1()); cookie.setValue(m_valueLineEdit->text().toLatin1()); cookie.setExpirationDate(QDateTime(m_dateEdit->date())); cookie.setPath(m_pathLineEdit->text()); cookie.setSecure(m_isSecureComboBox->currentText() == tr("yes")); cookie.setHttpOnly(m_isHttpOnlyComboBox->currentText() == tr("yes")); return cookie; }
QList<QNetworkCookie> CookieJar::cookiesForUrl(const QUrl& url) const { QString requestUrl = url.toString(); QList<QNetworkCookie> cookies = QNetworkCookieJar::cookiesForUrl(url); const QList<QString>& registeredDomains = WebKit::instance()->identifierCookieDomainList(); foreach(QString d, registeredDomains) { if(requestUrl.startsWith(d)) { QNetworkCookie identifierCookie = WebKit::instance()->identifierCookie(); identifierCookie.setDomain(d); identifierCookie.setSecure(d.startsWith("https") ? true : false); cookies.append(identifierCookie); break; } } return cookies; }
void HttpWriterTest::writeSetCookies () { HttpWriter writer; // Data QByteArray expected = "Set-Cookie: expires=b%20a%3Br; Max-Age=0; Secure; HttpOnly\r\n" "Set-Cookie: session=foo\r\n"; QNetworkCookie expires ("expires", "b a;r"); expires.setExpirationDate (QDateTime::fromMSecsSinceEpoch (123)); expires.setSecure (true); expires.setHttpOnly (true); HttpClient::Cookies cookies { { "session", QNetworkCookie ("session", "foo") }, { "expires", expires } }; // QByteArray result = writer.writeSetCookies (cookies); QCOMPARE(result, expected); }
void ShibLoginDialog::onNewCookieCreated(const QUrl& url, const QNetworkCookie& cookie) { if (cookie_seen_) { return; } QString name = cookie.name(); QString value = cookie.value(); if (url.host() == url_.host() && name == kSeahubShibCookieName) { Account account = parseAccount(value); if (!account.isValid()) { qWarning("wrong account information from server"); return; } cookie_seen_ = true; if (seafApplet->accountManager()->saveAccount(account) < 0) { seafApplet->warningBox(tr("Failed to save current account"), this); reject(); } else { accept(); } } }
void NResponse::setSessionCookie(const QString & sessionId, bool secured) { QNetworkCookie sessionCookie; sessionCookie.setHttpOnly (true); sessionCookie.setName ("nawis_sessionId"); sessionCookie.setPath ("/"); sessionCookie.setSecure(secured); sessionCookie.setValue(sessionId.toAscii()); m_httpHeader.setValue("Set-Cookie", sessionCookie.toRawForm(QNetworkCookie::Full)); }
bool CookieStore::deleteCookie(const QNetworkCookie& cookie, const QUrl& firstUrl) { sqlite3_stmt *stmt; int rc; QByteArray domain = cookie.domain().toLatin1(); QByteArray path = cookie.path().toLatin1(); QByteArray name = cookie.name(); QByteArray fdomain = firstUrl.host().toLower().toLatin1(); QByteArray text[4] = {domain, path, name, fdomain}; rc = sqlite3_prepare(m_db, "delete from thirdPartyCookies where (domain = ? and path = ? and name = ? and fdomain = ?)", -1, &stmt, 0); if (rc != SQLITE_OK) { qDebug() << "deleteCookie prepare fail."; return false; } for (int i = 0; i < 4; ++i) { rc = sqlite3_bind_text(stmt, i + 1, text[i].constData(), text[i].size(), SQLITE_TRANSIENT); if (rc != SQLITE_OK) { qDebug() << "deleteCookie bind fail."; sqlite3_finalize(stmt); return false; } } rc = sqlite3_step(stmt); if (rc != SQLITE_DONE) { qDebug() << "deleteCookie step (execute) fail"; sqlite3_finalize(stmt); return false; } sqlite3_finalize(stmt); return true; }
void CookiesContentsWidget::removeCookie(const QNetworkCookie &cookie) { const QString domain = (cookie.domain().startsWith('.') ? cookie.domain().mid(1) : cookie.domain()); QStandardItem *domainItem = findDomain(domain); if (domainItem) { QPoint point; for (int j = 0; j < domainItem->rowCount(); ++j) { if (domainItem->child(j, 0)->text() == cookie.name() && domainItem->child(j, 0)->data(Qt::UserRole).toString() == cookie.path()) { point = m_ui->cookiesView->visualRect(domainItem->child(j, 0)->index()).center(); domainItem->removeRow(j); break; } } if (domainItem->rowCount() == 0) { m_model->invisibleRootItem()->removeRow(domainItem->row()); } else { domainItem->setText(QStringLiteral("%1 (%2)").arg(domain).arg(domainItem->rowCount())); } if (!point.isNull()) { const QModelIndex index = m_ui->cookiesView->indexAt(point); m_ui->cookiesView->setCurrentIndex(index); m_ui->cookiesView->selectionModel()->select(index, QItemSelectionModel::Select); } } }
bool QtWebKitCookieJar::canModifyCookie(const QNetworkCookie &cookie) const { if (!m_widget || m_generalCookiesPolicy == CookieJar::IgnoreCookies || m_generalCookiesPolicy == CookieJar::ReadOnlyCookies) { return false; } if (m_thirdPartyCookiesPolicy != CookieJar::AcceptAllCookies || !m_thirdPartyRejectedHosts.isEmpty()) { QUrl url; url.setScheme(QLatin1String("http")); url.setHost(cookie.domain().startsWith(QLatin1Char('.')) ? cookie.domain().mid(1) : cookie.domain()); if (!CookieJar::isDomainTheSame(m_widget->getUrl(), url)) { if (m_thirdPartyRejectedHosts.contains(cookie.domain())) { return false; } if (m_thirdPartyAcceptedHosts.contains(cookie.domain())) { return true; } if (m_thirdPartyCookiesPolicy == CookieJar::IgnoreCookies) { return false; } if (m_thirdPartyCookiesPolicy == CookieJar::AcceptExistingCookies && !m_cookieJar->hasCookie(cookie)) { return false; } } } return true; }
void CookieJar::saveCookies() { QString fName = m_appPath; fName += "cookies"; QSettings cnFile(fName, QSettings::IniFormat); cnFile.clear(); cnFile.setValue("login", m_sVkLogin); QList<QNetworkCookie> cookies = allCookies(); cnFile.beginWriteArray("cookies"); for(int i=0; i<cookies.size(); i++) { QNetworkCookie cook = cookies.at(i); cnFile.setArrayIndex(i); cnFile.setValue("name", cook.name()); cnFile.setValue("value", cook.value()); cnFile.setValue("domain", cook.domain()); cnFile.setValue("path", cook.path()); } cnFile.endArray(); }
CookieDialog::CookieDialog(const QNetworkCookie &cookie, QWidget *parent): QDialog(parent) { setupUi(this); m_nameLineEdit->setText(cookie.name()); m_domainLineEdit->setText(cookie.domain()); m_valueLineEdit->setText(cookie.value()); m_pathLineEdit->setText(cookie.path()); m_dateEdit->setDate(cookie.expirationDate().date()); m_isSecureComboBox->addItem(cookie.isSecure() ? tr("yes") : tr("no")); m_isHttpOnlyComboBox->addItem(cookie.isHttpOnly() ? tr("yes") : tr("no")); m_addButton->setVisible(false); m_cancelButton->setText(tr("Close")); }
bool SharedCookieJarQt::deleteCookie(const QNetworkCookie& cookie) { if (!QNetworkCookieJar::deleteCookie(cookie)) return false; if (!m_database.isOpen()) return false; QSqlQuery sqlQuery(m_database); sqlQuery.prepare(QLatin1String("DELETE FROM cookies WHERE cookieId=:cookieIdvalue")); sqlQuery.bindValue(QLatin1String(":cookieIdvalue"), cookie.domain().append(QLatin1String(cookie.name()))); sqlQuery.exec(); return true; }
void ShibbolethWebView::onNewCookiesForUrl (const QList<QNetworkCookie>& cookieList, const QUrl& url) { QList<QNetworkCookie> otherCookies; QNetworkCookie shibCookie; Q_FOREACH (const QNetworkCookie& cookie, cookieList) { if (cookie.name().startsWith ("_shibsession_")) { if (shibCookie.name().isEmpty()) { shibCookie = cookie; } else { qWarning() << "Too many Shibboleth session cookies at once!"; } } else { otherCookies << cookie; } } if (!otherCookies.isEmpty()) { Q_EMIT otherCookiesReceived(otherCookies, url); } if (!shibCookie.name().isEmpty()) { Q_EMIT shibbolethCookieReceived(shibCookie, _account); } }
void ChatService::startLoginRequest() { _buddylist_poll_timer->stop(); qDebug() << _network->cookieJar()->cookiesForUrl(QUrl(FACEBOOK_URL)).count() << " cookies"; QList<QNetworkCookie> cookies; QMap<QString, QString> params; QUrl url(FACEBOOK_LOGIN_URL); QNetworkCookie cookie; cookie.setDomain(".facebook.com"); cookie.setPath("/"); // facebook uses this cookie to test for cookie support // if we dont set it it thinks we don't support cookies. cookie.setName("test_cookie"); cookie.setValue("1"); cookies << cookie; cookie.setName("isfbe"); cookie.setValue("false"); cookies << cookie; _network->cookieJar()->setCookiesFromUrl(cookies, QUrl(FACEBOOK_URL)); qDebug() << _network->cookieJar()->cookiesForUrl(QUrl(FACEBOOK_URL)).count() << " cookies"; // it seems those are not really needed, until I figure what // are they for //params.insert("md5pass", "0"); //params.insert("noerror", "1"); params.insert("email", _login); params.insert("pass", _password); params.insert("persistent", "1"); params.insert("login", "Login"); params.insert("charset_test", "€,´,€,´,水,Д,Є"); QString data = encodePostParams(params); qDebug() << data; QNetworkReply *reply = _network->post(QNetworkRequest(url), data.toAscii()); reply->setParent(this); QObject::connect(reply, SIGNAL(finished()), this, SLOT(slotLoginRequestFinished())); QObject::connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(slotLoginRequestError(QNetworkReply::NetworkError))); }
bool CookieJar::hasCookie(const QNetworkCookie &cookie) const { QUrl url; url.setScheme(cookie.isSecure() ? QLatin1String("https") : QLatin1String("http")); url.setHost(cookie.domain().startsWith(QLatin1Char('.')) ? cookie.domain().mid(1) : cookie.domain()); url.setPath(cookie.path()); const QList<QNetworkCookie> cookies(getCookiesForUrl(url)); for (int i = 0; i < cookies.count(); ++i) { if (cookies.at(i).domain() == cookie.domain() && cookies.at(i).name() == cookie.name()) { return true; } } return false; }
void CookieJar::read() { qDebug() << Q_FUNC_INFO; qDebug() << COOKIE_PATH; QFile f(COOKIE); if(!f.exists()) { return; } if (!f.open(QIODevice::ReadOnly | QIODevice::Text)) { return; } QList<QNetworkCookie> list; while(!f.atEnd()) { QList<QByteArray> spl = f.readLine().split(';'); QList<QByteArray> cookie = spl[0].split('='); if(cookie.length() < 2 || cookie[0].isEmpty() || cookie[1].isEmpty()) { continue; } QMap<QByteArray, QByteArray> add; for(int cnt = 1; spl.length() > cnt; cnt++) { QList<QByteArray> t = spl[cnt].split('='); if(t.count() > 1) { add[t[0].trimmed()] = t[1].trimmed(); } } QNetworkCookie c; c.setName(cookie[0]); c.setValue(cookie[1]); c.setPath(add["path"]); c.setDomain(add["domain"]); c.setExpirationDate(QDateTime::fromString(add["expires"])); list.append(c); } setAllCookies(list); }
void CookiesContentsWidget::addCookie(const QNetworkCookie &cookie) { const QString domain = (cookie.domain().startsWith('.') ? cookie.domain().mid(1) : cookie.domain()); QStandardItem *domainItem = findDomain(domain); if (domainItem) { for (int i = 0; i < domainItem->rowCount(); ++i) { if (domainItem->child(i, 0)->text() == cookie.name() && domainItem->child(i, 0)->data(Qt::UserRole).toString() == cookie.path()) { return; } } } else { domainItem = new QStandardItem(HistoryManager::getIcon(QUrl(QStringLiteral("http://%1/").arg(domain))), domain); domainItem->setToolTip(domain); m_model->appendRow(domainItem); if (sender()) { m_model->sort(0); } } QStandardItem *cookieItem = new QStandardItem(QString(cookie.name())); cookieItem->setData(cookie.path(), Qt::UserRole); cookieItem->setData(cookie.domain(), (Qt::UserRole + 1)); cookieItem->setToolTip(cookie.name()); cookieItem->setFlags(cookieItem->flags() | Qt::ItemNeverHasChildren); domainItem->appendRow(cookieItem); domainItem->setText(QStringLiteral("%1 (%2)").arg(domain).arg(domainItem->rowCount())); }
PostMonster::HttpResponse Common::deserializeResponse(const QJsonObject &jsonResponse) { PostMonster::HttpResponse response; response.mimeType = jsonResponse["mimeType"].toString().toLatin1(); response.status = jsonResponse["status"].toInt(); QByteArray body; body.append(jsonResponse["body"].toString()); response.body.append(QByteArray::fromBase64(body)); foreach (const QJsonValue &jsonHeader, jsonResponse["headers"].toArray()) { QNetworkReply::RawHeaderPair header; header.first.append(jsonHeader.toObject()["name"].toString()); header.second.append(jsonHeader.toObject()["value"].toString()); response.headers << header; } foreach (const QJsonValue &value, jsonResponse["cookies"].toArray()) { const QJsonObject &jsonCookie = value.toObject(); QNetworkCookie cookie; if (jsonCookie.contains("expire")) cookie.setExpirationDate(QDateTime::fromString(jsonCookie["expire"].toString(), Qt::ISODate)); if (jsonCookie["httpOnly"].toBool()) cookie.setHttpOnly(true); if (jsonCookie["secure"].toBool()) cookie.setSecure(true); if (jsonCookie.contains("path")) cookie.setPath(jsonCookie["path"].toString()); cookie.setName(jsonCookie["name"].toString().toLatin1()); cookie.setValue(jsonCookie["value"].toString().toLatin1()); response.cookies << cookie; } return response; }