Commit Graph

59 Commits (master)

Author SHA1 Message Date
vi 2a6ec1261d An invitation, in anticipation of Yori's declamation. 2017-12-27 14:54:02 +01:00
vi 00d2341394 Tighten some loops, change more interface.
This will save.. five comparisons.. occasionally? But it's a more
transparent design, and it seems more charitable to group interface
changes together.
2017-12-11 05:52:40 +01:00
vi c8fa18c5f4 rewrite(URL|Cookie) are now pure.
They have been pure since ed1933f, but now the types reflect that.

Breaking interface change.
2017-12-11 05:13:59 +01:00
vi b42958031a Forward the rules database to the 2017.12.6 release.
Triples the number of the rules. Suffix trees are a good idea.
2017-12-11 04:29:19 +01:00
vi 72e984ebcb Workaround a design flaw in data-files globbing; increase coverage.
A longstanding design error in Cabal requires data-files' full
extension to match exactly, so *.xml matches CERT.xml but not
CERT.fi.xml. The previous specification dropped 27% of rules.
2017-12-11 03:55:40 +01:00
vi ed1933f2c5 Remove the IO bottleneck.
Don't redundantly readIO/parse the rulesets; do this once, lazily
carrying out the involved operations. Rulesets are invariant over
executions.

This improves performance by a few orders of magnitude. Though at some
point we should substitute linear search for lookup on a generalised
suffix tree of rooted domains.

Breaking interface change, though I'll likely restore the old form
soon with IO TH.
2017-12-06 13:21:57 +01:00
vi e2d9556c6f Another example: CountUpgradeable.
Given a sequence of URIs on stdin, count the number we know how to
rewrite, together with the total number input. Coverage analysis?
2017-12-05 21:51:40 +01:00
vi 4708e7fc8c Avoid the regular expression engine in parsing rule targets.
I read in the bible (https://www.eff.org/https-everywhere/rulesets) that:

"""
To cover all of a domain's subdomains, you may want to specify a
wildcard target like *.twitter.com. Specifying this type of left-side
wildcard matches any host name with .twitter.com as a suffix, e.g.
www.twitter.com or urls.api.twitter.com. You can also specify a
right-side wildcard like www.google.*. Right-side wildcards, unlike
left-side wildcards, apply only one level deep. So if you want to
cover all countries you'll generally need to specify www.google.*,
www.google.co.*, and www.google.com.* to cover domains like
www.google.co.uk or www.google.com.au.
"""

The previous interpretation is both incorrect (because right wildcards
only apply one level deep) and potentially expensive (regular
expression matching is exponential in the worst-case.)
2017-12-05 20:54:40 +01:00
vi bb8b765ba0 Fast-forward upstream ruleset. 2017-12-05 17:38:39 +01:00
vi 44b6f2dcb4 Dependency upgrades; lts-8.24.
While we're here, ensure Cabal doesn't expect executable-exclusive
dependencies when the build-examples flag is set to false.
2017-12-05 17:23:37 +01:00
vi 9fcf5bc289 Refactored ICU extras. 2015-11-08 17:16:05 +08:00
vi 81ec883617 List the library as a dependency of the test suite, so Stack rebuilds tests without "build". 2015-11-08 17:14:01 +08:00
vi 783d59a20f % rm default.nix
I don't use it, and it's probably outdated given all the haskell-ng
work.
2015-11-08 00:56:45 +08:00
vi c26afe01cf Don't admit package-wise parameterisation of rulesets.
As 'a6f28e07a1edc8f62f3dfaf7965b3a818c2f4a7f' showed, there may be
breaking changes in the structure of rulesets between releases. I
don't intend to verify that every pair in the product works (is there
reason to be interested in any other than the latest?), so let's not
acommodate any more than one.
2015-11-08 00:53:35 +08:00
vi 1b46c03817 Added an example program; a HTTP proxy server redirecting to HTTPS when possible. 2015-11-07 18:14:19 +08:00
vi a6f28e07a1 We aren't ready for 5.1.1.
This reverts commit 2f0267e594.
2015-11-05 21:04:26 +08:00
vi 78f6c6c7eb Data.Text.{head,last} aren't total. 2015-11-05 21:01:19 +08:00
vi 9d156f17b0 Stack, AMP. 2015-11-04 23:15:07 +08:00
vi af2a14d7b3 Merge 'https-everywhere-rules-raw' into 'https-everywhere-rules'. 2015-11-04 21:59:02 +08:00
vi d165393745 Prepare to be assimilated by https-everywhere-rules. 2015-11-04 21:58:27 +08:00
vi e3c171b67e Prepare to assimilate https-everywhere-rules-raw. 2015-11-04 21:57:59 +08:00
vi 2f0267e594 Rules for 5.1.1 2015-08-27 22:22:27 +08:00
vi 74fc12d79f Weaken "base" bounds to >= 4.6 2015-08-27 22:21:18 +08:00
Jayesh Kumar Gupta c50f8496d3 Wrong url for https-everywhere-rules-raw?
I think.
2015-01-09 02:51:45 +05:30
vi 98ff6f9cda Nix: correctly propagate alternative package sets. 2014-12-28 10:12:25 +00:00
vi 16959f6ca0 Bumped dependencies, added a Nix derivation. 2014-12-25 19:54:56 +00:00
vi c90400b0d3 Added Nix derivation, relaxed "text" dependency. 2014-12-25 19:17:29 +00:00
vi 65051bd4b1 README nitpicks. 2014-08-25 01:48:04 +08:00
vi 412ca9fa16 Bump minor version, for recent interface change. 2014-08-25 01:26:44 +08:00
vi d08dc13352 Less artificial cookie example. 2014-08-25 00:18:08 +08:00
vi 6d12745fc9 Interface change for consistency: rewriteURL is idempotent on addresses with no matching rules. 2014-08-24 23:57:55 +08:00
vi 663f9b61dc Build dependencies: permit text-icu 0.8. 2014-08-24 23:52:28 +08:00
vi dddff3484e Don't build with -Werror. 2014-08-24 14:15:44 +08:00
vi 16633fd8b2 Cabal file was egregiously misnamed. 2014-08-24 14:15:08 +08:00
vi 7444a216e7 README: reference https-everywhere-rules-raw. 2014-08-24 14:06:22 +08:00
vi d75478773f Added cookie example to README. 2014-08-24 14:00:41 +08:00
vi 19a9a6b40d Fixed Cookie parser -- fields and predicates were mismatched. 2014-08-24 14:00:27 +08:00
vi eb144cc4dc The start of a README. 2014-08-24 12:57:50 +08:00
vi 5af781291f Correct pipeline semantics. 2014-08-24 12:57:35 +08:00
vi c6c5eae311 Simplified adornSuffix; no "Maybe" indirection. 2014-08-24 01:30:40 +08:00
vi 42bc20ae07 Safe implementation of adornSuffix. 2014-08-23 19:01:14 +08:00
vi 427a2516b3 Isolated tests for predicates defined in the top-level Internal module. 2014-08-23 19:00:48 +08:00
vi 9bf2a9194c Fixed exclusion matching. 2014-08-17 08:39:56 +08:00
vi 2732605a61 Permit latest Hspec. 2014-08-17 07:44:46 +08:00
vi 85605fcbab Fixed target parser. 2014-08-11 05:42:03 +08:00
vi 8ec3419492 Failing tests for parseRuleSets. 2014-08-11 05:32:06 +08:00
vi 49be7aa1a0 Use more structured URI representation; targets match only hosts.
This resolves #2.
2014-08-11 03:32:51 +08:00
vi 2a409bfdc7 Sorted build-depends. 2014-08-11 02:14:00 +08:00
vi 444b5ea51d Don't strip the text surrounding a match when performing find and replace.
Meta:
  Cross-Reference: #2
2014-08-11 02:09:02 +08:00
vi 809cca61b7 A unit test for the target parser. 2014-08-11 00:38:16 +08:00