예제 #1
0
def ws_message(transport, message):
    if transport.authenticated:
        transport.write(message)
    else:
        data = {}
        try:
            data = json.loads(message)
        except ValueError:
            pass

        if 'cmd' in data and data['cmd'] == 'AUTHENTICATE':
            if 'key' in data and data['key'] == 'auth-key':
                transport.authenticated = True
                transport.write(json.dumps({'cmd': 'AUTHENTICATED'}))
                broadcast(json.dumps({'connections': len(authenticated())}), authenticated())
            else:
                transport.write(json.dumps({'cmd': 'AUTHENTICATION_FAILED', 'reason': 'Wrong key'}))
        else:
            transport.write(json.dumps({'cmd': 'AUTHENTICATION_REQUIRED'}))
예제 #2
0
def ws_close(transport, reason):
    broadcast(json.dumps({'connections': len(authenticated())}), authenticated())
예제 #3
0
def ws_message(transport, message):
    broadcast(message, chat.transports())