#!/usr/bin/python3 """ The ``Domain`` =================== """ import os import sys import redis import configparser # Get Config file config_dir = os.path.join(os.environ['AIL_HOME'], 'configs') default_config_file = os.path.join(config_dir, 'core.cfg') if not os.path.exists(default_config_file): raise Exception('Unable to find the configuration file. \ Did you set environment variables? \ Or activate the virtualenv.') # # TODO: create sphinx doc # # TODO: add config_field to reload class ConfigLoader(object): """docstring for Config_Loader.""" def __init__(self, config_file=None): self.cfg = configparser.ConfigParser() if config_file: self.cfg.read(os.path.join(config_dir, config_file)) else: self.cfg.read(default_config_file) def get_redis_conn(self, redis_name, decode_responses=True): return redis.StrictRedis(host=self.cfg.get(redis_name, "host"), port=self.cfg.getint(redis_name, "port"), db=self.cfg.getint(redis_name, "db"), decode_responses=decode_responses) def get_db_conn(self, db_name, decode_responses=True): return redis.StrictRedis(host=self.cfg.get(db_name, "host"), port=self.cfg.getint(db_name, "port"), password=self.cfg.get(db_name, "password"), decode_responses=decode_responses) def get_files_directory(self, key_name): directory_path = self.cfg.get('Directories', key_name) # full path if directory_path[0] == '/': return directory_path else: directory_path = os.path.join(os.environ['AIL_HOME'], directory_path) return directory_path def get_config_sections(self): return self.cfg.sections() def get_config_str(self, section, key_name): return self.cfg.get(section, key_name) def get_config_int(self, section, key_name): return self.cfg.getint(section, key_name) def get_config_boolean(self, section, key_name): return self.cfg.getboolean(section, key_name) def has_option(self, section, key_name): return self.cfg.has_option(section, key_name) def has_section(self, section): return self.cfg.has_section(section) def get_all_keys_values_from_section(self, section): if section in self.cfg: all_keys_values = [] for key_name in self.cfg[section]: all_keys_values.append((key_name, self.cfg.get(section, key_name))) return all_keys_values else: return [] # # # # Directory Config # # # # config_loader = ConfigLoader() ITEMS_FOLDER = config_loader.get_config_str("Directories", "pastes") if ITEMS_FOLDER == 'PASTES': ITEMS_FOLDER = os.path.join(os.environ['AIL_HOME'], ITEMS_FOLDER) ITEMS_FOLDER = ITEMS_FOLDER + '/' ITEMS_FOLDER = os.path.join(os.path.realpath(ITEMS_FOLDER), '') HARS_DIR = config_loader.get_files_directory('har') if HARS_DIR == 'CRAWLED_SCREENSHOT': HARS_DIR = os.path.join(os.environ['AIL_HOME'], HARS_DIR) SCREENSHOTS_FOLDER = config_loader.get_files_directory('screenshot') if SCREENSHOTS_FOLDER == 'CRAWLED_SCREENSHOT/screenshot': SCREENSHOTS_FOLDER = os.path.join(os.environ['AIL_HOME'], SCREENSHOTS_FOLDER) config_loader = None def get_hars_dir(): return HARS_DIR def get_items_dir(): return ITEMS_FOLDER def get_screenshots_dir(): return SCREENSHOTS_FOLDER