Skip to content
Snippets Groups Projects
Commit 6643b079 authored by Klas Arvidsson's avatar Klas Arvidsson
Browse files

updated squid filer helper program

parent 095d2115
No related branches found
No related tags found
No related merge requests found
......@@ -4,11 +4,26 @@ import sys
import re
import datetime
import socket
import urllib.parse
errorpage = "http://www.ida.liu.se/~examadm/empty"
emptypage = "https://www.ida.liu.se/edu/ugrad/datortenta/empty"
errorpage = "https://www.ida.liu.se/edu/ugrad/datortenta/blocked.php"
filterlog = "/var/log/squid/filter.log"
basedir = "/usr/libexec/squid/helpers"
hostname = socket.gethostname()
def block_response(url):
if re.match('.*\.s?html([#?].*)?', url):
url = urllib.parse.quote(url)
return 'OK rewrite-url="{}?url={}"'.format(errorpage, url)
else:
return 'OK rewrite-url="{}"'.format(emptypage, url)
# return "OK status=302 url=\"" + errorpage + "\""
# "status" can only be used in the "Using an HTTP redirector" case,
# not in the "Using a re-writer to mangle the URL as it passes" case
# RTFM: https://wiki.squid-cache.org/Features/Redirectors
def modify_url(line, ruleset):
### [channel-ID <SP>] URL <SP> client_ip "/" fqdn <SP> user <SP> method [<SP> kv-pairs]<NL>
list = line.split(' ')
......@@ -29,22 +44,18 @@ def modify_url(line, ruleset):
if r != None:
return 'OK rewrite-url="http://{}:12000/{}"'.format(hostname, r.group(1))
for i in ruleset:
if i[0].match(url) != None:
# if re.match(i[0], url) != None:
for rule in ruleset:
pattern = 0
allowed = 1
if rule[pattern].match(url) != None:
if i[1]:
if rule[allowed]:
return "OK"
else:
return "OK rewrite-url=\"" + errorpage + "\""
return block_response(url)
return "OK rewrite-url=\"" + errorpage + "\""
return block_response(url)
# return "OK status=302 url=\"" + errorpage + "\""
# "status" can only be used in the "Using an HTTP redirector" case,
# not in the "Using a re-writer to mangle the URL as it passes" case
# RTFM: https://wiki.squid-cache.org/Features/Redirectors
def load_rules(ruleset, filename):
......@@ -70,7 +81,7 @@ def main():
load_rules(ruleset, basedir + "/rules.d/sas.rules")
# load_rules(ruleset, basedir + "/rules.d/dn.rules")
with open('/tmp/access.log', 'a') as log:
with open(filterlog, 'a') as log:
try:
while True:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment