2018-05-04 11:53:29 +00:00
#!/usr/bin/env python3
2016-12-09 07:46:37 +00:00
# -*-coding:UTF-8 -*
'''
Flask global variables shared accross modules
'''
import os
2019-06-20 08:56:31 +00:00
import re
2018-06-14 14:51:06 +00:00
import sys
2016-12-09 07:46:37 +00:00
2019-10-28 12:48:43 +00:00
sys . path . append ( os . path . join ( os . environ [ ' AIL_BIN ' ] , ' lib/ ' ) )
import ConfigLoader
2016-12-09 07:46:37 +00:00
# FLASK #
app = None
# CONFIG #
2019-10-28 12:48:43 +00:00
config_loader = ConfigLoader . ConfigLoader ( )
2016-12-09 07:46:37 +00:00
# REDIS #
2019-10-28 12:48:43 +00:00
r_serv = config_loader . get_redis_conn ( " Redis_Queues " )
r_cache = config_loader . get_redis_conn ( " Redis_Cache " )
r_serv_log = config_loader . get_redis_conn ( " Redis_Log " )
r_serv_log_submit = config_loader . get_redis_conn ( " Redis_Log_submit " )
r_serv_charts = config_loader . get_redis_conn ( " ARDB_Trending " )
r_serv_sentiment = config_loader . get_redis_conn ( " ARDB_Sentiment " )
r_serv_term = config_loader . get_redis_conn ( " ARDB_Tracker " )
r_serv_cred = config_loader . get_redis_conn ( " ARDB_TermCred " )
r_serv_tags = config_loader . get_redis_conn ( " ARDB_Tags " )
r_serv_metadata = config_loader . get_redis_conn ( " ARDB_Metadata " )
r_serv_db = config_loader . get_redis_conn ( " ARDB_DB " )
r_serv_statistics = config_loader . get_redis_conn ( " ARDB_Statistics " )
r_serv_onion = config_loader . get_redis_conn ( " ARDB_Onion " )
2018-08-16 15:24:39 +00:00
2018-06-14 14:51:06 +00:00
sys . path . append ( ' ../../configs/keys ' )
# MISP #
try :
2018-06-19 09:31:30 +00:00
from pymisp import PyMISP
2018-06-14 14:51:06 +00:00
from mispKEYS import misp_url , misp_key , misp_verifycert
pymisp = PyMISP ( misp_url , misp_key , misp_verifycert )
misp_event_url = misp_url + ' /events/view/ '
print ( ' Misp connected ' )
except :
print ( ' Misp not connected ' )
2018-06-15 15:25:43 +00:00
pymisp = False
2018-06-14 14:51:06 +00:00
misp_event_url = ' # '
# The Hive #
try :
2018-06-19 09:31:30 +00:00
from thehive4py . api import TheHiveApi
import thehive4py . exceptions
from theHiveKEYS import the_hive_url , the_hive_key , the_hive_verifycert
2018-06-15 15:25:43 +00:00
if the_hive_url == ' ' :
HiveApi = False
hive_case_url = ' # '
print ( ' The HIVE not connected ' )
else :
2018-06-19 09:31:30 +00:00
HiveApi = TheHiveApi ( the_hive_url , the_hive_key , cert = the_hive_verifycert )
2018-06-15 15:25:43 +00:00
hive_case_url = the_hive_url + ' /index.html#/case/id_here/details '
2018-06-14 14:51:06 +00:00
except :
print ( ' The HIVE not connected ' )
2018-06-15 15:25:43 +00:00
HiveApi = False
2018-06-14 14:51:06 +00:00
hive_case_url = ' # '
2018-06-19 09:43:16 +00:00
if HiveApi != False :
2018-06-19 09:42:06 +00:00
try :
HiveApi . get_alert ( 0 )
print ( ' The Hive connected ' )
except thehive4py . exceptions . AlertException :
HiveApi = False
print ( ' The Hive not connected ' )
2018-06-19 09:31:30 +00:00
2019-07-25 15:26:32 +00:00
#### VARIABLES ####
2019-10-28 12:48:43 +00:00
baseUrl = config_loader . get_config_str ( " Flask " , " baseurl " )
2018-09-20 08:38:19 +00:00
baseUrl = baseUrl . replace ( ' / ' , ' ' )
if baseUrl != ' ' :
baseUrl = ' / ' + baseUrl
2019-10-28 12:48:43 +00:00
max_preview_char = int ( config_loader . get_config_str ( " Flask " , " max_preview_char " ) ) # Maximum number of character to display in the tooltip
max_preview_modal = int ( config_loader . get_config_str ( " Flask " , " max_preview_modal " ) ) # Maximum number of character to display in the modal
2016-12-09 07:46:37 +00:00
2019-03-20 12:25:02 +00:00
max_tags_result = 50
2019-10-28 12:48:43 +00:00
DiffMaxLineLength = int ( config_loader . get_config_str ( " Flask " , " DiffMaxLineLength " ) ) #Use to display the estimated percentage instead of a raw value
2018-06-01 09:26:45 +00:00
bootstrap_label = [ ' primary ' , ' success ' , ' danger ' , ' warning ' , ' info ' ]
2018-06-08 14:49:20 +00:00
2019-04-24 14:19:35 +00:00
dict_update_description = { ' v1.5 ' : { ' nb_background_update ' : 5 , ' update_warning_message ' : ' An Update is running on the background. Some informations like Tags, screenshot can be ' ,
2019-11-08 15:00:42 +00:00
' update_warning_message_notice_me ' : ' missing from the UI. ' } ,
' v2.4 ' : { ' nb_background_update ' : 1 , ' update_warning_message ' : ' An Update is running on the background. Some informations like Domain Tags/Correlation can be ' ,
2019-12-17 14:13:36 +00:00
' update_warning_message_notice_me ' : ' missing from the UI. ' } ,
' v2.6 ' : { ' nb_background_update ' : 1 , ' update_warning_message ' : ' An Update is running on the background. Some informations like Domain Tags/Correlation can be ' ,
2020-01-09 14:07:51 +00:00
' update_warning_message_notice_me ' : ' missing from the UI. ' } ,
' v2.7 ' : { ' nb_background_update ' : 1 , ' update_warning_message ' : ' An Update is running on the background. Some informations like Domain Tags can be ' ,
2020-12-11 20:31:14 +00:00
' update_warning_message_notice_me ' : ' missing from the UI. ' } ,
' v3.4 ' : { ' nb_background_update ' : 1 , ' update_warning_message ' : ' An Update is running on the background. Some informations like Domain Languages can be ' ,
2020-01-09 14:07:51 +00:00
' update_warning_message_notice_me ' : ' missing from the UI. ' }
2019-04-18 08:56:00 +00:00
}
2018-06-08 14:49:20 +00:00
UPLOAD_FOLDER = os . path . join ( os . environ [ ' AIL_FLASK ' ] , ' submitted ' )
2018-07-26 09:35:54 +00:00
2019-10-28 12:48:43 +00:00
PASTES_FOLDER = os . path . join ( os . environ [ ' AIL_HOME ' ] , config_loader . get_config_str ( " Directories " , " pastes " ) ) + ' / '
2021-01-08 16:37:18 +00:00
SCREENSHOT_FOLDER = config_loader . get_files_directory ( ' screenshot ' )
2018-08-16 15:24:39 +00:00
2020-04-20 15:50:40 +00:00
REPO_ORIGIN = ' https://github.com/ail-project/ail-framework.git '
2019-04-16 15:24:59 +00:00
2019-10-28 12:48:43 +00:00
max_dashboard_logs = int ( config_loader . get_config_str ( " Flask " , " max_dashboard_logs " ) )
2018-08-24 08:35:28 +00:00
2019-10-28 12:48:43 +00:00
crawler_enabled = config_loader . get_config_boolean ( " Crawler " , " activate_crawler " )
2019-06-04 12:22:46 +00:00
2019-06-24 11:43:16 +00:00
email_regex = r ' [a-zA-Z0-9._ % +-]+@[a-zA-Z0-9.-]+ \ .[a-zA-Z] { 2,6} '
2019-06-20 08:56:31 +00:00
email_regex = re . compile ( email_regex )
2019-07-26 12:28:02 +00:00
IMPORT_MAX_TEXT_SIZE = 900000 # size in bytes
2018-08-24 08:35:28 +00:00
# VT
2018-06-29 08:02:29 +00:00
try :
from virusTotalKEYS import vt_key
if vt_key != ' ' :
vt_auth = vt_key
vt_enabled = True
print ( ' VT submission is enabled ' )
else :
vt_enabled = False
print ( ' VT submission is disabled ' )
except :
2019-10-28 12:48:43 +00:00
vt_auth = { ' apikey ' : config_loader . get_config_str ( " Flask " , " max_preview_char " ) }
2018-06-29 08:02:29 +00:00
vt_enabled = False
print ( ' VT submission is disabled ' )