diff options
| author | sarthurdev <965089+sarthurdev@users.noreply.github.com> | 2025-10-02 17:47:10 +0200 |
|---|---|---|
| committer | sarthurdev <965089+sarthurdev@users.noreply.github.com> | 2026-01-21 11:52:29 +0100 |
| commit | 7f6f94370ec04ce48e7a19880a74ba0c25f7bfb5 (patch) | |
| tree | 8e01c166edba29422ab007f0704a9064f670bb7e /src/helpers | |
| parent | 0868f3dc7246ea44a1765cee04649cd08c188982 (diff) | |
| download | vyos-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-x | src/helpers/geoip-update.py | 28 |
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) |
