Source code for proxy.http.proxy.auth

# -*- coding: utf-8 -*-
"""
    proxy.py
    ~~~~~~~~
    ⚡⚡⚡ Fast, Lightweight, Pluggable, TLS interception capable proxy server focused on
    Network monitoring, controls & Application development, testing, debugging.

    :copyright: (c) 2013-present by Abhinav Singh and contributors.
    :license: BSD, see LICENSE for more details.

    .. spelling::

       auth
       http
"""
from typing import Optional

from ...http import httpHeaders
from ..exception import ProxyAuthenticationFailed
from ...http.proxy import HttpProxyBasePlugin
from ...http.parser import HttpParser


[docs]class AuthPlugin(HttpProxyBasePlugin): """Performs proxy authentication."""
[docs] def before_upstream_connection( self, request: HttpParser, ) -> Optional[HttpParser]: if self.flags.auth_code: request.headers = request.headers or {} if httpHeaders.PROXY_AUTHORIZATION not in request.headers: raise ProxyAuthenticationFailed() parts = request.headers[httpHeaders.PROXY_AUTHORIZATION][1].split() if len(parts) != 2 \ or parts[0].lower() != b'basic' \ or parts[1] != self.flags.auth_code: raise ProxyAuthenticationFailed() return request