void CookieJar::load() { QFile cookieFile(m_cookieFileName); if (!cookieFile.open(QIODevice::ReadOnly)) return; QDataStream stream(&cookieFile); quint8 version; stream >> version; if (version != cookieFileVersion) return; QList<QNetworkCookie> cookies; qint32 count; stream >> count; #if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0) cookies.reserve(count); #endif for (int i = 0; i < count && !stream.atEnd(); ++i) { QByteArray rawCookie; stream >> rawCookie; cookies += QNetworkCookie::parseCookies(rawCookie); } setAllCookies(cookies); expireCookies(); }
void CookieJar::save() { expireCookies(); QByteArray cookieData; QDataStream stream(&cookieData, QIODevice::WriteOnly); stream << cookieFileVersion; QList<QNetworkCookie> cookies = allCookies(); QMutableListIterator<QNetworkCookie> it(cookies); while (it.hasNext()) { if (it.next().isSessionCookie()) it.remove(); } stream << qint32(cookies.count()); foreach (const QNetworkCookie& cookie, cookies) stream << cookie.toRawForm(); QFile cookieFile(m_cookieFileName + ".tmp"); if (!cookieFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) return; cookieFile.write(cookieData); cookieFile.close(); // ### use atomic rename QFile::remove(m_cookieFileName); cookieFile.rename(m_cookieFileName); }
void CookieJar::saveCookies(const QString& filename) { purgeOldCookies(); QFile cookieFile(filename); if (!cookieFile.open(QIODevice::WriteOnly)) { qWarning("Couldn't save cookie file."); return; } auto cookies = allCookies(); for (const auto &c : cookies) { cookieFile.write(c.toRawForm()); cookieFile.write("\n"); } }
void CookieJar::loadCookies(const QString& filename) { QFile cookieFile(filename); if (!cookieFile.open(QIODevice::ReadOnly)) { qWarning("Couldn't read cookie file."); return; } QList<QNetworkCookie> cookies = QNetworkCookie::parseCookies(cookieFile.readAll()); if (cookies.count() == 0) { qWarning() << "Failed to load cookie"; } else { setAllCookies(cookies); } }
Cookies::~Cookies() { QFile cookieFile(Multiuso::appDirPath() + "/navigateurWeb/autre/cookies.mltscookie"); if (cookieFile.open(QIODevice::WriteOnly)) { QTextStream out(&cookieFile); out.setCodec("UTF-8"); foreach(const QNetworkCookie &cookie, allCookies()) { if (!cookie.isSessionCookie()) out << cookie.toRawForm() << endl; } }
Cookies::Cookies(QObject *parent) : QNetworkCookieJar(parent) { QFile cookieFile(Multiuso::appDirPath() + "/navigateurWeb/autre/cookies.mltscookie"); if (cookieFile.exists() && cookieFile.open(QIODevice::ReadOnly)) { QList<QNetworkCookie> list; QByteArray line; while (!(line = cookieFile.readLine()).isNull()) list.append(QNetworkCookie::parseCookies(line)); setAllCookies(list); } }
void CookieJar::saveCookies() { QFile cookieFile(QDir::homePath()+"/.ybdb/cookies"); cookieFile.open(QFile::WriteOnly); qDebug() << "Saving all cookies: " << saveAll; //Save cookies, if there are in the allowesCookieDomains-list QList<QNetworkCookie> cookies = allCookies(); for (int i = 0; i < cookies.size(); i++) { bool allowed = false; //Check if cookies may not be saved if (cookies.value(i).isSessionCookie()) continue; if (cookies.value(i).expirationDate() < QDateTime::currentDateTime()) continue; //Only save non session cookies and is not expirated foreach (QString d, allowedCookieDomains) { if (saveAll || cookies.value(i).domain().endsWith(d)) { allowed = true; break; } } if (allowed) { cookieFile.write(cookies.value(i).toRawForm()+"\n"); qDebug() << "Saved cookie from: " << cookies.value(i).domain(); } else { qDebug() << "Discarded cookie from: " << cookies.value(i).domain(); } } cookieFile.flush(); cookieFile.close(); //Save the save all settings Settings::set("saveallcookies", QVariant(saveAll)); }