Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
block.py49 linesDownload Raw Back to addons
1import ipaddress2import logging3 4from mitmproxy import ctx5from mitmproxy.proxy import mode_specs6 7 8class Block:9    def load(self, loader):10        loader.add_option(11            "block_global",12            bool,13            True,14            """15            Block connections from public IP addresses.16            """,17        )18        loader.add_option(19            "block_private",20            bool,21            False,22            """23            Block connections from local (private) IP addresses.24            This option does not affect loopback addresses (connections from the local machine),25            which are always permitted.26            """,27        )28 29    def client_connected(self, client):30        parts = client.peername[0].rsplit("%", 1)31        address = ipaddress.ip_address(parts[0])32        if isinstance(address, ipaddress.IPv6Address):33            address = address.ipv4_mapped or address34 35        if address.is_loopback or isinstance(client.proxy_mode, mode_specs.LocalMode):36            return37 38        if ctx.options.block_private and address.is_private:39            logging.warning(40                f"Client connection from {client.peername[0]} killed by block_private option."41            )42            client.error = "Connection killed by block_private."43 44        if ctx.options.block_global and address.is_global:45            logging.warning(46                f"Client connection from {client.peername[0]} killed by block_global option."47            )48            client.error = "Connection killed by block_global."49 
codekingpro/portable-devtools · Team Ai