@@ -38,11 +38,12 @@ def __init__(self, src_ip, dst_domain, method):
3838class ProxyServer :
3939 """ Class to handle the proxy server """
4040
41- def __init__ (self , host , port , blacklist ,
42- log_access , log_err , no_blacklist , auto_blacklist , quiet ):
41+ def __init__ (self , host , port , out_host ,
42+ blacklist , log_access , log_err , no_blacklist , auto_blacklist , quiet ):
4343
4444 self .host = host
4545 self .port = port
46+ self .out_host = out_host
4647 self .blacklist = blacklist
4748 self .log_access_file = log_access
4849 self .log_err_file = log_err
@@ -314,7 +315,6 @@ async def display_stats(self):
314315 col_width ) + "\033 [97m| "
315316 f"\033 [97mErrors: \033 [91m{ self .errors_connections } \033 [0m" .ljust (
316317 col_width )
317-
318318 )
319319
320320 traffic_stat = (
@@ -331,7 +331,6 @@ async def display_stats(self):
331331 f"\033 [97mAVG DL: \033 [96m{ self .format_speed (self .average_speed_in [0 ] / self .average_speed_in [1 ])} \033 [0m" .ljust (col_width ) + "\033 [97m| " +
332332 f"\033 [97mAVG UL: \033 [96m{ self .format_speed (self .average_speed_out [0 ] / self .average_speed_out [1 ])} \033 [0m" .ljust (
333333 col_width )
334-
335334 )
336335
337336 title = "STATISTICS"
@@ -439,13 +438,13 @@ async def handle_connection(self, reader, writer):
439438 await writer .drain ()
440439
441440 remote_reader , remote_writer = await asyncio .open_connection (
442- host .decode (), port
441+ host .decode (), port , local_addr = ( self . out_host , 0 )
443442 )
444443
445444 await self .fragment_data (reader , remote_writer )
446445 else :
447446 remote_reader , remote_writer = await asyncio .open_connection (
448- host .decode (), port
447+ host .decode (), port , local_addr = ( self . out_host , 0 )
449448 )
450449 remote_writer .write (http_data )
451450 await remote_writer .drain ()
@@ -597,6 +596,8 @@ def parse_args():
597596 parser .add_argument ("--host" , default = "127.0.0.1" , help = "Proxy host" )
598597 parser .add_argument ("--port" , type = int ,
599598 default = 8881 , help = "Proxy port" )
599+ parser .add_argument ("--out_host" , default = "127.0.0.1" ,
600+ help = "Outgoing proxy host" )
600601
601602 blacklist_group = parser .add_mutually_exclusive_group ()
602603 blacklist_group .add_argument (
@@ -703,6 +704,7 @@ async def run(cls):
703704 proxy = ProxyServer (
704705 args .host ,
705706 args .port ,
707+ args .out_host ,
706708 args .blacklist ,
707709 args .log_access ,
708710 args .log_error ,
0 commit comments