Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
    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]))
Ejemplo n.º 3
0
 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())
Ejemplo n.º 4
0
 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())
Ejemplo n.º 5
0
Archivo: help.py Proyecto: hien/IRC-bot
	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())
		
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
 def __init__(self):
     self.response = Response()
     # self.snmp_engine = SnmpEngine()
     self.context_data = ContextData()
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
 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())