def pssParse(opts): global state d = loadJson(opts) d["idle"] = d["idle"] == "*" d["x"] = strtoi(d["x"]) d["y"] = strtoi(d["y"]) d["name"] = d["name"].strip() d["hp"] = strtoi(d["hp"]) d["maxhp"] = strtoi(d["maxhp"]) d["sp"] = strtoi(d["sp"]) d["maxsp"] = strtoi(d["maxsp"]) d["ep"] = strtoi(d["ep"]) d["maxep"] = strtoi(d["maxep"]) d["spepstring"] = d["spepstring"].strip() # get nergal minions sp and ep strings if d["sp"] == None and d["spepstring"] != "": spep = d["spepstring"].split(" ") d["sp"] = spepstringToInt(spep[0].strip()) d["ep"] = spepstringToInt(spep[-1].strip()) d["maxsp"] = 100 d["maxep"] = 100 newMember = pssJsonToMember(d) if newMember.name[:1] == "+" or state.manualMinions: state = state._replace(pssHasMinions=True) # leave invis to be handled by batclient messages if newMember.name != "Someone": handleNewMember(newMember)
def getLoadedJson(body, *args): print(args) try: req_body = loadJson(body) new_args = [] for arg in args: new_arg = req_body[arg[0]] for fn in arg[1:]: new_arg = fn(new_arg) if new_arg == None: # return None in a function if to get False return False new_args.append(new_arg) print(new_args) return req_body, *new_args except: return False
def _handleRequest(self, body): """Handle a Github HTTP request.""" type_ = self.headers.get("content-type") if type_ != "application/json": raise HttpError(HTTPStatus.BAD_REQUEST, "invalid Content-Type") content = loadJson(body) if "pull_request" not in content: raise RuntimeError("received unsupported event type") src_repo = content["pull_request"]["head"]["repo"]["clone_url"] src_branch = content["pull_request"]["head"]["ref"] dst_repo = content["repository"]["clone_url"] # Pull requests get their own namespace that "normal" branches would not # use. This prevents malicious overwrites. dst_branch = "pull-request/%s" % src_branch # The owner of the repository may have created a pull request for # the very same repository. There is no need to mirror those as the # CI will be triggered without mirroring the request. if src_repo != dst_repo: self._handlePullRequest(content["action"], src_repo, src_branch, dst_repo, dst_branch)
result = {} options = {} optionsFile = '/data/options.json' TOKENKEY = "token" try: options[TOKENKEY] = environ['SUPERVISOR_TOKEN'] options['baseUrl'] = 'http://supervisor/core/api/states/' except: logging.warning("Couldn't get token from Enviroment assuming this is dev") optionsFile = 'local.json' with open(optionsFile) as json_file: options.update(loadJson(json_file)) logging.info("Got {} for database".format(options['db_name'])) client = InfluxDBClient(host=options['db_ip'], port=options['db_port'], username=options['db_user'], password=options['db_pass']) extractor = Extractor(options['baseUrl'], options['sensorPrefix'], options[TOKENKEY], options['Timezone'], options['db_measurement_name']) Einf = Einfluxer(client, options['db_name']) message = "" try:
def openJSON(path): with open(path, 'r') as outfile: data = outfile.read() return loadJson(data)
def __init__(self): ''' Инициализировать систему управления оборудованием. Этот конструктор не принимает никаких аргументов. После создания всех необходимых объектов, этот метод-конструктор на- чинает инициализировать исполнителей, загружая и расшифровывая инфор- мацию о них из 'hardware.asqd'. Делается это так: —— В цикле, для каждого исполнителя, информация о котором есть в 'hardware.asqd', берётся ID драйвера этого исполнителя (такой ID пред- ставляет из себя строку длиной 4 символа, состоящую из символов латини- цы и цифр от 0 до 9); —— Затем, берётся значение из словаря drivers.__init__.Devices, при этом в качестве ключа используется тот самый ID драйвера. В качестве значения будет получен драйвер этого исполнителя, т. е. его КЛАСС; —— Сразу после этого этот полученный драйвер инициализируется с использо- ванием параметров, указанных в определении этого исполнителя, за исклю- чением параметра 'pinMap'. Инициализированный объект добавляется в сло- варь; —— Если какой-то из вышеперечисленных этапов провален, то исполнитель не будет включён в словарь 'installedHardware'. ''' self.isOk = bool() self.installedHardware = {} self.monitors = [] self.logger = AqLogger('Hardware') #Объект AqStatist инициализируется только один раз во всём коде, и только #в этом классе. self.statisticAgent = AqStatist() #Инициализация протоколов self.logger.info('Инициализация протоколов...') self.loadPlatformDrivers() #Инициализация драйверов self.logger.info('Инициализация драйверов устройств...') self.loadDeviceDrivers() #Инициализация оборудования self.logger.info('Инициализация оборудования...') with open('data/system/~!hardware!~.asqd', 'r', encoding='utf-8') as configFile: try: jsonString = loadJson(configFile.read()) initializers = [] for deviceData in jsonString: self.logger.debug( f'Подключение к устройству по адресу {deviceData[1]}...' ) initializers.append( Thread(target=self.initializeDevice, name=f'DeviceInitializer:{deviceData[1]}', args=(deviceData, ))) for thread in initializers: thread.start() while not (True not in [ thread.is_alive() for thread in initializers ]): sleep(1) except JSONDecodeError: self.logger.error( f'Не удалось получить данные JSON из файла "data/system/~!hardware!~.asqd", проверьте файл на' 'синтаксические ошибки') if not self.installedHardware: self.logger.critical( f'Не удалось инициализировать yстройства, используя информацию из файла "~!hardware!~.asqd". ' 'Пожалуйста, убедитесь, что файл не повреждён и не пуст, что все устройства подключены и находятся' 'в рабочем состоянии. Для решения данной проблемы попробуйте переустановить AsQammServer, при ' 'переустановке внимательно следите за правильностью вводимой информации об оборудовании' ) self.isOk = False self.logger.critical(f'Аварийное завершение работы') else: self.isOk = True
if args.entry_id: if not showEntry.checkId(args.entry_id): raise Exception("Sorry!! " + args.entry_id + " is not a valid entry ID!!") else: #Show a given entry showEntry.setEntry(int(args.entry_id)) showEntry.setTypeShow("ONE") showEntry.run() else: showEntry.setTypeShow("ALL") showEntry.run() elif args.build_html: json = JSONManager() json.setJsonFile(JSON_FILE) json.loadJson() buildHtml = WebBuilder(json.getJsonDict(),args.file_html) buildHtml.buildStyleSheet() buildHtml.buildHtml() buildHtml.saveHtmlCss()
def GET(self): try: web.header("Content-Type", "application/json; charset=utf-8") s = settings() s.ReadSettings() bagel = web.input().get("bagel") bagel = False if bagel is None else True nod = web.input().get("noda") nod = False if nod is None else True ol = 0 if not nod: r = get(s.clearUrlOrigin) r = r.json() ol = len(r['providers']) else: r = {"providers": {}} li = s.clearUrlCustomList h = web.input().get("hash") h = False if h is None else True if li is None: t = dumps(r, separators=jsonsep) return sha256(t) if h else t ind: str = web.input().get("t") ind = ind.split(',') if ind is not None and ind != '' else None vt = [] for i in li: if ind is not None and i not in ind: continue elif ind is not None: vt.append(i) with open(li[i], 'r', encoding='utf8') as f: j = loadJson(f) if 'providers' in j: for m in j['providers']: ke = m te = ke z = 0 re = search(r'^(.+)_(\d+)$', m) if re is not None: re = re.groups() te = re[0] while ke in r['providers']: z += 1 ke = f"{te}_{z}" r['providers'][ke] = j['providers'][m] t = dumps(r, separators=jsonsep) if h: return sha256(t) elif bagel: lt = str(len(r["providers"].keys())) adm = [] if int(lt) == ol: adm.append('no any custom rules') if int(lt) != ol and ind is not None: adm.append('types: ' + '; '.join(vt)) if not nod: adm.append(f'include {ol} offical rules') at = ', '.join(adm) at = '' if at == '' else f" ({at})" rt = f'custom rules{at}' from drawBagel import drawBagel svg = drawBagel(lt, rt, leftColor='#555', rightColor='#007ec6', spacing=3) web.header('Content-Type', 'image/svg+xml') web.header('Cache-Control', 'public, max-age=300') return svg else: return t except: web.HTTPError('500 Internal Server Error') try: s = settings() s.ReadSettings() if s.debug: return format_exc() except: pass return ''