mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 20:07:35 +00:00
LibWeb: Add a basic content filter (ad blocking!) :^)
This patch adds a global (per-process) filter list to LibWeb that is used to filter all outgoing resource load requests. Basically we check the URL against a list of filter patterns and if it's a match for any one of them, we immediately fail the load. The filter list is a simple text file: ~/.config/BrowserContentFilters.txt It's one filter per line and they are simple glob filters for now, with implicit asterisks (*) at the start and end of the line.
This commit is contained in:
parent
1c8eaf28cd
commit
a6d52e0c97
5 changed files with 141 additions and 1 deletions
|
@ -43,6 +43,7 @@
|
|||
#include <LibGUI/TabWidget.h>
|
||||
#include <LibGUI/Window.h>
|
||||
#include <LibGfx/Bitmap.h>
|
||||
#include <LibWeb/Loader/ContentFilter.h>
|
||||
#include <LibWeb/Loader/ResourceLoader.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -132,6 +133,17 @@ int main(int argc, char** argv)
|
|||
auto m_config = Core::ConfigFile::get_for_app("Browser");
|
||||
Browser::g_home_url = m_config->read_entry("Preferences", "Home", "about:blank");
|
||||
|
||||
auto ad_filter_list_or_error = Core::File::open(String::formatted("{}/BrowserContentFilters.txt", Core::StandardPaths::config_directory()), Core::IODevice::ReadOnly);
|
||||
if (!ad_filter_list_or_error.is_error()) {
|
||||
auto& ad_filter_list = *ad_filter_list_or_error.value();
|
||||
while (!ad_filter_list.eof()) {
|
||||
auto line = ad_filter_list.read_line();
|
||||
if (line.is_empty())
|
||||
continue;
|
||||
Web::ContentFilter::the().add_pattern(line);
|
||||
}
|
||||
}
|
||||
|
||||
bool bookmarksbar_enabled = true;
|
||||
auto bookmarks_bar = Browser::BookmarksBarWidget::construct(Browser::bookmarks_file_path(), bookmarksbar_enabled);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue