Example #1
0
def decrypt(environ, start_response):
    """
    Handle OTP decryptions
    """
    _format = 'text'
    try:
        params = parse_querystring(environ['QUERY_STRING'])
        if params.get('format') == 'json' or environ[
                'HTTP_ACCEPT'] == 'application/json':
            _format = 'json'
        logger.debug('PROCESSED QUERYSTRING: %s', params)
        decryptor = Decryptor()
        output = decryptor.decrypt(params.get('otp'))
        if _format != 'json':
            output = 'OK counter=%(counter)s low=%(low)s high=%(high)s use=%(use)s\n' % output
        status_code = 200
    except YKKSMError as err:
        logger.exception('Decryption error: %s', err.error_code)
        output = '%s' % str(err)
        status_code = 400
    except Exception as err:
        logger.exception('Backend error: %s', err)
        output = 'Backend failure\n'
        status_code = 500
    finally:
        content_type = 'application/json' if _format == 'json' else 'text/plain'
        if _format == 'json':
            if isinstance(output, str):
                output = {'error': output}
            output = json.dumps(output)
        elif status_code != 200:
            output = 'ERR %s\n' % output
        start_response(HTTP_STATUS_CODES[status_code],
                       [('Content-Type', content_type)])
        return [output.encode()]
Example #2
0
def decrypt(environ, start_response):
    """
    Handle OTP decryptions
    """
    _format = 'text'
    try:
        params = parse_querystring(environ['QUERY_STRING'])
        if params.get('format') == 'json' or environ['HTTP_ACCEPT'] == 'application/json':
            _format = 'json'
        logger.debug('PROCESSED QUERYSTRING: %s', params)
        decryptor = Decryptor()
        output = decryptor.decrypt(params.get('otp'))
        if _format != 'json':
            output = 'OK counter=%(counter)s low=%(low)s high=%(high)s use=%(use)s\n' % output
        status_code = 200
    except YKKSMError as err:
        logger.exception('Decryption error: %s', err.error_code)
        output = '%s' % str(err)
        status_code = 400
    except Exception as err:
        logger.exception('Backend error: %s', err)
        output = 'Backend failure\n'
        status_code = 500
    finally:
        content_type = 'application/json' if _format == 'json' else 'text/plain'
        if _format == 'json':
            if isinstance(output, str):
                output = {'error': output}
            output = json.dumps(output)
        elif status_code != 200:
            output = 'ERR %s\n' % output
        start_response(HTTP_STATUS_CODES[status_code], [('Content-Type', content_type)])
        return [output.encode()]
Example #3
0
def decrypt(environ, start_response):
    """
    Handle OTP decryptions
    """
    try:
        params = parse_querystring(environ['QUERY_STRING'])
        logger.debug('PROCESSED QUERYSTRING: %s', params)
        decryptor = Decryptor()
        output = decryptor.decrypt(params.get('otp'))
        output = 'OK counter=%(counter)s low=%(low)s high=%(high)s use=%(use)s\n' % output
    except YKKSMError as err:
        logger.exception('Decryption error: %s', err)
        output = '%s\n' % err
    except Exception as err:
        logger.exception('Backend error: %s', err)
        output = 'ERR Backend failure\n'
    finally:
        start_response('200 OK', [('Content-Type', 'text/plain')])
        return [output.encode()]