diff options
| -rw-r--r-- | src/adblock/adblockmanager.cpp | 164 | ||||
| -rw-r--r-- | src/adblock/adblockmanager.h | 13 | ||||
| -rw-r--r-- | src/adblock/adblockwidget.cpp | 66 | ||||
| -rw-r--r-- | src/data/CMakeLists.txt | 7 | ||||
| -rw-r--r-- | src/data/adblockrc | 187 | ||||
| -rw-r--r-- | src/rekonq.kcfg | 23 | 
6 files changed, 302 insertions, 158 deletions
| diff --git a/src/adblock/adblockmanager.cpp b/src/adblock/adblockmanager.cpp index e48cc753..ff3aad6a 100644 --- a/src/adblock/adblockmanager.cpp +++ b/src/adblock/adblockmanager.cpp @@ -37,9 +37,8 @@  #include "webpage.h"  // KDE Includes -#include <KSharedConfig> -#include <KConfigGroup> -#include <KIO/TransferJob> +#include <KIO/FileCopyJob> +#include <KStandardDirs>  // Qt Includes  #include <QUrl> @@ -50,7 +49,6 @@ AdBlockManager::AdBlockManager(QObject *parent)      : QObject(parent)      , _isAdblockEnabled(false)      , _isHideAdsEnabled(false) -    , _index(0)  {      loadSettings();  } @@ -66,8 +64,21 @@ AdBlockManager::~AdBlockManager()  void AdBlockManager::loadSettings()  { -    _index = 0; -    _buffer.clear(); +    // first, check this... +    QString adblockFilePath = KStandardDirs::locateLocal("appdata" , QL1S("adblockrc")); +    if (!QFile::exists(adblockFilePath)) +    { +        QString generalAdblockFilePath = KStandardDirs::locate("appdata" , QL1S("adblockrc")); +        QFile adblockFile(generalAdblockFilePath); +        bool copied = adblockFile.copy(adblockFilePath); +        if (!copied) +        { +            kDebug() << "oh oh... Problems copying default adblock file"; +            return; +        } +    } +    _adblockConfig = KSharedConfig::openConfig("adblockrc", KConfig::SimpleConfig, "appdata"); +    // ----------------      _hostWhiteList.clear();      _hostBlackList.clear(); @@ -75,7 +86,8 @@ void AdBlockManager::loadSettings()      _blackList.clear();      _hideList.clear(); -    _isAdblockEnabled = ReKonfig::adBlockEnabled(); +    KConfigGroup settingsGroup(_adblockConfig, "Settings"); +    _isAdblockEnabled = settingsGroup.readEntry("adBlockEnabled", false);      kDebug() << "ADBLOCK ENABLED = " << _isAdblockEnabled;      // no need to load filters if adblock is not enabled :) @@ -83,43 +95,51 @@ void AdBlockManager::loadSettings()          return;      // just to be sure.. -    _isHideAdsEnabled = ReKonfig::hideAdsEnabled(); - -    // read settings -    KSharedConfig::Ptr config = KSharedConfig::openConfig("adblock", KConfig::SimpleConfig, "appdata"); -    KConfigGroup rulesGroup(config, "rules"); -    QStringList rules; -    rules = rulesGroup.readEntry("local-rules" , QStringList()); -    loadRules(rules); +    _isHideAdsEnabled = settingsGroup.readEntry("hideAdsEnabled", false);      // ----------------------------------------------------------      QDateTime today = QDateTime::currentDateTime(); -    QDateTime lastUpdate = ReKonfig::lastUpdate();  //  the day of the implementation.. :) -    int days = ReKonfig::updateInterval(); +    QDateTime lastUpdate = QDateTime::fromString(settingsGroup.readEntry("lastUpdate", QString())); +    int days = settingsGroup.readEntry("updateInterval", 7);      if (today > lastUpdate.addDays(days))      { -        ReKonfig::setLastUpdate(today); +        settingsGroup.writeEntry("lastUpdate", today.toString()); -        updateNextSubscription(); +        updateSubscriptions();          return;      }      // else -    QStringList titles = ReKonfig::subscriptionTitles(); -    Q_FOREACH(const QString & title, titles) +    KConfigGroup filtersGroup(_adblockConfig, "FiltersList"); +    for (int i = 1; i <= 60; ++i)      { -        rules = rulesGroup.readEntry(title + "-rules" , QStringList()); -        loadRules(rules); +        QString n = QString::number(i); +        bool filterActive = filtersGroup.readEntry("FilterEnabled-" + n, false); +        if (filterActive) +        { +            QString rulesFilePath = KStandardDirs::locateLocal("appdata" , QL1S("adblockrules_") + n); +            loadRules(rulesFilePath); +        }      }  } -void AdBlockManager::loadRules(const QStringList &rules) +void AdBlockManager::loadRules(const QString &rulesFilePath)  { -    Q_FOREACH(const QString & stringRule, rules) +    QFile ruleFile(rulesFilePath); +    if (!ruleFile.open(QFile::ReadOnly | QFile::Text)) +    { +        kDebug() << "Unable to open rule file" << rulesFilePath; +        return; +    } + +    QTextStream in(&ruleFile); +    while (!in.atEnd())      { +        QString stringRule = in.readLine(); +          // ! rules are comments          if (stringRule.startsWith('!'))              continue; @@ -267,82 +287,38 @@ void AdBlockManager::applyHidingRules(WebPage *page)  } -void AdBlockManager::updateNextSubscription() +void AdBlockManager::updateSubscriptions()  { -    QStringList locations = ReKonfig::subscriptionLocations(); - -    if (_index < locations.size()) -    { -        QString urlString = locations.at(_index); -        KUrl subUrl = KUrl(urlString); - -        KIO::TransferJob* job = KIO::get(subUrl , KIO::Reload , KIO::HideProgressInfo); -        job->metaData().insert("ssl_no_client_cert", "TRUE"); -        job->metaData().insert("ssl_no_ui", "TRUE"); -        job->metaData().insert("UseCache", "false"); -        job->metaData().insert("cookies", "none"); -        job->metaData().insert("no-auth", "true"); - -        connect(job, SIGNAL(data(KIO::Job*,QByteArray)), this, SLOT(subscriptionData(KIO::Job*,QByteArray))); -        connect(job, SIGNAL(result(KJob*)), this, SLOT(slotResult(KJob*))); - -        return; -    } - -    _index = 0; -    _buffer.clear(); -} +    KConfigGroup filtersGroup(_adblockConfig, "FiltersList"); +    int i = 1; +    QString n = QString::number(i); -void AdBlockManager::slotResult(KJob *job) -{ -    if (job->error()) -        return; - -    QList<QByteArray> list = _buffer.split('\n'); -    QStringList ruleList; -    Q_FOREACH(const QByteArray & ba, list) +    while (filtersGroup.hasKey("FilterName-" + n))      { -        ruleList << QString(ba); -    } -    loadRules(ruleList); -    saveRules(ruleList); - -    _index++; - -    // last.. -    updateNextSubscription(); -} - - -void AdBlockManager::subscriptionData(KIO::Job* job, const QByteArray& data) -{ -    Q_UNUSED(job) - -    if (data.isEmpty()) -        return; - -    int oldSize = _buffer.size(); -    _buffer.resize(_buffer.size() + data.size()); -    memcpy(_buffer.data() + oldSize, data.data(), data.size()); -} - +        bool isFilterEnabled = filtersGroup.readEntry("FilterEnabled-" + n, false); +        if (isFilterEnabled) +        { +            QString fUrl = filtersGroup.readEntry("FilterURL-" + n, QString()); +            KUrl subUrl = KUrl(fUrl); + +            kDebug() << "Filter ENABLED: " << fUrl; +            QString rulesFilePath = KStandardDirs::locateLocal("appdata" , QL1S("adblockrules_") + n); +            KUrl destUrl = KUrl(rulesFilePath); + +            KIO::FileCopyJob* job = KIO::file_copy(subUrl , destUrl, -1, KIO::HideProgressInfo); +            job->metaData().insert("ssl_no_client_cert", "TRUE"); +            job->metaData().insert("ssl_no_ui", "TRUE"); +            job->metaData().insert("UseCache", "false"); +            job->metaData().insert("cookies", "none"); +            job->metaData().insert("no-auth", "true"); +        } -void AdBlockManager::saveRules(const QStringList &rules) -{ -    QStringList cleanedRules; -    Q_FOREACH(const QString & r, rules) -    { -        if (!r.startsWith('!') && !r.startsWith('[') && !r.isEmpty()) -            cleanedRules << r; +        i++; +        n = QString::number(i);      } -    QStringList titles = ReKonfig::subscriptionTitles(); -    QString title = titles.at(_index) + "-rules"; - -    KSharedConfig::Ptr config = KSharedConfig::openConfig("adblock", KConfig::SimpleConfig, "appdata"); -    KConfigGroup cg(config , "rules"); -    cg.writeEntry(title, cleanedRules); +    loadSettings();  } diff --git a/src/adblock/adblockmanager.h b/src/adblock/adblockmanager.h index cce00877..6b7c225e 100644 --- a/src/adblock/adblockmanager.h +++ b/src/adblock/adblockmanager.h @@ -130,6 +130,7 @@  // KDE Includes  #include <KIO/Job> +#include <KSharedConfig>  // Qt Includes  #include <QObject> @@ -161,13 +162,10 @@ public Q_SLOTS:      void showSettings();  private: -    void updateNextSubscription(); -    void saveRules(const QStringList &); -    void loadRules(const QStringList &); +    void updateSubscriptions(); +    void loadRules(const QString &); -private Q_SLOTS: -    void slotResult(KJob *); -    void subscriptionData(KIO::Job*, const QByteArray&); +    KSharedConfig::Ptr config();  private:      bool _isAdblockEnabled; @@ -179,8 +177,7 @@ private:      AdBlockRuleList _whiteList;      QStringList _hideList; -    int _index; -    QByteArray _buffer; +    KSharedConfig::Ptr _adblockConfig;  };  #endif diff --git a/src/adblock/adblockwidget.cpp b/src/adblock/adblockwidget.cpp index c26e31f4..8e6a81ae 100644 --- a/src/adblock/adblockwidget.cpp +++ b/src/adblock/adblockwidget.cpp @@ -108,36 +108,36 @@ void AdBlockWidget::removeRule()  void AdBlockWidget::load()  { -    const bool isAdBlockEnabled = ReKonfig::adBlockEnabled(); -    checkEnableAdblock->setChecked(isAdBlockEnabled); -    // update enabled status -    checkHideAds->setEnabled(checkEnableAdblock->isChecked()); -    tabWidget->setEnabled(checkEnableAdblock->isChecked()); - -    const bool areImageFiltered = ReKonfig::hideAdsEnabled(); -    checkHideAds->setChecked(areImageFiltered); - -    const int days = ReKonfig::updateInterval(); -    spinBox->setValue(days); - -    const QStringList subscriptions = ReKonfig::subscriptionTitles(); - -    // load automatic rules -    Q_FOREACH(const QString & sub, subscriptions) -    { -        QTreeWidgetItem *subItem = new QTreeWidgetItem(treeWidget); -        subItem->setText(0, sub); -        loadRules(subItem); -    } - -    // load local rules -    KSharedConfig::Ptr config = KSharedConfig::openConfig("adblock", KConfig::SimpleConfig, "appdata"); -    KConfigGroup localGroup(config, "rules"); -    const QStringList rules = localGroup.readEntry("local-rules" , QStringList()); -    Q_FOREACH(const QString & rule, rules) -    { -        listWidget->addItem(rule); -    } +//     const bool isAdBlockEnabled = ReKonfig::adBlockEnabled(); +//     checkEnableAdblock->setChecked(isAdBlockEnabled); +//     // update enabled status +//     checkHideAds->setEnabled(checkEnableAdblock->isChecked()); +//     tabWidget->setEnabled(checkEnableAdblock->isChecked()); +// +//     const bool areImageFiltered = ReKonfig::hideAdsEnabled(); +//     checkHideAds->setChecked(areImageFiltered); +// +//     const int days = ReKonfig::updateInterval(); +//     spinBox->setValue(days); +// +//     const QStringList subscriptions = ReKonfig::subscriptionTitles(); +// +//     // load automatic rules +//     Q_FOREACH(const QString & sub, subscriptions) +//     { +//         QTreeWidgetItem *subItem = new QTreeWidgetItem(treeWidget); +//         subItem->setText(0, sub); +//         loadRules(subItem); +//     } +// +//     // load local rules +//     KSharedConfig::Ptr config = KSharedConfig::openConfig("adblock", KConfig::SimpleConfig, "appdata"); +//     KConfigGroup localGroup(config, "rules"); +//     const QStringList rules = localGroup.readEntry("local-rules" , QStringList()); +//     Q_FOREACH(const QString & rule, rules) +//     { +//         listWidget->addItem(rule); +//     }  } @@ -176,9 +176,9 @@ void AdBlockWidget::save()      }      localGroup.writeEntry("local-rules" , localRules); -    ReKonfig::setAdBlockEnabled(checkEnableAdblock->isChecked()); -    ReKonfig::setHideAdsEnabled(checkHideAds->isChecked()); -    ReKonfig::setUpdateInterval(spinBox->value()); +//     ReKonfig::setAdBlockEnabled(checkEnableAdblock->isChecked()); +//     ReKonfig::setHideAdsEnabled(checkHideAds->isChecked()); +//     ReKonfig::setUpdateInterval(spinBox->value());      _changed = false;      emit changed(false); diff --git a/src/data/CMakeLists.txt b/src/data/CMakeLists.txt index 091650b9..5c3cfd80 100644 --- a/src/data/CMakeLists.txt +++ b/src/data/CMakeLists.txt @@ -28,6 +28,13 @@ INSTALL(      DESTINATION ${DATA_INSTALL_DIR}/rekonq/htmls  ) +# adblock default settings +INSTALL( +    FILES +    adblockrc +    DESTINATION ${DATA_INSTALL_DIR}/rekonq +) +  # opensearch engines  INSTALL(      FILES diff --git a/src/data/adblockrc b/src/data/adblockrc new file mode 100644 index 00000000..13843ba8 --- /dev/null +++ b/src/data/adblockrc @@ -0,0 +1,187 @@ +[Settings] +adBlockEnabled=false +hideAdsEnabled=false +updateInterval=7 +lastUpdate=Mon Feb 13 11:58:51 2012 +    +[FiltersList] +FilterEnabled-1=true +FilterName-1=EasyList +FilterURL-1=https://easylist-downloads.adblockplus.org/easylist.txt +FilterEnabled-2=false +FilterName-2=Corset+EasyList +FilterURL-2=https://easylist-downloads.adblockplus.org/corset+easylist.txt +FilterEnabled-3=false +FilterName-3=Corset +FilterURL-3=http://brianyi.com/corset.txt +FilterEnabled-4=false +FilterName-4=EasyList Germany+EasyList +FilterURL-4=https://easylist-downloads.adblockplus.org/ares+easylist.txt +FilterEnabled-5=false +FilterName-5=EasyList Germany +FilterURL-5=https://easylist-downloads.adblockplus.org/easylistgermany.txt +FilterEnabled-6=false +FilterName-6=Liste FR+EasyList +FilterURL-6=https://easylist-downloads.adblockplus.org/liste_fr+easylist.txt +FilterEnabled-7=false +FilterName-7=Liste FR +FilterURL-7=http://lian.info.tm/liste_fr.txt +FilterEnabled-8=false +FilterName-8=ROList+EasyList +FilterURL-8=https://easylist-downloads.adblockplus.org/rolist+easylist.txt +FilterEnabled-9=false +FilterName-9=ROList +FilterURL-9=http://www.picpoc.ro/menetzrolist.txt +FilterEnabled-10=false +FilterName-10=Việt Nam List+EasyList +FilterURL-10=https://easylist-downloads.adblockplus.org/abpvn+easylist.txt +FilterEnabled-11=false +FilterName-11=Việt Nam List +FilterURL-11=http://adblockplus-vietnam.googlecode.com/svn/trunk/abpvn.txt +FilterEnabled-12=false +FilterName-12=AdblockList.org +FilterURL-12=http://adblocklist.org/adblock-pxf-polish.txt +FilterEnabled-13=false +FilterName-13=Bulgarian list +FilterURL-13=http://stanev.org/abp/adblock_bg.txt +FilterEnabled-14=false +FilterName-14=EasyPrivacy+EasyList +FilterURL-14=https://easylist-downloads.adblockplus.org/easyprivacy+easylist.txt +FilterEnabled-15=false +FilterName-15=EasyPrivacy+Cédrics Liste +FilterURL-15=https://easylist-downloads.adblockplus.org/easyprivacy+cedrics.txt +FilterEnabled-16=false +FilterName-16=EasyPrivacy +FilterURL-16=https://easylist-downloads.adblockplus.org/easyprivacy.txt +FilterEnabled-17=false +FilterName-17=IsraelList +FilterURL-17=http://israellist.googlecode.com/files/IsraelList.txt +FilterEnabled-18=false +FilterName-18=Morpeh Rus List+EasyList +FilterURL-18=https://easylist-downloads.adblockplus.org/morpeh+easylist.txt +FilterEnabled-19=false +FilterName-19=Morpeh Rus List +FilterURL-19=http://adblockplus.mihalkin.ru/Russia.txt +FilterEnabled-20=false +FilterName-20=Norsk adblockliste +FilterURL-20=http://home.online.no/~mlangsho/adblock.txt +FilterEnabled-21=false +FilterName-21=void.gr +FilterURL-21=http://www.void.gr/kargig/void-gr-filters.txt +FilterEnabled-22=false +FilterName-22=Wiltteri +FilterURL-22=http://www.wiltteri.net/wiltteri.txt +FilterEnabled-23=false +FilterName-23=ChinaList +FilterURL-23=http://adblock-chinalist.googlecode.com/svn/trunk/adblock.txt +FilterEnabled-24=false +FilterName-24=Filter von Dr.Evil +FilterURL-24=http://adblock.maltekraus.de/adblock.txt +FilterEnabled-25=false +FilterName-25=RuAdList +FilterURL-25=http://ruadlist.googlecode.com/svn/trunk/adblock.txt +FilterEnabled-26=false +FilterName-26=AdblockRules.org +FilterURL-26=http://adblockrules.org/download.php?type=all +FilterEnabled-27=false +FilterName-27=BSI Lista Polska +FilterURL-27=http://www.bsi.info.pl/filtrABP.txt +FilterEnabled-28=false +FilterName-28=Czech List +FilterURL-28=http://dajbych.net/adblock.txt +FilterEnabled-29=false +FilterName-29=Cédrics Liste +FilterURL-29=http://chewey.de/mozilla/data/adblock.txt +FilterEnabled-30=false +FilterName-30=dutchblock +FilterURL-30=http://dutchmega.nl/dutchblock/list.txt +FilterEnabled-31=false +FilterName-31=Fanboy's List +FilterURL-31=http://www.fanboy.co.nz/adblock/fanboy-adblocklist-current-expanded.txt +FilterEnabled-32=false +FilterName-32=Fanboy's Chinese +FilterURL-32=http://www.fanboy.co.nz/adblock/fanboy-adblocklist-chn.txt +FilterEnabled-33=false +FilterName-33=Fanboy's Czech +FilterURL-33=http://www.fanboy.co.nz/adblock/fanboy-adblocklist-cz.txt +FilterEnabled-34=false +FilterName-34=Fanboy's Espanol/Portuguese +FilterURL-34=http://www.fanboy.co.nz/adblock/fanboy-adblocklist-esp.txt +FilterEnabled-35=false +FilterName-35=Fanboy's Japanese +FilterURL-35=http://www.fanboy.co.nz/adblock/fanboy-adblocklist-jpn.txt +FilterEnabled-36=false +FilterName-36=Fanboy's Korean +FilterURL-36=http://www.fanboy.co.nz/adblock/fanboy-adblocklist-krn.txt +FilterEnabled-37=false +FilterName-37=Fanboy's Tracking/Stats Blocking +FilterURL-37=http://www.fanboy.co.nz/adblock/fanboy-adblocklist-stats.txt +FilterEnabled-38=false +FilterName-38=Fanboy's Turkish +FilterURL-38=http://www.fanboy.co.nz/adblock/fanboy-adblocklist-tky.txt +FilterEnabled-39=false +FilterName-39=Filter von MonztA +FilterURL-39=http://monzta.maltekraus.de/adblock.txt +FilterEnabled-40=false +FilterName-40=Filtros Nauscopicos +FilterURL-40=http://s3.amazonaws.com/lcp/maty/myfiles/AdBlock-Nauscopio-maty.txt +FilterEnabled-41=false +FilterName-41=Hackrus anti-advertisement +FilterURL-41=http://nsis.narod.ru/clean_internet/aag.txt +FilterEnabled-42=false +FilterName-42=Hackrus anti-advertisement supplemental +FilterURL-42=http://nsis.narod.ru/clean_internet/aas.txt +FilterEnabled-43=false +FilterName-43=Hackrus anti-counter +FilterURL-43=http://nsis.narod.ru/clean_internet/ac.txt +FilterEnabled-44=false +FilterName-44=hufilter +FilterURL-44=http://pete.teamlupus.hu/hufilter.txt +FilterEnabled-45=false +FilterName-45=Iceland List +FilterURL-45=http://adblock-iceland.googlecode.com/files/icelandic%20filter.txt +FilterEnabled-46=false +FilterName-46=Japanese General Filter +FilterURL-46=http://adblock-plus-japanese-filter.googlecode.com/svn/trunk/abp_jp_general.txt +FilterEnabled-47=false +FilterName-47=Japanese Site-Specific Filter +FilterURL-47=http://adblock-plus-japanese-filter.googlecode.com/svn/trunk/abp_jp_site_specific.txt +FilterEnabled-48=false +FilterName-48=Lista Basa +FilterURL-48=http://www.photographer.neostrada.pl/abp.txt +FilterEnabled-49=false +FilterName-49=NLBlock +FilterURL-49=http://www.verzijlbergh.com/adblock/nlblock.txt +FilterEnabled-50=false +FilterName-50=PLgeneral +FilterURL-50=http://www.niecko.pl/adblock/adblock.txt +FilterEnabled-51=false +FilterName-51=Schacks Adblock Plus liste +FilterURL-51=http://adblock.schack.dk/block.txt +FilterEnabled-52=false +FilterName-52=UA-IX Бан-лист +FilterURL-52=http://adblock.oasis.org.ua/banlist.txt +FilterEnabled-53=false +FilterName-53=Xfiles +FilterURL-53=http://mozilla.gfsolone.com/filtri.txt +FilterEnabled-54=false +FilterName-54=adblock.free.fr +FilterURL-54=http://adblock.free.fr/adblock.txt +FilterEnabled-55=false +FilterName-55=adblock.free.fr basic (bloque les pubs uniquement) +FilterURL-55=http://adblock.free.fr/adblock_basic.txt +FilterEnabled-56=false +FilterName-56=Ajnasz's list +FilterURL-56=http://ajnasz.hu/adblock/recent +FilterEnabled-57=false +FilterName-57=Schuzak's Universal Filter +FilterURL-57=http://www.schuzak.jp/other/abp.txt +FilterEnabled-58=false +FilterName-58=Malware Domains +FilterURL-58=http://malwaredomains.lanik.us/malwaredomains_full.txt +FilterEnabled-59=false +FilterName-59=Rickroll Blacklist +FilterURL-59=http://rickrolldb.com/ricklist.txt +FilterEnabled-60=false +FilterName-60=EasyList without element hiding +FilterURL-60=https://easylist-downloads.adblockplus.org/easylist_noelemhide.txt diff --git a/src/rekonq.kcfg b/src/rekonq.kcfg index 6de6d1f1..bdcbcb60 100644 --- a/src/rekonq.kcfg +++ b/src/rekonq.kcfg @@ -249,29 +249,6 @@  </group> -<!-- AdBlock Settings --> -<group name="AdBlock"> -    <entry name="adBlockEnabled" type="Bool"> -        <default>false</default> -    </entry> -    <entry name="hideAdsEnabled" type="Bool"> -        <default>false</default> -    </entry> -    <entry name="subscriptionTitles" type="StringList"> -        <default>EasyList</default> -    </entry> -    <entry name="subscriptionLocations" type="StringList"> -        <default>https://easylist-downloads.adblockplus.org/easylist.txt</default> -    </entry> -    <entry name="lastUpdate" type="DateTime"> -        <default code="true">QDateTime(QDate(2009,03,13))</default> -    </entry> -    <entry name="updateInterval" type="Int"> -        <default>7</default> -    </entry> -</group> - -  <!-- Sync Settings -->  <group name="Sync">      <entry name="syncEnabled" type="Bool"> | 
