mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-09 18:45:54 +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
@@ -25,7 +25,7 @@
|
||||
|
||||
include Config
|
||||
|
||||
VER = 0.2.4
|
||||
VER = 0.2.5
|
||||
|
||||
THISAPP = squid-asnbl-$(VER)
|
||||
DL_FILE = $(THISAPP).tar.gz
|
||||
@@ -45,7 +45,7 @@ objects = $(DL_FILE)
|
||||
|
||||
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
|
||||
|
||||
$(DL_FILE)_BLAKE2 = 98bdf0ecff1fc4d4ac0e0eb43d37682acf76900df783bf31b172134ebe31a857594e0a98ee06347da40d97b86a6ac0ce9a63ea7a80a1d73948e338f72d1c3af2
|
||||
$(DL_FILE)_BLAKE2 = 7206b9fe6c4a0509c9ce0301a5d3553274d005daae2050f23e26056d356c328719821d58d94ed2eac7942a6cafb0ca8de2cb619ce28a0f514b6eef413350e249
|
||||
|
||||
install : $(TARGET)
|
||||
|
||||
@@ -75,7 +75,6 @@ $(subst %,%_BLAKE2,$(objects)) :
|
||||
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
|
||||
@$(PREBUILD)
|
||||
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zvxf $(DIR_DL)/$(DL_FILE)
|
||||
cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/squid/squid-asnbl-0.2.4_initialise_global_variables_to_make_compatible_with_python_3.patch
|
||||
|
||||
# Install ASNBL helper script
|
||||
cd $(DIR_APP) && install -o root -g root -m 0755 asnbl-helper.py /usr/bin/asnbl-helper.py
|
||||
|
||||
@@ -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