def smart_text(s): if isinstance(s, bytes): s = text_type(s)[2:-1] else: s = text_type(s) return s
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)
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
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)
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
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
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)
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
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()
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
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
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))