<pre style='margin:0'>
Clemens Lang (neverpanic) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/c49b70fc89998b96b23de15a41d062e01477394c">https://github.com/macports/macports-ports/commit/c49b70fc89998b96b23de15a41d062e01477394c</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new c49b70f adblock2privoxy: Submission of AdBlock/EasyList to Privoxy format converter
</span>c49b70f is described below
<span style='display:block; white-space:pre;color:#808000;'>commit c49b70fc89998b96b23de15a41d062e01477394c
</span>Author: Steven Thomas Smith <s.t.smith@ieee.org>
AuthorDate: Tue Jun 18 22:39:40 2019 -0400
<span style='display:block; white-space:pre;color:#404040;'> adblock2privoxy: Submission of AdBlock/EasyList to Privoxy format converter
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> * Build of the adblock2privoxy binary using Haskell stack
</span><span style='display:block; white-space:pre;color:#404040;'> * Launchdaemon for initialization and regular updates
</span><span style='display:block; white-space:pre;color:#404040;'> * Launchdaemon for dedicated nginx web server and blackhole for CSS hiding
</span>---
_resources/port1.0/group/haskell-stack-1.0.tcl | 7 ++
www/adblock2privoxy/Portfile | 129 +++++++++++++++++++++++++
www/adblock2privoxy/files/default.html | 9 ++
www/adblock2privoxy/files/nginx.conf | 52 ++++++++++
4 files changed, 197 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/_resources/port1.0/group/haskell-stack-1.0.tcl b/_resources/port1.0/group/haskell-stack-1.0.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 23bac75..d184011 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/_resources/port1.0/group/haskell-stack-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/_resources/port1.0/group/haskell-stack-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -21,6 +21,13 @@ post-extract {
</span> xinstall -m 0755 -d ${stack_root}
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# libHSbase shipped with GHC links against system libiconv, which provides the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# 'iconv' symbol, but not the 'libiconv' symbol. Because the compilation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# process statically links libHSbase.a, we must have /usr/lib in the library
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# search path first :/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.library_path
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.cpath
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> configure.cmd ${prefix}/bin/stack
configure.pre_args
configure.args setup \
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/adblock2privoxy/Portfile b/www/adblock2privoxy/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..272d949
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/adblock2privoxy/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,129 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup haskell-stack 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name adblock2privoxy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version 2.0.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories www haskell
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers @essandess
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license GPL-3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms macosx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage https://github.com/essandess/adblock2privoxy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description Convert adblock config files to privoxy format
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description ${description}. \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AdBlock Plus browser plugin has great block list files \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ provided by big community, but it is client software and \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cannot work on a server as proxy. Privoxy proxy has good \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ potential to block ads at server side, but it experiences \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ acute shortage of updated block lists. This software \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ converts adblock lists to privoxy config files format. \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Almost all adblock features are supported including \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ block/unblock requests (on privoxy) all syntax features \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ are supported except for regex templates matching host \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ name hide/unhide page elements (via CSS) all syntax \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ features are supported all block request options except \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for outdated ones: Supported: script, image, stylesheet, \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ object, xmlhttprequest, object-subrequest, subdocument, \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ document, elemhide, other, popup, third-party, domain=..., \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ match-case, donottrack.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites https://hackage.haskell.org/package/${name}-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums rmd160 301ba12cb3c624eaca766400972818b79b52adce \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 064f501995eef83146ed49ccf83856faee8ab7e6e1fd70013d8bb1e12a3a1411 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 42119
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_run-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:nginx \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:privoxy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -d ${destroot}${prefix}/etc/${name} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${prefix}/etc/${name}/privoxy \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${prefix}/etc/${name}/css
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -m 0644 -W ${filespath} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ nginx.conf \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${prefix}/etc/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -m 0644 -W ${filespath} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default.html \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${prefix}/etc/${name}/css
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace "s|@PREFIX@|${prefix}|g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${prefix}/etc/${name}/nginx.conf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.create yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitems \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ name ${name} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ start "( /bin/test -f \"\${prefix}/etc/adblock2privoxy/privoxy/ab2p.task\" \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t&& \"\${prefix}/bin/adblock2privoxy\" -t \"\${prefix}/etc/adblock2privoxy/privoxy/ab2p.task\" \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t|| \"\${prefix}/bin/adblock2privoxy\" -p \"\${prefix}/etc/adblock2privoxy/privoxy\" \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t\t-w \"\${prefix}/etc/adblock2privoxy/css\" \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t\t-d 127.0.0.1:8119 \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t\thttps://easylist.to/easylist/easyprivacy.txt \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t\thttps://easylist.to/easylist/easylist.txt \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t\thttps://easylist.to/easylist/fanboy-annoyance.txt \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t\thttps://easylist.to/easylist/fanboy-social.txt \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t\thttps://easylist-downloads.adblockplus.org/antiadblockfilters.txt \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t\thttps://easylist-downloads.adblockplus.org/malwaredomains_full.txt \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t\thttps://raw.githubusercontent.com/ryanbr/fanboy-adblock/master/fanboy-antifacebook.txt \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t\thttps://raw.githubusercontent.com/Dawsey21/Lists/master/adblock-list.txt \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t) && \"\${prefix}/bin/port\" reload privoxy" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ stop "/usr/bin/kill -SIGUSR1 `/usr/bin/pgrep -u root ${name}` 2>/dev/null" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pidfile none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitems-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ name ${name}-nginx \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ init "pidfile=\"\${prefix}/var/run/nginx/nginx-adblock2privoxy.pid\"" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ start "\"\${prefix}/sbin/nginx\" \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t\t-c \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t\t\"\${prefix}/etc/${name}/nginx.conf\" \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t\t-g \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t\t\"daemon off;\"" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ stop "if \[ -f \${pidfile} \]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t\t/usr/bin/kill `cat \${pidfile}` \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t\t\t&& /bin/rm -f \${pidfile} ;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\telse
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\t\t/usr/bin/kill -SIGUSR1 `/usr/bin/pgrep -u root nginx` 2>/dev/null ;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\tfi"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-activate {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # org.macports.adblock2privoxy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "s|^<key>ProgramArguments</key>|<key>StartCalendarInterval</key>\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <array>\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <dict>\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <key>Weekday</key>\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <integer>7</integer>\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <key>Hour</key>\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <integer>1</integer>\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <key>Minute</key>\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <integer>30</integer>\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ </dict>\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ </array>\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+&|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${prefix}/etc/${startupitem.location}/org.macports.${name}/org.macports.${name}.plist
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+notes "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Example production run:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+adblock2privoxy -p ${prefix}/etc/adblock2privoxy/privoxy -w ${prefix}/etc/adblock2privoxy/css -d 10.0.1.3:8119 \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ https://easylist.to/easylist/easyprivacy.txt \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ https://easylist.to/easylist/easylist.txt \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ https://easylist.to/easylist/fanboy-annoyance.txt \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ https://easylist.to/easylist/fanboy-social.txt \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ https://easylist-downloads.adblockplus.org/antiadblockfilters.txt \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ https://easylist-downloads.adblockplus.org/malwaredomains_full.txt \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ https://raw.githubusercontent.com/ryanbr/fanboy-adblock/master/fanboy-antifacebook.txt \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ https://raw.githubusercontent.com/Dawsey21/Lists/master/adblock-list.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Update run:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+adblock2privoxy -t ${prefix}/etc/adblock2privoxy/privoxy/ab2p.task
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.type regex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.url https://hackage.haskell.org/package/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.regex "/package/[quotemeta ${name}]-\[^/\]+/[quotemeta ${name}]-(\[^\"\]+)[quotemeta ${extract.suffix}]"
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/adblock2privoxy/files/default.html b/www/adblock2privoxy/files/default.html
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..d008281
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/adblock2privoxy/files/default.html
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+<!DOCTYPE html>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+<html>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+<head>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <meta charset='utf-8'>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+</head>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+<body>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+<p><a href="https://github.com/essandess/adblock2privoxy">adblock2privoxy</a> blackhole 🕳</p>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+</body>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+</html>
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/adblock2privoxy/files/nginx.conf b/www/adblock2privoxy/files/nginx.conf
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..556eeef
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/adblock2privoxy/files/nginx.conf
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,52 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+worker_processes auto;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+events {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ worker_connections 64;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# this must be consistent with daemondo's --pidfile specification
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+pid @PREFIX@/var/run/nginx/nginx-adblock2privoxy.pid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# error_log @PREFIX@/var/log/nginx/error_adblock2privoxy.log warn;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+error_log off;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+http {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # access_log @PREFIX@/var/log/nginx/access_adblock2privoxy.log;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ access_log off;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # avoid error 413 Request Entity Too Large
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # client_max_body_size 64M;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ keepalive_timeout 65;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ server {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ listen 127.0.0.1:8119;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ab2p css domain name (optional, should be equal to --domainCSS parameter)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ server_name localhost;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #root = --webDir parameter value
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ root @PREFIX@/etc/adblock2privoxy/css;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Ensure that http://localhost:8119/ is a legitimate (200 return code)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # default page; use as iOS proxy.pac blackhole
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Test with curl -I --proxy http://127.0.0.1:8119 http://www.foo.com/bar?q=snafoo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ location / {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rewrite ^ /default.html break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ location ~ ^/+(ab2p(?:\.common)?\.css) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # ab2p.css in top-level directory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ try_files $uri $1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ location ~ ^/[^/.]+\..+/ab2p\.css$ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # first reverse domain names order
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rewrite ^/([^/]*?)\.([^/.]+)(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?/ab2p.css$ /$9/$8/$7/$6/$5/$4/$3/$2/$1/ab2p.css last;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ location ~ (^.*/+)[^/]+/+ab2p\.css {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # then try to get CSS for current domain
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # if it is unavailable - get CSS for parent domain
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ try_files $uri $1ab2p.css;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span></pre><pre style='margin:0'>
</pre>