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