def tcplink(sock, addr): print 'connected to %s:%s...!' % addr sock.send(Response.json_response(200, [], 'success', '')) while True: data = sock.recv(1024) time.sleep(1) if data == 'exit' or not data: break json_obj = json.loads(data) session_id = json_obj['sessionID'] if json_obj['reqType'] == REQ_TYPE_UPLOAD_LOCATION: updateUserLocation(json_obj['body']) new_data = queryCurrentUsers() str = Response.json_response(200, new_data, 'success', session_id) sock.send(str) print "send -- %s" % str elif json_obj['reqType'] == REQ_TYPE_CREATE_ACCOUNT: body = json_obj['body'] insert_id = createAccount(body['username']) data = {'userID': insert_id} str = Response.json_response(200, data, 'success', session_id) sock.send(str) print "send -- %s" % str # print "send -- Hello %s" % data # sock.send('Hello %s' % data) sock.close() print '%s:%s closed!' % addr
def render_json(self, obj, status_code): """ returns json serialized objects :param obj: an object corresponding to a database entry. :return: json serialized objects. """ return Response.get_formatted_response(Response(request=self.request, data=[obj]))
def text(self, msg, cmd, user, arg): try: if "." in arg[0]: return self.send_message("A hackear a tu casa.") except: return self.send_message("Tu puta madre.") try: file = open(self.path + arg[0]).readlines() except: return self.send_message("Ese texto no existe.") response = Response() for line in file: response.add_action(self.send_message(line)) return self.multiple_response(response.generate_response())
def search(self, msg, cmd, user, arg): response = Response() try: result = requests.post(self.qdb_api_search % self.qdb_secret, data={'criteria': ' '.join(arg), 'page_size': 10}) except: return self.send_message("Tu puta madre.") try: result = json.loads(result.content) if result['results'].has_key('success'): if result['results']['success'] == 1: if result['results']['count'] == 0: return self.send_message("No quotes matching that criteria found.") else: for quote in result['results']['data']: firstline = quote['excerpt'] response.add_action(self.send_message(quote['permaid'] + " - " + quote['nick'] + ": '" + firstline + "'")) response.add_action(self.send_message("Escribe .read <id> para leer el quote completo.")) else: return self.send_message("Algo se ha roto. (dunno lol)") except: raise return self.send_message("wodim, arregla el qdb.") return self.multiple_response(response.generate_response())
def handle_modules(self, modules): response = Response() response.add_action(self.send_message("Módulos disponibles: " + ', '.join(modules))) response.add_action(self.send_message("Escribe .help <module> para ver los comandos de un módulo.")) return self.multiple_response(response.generate_response())
def _handle_request(self, req: Request): uri = req.uri method = req.method filepath = self._static_dir + uri.split('?')[0] file = Path(filepath) status = '' if not file.exists(): status = 404 if file.is_dir() and filepath[-1:] == '/': filepath += 'index.html' elif file.is_dir(): filepath += '/index.html' if req.method not in self._allowed_methods: status = 405 i = filepath.rfind(".") if i != -1: file_type = filepath[i:] else: file_type = 'default' file_size = 0 try: file_size = getsize(filepath) status = 200 except FileNotFoundError: status = 404 if filepath.split('/')[-1] == "index.html": status = 403 if self._static_dir not in abspath(filepath): status = 403 if method not in self._allowed_methods: status = 405 #print(f'check response {Response(status=status, content_length=file_size, f_type=file_type, filename=filepath)}') return Response(status=status, content_length=file_size, f_type=file_type, filename=filepath)
def __init__(self): self.response = Response() # self.snmp_engine = SnmpEngine() self.context_data = ContextData()
class SNMPReader(object): """SNMP Collector.""" def __init__(self): self.response = Response() # self.snmp_engine = SnmpEngine() self.context_data = ContextData() async def read_async_full( self, loop, community_data, udp_transport_target, object_type, **kwargs ): """ A SNMP collector which is fully asynchronous with asyncio methods. :param loop: asyncio loop. :param community_data: SNMP community_data. :param udp_transport_target: SNMP udp_transport_target. :param object_type: SNMP object_type. :param kwargs: Below parameters. :return: """ oid = kwargs.get('oid', '0.0.0.0.0.0') name = kwargs.get('tag_name', 'Default Name') module = kwargs.get('name', 'SNMP Device') address = kwargs.get('address', 1) version = kwargs.get('version', 1) port = kwargs.get('port', 161) timeout = kwargs.get('timeout', 1) retries = kwargs.get('retries', 3) interval = kwargs.get('sleep_time', 3) meta = kwargs.get('meta_data', {}) gain = kwargs.get('gain', 1) offset = kwargs.get('offset', 0) snmp_engine = kwargs.get('engine', None) data = None tic = time.time() try: error_indication, error_status, error_index, var_binds = await getCmd( snmp_engine, community_data, udp_transport_target, self.context_data, object_type ) if error_indication: str_error = f"tag_name: {name} - OID: {oid} - IP: {address} \n " \ f"{error_indication}" print(str_error) data = -8555 elif error_status: print('%s at %s' % ( error_status.prettyPrint(), error_index and var_binds[int(error_index) - 1][0] or '?' ) ) data = -8555 else: for var_bind in var_binds: try: data = float(var_bind[1]) data *= gain data += offset except ValueError: str_error = f"tag_name: {name} - OID: {oid} - IP: {address} \n " \ f"{traceback.format_exc()}" print(str_error) data = -8555 except asyncio.CancelledError: data = -8555 raise asyncio.CancelledError() except Exception: data = -8555 finally: result = {name: data} meta_data = {} for met in meta: meta_data.update(met) self.response.publish( module=module, meta_data=meta_data, **result ) toc = time.time() - tic if interval >= (retries * timeout): await asyncio.sleep(interval - toc) else: await asyncio.sleep(interval)
def read(self, msg, cmd, user, arg): response = Response() try: result = requests.post(self.qdb_api_read % self.qdb_secret, data={'permaid': arg[0]}) except: return self.send_message("Tu puta madre.") try: result = json.loads(result.content) if result['results'].has_key('success'): if result['results']['success'] == 1: if result['results']['data']['status'] == "deleted": return self.send_message("Quote is deleted.") else: quote = result['results']['data']['text'].split("\n") response.add_action(self.send_message('Enviado por ' + result['results']['data']['nick'] + ' (' + result['results']['data']['date'] + '):')) for line in quote: if "\r" in line or "\n" in line: for subline in line.split("\r\n"): response.add_action(self.send_message(subline)) else: response.add_action(self.send_message(line)) if result['results']['data']['comment']: comment = result['results']['data']['comment'] dashes_length = int((40 - len(comment)) / 2) # little decorator response.add_action(self.send_message(("-" * dashes_length) + comment + ("-" * dashes_length))) else: problem = {'hidden_quote': 'The quote is hidden.', 'no_such_quote': 'No such quote exists.'}[result['results']['error']] response.add_action(self.send_message("Error: " + problem)) except: return self.send_message('wodim, arregla el qdb.') return self.multiple_response(response.generate_response())