diff --git a/files/squid/helpers/squid-url-rewrite.py b/files/squid/helpers/squid-url-rewrite.py index 292647a3d7b46085a4dcc807aed63da510065bcd..7b4f33dbe6f5bb364b3dc9d979f7fe13259ffaa1 100755 --- a/files/squid/helpers/squid-url-rewrite.py +++ b/files/squid/helpers/squid-url-rewrite.py @@ -84,26 +84,35 @@ def main(): ruleset.append( [re.compile(errorrex), True] ) ruleset.append( [re.compile("^.*"), False] ) - devel_rules = basedir + "/../devel.rules" - if os.path.isfile(devel_rules): - load_rules(ruleset, devel_rules) - - # load opendsa first to let it override default rules - load_rules(ruleset, basedir + "/rules.d/opendsa.rules") - load_rules(ruleset, basedir + "/rules.d/default.rules") - load_rules(ruleset, basedir + "/rules.d/rstudio.rules") - load_rules(ruleset, basedir + "/rules.d/cplusplus.rules") - load_rules(ruleset, basedir + "/rules.d/python.rules") - load_rules(ruleset, basedir + "/rules.d/java.rules") - load_rules(ruleset, basedir + "/rules.d/ruby.rules") - load_rules(ruleset, basedir + "/rules.d/sas.rules") - load_rules(ruleset, basedir + "/rules.d/translate.rules") - load_rules(ruleset, basedir + "/rules.d/office.forms.rules") + # Load all rules to a temporary ruleset and then add it to the rules + # Failure to load rules will then lead to complete denial of service and be noticed + tmpruleset = list() + try: + devel_rules = basedir + "/../devel.rules" + if os.path.isfile(devel_rules): + load_rules(tmpruleset, devel_rules) + + # load opendsa first to let it override default rules + load_rules(tmpruleset, basedir + "/rules.d/opendsa.rules") + load_rules(tmpruleset, basedir + "/rules.d/default.rules") + load_rules(tmpruleset, basedir + "/rules.d/rstudio.rules") + load_rules(tmpruleset, basedir + "/rules.d/cplusplus.rules") + load_rules(tmpruleset, basedir + "/rules.d/python.rules") + load_rules(tmpruleset, basedir + "/rules.d/java.rules") + load_rules(tmpruleset, basedir + "/rules.d/ruby.rules") + load_rules(tmpruleset, basedir + "/rules.d/sas.rules") + load_rules(tmpruleset, basedir + "/rules.d/translate.rules") + load_rules(tmpruleset, basedir + "/rules.d/office.forms.rules") + + ruleset.extend(tmpruleset) + + except Exception as e: + sys.stderr.write( str( e ) ) + sys.stderr.flush() with open(filterlog, 'a') as log: - try: - while True: - + while True: + try: line = sys.stdin.readline().strip() log.write('{}: {}\n'.format(datetime.datetime.now().strftime("%Y-%m-%d_%H-%M"), line)) @@ -119,8 +128,8 @@ def main(): sys.stdout.write(new_url + '\n') sys.stdout.flush() - except Exception as e: - sys.stderr.write( e ) - sys.stderr.flush() + except Exception as e: + sys.stderr.write( str( e ) ) + sys.stderr.flush() main()