summaryrefslogtreecommitdiff
path: root/src/helpers
diff options
context:
space:
mode:
authorsarthurdev <965089+sarthurdev@users.noreply.github.com>2025-10-02 17:47:10 +0200
committersarthurdev <965089+sarthurdev@users.noreply.github.com>2026-01-21 11:52:29 +0100
commit7f6f94370ec04ce48e7a19880a74ba0c25f7bfb5 (patch)
tree8e01c166edba29422ab007f0704a9064f670bb7e /src/helpers
parent0868f3dc7246ea44a1765cee04649cd08c188982 (diff)
downloadvyos-1x-7f6f94370ec04ce48e7a19880a74ba0c25f7bfb5.tar.gz
vyos-1x-7f6f94370ec04ce48e7a19880a74ba0c25f7bfb5.zip
geoip: T7926: Refactor geoip handling
* Move core logic to separate vyos.geoip module * Use a sqlite database for storing and querying address ranges by country * Remove downloaded geoip ranges once loaded into sqlite db * No longer rebuild geoip sets on each commit unless necessary * Allows for extensibility using other geoip data vendors
Diffstat (limited to 'src/helpers')
-rwxr-xr-xsrc/helpers/geoip-update.py28
1 files changed, 25 insertions, 3 deletions
diff --git a/src/helpers/geoip-update.py b/src/helpers/geoip-update.py
index 22d26e538..a6838c62d 100755
--- a/src/helpers/geoip-update.py
+++ b/src/helpers/geoip-update.py
@@ -18,7 +18,11 @@ import argparse
import sys
from vyos.configquery import ConfigTreeQuery
-from vyos.firewall import geoip_update
+from vyos.geoip import geoip_download_dbip
+from vyos.geoip import db_initialise
+from vyos.geoip import db_is_initialised
+from vyos.geoip import db_import_dbip_ranges
+from vyos.geoip import geoip_update
def get_config(config=None):
if config:
@@ -35,9 +39,27 @@ def get_config(config=None):
if __name__ == '__main__':
parser = argparse.ArgumentParser()
- parser.add_argument("--force", help="Force update", action="store_true")
+ parser.add_argument("--init", help="Initialise", action="store_true")
args = parser.parse_args()
+ if args.init:
+ db_initialise()
+ db_import_dbip_ranges(delete_file=True)
+ sys.exit(0)
+
+ if not db_is_initialised():
+ db_initialise()
+
+ print('Dowloading latest DB-IP database...')
+ if not geoip_download_dbip():
+ print('Failed to download, aborting.')
+ sys.exit(1)
+
+ print('Extracting database...')
+ if not db_import_dbip_ranges(delete_file=True):
+ print('Failed to extract, aborting.')
+ sys.exit(1)
+
firewall, policy = get_config()
- if not geoip_update(firewall=firewall, policy=policy, force=args.force):
+ if not geoip_update(firewall=firewall, policy=policy):
sys.exit(1)