High-level access to HTTPS Everywhere rulesets.
Go to file
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
examples Don't admit package-wise parameterisation of rulesets. 2015-11-08 00:53:35 +08:00
ref Don't admit package-wise parameterisation of rulesets. 2015-11-08 00:53:35 +08:00
src/Data Avoid the regular expression engine in parsing rule targets. 2017-12-05 20:54:40 +01:00
test Avoid the regular expression engine in parsing rule targets. 2017-12-05 20:54:40 +01:00
vendor Fast-forward upstream ruleset. 2017-12-05 17:38:39 +01:00
.gitignore Stack, AMP. 2015-11-04 23:15:07 +08:00
.gitmodules Don't admit package-wise parameterisation of rulesets. 2015-11-08 00:53:35 +08:00
DEBT.md Don't admit package-wise parameterisation of rulesets. 2015-11-08 00:53:35 +08:00
LICENSE Incomplete parser for HTTPS Everywhere rulesets. 2014-08-10 04:23:41 +08:00
README.md Don't admit package-wise parameterisation of rulesets. 2015-11-08 00:53:35 +08:00
Setup.hs Don't admit package-wise parameterisation of rulesets. 2015-11-08 00:53:35 +08:00
https-everywhere-rules.cabal Avoid the regular expression engine in parsing rule targets. 2017-12-05 20:54:40 +01:00
stack.yaml Dependency upgrades; lts-8.24. 2017-12-05 17:23:37 +01:00

README.md

https-everywhere-rules

Haskell package providing high-level access to HTTPS Everywhere rulesets. It aims to make it easier to specify: "use secure HTTP connections when possible."

λ: :m + Data.HTTPSEverywhere.Rules Network.URI
λ: let Just eff = parseURI "http://www.eff.org/document/eff-and-aclu-amicus-brief-klayman"
λ: rewriteURL eff
https://www.eff.org/document/eff-and-aclu-amicus-brief-klayman
λ: :m + Network.HTTP.Client Network.HTTP.Client.TLS Control.Applicative Control.Lens
λ: (req, hub) <- (,) <*> getUri <$> parseUrl "https://github.com/fmap/https-everywhere-rules"
λ: newManager tlsManagerSettings >>= httpNoBody req <&> destroyCookieJar . responseCookieJar >>= mapM (rewriteCookie hub)
[Cookie {cookie_name = "_gh_sess", cookie_value = "eyJzZXNzaW9uX2lkIjoiNjBlM2FiOTIxNTdhZTNhNDE5YWQ0ZTk4ZWQzNDRjMjEiLCJzcHlfcmVwbyI6ImZtYXAvaHR0cHMtZXZlcnl3aGVyZS1ydWxlcyIsInNweV9yZXBvX2F0IjoxNDA4ODk2OTM2LCJfY3NyZl90b2tlbiI6IktkbTlwN2JqNGptVmhrYjFIUm9BbkV0a1JTQXRDUXJid2g4VWo4N1g0Q1U9In0%3D--d378daa262b8c12bb82246d5de6b3adc353a3db7", cookie_expiry_time = 3013-12-25 00:00:00 UTC, cookie_domain = "github.com", cookie_path = "/", cookie_creation_time = 2014-08-24 16:15:37.815144 UTC, cookie_last_access_time = 2014-08-24 16:15:37.815144 UTC, cookie_persistent = False, cookie_host_only = True, cookie_secure_only = True, cookie_http_only = True},Cookie {cookie_name = "logged_in", cookie_value = "no", cookie_expiry_time = 2034-08-24 16:15:36 UTC, cookie_domain = "github.com", cookie_path = "/", cookie_creation_time = 2014-08-24 16:15:37.815144 UTC, cookie_last_access_time = 2014-08-24 16:15:37.815144 UTC, cookie_persistent = True, cookie_host_only = False, cookie_secure_only = True, cookie_http_only = True}]