def parse_golden_config(mdreq, device_map_name): golden_config_dict = {} namespace_name = "" tunnel_all_namespace = "" # Get the generic namespace name from the specified config file CONFIG_FILE_NODE = "/nkn/log_analyzer/config/config_file/url" try: filename = mdreq.query(CONFIG_FILE_NODE) except KeyError as e: dpiloganalyzer_log.info("Not able to query the config-file/log-analyzer node. Defauling to local") filename = "local" if filename == "local": filename = header.DEFAULT_GOLDEN_CONFIG else: filename = header.MFC_CONFIG generic_namespace_name = gen_utils.get_generic_namespace_name(filename) with open(filename, "r") as fp: for line in fp: if "delivery protocol http client-request tunnel-all" in line: tunnel_all_namespace = line.split()[1].strip() if " domain " in line: lst = line.split() namespace_name = lst[1].strip() # Skip the generic namespace and the default one if ( namespace_name == "default" or namespace_name == generic_namespace_name or namespace_name == tunnel_all_namespace ): continue if lst[3] == "regex": domain_pattern = lst[4][1:-1].strip() else: if lst[3].strip() == "any": domain_pattern = ".*" else: domain_pattern = lst[3].strip() golden_config_dict[namespace_name] = [compile_regex(domain_pattern)] if "match uri" in line: if ( namespace_name == "default" or namespace_name == generic_namespace_name or namespace_name == tunnel_all_namespace ): continue lst = line.split() if lst[4].strip() == "regex": uri_pattern = lst[5][1:-1].strip() else: uri_pattern = "^" + lst[4].strip() + ".*" pattern_list = golden_config_dict[namespace_name] pattern_list.append(compile_regex(uri_pattern)) return golden_config_dict
def parse_golden_config(mdreq, device_map_name): golden_config_dict = {} namespace_name = "" tunnel_all_namespace = "" #Get the generic namespace name from the specified config file CONFIG_FILE_NODE = '/nkn/log_analyzer/config/config_file/url' try: filename = mdreq.query(CONFIG_FILE_NODE) except KeyError as e: dpiloganalyzer_log.info( "Not able to query the config-file/log-analyzer node. Defauling to local" ) filename = 'local' if filename == 'local': filename = header.DEFAULT_GOLDEN_CONFIG else: filename = header.MFC_CONFIG generic_namespace_name = gen_utils.get_generic_namespace_name(filename) with open(filename, 'r') as fp: for line in fp: if 'delivery protocol http client-request tunnel-all' in line: tunnel_all_namespace = line.split()[1].strip() if ' domain ' in line: lst = line.split() namespace_name = lst[1].strip() #Skip the generic namespace and the default one if namespace_name == 'default' or namespace_name == generic_namespace_name or namespace_name == tunnel_all_namespace: continue if lst[3] == 'regex': domain_pattern = lst[4][1:-1].strip() else: if lst[3].strip() == 'any': domain_pattern = '.*' else: domain_pattern = lst[3].strip() golden_config_dict[namespace_name] = [ compile_regex(domain_pattern) ] if 'match uri' in line: if namespace_name == 'default' or namespace_name == generic_namespace_name or namespace_name == tunnel_all_namespace: continue lst = line.split() if lst[4].strip() == 'regex': uri_pattern = lst[5][1:-1].strip() else: uri_pattern = "^" + lst[4].strip() + '.*' pattern_list = golden_config_dict[namespace_name] pattern_list.append(compile_regex(uri_pattern)) return golden_config_dict
def read_mfc_accesslog(analyzer_conf_dict): global checksum_dict global mfc_result_file global mfc_pbr_file global mfcloganalyzer_log mfc_result_file = mfc_header.RESULT_FILE mfc_pbr_file = mfc_header.PBR_FILE ##TEMP FIX. Generate pbr and analyzer log files with timestamp appended to it's name if os.path.isfile(mfc_header.RESULT_FILE): mfc_result_file = mfc_header.RESULT_FILE + "_" + str(time.time()) if os.path.isfile(mfc_header.PBR_FILE): mfc_pbr_file = mfc_header.PBR_FILE + "_" + str(time.time()) #Logger settings logformatter = logging.Formatter('%(asctime)s;%(message)s') #Use the custom log rotation handler which gzip's the old rotated log file handler = gen_utils.NewRotatingFileHandler(mfc_header.LOG_FILE, maxBytes=mfc_header.MAXLOG_SIZE, backupCount=mfc_header.LOGBACKP_COUNT) handler.setFormatter(logformatter) mfcloganalyzer_log = logging.getLogger('__name__') mfcloganalyzer_log.setLevel(logging.DEBUG) #Point to the custom log handler mfcloganalyzer_log.addHandler(handler) #Get the generic namespace name from the specified config file filename = analyzer_conf_dict['mfc_config_file'] generic_namespace_name = gen_utils.get_generic_namespace_name(filename) if generic_namespace_name == None: mfcloganalyzer_log.info("No generic namespace name found in the mfc configuration file") #Load the saved checksum_dict dictionary data mfc_accesslog_path = analyzer_conf_dict['mfc_accesslog_path'] os.chdir(mfc_accesslog_path) if os.path.isfile('log_analyzer_checksum_dict.pickle'): with open('log_analyzer_checksum_dict.pickle', 'rb') as f: checksum_dict = pickle.load(f) #Parse the mfc accesslog and dump the namespace name and the list of dest-ip' in a file while True: parse_mfc_accesslog(generic_namespace_name, analyzer_conf_dict, mfc_accesslog_path) time.sleep(3) return 0