99
1010from api_app .exceptions import AnalyzerRunException
1111from api_app .script_analyzers import general
12- from intel_owl import settings
12+ from intel_owl import settings , secrets
1313
1414logger = get_task_logger (__name__ )
1515
@@ -22,10 +22,9 @@ def run(analyzer_name, job_id, observable_name, observable_classification, addit
2222 "" .format (analyzer_name , job_id , observable_name ))
2323 report = general .get_basic_report_template (analyzer_name )
2424 try :
25-
2625 try :
2726 if not os .path .isfile (database_location ):
28- updater ()
27+ updater (additional_config_params )
2928 reader = maxminddb .open_database (database_location )
3029 maxmind_result = reader .get (observable_name )
3130 reader .close ()
@@ -62,11 +61,19 @@ def run(analyzer_name, job_id, observable_name, observable_classification, addit
6261 return report
6362
6463
65- def updater ():
64+ def updater (additional_config_params ):
6665
6766 try :
67+ api_key_name = additional_config_params .get ('api_key_name' , '' )
68+ if not api_key_name :
69+ api_key_name = "MAXMIND_KEY"
70+ api_key = secrets .get_secret (api_key_name )
71+ if not api_key :
72+ raise AnalyzerRunException ("no api key retrieved" )
73+
6874 logger .info ("starting download of db from maxmind" )
69- url = "http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz"
75+ url = "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&license_key={}" \
76+ "&suffix=tar.gz" .format (api_key )
7077 r = requests .get (url )
7178 if r .status_code >= 300 :
7279 raise AnalyzerRunException ("failed request for new maxmind db. Status code: {}" .format (r .status_code ))
@@ -82,6 +89,7 @@ def updater():
8289 today = datetime .datetime .now ().date ()
8390 counter = 0
8491 directory_found = False
92+ downloaded_db_path = ""
8593 # this is because we do not know the exact date of the db we downloaded
8694 while counter < 10 or not directory_found :
8795 date_to_check = today - datetime .timedelta (days = counter )
@@ -96,14 +104,16 @@ def updater():
96104 else :
97105 directory_found = True
98106
99- if not directory_found :
107+ if directory_found :
108+ logger .info ("maxmind directory found {}" .format (downloaded_db_path ))
109+ else :
100110 raise AnalyzerRunException ("failed extraction of maxmind db, reached max number of attempts" )
101111
102112 logger .info ("ended download of db from maxmind" )
103113
104114 except Exception as e :
105115 traceback .print_exc ()
106- logger .exception (e )
116+ logger .exception (str ( e ) )
107117
108118 return database_location
109119
0 commit comments