Esempio n. 1
0
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)
Esempio n. 2
0
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
Esempio n. 3
0
  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)
Esempio n. 4
0
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:
Esempio n. 5
0
def openJSON(path):
    with open(path, 'r') as outfile:
        data = outfile.read()

    return loadJson(data)
Esempio n. 6
0
    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() 









Esempio n. 8
0
 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 ''