mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-26 10:52:57 +02:00
squid-asnbl: Update to 0.2.5
This upstream release incorporates the patch added for resolving #13023. Signed-off-by: Peter Müller <peter.mueller@ipfire.org> Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
This commit is contained in:
committed by
Michael Tremer
parent
33d4586cb8
commit
311f04e46e
@@ -1,100 +0,0 @@
|
||||
--- squid-asnbl-0.2.4/asnbl-helper_orig.py
|
||||
+++ squid-asnbl-0.2.4/asnbl-helper.py
|
||||
@@ -172,17 +172,19 @@
|
||||
return parsedasns
|
||||
|
||||
|
||||
-def resolve_asn(ipaddr: str, asndb):
|
||||
- """ Function call: resolve_asn(IP address to be resolved,
|
||||
- ASN database instance object)
|
||||
- This function looks up the Autonomous System for the given IP address. It expects
|
||||
- an IPFire location database object to be passed as a second parameter, hence relying
|
||||
- on another function to set that up. """
|
||||
+def resolve_asn(ipaddr: str):
|
||||
+ """ Function call: resolve_asn(IP address to be resolved)
|
||||
+ This function looks up the Autonomous System for the given IP address. """
|
||||
+
|
||||
+ # Fix for #13023
|
||||
+ # Initialize the result variable before it's first use, otherwise python3
|
||||
+ # will sometimes detect a 'mismatch' using global and local variables
|
||||
+ lookup_result = None
|
||||
|
||||
# libloc cannot handle ipaddress objects here, so casting into a string is necessary
|
||||
# for good measure, to avoid exceptions here...
|
||||
try:
|
||||
- result = asndb.lookup(str(ipaddr))
|
||||
+ lookup_result = ASNDB.lookup(str(ipaddr))
|
||||
except BlockingIOError:
|
||||
# XXX: Prevent likely libloc bug from causing this helper to crash
|
||||
# (see upstream bug https://bugzilla.ipfire.org/show_bug.cgi?id=13023)
|
||||
@@ -190,21 +192,25 @@
|
||||
|
||||
# In case nothing was returned above, satisfy result expectation to this function...
|
||||
try:
|
||||
- if not result.asn:
|
||||
+ if not lookup_result.asn:
|
||||
return 0
|
||||
except AttributeError:
|
||||
return 0
|
||||
|
||||
- return result.asn
|
||||
-
|
||||
-
|
||||
-def asndb_response_tests(testdata: str, asndb):
|
||||
- """ Function call: asndb_response_tests(response rest data,
|
||||
- ASN database instance object)
|
||||
+ return lookup_result.asn
|
||||
+
|
||||
+
|
||||
+def asndb_response_tests(testdata: str):
|
||||
+ """ Function call: asndb_response_tests(response rest data)
|
||||
|
||||
This function asserts the given ASN database to return expected ASNs for
|
||||
given IP addresses in order to be considered operational. It returns
|
||||
True if this test succeeds, and False otherwise. """
|
||||
+
|
||||
+ # Fix for #13023
|
||||
+ # Initialize the result variable before it's first use, otherwise python3
|
||||
+ # will sometimes detect a 'mismatch' using global and local variables
|
||||
+ lookup_result_test = None
|
||||
|
||||
tresult = True
|
||||
|
||||
@@ -216,13 +222,13 @@
|
||||
|
||||
for stestdata in ptdata:
|
||||
LOGIT.debug("Running response test for '%s' against ASNDB '%s' ...",
|
||||
- stestdata, asndb)
|
||||
-
|
||||
- returndata = resolve_asn(stestdata[0], asndb)
|
||||
-
|
||||
- if returndata != int(stestdata[1]):
|
||||
+ stestdata, ASNDB)
|
||||
+
|
||||
+ lookup_result_test = resolve_asn(stestdata[0])
|
||||
+
|
||||
+ if lookup_result_test != int(stestdata[1]):
|
||||
LOGIT.error("Response test failed for ASNDB '%s' (tuple: %s), aborting",
|
||||
- asndb, stestdata)
|
||||
+ ASNDB, stestdata)
|
||||
tresult = False
|
||||
break
|
||||
|
||||
@@ -428,7 +434,7 @@
|
||||
ASNDB = set_up_location_database(config["GENERAL"]["ASNDB_PATH"])
|
||||
|
||||
LOGIT.debug("Running ASN database response tests...")
|
||||
-if asndb_response_tests(config["GENERAL"]["TESTDATA"], ASNDB):
|
||||
+if asndb_response_tests(config["GENERAL"]["TESTDATA"]):
|
||||
LOGIT.debug("ASN database operational - excellent. Waiting for input...")
|
||||
else:
|
||||
LOGIT.error("ASN database response tests failed, aborting")
|
||||
@@ -490,7 +496,7 @@
|
||||
ASNS = []
|
||||
for singleip in IPS:
|
||||
# Enumerate ASN for this IP address...
|
||||
- resolvedasn = resolve_asn(singleip, ASNDB)
|
||||
+ resolvedasn = resolve_asn(singleip)
|
||||
|
||||
# In case protection against destinations without public AS announcements for their
|
||||
# IP addresses is desired, the query will be denied in case ASN = 0 appears in an
|
||||
Reference in New Issue
Block a user