TODO - surf-adblock - Surf adblock web extension
(HTM) git clone git://git.codemadness.org/surf-adblock
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
TODO (2813B)
---
1 - elementhiding: reverse exception rule are not supported (per domain).
2 - block rule: exception rules are not supported: these are also abused sometimes
3 to whitelist certain sites.
4
5 - simplify match, there are only a few rules with multiple *.
6
7 - loadrules: return struct rules* ?
8 on error free rules.
9
10 - optimization: for simple patterns use: strstr, strcasestr, strcmp, strcasemp
11
12 - combine rules in groups: display: none: display: initial, saves memory:
13 rule1,rule2 { display: none; } vs rule 1{...}rule2{...}
14
15 - checkrequest -> allowrequest.
16
17 - add test-case for global exception rules (no domains), see globalcss init code.
18 also support inverse element hide rule: "~example.com##div.textad".
19 - support domain name anchor separately: "||".
20 - test blocking websocket connections in surf.
21 - skip protocol part when matching for now, (later add support for websockets).
22 - for f->matchbegin, matchend etc: make sure to match domain properly, check part of
23 domain (subdomain).
24 - optimize towupper for fnmatch? check < 128, see musl optimization.
25 - fix blocking of : ||ads.somesite.com^
26 matchbegin and matchend rules are wrong.
27 - fix tweakers.net popup / rule.
28 this is in an exception rule...
29
30 make sure exception rules are always below in the list? modify awk script?
31 - preprocess pattern upfront (no copying of data per match (snprintf)).
32 - performance:
33 - benchmark rule matching (timing).
34 - bloom filters? some kind of cache?
35 - optimize simple filter case.
36 - also for single wildcard (at most start or end)? */bla or /bla*
37 - support separator "^" = [/\?]?
38 - test it better.
39 - CSS: separate CSS rules so it never is iterated in request rules.
40 ? Cache all global rules, iterate site rules per site?
41 - there is a websocket option? ignore it: block it in surf itself.
42 test if websockets use ws:// prefix.
43 - show linenr on error / ignored rule.
44
45 Docs:
46 - https://adblockplus.org/en/filter-cheatsheet
47 - https://adblockplus.org/filters
48
49 - On out-of-memory situations don't crash the page, but how to handle it?
50 - CSS blocking: don't allow sites to override the appended global and
51 site-specific stylesheet.
52 - separate between site-specific and global block rules.
53 - optimize matching:
54 ? hashtable per domain for specific rules or use bloom filters for matching?
55 - separate general block rules into a separate list.
56 - test: just use a simple strstr/strcasestr for patterns with no wildcards
57 and no matchbegin/matchend. Use strncmp/strcasecmp for patterns with no wildcards
58 and matchbegin or matchend set.
59 - make less CPU intensive.
60 - maybe even include it statically?
61 - optimize CSS rule matching (only per site?).
62
63 - optimize memory allocation.
64 - optimize: pregenerate one global stylesheet that applies to all sites?
65 - separate adblocker into daemon? not sure.