Source code for proxy.core.listener.unix
# -*- 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.
"""
import os
import socket
import logging
from .base import BaseListener
from ...common.flag import flags
flags.add_argument(
'--unix-socket-path',
type=str,
default=None,
help='Default: None. Unix socket path to use. ' +
'When provided --host and --port flags are ignored',
)
logger = logging.getLogger(__name__)
[docs]class UnixSocketListener(BaseListener):
"""Unix socket domain listener."""
[docs] def listen(self) -> socket.socket:
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(self.flags.unix_socket_path)
sock.listen(self.flags.backlog)
sock.setblocking(False)
logger.info(
'Listening on %s' %
self.flags.unix_socket_path,
)
return sock
[docs] def shutdown(self) -> None:
super().shutdown()
if self.flags.unix_socket_path:
os.remove(self.flags.unix_socket_path)