Source code for proxy.plugin.redirect_to_custom_server
# -*- 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.
"""
from typing import Optional
from urllib import parse as urlparse
from ..http.proxy import HttpProxyBasePlugin
from ..http.parser import HttpParser
[docs]class RedirectToCustomServerPlugin(HttpProxyBasePlugin):
"""Modifies client request to redirect all incoming requests to a fixed server address."""
UPSTREAM_SERVER = b'http://localhost:8899/'
[docs] def before_upstream_connection(
self, request: HttpParser,
) -> Optional[HttpParser]:
# Redirect all non-https requests to inbuilt WebServer.
if not request.is_https_tunnel:
request.set_url(self.UPSTREAM_SERVER)
# Update Host header too, otherwise upstream can reject our request
if request.has_header(b'Host'):
request.del_header(b'Host')
request.add_header(
b'Host', urlparse.urlsplit(
self.UPSTREAM_SERVER,
).netloc,
)
return request