Exemplo n.º 1
0
def smart_text(s):
    if isinstance(s, bytes):
        s = text_type(s)[2:-1]
    else:
        s = text_type(s)

    return s
Exemplo n.º 2
0
    def post(self):
        if self.request.json is None:
            return self.fail()

        action = self.request.json.get('action', '')
        key = self.request.json.get('key', '')
        key_encoding = self.request.json.get('key_encoding', '')
        mode = self.request.json.get('mode', '')
        iv = self.request.json.get('iv', '')
        iv_encoding = self.request.json.get('iv_encoding', '')
        padding = self.request.json.get('padding', '')
        plain_encoding = self.request.json.get('plain_encoding', '')
        cipher_encoding = self.request.json.get('cipher_encoding', '')
        plain = self.request.json.get('plain', '')
        cipher = self.request.json.get('cipher', '')

        try:
            aes = AESHelper(key, iv, key_encoding, iv_encoding, mode, padding,
                            plain_encoding, cipher_encoding)
            if action == 'decrypt':
                plain = aes.decrypt(cipher)
            else:
                cipher = aes.encrypt(plain)
        except Exception as e:
            logger.exception(e)
            msg = '%s, %s' % ('AES加解密失败', e)

            return self.fail(msg=msg)

        data = {
            'plain': text_type(plain),
            'cipher': text_type(cipher),
        }

        return self.success(data)
Exemplo n.º 3
0
def smart_text(s):
    try:
        if isinstance(s, str) or isinstance(s, bytes):
            s = force_text(s)
        else:
            s = text_type(s)
    except:
        s = text_type(s)

    if isinstance(s, bytes):
        s = text_type(s)
    return s
Exemplo n.º 4
0
    def post(self):
        file_content = self.request.files.get('file')[0].body
        encoding = text_type(self.get_body_argument('encoding', 'Hex'))

        if encoding == 'Hex':
            content = force_bytes(file_content).hex()
        elif encoding == 'Base64':
            content = b64encode(force_bytes(file_content))
        elif encoding == 'Decimal':
            content = force_bytes(file_content).hex()
            content = text_type(int(content, 16))
        else:
            content = file_content

        data = {'content': content}
        return self.success(data)
Exemplo n.º 5
0
def do_convert(method, data, params):
    # data = force_text(converter.from_base64(data))
    if method == 'all_digit_convert':
        split_list = [t for t in data.split(' ') if t != '']
        result = {}
        for t in split_list:
            r = converter.all_digit_convert(t, *params)
            for k, v in r.items():
                if k in result:
                    result[k] += '   ' + text_type(v)
                else:
                    result[k] = text_type(v)

        return result
    elif hasattr(converter, method):
        func = getattr(converter, method)
        index = 0
        last_index = 0
        data += ' '
        length = len(data)
        result = []
        # 输入的时候是以什么字符分隔,输出的时候保持一致
        while index < length:
            t = data[index]
            if t in (' ', '\n'):
                text = data[last_index:index]
                last_index = index + 1
                if text != '':
                    if params is not None:
                        r = text_type(func(text, *params))
                    else:
                        r = text_type(func(text))
                    result.append(r)

                result.append(t)
            index += 1

        result = ''.join(result)
        result = result.rstrip(' ')
    else:
        result = '!!!error!!! method %s not found' % method

    return result
Exemplo n.º 6
0
def do_convert(method, data, params, multiple_input):
    # data = force_text(converter.from_base64(data))
    if method == 'all_digit_convert':
        split_list = [t for t in data.split(' ') if t != '']
        result = {}
        for t in split_list:
            r = converter.all_digit_convert(t, *params)
            for k, v in r.items():
                if k in result:
                    result[k] += '   ' + text_type(v)
                else:
                    result[k] = text_type(v)

        return result
    elif hasattr(converter, method):
        func = getattr(converter, method)
        result = []
        if not multiple_input:
            if data != '':
                if params is not None:
                    r = func(data, *params)
                else:
                    r = func(data)

                result.append(smart_text(r))

            result = ''.join(result)
        else:
            data_list = data.splitlines()
            data_list = [t for t in data_list if t != '']
            for text in data_list:
                if params is not None:
                    r = func(text, *params)
                else:
                    r = func(text)

                result.append(smart_text(r))

            result = '\n'.join(result)
    else:
        result = '!!!error!!! method %s not found' % method

    return result
Exemplo n.º 7
0
    def post(self):
        file_content = self.request.files.get('file')[0].body
        fio = BytesIO()
        fio.write(file_content)

        result = []
        with DSStore.open(fio, 'rb') as d:
            for t in d:
                result.append(text_type(t))

        data = {'content': '\n'.join(result)}
        return self.success(data)
Exemplo n.º 8
0
    def bytes_2_encoding(self, data, encoding):
        if encoding == 'UTF8':
            data = force_text(data)
        elif encoding == 'Hex':
            data = binascii.b2a_hex(data)
        elif encoding == 'Base64':
            data = b64encode(data)
        else:
            data = force_text(data)

        if isinstance(data, bytes):
            data = text_type(data)[2:-1]
        return data
Exemplo n.º 9
0
    def post(self):
        if self.request.json is None:
            return self.fail()

        name = self.request.json.get('name', '').strip()
        code = self.request.json.get('code', '')
        entry_uuid = self.request.json.get('uuid', None)
        action = self.request.json.get('action', '')

        if action == 'insert-update':
            if name == '' or code == '':
                return self.fail(msg='名称或代码不能为空')

            try:
                if entry_uuid is not None:
                    sql = 'update interceptor set name = :name, code = :code where uuid = :uuid'
                else:
                    entry_uuid = text_type(uuid.uuid4()).replace('-', '')
                    sql = 'insert into interceptor (name, code, uuid, create_date) ' \
                          'values (:name, :code, :uuid, :create_date)'
                params = {
                    'uuid': entry_uuid,
                    'name': name,
                    'code': code,
                    'create_date': datetime2str(datetime.now())
                }
                self.database.query(sql, **params)
                return self.success(params)
            except Exception as e:
                return self.fail(msg='%s' % e)
        elif action == 'delete':
            if entry_uuid in ('', None):
                return self.fail(msg='uuid不能为空')

            try:
                sql = 'delete from interceptor where uuid = :uuid'
                params = {
                    'uuid': entry_uuid,
                }
                self.database.query(sql, **params)
                return self.success(params)
            except Exception as e:
                return self.fail(msg='%s' % e)
        elif action == 'get-all':
            sql = 'select * from interceptor order by create_date'
            data = self.database.query(sql).as_dict()
            return self.success(data)
        else:
            return self.success()
Exemplo n.º 10
0
    def long_2_encoding(cls, data, encoding):
        data = long_to_bytes(data)
        if encoding == 'UTF8':
            data = force_text(data)
        elif encoding == 'Hex':
            data = binascii.b2a_hex(data)
        elif encoding == 'Base64':
            data = b64encode(data)
        elif encoding == 'Decimal':
            data = bytes_to_long(data)
        else:
            data = force_text(data)

        if isinstance(data, bytes):
            data = text_type(data)[2:-1]
        return data
Exemplo n.º 11
0
    def load_interceptor(self, source):
        if source in (None, ''):
            return None

        from mountains import text_type
        import imp
        import uuid
        try:
            mod_name = 'Interceptor_%s' % text_type(uuid.uuid4()).replace('-', '')[10:-10]
            mod = sys.modules.setdefault(mod_name, imp.new_module(mod_name))
            code = compile(source, '<string>', 'exec')
            # mod.__file__ = mod_name
            mod.__package__ = ''
            exec(code, mod.__dict__)
            return getattr(mod, 'Interceptor', None)
        except:
            return None
Exemplo n.º 12
0
 def on_error(e):
     # logger.exception(e)
     if not isinstance(e, HTTPError) or self.verbose:
         msg = text_type(e)
         logger.error('Exception: %s %s %s' % (msg, method, item))