import json import pickle from redis import StrictRedis from string import digits from os import urandom from utils.logging.log import * configPath = "conf/" certPath = "cert/" filemap = { # JSON configs "config": ["config.json", "configuration", "json"], "help": ["help.json", "command help", "json"], "counters": ["counters.json", "counters file", "json"], "monitor": ["monitor.json", "monitoring database", "json"], "tokens": ["tokens.json", "authentication tokens", "json"], "aliasdata": ["aliasdata.json", "data for alias generation", "json"], # Binary (pickle) configs "network": ["network.dat", "network list", "pickle"] } connections = {} relayConnections = {} IRCPool = {} ReactorPool = {} FactoryPool = {} MonitorPool = [] CommandMap = {} runningSample = 0 lastMinuteSample = 0 # Generate 16-byte hex key for message checksums hashKey = urandom(16) lastEvents = {} def nets(): if not "pool" in globals(): return networks = set() for i in pool.keys(): networks.add("".join([x for x in i if not x in digits])) return networks def liveNets(): networks = set() for i in IRCPool.keys(): networks.add("".join([x for x in i if not x in digits])) return networks def saveConf(var): if filemap[var][2] == "json": with open(configPath+filemap[var][0], "w") as f: json.dump(globals()[var], f, indent=4) elif filemap[var][2] == "pickle": with open(configPath+filemap[var][0], "wb") as f: pickle.dump(globals()[var], f) else: raise Exception("invalid format") def loadConf(var): if filemap[var][2] == "json": with open(configPath+filemap[var][0], "r") as f: globals()[var] = json.load(f) elif filemap[var][2] == "pickle": try: with open(configPath+filemap[var][0], "rb") as f: globals()[var] = pickle.load(f) except FileNotFoundError: globals()[var] = {} else: raise Exception("invalid format") def initConf(): for i in filemap.keys(): loadConf(i) def initMain(): global r initConf() r = StrictRedis(unix_socket_path=config["RedisSocket"], db=0)