示例#1
0
    def get_socket(self, sessid=''):
        """Return an existing or new client Socket."""
        socket = self.sockets.get(sessid)

        if socket is None:
            socket = Socket(self, self.config)
            self.sockets[socket.sessid] = socket
        else:
            socket.incr_hits()

        return socket
示例#2
0
文件: socks.py 项目: alfem/gecoscc-ui
    def get_socket(self, sessid=''):
        """Return an existing or new client Socket."""
        socket = self.sockets.get(sessid)

        if socket is None:
            socket = Socket(self, self.config)
            self.sockets[socket.sessid] = socket
        else:
            socket.incr_hits()

        return socket
示例#3
0
    def get_socket(self, sessid=''):
        """Return an existing or new client Socket."""

        socket = self.sockets.get(sessid)

        if sessid and not socket:
            return None  # you ask for a session that doesn't exist!
        if socket is None:
            socket = Socket(self, self.config)
            self.sockets[socket.sessid] = socket
        else:
            socket.incr_hits()

        return socket
示例#4
0
    def get_socket(self, sessid=''):
        """Return an existing or new client Socket."""

        socket = self.sockets.get(sessid)

        if sessid and not socket:
            return None  # you ask for a session that doesn't exist!
        if socket is None:
            socket = Socket(self, self.config)
            self.sockets[socket.sessid] = socket
        else:
            socket.incr_hits()

        return socket
示例#5
0
    def get_socket(self, sessid=''):
        """Return an existing or new client Socket."""

        socket = self.sockets.get(sessid)

        # workaround for https://github.com/abourget/gevent-socketio/issues/132
        #if sessid and not socket:
        #    return None  # you ask for a session that doesn't exist!
        if socket is None:
            socket = Socket(self, self.config)
            self.sockets[socket.sessid] = socket
        else:
            socket.incr_hits()

        return socket
示例#6
0
    def get_socket(self, sessid=''):
        """Return an existing or new client Socket."""

        socket = self.sockets.get(sessid)

        # commenting this two lines fix https://github.com/abourget/gevent-socketio/issues/132
        #if sessid and not socket:
        #    return None  # you ask for a session that doesn't exist!
        if socket is None:
            socket = Socket(self, self.config)
            self.sockets[socket.sessid] = socket
        else:
            socket.incr_hits()

        return socket
示例#7
0
class TestSocketAPI(TestCase):

    def setUp(self):
        self.server = MockSocketIOServer()
        self.virtsocket = Socket(self.server)

    def test__set_namespaces(self):
        namespaces = {'test': 'a'}
        self.virtsocket._set_namespaces(namespaces)
        self.asserEqual(self.virtsocket.namespaces, namespaces)

    def test__set_request(self):
        request = {'test': 'a'}
        self.virtsocket._set_request(request)
        self.asserEqual(self.virtsocket.request, request)
示例#8
0
    def get_socket(self, sessid=''):
        """Return an existing or new client Socket."""

        socket = self.sockets.get(sessid)

        if socket is None:
            if sessid:
                raise Exception('No session id {0} available'.format(sessid))
            else:
                socket = Socket(self)
                self.sockets[socket.sessid] = socket
        else:
            socket.incr_hits()

        return socket
示例#9
0
    def get_socket(self, sessid=''):
        """Return an existing or new client Socket."""

        socket = self.sockets.get(sessid)

        # commenting this two lines fix https://github.com/abourget/gevent-socketio/issues/132
        # https://github.com/getpenelope/gevent-socketio/commit/6c80c17705c9a1b3adcb0f99abde1c4d369c337b
#        if sessid and not socket: 
#            return None  # you ask for a session that doesn't exist!
        if socket is None:
            socket = Socket(self, self.config)
            self.sockets[socket.sessid] = socket
        else:
            socket.incr_hits()

        return socket
示例#10
0
 def get_socket(self, sessid):
     """Returns a socket if the session exists (i.e. was handshaken) or None.
     """
     socket = self.sockets.get(sessid)
     if (not socket) and self.is_handshaken(sessid):
         socket = Socket(sessid, self, self.config)
         self.sockets[sessid] = socket
     if socket:
         socket = self.load_socket(socket)
     return socket
示例#11
0
def webhook(webhook_id, remaining=''):
    """Webhook callback requests this or when viewing a webhook"""

    has_data = len(request.args) or request.method != 'GET' or remaining
    post = formatted_json(request.form) if request.form else scalar_or_list(
        request.data)
    get = formatted_json(request.args)
    headers = formatted_json({k: v for k, v in request.headers.iteritems()})
    files = formatted_json({
        file_key: file.filename
        for file_key, file in request.files.iteritems()
    })

    # Play sound effect if url is like http://webhookr.com/aBr3/loud or /loud/something/else/
    sound_effect = app.config['VALID_SOUNDS'][0]
    for sound in app.config['VALID_SOUNDS']:
        sound_prefix = '{}/'.format(sound)
        if remaining == sound or remaining.startswith(sound_prefix):
            sound_effect = sound

    data = {
        "method": request.method,
        "ip": request.remote_addr,
        "host": request.headers.get('Host'),
        "length": request.headers.get('Content-Length'),
        "type": request.headers.get('Content-Type'),
        "post": post,
        "get": get,
        "files": files,
        "headers": headers,
        "path": remaining,
        "hasData": has_data,
        "soundEffect": sound_effect,
    }

    if has_data:
        # Little hack to communicate to server outside of a websocket
        request.environ['socketio'] = Socket(server=app.server)
        wns = WebhookNamespace(request.environ, '/webhooks', request)

        wns.emit_to_channel(webhook_id, 'new_request', data)
        return "Message Logged"

    context = {
        'webhook_id': webhook_id,
        "full_path": url_for('webhook', webhook_id=webhook_id, _external=True)
    }

    return render_template('webhooks/webhook.html', **context)
示例#12
0
 def setUp(self):
     self.server = MockSocketIOServer()
     self.virtsocket = Socket(self.server, {})
示例#13
0
class TestSocketAPI(TestCase):
    """Test the virtual Socket object"""
    def setUp(self):
        self.server = MockSocketIOServer()
        self.virtsocket = Socket(self.server, {})

    def test__set_namespaces(self):
        namespaces = {'/': MockNamespace}
        self.virtsocket._set_namespaces(namespaces)
        self.assertEqual(self.virtsocket.namespaces, namespaces)

    def test__set_request(self):
        request = {'test': 'a'}
        self.virtsocket._set_request(request)
        self.assertEqual(self.virtsocket.request, request)

    def test__set_environ(self):
        environ = []
        self.virtsocket._set_environ(environ)
        self.assertEqual(self.virtsocket.environ, environ)

    def test_connected_property(self):
        # not connected
        self.assertFalse(self.virtsocket.connected)

        # connected
        self.virtsocket.state = "CONNECTED"
        self.assertTrue(self.virtsocket.connected)

    def test_incr_hist(self):
        self.virtsocket.state = "CONNECTED"

        # cause a hit
        self.virtsocket.incr_hits()
        self.assertEqual(self.virtsocket.hits, 1)
        self.assertEqual(self.virtsocket.state,
                         self.virtsocket.STATE_CONNECTED)

    def test_disconnect(self):
        # kill connected socket
        self.virtsocket.state = "CONNECTED"
        self.virtsocket.active_ns = {
            'test': MockNamespace({'socketio': self.virtsocket}, 'test')
        }
        self.virtsocket.disconnect()
        self.assertEqual(self.virtsocket.state, "DISCONNECTING")
        self.assertEqual(self.virtsocket.active_ns, {})

    def test_kill(self):
        # kill connected socket
        self.virtsocket.state = "CONNECTED"
        self.virtsocket.active_ns = {
            'test': MockNamespace({'socketio': self.virtsocket}, 'test')
        }
        self.virtsocket.kill()
        self.assertEqual(self.virtsocket.state, "DISCONNECTING")

    def test__receiver_loop(self):
        """Test the loop  """
        # most of the method is tested by test_packet.TestDecode and
        # test_namespace.TestBaseNamespace
        pass
示例#14
0
 def setUp(self):
     self.server = MockSocketIOServer()
     self.virtsocket = Socket(self.server)
示例#15
0
class TestSocketAPI(TestCase):
    """Test the virtual Socket object"""

    def setUp(self):
        self.server = MockSocketIOServer()
        self.virtsocket = Socket(self.server)

    def test__set_namespaces(self):
        namespaces = {'/': MockNamespace}
        self.virtsocket._set_namespaces(namespaces)
        self.assertEqual(self.virtsocket.namespaces, namespaces)

    def test__set_request(self):
        request = {'test': 'a'}
        self.virtsocket._set_request(request)
        self.assertEqual(self.virtsocket.request, request)

    def test__set_environ(self):
        environ = []
        self.virtsocket._set_environ(environ)
        self.assertEqual(self.virtsocket.environ, environ)

    def test_connected_property(self):
        # not connected
        self.assertFalse(self.virtsocket.connected)
        
        # connected
        self.virtsocket.state = "CONNECTED"
        self.assertTrue(self.virtsocket.connected)

    def test_incr_hist(self):
        self.virtsocket.incr_hits()
        self.assertEqual(self.virtsocket.hits, 1)
        self.assertEqual(self.virtsocket.state, self.virtsocket.STATE_CONNECTED)

    def test_disconnect(self):
        # kill connected socket
        self.virtsocket.state = "CONNECTED"
        self.virtsocket.active_ns = {'test' : MockNamespace(environ=[], 
                                                            name="m")}
        self.virtsocket.disconnect()
        self.assertEqual(self.virtsocket.state, "CONNECTED")
        self.assertEqual(self.virtsocket.active_ns, {})

    def test_kill(self):
        # kill connected socket
        self.virtsocket.state = "CONNECTED"
        self.virtsocket.active_ns = {'test' : MockNamespace(environ=[],
                                                            name="m")}
        self.virtsocket.kill()
        self.assertEqual(self.virtsocket.state, "DISCONNECTING")

    def test__receiver_loop(self):
        """Test the loop  """
        # most of the method is tested by test_packet.TestDecode and
        # test_namespace.TestBaseNamespace
        pass
示例#16
0
 def setUp(self):
     self.server = MockSocketIOServer()
     sessid = '12345678'
     self.virtsocket = Socket(sessid, self.server.manager, {})
示例#17
0
class TestSocketAPI(TestCase):
    """Test the virtual Socket object"""

    def setUp(self):
        self.server = SocketIOServer()
        self.virtsocket = Socket(self.server, {})

    def test__set_namespaces(self):
        namespaces = {'/': Namespace}
        self.virtsocket._set_namespaces(namespaces)
        self.assertEqual(self.virtsocket.namespaces, namespaces)

    def test__set_request(self):
        request = {'test': 'a'}
        self.virtsocket._set_request(request)
        self.assertEqual(self.virtsocket.request, request)

    def test__set_environ(self):
        environ = []
        self.virtsocket._set_environ(environ)
        self.assertEqual(self.virtsocket.environ, environ)

    def test_connected_property(self):
        # not connected
        self.assertFalse(self.virtsocket.connected)

        # connected
        self.virtsocket.state = "CONNECTED"
        self.assertTrue(self.virtsocket.connected)

    def test_incr_hist(self):
        self.virtsocket.state = "CONNECTED"

        # cause a hit
        self.virtsocket.incr_hits()
        self.assertEqual(self.virtsocket.hits, 1)
        self.assertEqual(self.virtsocket.state, self.virtsocket.STATE_CONNECTED)

    def test_disconnect(self):
        # kill connected socket
        self.virtsocket.state = "CONNECTED"
        self.virtsocket.active_ns = {'test' : Namespace({'socketio': self.virtsocket}, 'test')}
        self.virtsocket.disconnect()
        self.assertEqual(self.virtsocket.state, "DISCONNECTING")
        self.assertEqual(self.virtsocket.active_ns, {})

    def test_kill(self):
        # kill connected socket
        self.virtsocket.state = "CONNECTED"
        self.virtsocket.active_ns = {'test' : Namespace({'socketio': self.virtsocket}, 'test')}
        self.virtsocket.kill()
        self.assertEqual(self.virtsocket.state, "DISCONNECTING")