コード例 #1
0
def login(args):
    # Handling login requests
    #
    # Reqeust example:
    # GET /app/auth?name=Sasha&pwd=sdjcn23jnd322jdjkn
    # or (same):
    # GET /app/auth?action=authorize&name=Sasha&pwd=sdjcn23jnd322jdjkn

    # Get nickname and pwd
    params = parse.parse_qs(args.get('params', ''))
    name = params.get('name', [None])[-1]
    passwd = params.get('pwd', [None])[-1]
    if name is None or passwd is None:
        return {'code': HTTPStatus.BAD_REQUEST}

    response = {'code': HTTPStatus.OK, 'headers': []}

    # Identification
    identify = db_proto.Request(method='CHECKUSR', params={'name': name})
    if db_cli.send(identify).code != db_proto.DBRespCode.OK:
        response['headers'].append(('X-Auth-status', 'Identification failed'))
        return response

    # Authentication
    auth = db_proto.Request(method='CHECKPWD',
                            params={
                                'name': name,
                                'passwd': passwd
                            })
    if db_cli.send(auth).code != db_proto.DBRespCode.OK:
        response['headers'].append(('X-Auth-status', 'Authentication failed'))
        return response

    # Change user status to `online`
    mkonline = db_proto.Request(method='USRON',
                                params={
                                    'name': name,
                                    'client_ip': args['client'][0]
                                })
    db_response = db_cli.send(mkonline)
    if db_response.code == db_proto.DBRespCode.OK:
        ssid = db_response.data[0]
        response['headers'].append(('X-Auth-status', 'OK'))
        response['headers'].append(
            ('Set-Cookie',
             'SSID={}; Max-Age={}; HttpOnly'.format(ssid, CHECKOUT_TIME)))
    else:
        response['headers'].append(('X-Auth-status', 'Status failed'))
    return response
コード例 #2
0
ファイル: __init__.py プロジェクト: svboeing/bicycle
def activate(args):
    # Handle register request
    # Accepts new user name and pwd hash
    #
    # Request example:
    # GET /app/register?name=Sasha&pwd=as322mdj93dk

    params = parse.parse_qs(args.get('params', ''))
    name = params.get('name', [None])[-1]
    passwd = params.get('pwd', [None])[-1]
    if name is None or passwd is None:
        return {'code': HTTPStatus.BAD_REQUEST}

    response = {
        'code': HTTPStatus.OK,
        'headers': []
    }
    request = db_proto.Request(method='NEWUSR',
                               params={'name': name,
                                       'passwd': passwd})
    if client.send(request).code == db_proto.DBRespCode.OK:
        response['headers'].append(('X-Reg-status', 'OK'))
    else:
        response['headers'].append(('X-Reg-status', 'FAIL'))
    return response
コード例 #3
0
def checkssid(args):
    # Check if client has valid SSID
    #
    # Request example:
    # GET /app/auth?action=checkssid

    response = {'code': HTTPStatus.OK, 'headers': []}

    ssid = extract_ssid(args)
    if ssid:
        cookiecheck = db_proto.Request(method='CHECKSSID',
                                       params={
                                           'ssid': ssid.value,
                                           'client_ip': args['client'][0]
                                       })
        resp = db_cli.send(cookiecheck)
        if resp.code == db_proto.DBRespCode.OK:
            response['headers'].append(('X-SSID-approvement', 'OK'))
            response['headers'].append(
                ('Set-Cookie',
                 'SSID={}; Max-Age={}'.format(ssid.value, CHECKOUT_TIME)))
            response['headers'].append(
                ('Set-Cookie',
                 'nickname={}; Max-Age={}'.format(resp.data[0],
                                                  CHECKOUT_TIME)))
        else:
            response['headers'].append(('X-SSID-approvement', 'Invalid'))
    else:
        response['headers'].append(('X-SSID-approvement', 'Not Found'))
    return response
コード例 #4
0
    def handle(self, conn, address):
        t = time.time()
        request = db_proto.Request(self.get_request(conn))
        response = self.wrapper.perform(request)
        conn.sendall(response.bytes)

        self.logger.info('{} - {} ({}s)'.format(request.method, response.code,
                                                round(time.time() - t, 7)))
コード例 #5
0
ファイル: db_server.py プロジェクト: aleasims/bicycle
 def handle(self):
     try:
         request = db_proto.Request(self.raw_request)
         self.server.push_task(request, self.callback)
     except Exception as e:
         self.server.logger.info('Exception during hadnling - {}'.format(e))
         if self.server.logger.level == logging.DEBUG:
             print('*' * 80)
             traceback.print_exc()
             print('*' * 80)
コード例 #6
0
    def send(self, method, params={}):
        # Forms request from given method and params
        # Sends it to DBServer
        # Waits for response and returns it
        #
        response = None
        ipc = socket.socket(socket.AF_UNIX)
        ipc.settimeout(self.sock_timeout)
        try:
            request = db_proto.Request(method=method, params=params).bytes
            ipc.connect(self.ipc_path)
            ipc.sendall(request)
            response = self.recvall(ipc)
        except Exception as e:
            self._log_err(e)
        finally:
            ipc.close()

        if response is not None:
            return db_proto.Response(response)
コード例 #7
0
def logout(args):
    # Handling log out requests
    #
    # Request example:
    # GET /app/auth?action=logout

    ssid = extract_ssid(args)
    if ssid:
        off_user = db_proto.Request(method='USROFF',
                                    params={'ssid': ssid.value})
        if db_cli.send(off_user) == db_proto.DBRespCode.OK:
            return {
                'code': HTTPStatus.OK,
                'headers': [('X-Auth-status', 'OUT')]
            }
        else:
            return {
                'code': HTTPStatus.OK,
                'headers': [('X-Auth-status', 'Logging out failed')]
            }
    return {'code': HTTPStatus.OK, 'headers': [('X-Auth-status', 'OUT')]}