From daa52b8802fccd9bfab445c980648f11b3fc1236 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Fri, 17 Jan 2025 12:03:09 +0530 Subject: [PATCH] build!: Drop maxmind IP database (#29213) 1. It's severly outdated and free version isn't that accurate to begin with. 2. I replaced country detection using timezone a long time ago: https://github.com/frappe/frappe/blob/c8ec528aa7e83f876d055c49fe3324f55dedcd83/frappe/desk/page/setup_wizard/setup_wizard.js#L664-L676 This is good enough for setup wizard for most popular countries. Use IP-API if you need better guarantees (we have a license). --- attributions.md | 4 ---- frappe/desk/page/setup_wizard/setup_wizard.py | 7 ------ frappe/sessions.py | 23 ------------------- frappe/tests/test_geo_ip.py | 13 ----------- pyproject.toml | 2 -- 5 files changed, 49 deletions(-) delete mode 100644 frappe/tests/test_geo_ip.py diff --git a/attributions.md b/attributions.md index 611b9b1d9a..c29217902f 100644 --- a/attributions.md +++ b/attributions.md @@ -23,10 +23,6 @@ The following 3rd-party software packages may be used by or distributed with ) - Inter - SIL Open Font License, 1.1 (c) 2020 Rasmus Andersson () -### IP Address Database - -- GeoIP: (c) 2014 MaxMind, - --- Last updated: 4th July 2022 diff --git a/frappe/desk/page/setup_wizard/setup_wizard.py b/frappe/desk/page/setup_wizard/setup_wizard.py index 1a89303ad9..f05e09823d 100755 --- a/frappe/desk/page/setup_wizard/setup_wizard.py +++ b/frappe/desk/page/setup_wizard/setup_wizard.py @@ -320,13 +320,6 @@ def load_languages(): } -@frappe.whitelist(allow_guest=True) -def load_country(): - from frappe.sessions import get_geo_ip_country - - return get_geo_ip_country(frappe.local.request_ip) if frappe.local.request_ip else None - - @frappe.whitelist() def load_user_details(): return { diff --git a/frappe/sessions.py b/frappe/sessions.py index 56595e4502..6b0a6f933c 100644 --- a/frappe/sessions.py +++ b/frappe/sessions.py @@ -457,26 +457,3 @@ def get_expiry_period(): exp_sec = exp_sec + ":00" return exp_sec - - -def get_geo_from_ip(ip_addr): - try: - from geolite2 import geolite2 - - with geolite2 as f: - reader = f.reader() - data = reader.get(ip_addr) - - return frappe._dict(data) - except ImportError: - return - except ValueError: - return - except TypeError: - return - - -def get_geo_ip_country(ip_addr): - match = get_geo_from_ip(ip_addr) - if match: - return match.country diff --git a/frappe/tests/test_geo_ip.py b/frappe/tests/test_geo_ip.py deleted file mode 100644 index 4ff4333e27..0000000000 --- a/frappe/tests/test_geo_ip.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -# License: MIT. See LICENSE -from frappe.tests import IntegrationTestCase - - -class TestGeoIP(IntegrationTestCase): - def test_geo_ip(self): - return - from frappe.sessions import get_geo_ip_country - - self.assertEqual(get_geo_ip_country("223.29.223.255"), "India") - self.assertEqual(get_geo_ip_country("4.18.32.80"), "United States") - self.assertEqual(get_geo_ip_country("217.194.147.25"), "United States") diff --git a/pyproject.toml b/pyproject.toml index 0dc4ffddfe..a2fecdab47 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,7 +43,6 @@ dependencies = [ "ldap3~=2.9", "markdown2~=2.4.8", "MarkupSafe>=2.1.0,<3", - "maxminddb-geolite2==2018.703", "num2words~=0.5.12", "oauthlib~=3.2.2", "openpyxl~=3.1.2", @@ -263,7 +262,6 @@ module = [ "dropbox", "email_reply_parser", "filetype", - "geolite2", "google", "googleapiclient.discovery", "googleapiclient.errors",