kcookieserver.cpp

来自「konqueror3 embedded版本, KDE环境下的当家浏览器的嵌入式版」· C++ 代码 · 共 614 行 · 第 1/2 页

CPP
614
字号
{    if( mTimer )        return;    mTimer = new QTimer();    connect( mTimer, SIGNAL( timeout()), SLOT( slotSave()));    mTimer->start( 1000*60*SAVE_DELAY );}void KCookieServer::putCookie( QStringList& out, KHttpCookie *cookie,                               const QValueList<int>& fields ){    QValueList<int>::ConstIterator i = fields.begin();    for ( ; i != fields.end(); ++i )    {        switch(*i)        {         case CF_DOMAIN :            out << cookie->domain();            break;         case CF_NAME :            out << cookie->name();            break;         case CF_PATH :            out << cookie->path();            break;         case CF_HOST :            out << cookie->host();            break;         case CF_VALUE :            out << cookie->value();            break;         case CF_EXPIRE :            out << QString::number(cookie->expireDate());            break;         case CF_PROVER :            out << QString::number(cookie->protocolVersion());            break;         case CF_SECURE :            out << QString::number( cookie->isSecure() ? 1 : 0 );            break;         default :            out << QString::null;        }    }}bool KCookieServer::cookieMatches( KHttpCookiePtr c,                                   QString domain, QString fqdn,                                   QString path, QString name ){    if( c )    {        bool hasDomain = !domain.isEmpty();        return       ((hasDomain && c->domain() == domain) ||        fqdn == c->host()) &&       (c->path()   == path) &&       (c->name()   == name) &&       (!c->isExpired(time(0)));    }    return false;}// DCOP functionQStringKCookieServer::findCookies(QString url){  return findCookies(url, 0);}// DCOP functionQStringKCookieServer::findCookies(QString url, long windowId){   if (cookiesPending(url))   {      CookieRequest *request = new CookieRequest;      request->client = callingDcopClient();      request->transaction = request->client->beginTransaction();      request->url = url;      request->DOM = false;      request->windowId = windowId;      mRequestList->append( request );      return QString::null; // Talk to you later :-)   }      QString cookies = mCookieJar->findCookies(url, false, windowId);      if (mCookieJar->changed() && !mTimer)      saveCookieJar();      return cookies;}// DCOP functionQStringListKCookieServer::findDomains(){   QStringList result;   const QStringList domains = mCookieJar->getDomainList();   for ( QStringList::ConstIterator domIt = domains.begin();         domIt != domains.end(); ++domIt )   {       // Ignore domains that have policy set for but contain       // no cookies whatsoever...       const KHttpCookieList* list =  mCookieJar->getCookieList(*domIt, "");       if ( list && !list->isEmpty() )          result << *domIt;   }   return result;}// DCOP functionQStringListKCookieServer::findCookies(QValueList<int> fields,                           QString domain,                           QString fqdn,                           QString path,                           QString name){   QStringList result;   bool allDomCookies = name.isEmpty();   const KHttpCookieList* list =  mCookieJar->getCookieList(domain, fqdn);   if ( list && !list->isEmpty() )   {      QPtrListIterator<KHttpCookie>it( *list );      for ( ; it.current(); ++it )      {         if ( !allDomCookies )         {            if ( cookieMatches(it.current(), domain, fqdn, path, name) )            {               putCookie(result, it.current(), fields);               break;            }         }         else            putCookie(result, it.current(), fields);      }   }   return result;}// DCOP functionQStringKCookieServer::findDOMCookies(QString url){   return findDOMCookies(url, 0);}// DCOP functionQStringKCookieServer::findDOMCookies(QString url, long windowId){   // We don't wait for pending cookies because it locks up konqueror    // which can cause a deadlock if it happens to have a popup-menu up.   // Instead we just return pending cookies as if they had been accepted already.   KHttpCookieList pendingCookies;   cookiesPending(url, &pendingCookies);   return mCookieJar->findCookies(url, true, windowId, &pendingCookies);}// DCOP functionvoidKCookieServer::addCookies(QString arg1, QCString arg2, long arg3){   addCookies(arg1, arg2, arg3, false);}// DCOP functionvoidKCookieServer::deleteCookie(QString domain, QString fqdn,                            QString path, QString name){   const KHttpCookieList* list = mCookieJar->getCookieList( domain, fqdn );   if ( list && !list->isEmpty() )   {      QPtrListIterator<KHttpCookie>it (*list);      for ( ; it.current(); ++it )      {         if( cookieMatches(it.current(), domain, fqdn, path, name) )         {            mCookieJar->eatCookie( it.current() );            if (!mTimer)               saveCookieJar();            break;         }      }   }}// DCOP functionvoidKCookieServer::deleteCookiesFromDomain(QString domain){   mCookieJar->eatCookiesForDomain(domain);   if (!mTimer)      saveCookieJar();}// Qt functionvoidKCookieServer::slotDeleteSessionCookies( long windowId ){   deleteSessionCookies(windowId);}// DCOP functionvoidKCookieServer::deleteSessionCookies( long windowId ){  mCookieJar->eatSessionCookies( windowId );  if(!mTimer)    saveCookieJar();}voidKCookieServer::deleteSessionCookiesFor(QString fqdn, long windowId){  mCookieJar->eatSessionCookies( fqdn, windowId );  if(!mTimer)    saveCookieJar();}// DCOP functionvoidKCookieServer::deleteAllCookies(){   mCookieJar->eatAllCookies();   if (!mTimer)      saveCookieJar();}// DCOP functionvoidKCookieServer::addDOMCookies(QString arg1, QCString arg2, long arg3){   addCookies(arg1, arg2, arg3, true);}// DCOP functionvoidKCookieServer::setDomainAdvice(QString url, QString advice){   QString fqdn;   QString dummy;   if (KCookieJar::parseURL(url, fqdn, dummy))   {      QStringList domains;      mCookieJar->extractDomains(fqdn, domains);            mCookieJar->setDomainAdvice(domains[domains.count() > 3 ? 3 : 0],                                  KCookieJar::strToAdvice(advice));      // Save the cookie config if it has changed      mCookieJar->saveConfig( mConfig );   }}// DCOP functionQStringKCookieServer::getDomainAdvice(QString url){   KCookieAdvice advice = KCookieDunno;   QString fqdn;   QString dummy;   if (KCookieJar::parseURL(url, fqdn, dummy))   {      QStringList domains;      mCookieJar->extractDomains(fqdn, domains);      QStringList::ConstIterator it = domains.begin();      while ( (advice == KCookieDunno) && (it != domains.end()) )      {         // Always check advice in both ".domain" and "domain". Note         // that we only want to check "domain" if it matches the         // fqdn of the requested URL.         if ( (*it)[0] == '.' || (*it) == fqdn )            advice = mCookieJar->getDomainAdvice(*it);         ++it;      }      if (advice == KCookieDunno)         advice = mCookieJar->getGlobalAdvice();   }   return KCookieJar::adviceToStr(advice);}// DCOP functionvoidKCookieServer::reloadPolicy(){   mCookieJar->loadConfig( mConfig, true );}// DCOP functionvoidKCookieServer::shutdown(){   deleteLater();}#include "kcookieserver.moc"

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?