@@ -51,7 +51,7 @@ def schedule(rserver, salgorithm, host_name):
51
51
else :
52
52
raise Exception ('Unknown scheduling algorithm' ) #Unreachable
53
53
54
- async def stream_handler (reader , writer , unix , lbind , protos , rserver , block , cipher , salgorithm , verbose = DUMMY , modstat = lambda r ,h :lambda i :DUMMY , ** kwargs ):
54
+ async def stream_handler (reader , writer , unix , lbind , protos , rserver , cipher , block = None , salgorithm = 'fa' , verbose = DUMMY , modstat = lambda r ,h :lambda i :DUMMY , ** kwargs ):
55
55
try :
56
56
if unix :
57
57
remote_ip , server_ip , remote_text = 'local' , None , 'unix_local'
@@ -253,13 +253,13 @@ def prepare_udp_connection(self, host, port, data):
253
253
if self .cipher :
254
254
data = self .cipher .datagram .encrypt (data )
255
255
return data
256
- def start_udp_server (self , loop , args , option ):
256
+ def start_udp_server (self , args ):
257
257
class Protocol (asyncio .DatagramProtocol ):
258
258
def connection_made (self , transport ):
259
259
self .transport = transport
260
260
def datagram_received (self , data , addr ):
261
- asyncio .ensure_future (datagram_handler (self .transport , data , addr , ** vars (args ), ** vars ( option ) ))
262
- return loop .create_datagram_endpoint (Protocol , local_addr = (self .host_name , self .port ))
261
+ asyncio .ensure_future (datagram_handler (self .transport , data , addr , ** vars (self ), ** args ))
262
+ return asyncio . get_event_loop () .create_datagram_endpoint (Protocol , local_addr = (self .host_name , self .port ))
263
263
async def open_connection (self , host , port , local_addr , lbind ):
264
264
if self .reuse :
265
265
if self .streams is None or self .streams .done () and not self .handler :
@@ -305,12 +305,12 @@ async def prepare_ciphers_and_headers(self, reader_remote, writer_remote, host,
305
305
await self .rproto .connect (reader_remote = reader_remote , writer_remote = writer_remote , rauth = self .auth , host_name = whost , port = wport , writer_cipher_r = writer_cipher_r , myhost = self .host_name , sock = writer_remote .get_extra_info ('socket' ))
306
306
return await self .relay .prepare_ciphers_and_headers (reader_remote , writer_remote , host , port , handler )
307
307
return reader_remote , writer_remote
308
- def start_server (self , args , option ):
309
- handler = functools .partial (reuse_stream_handler if self .reuse else stream_handler , ** vars (args ), ** vars ( option ) )
308
+ def start_server (self , args ):
309
+ handler = functools .partial (reuse_stream_handler if self .reuse else stream_handler , ** vars (self ), ** args )
310
310
if self .unix :
311
311
return asyncio .start_unix_server (handler , path = self .bind , ssl = self .sslserver )
312
312
else :
313
- return asyncio .start_server (handler , host = self .host_name , port = self .port , ssl = self .sslserver , reuse_port = args .ruport )
313
+ return asyncio .start_server (handler , host = self .host_name , port = self .port , ssl = self .sslserver , reuse_port = args .get ( ' ruport' ) )
314
314
async def tcp_connect (self , host , port , local_addr = None , lbind = None ):
315
315
reader , writer = await self .open_connection (host , port , local_addr , lbind )
316
316
try :
@@ -431,8 +431,8 @@ def main():
431
431
parser .add_argument ('--pac' , help = 'http PAC path' )
432
432
parser .add_argument ('--get' , dest = 'gets' , default = [], action = 'append' , help = 'http custom {path,file}' )
433
433
parser .add_argument ('--sys' , action = 'store_true' , help = 'change system proxy setting (mac, windows)' )
434
+ parser .add_argument ('--reuse' , dest = 'ruport' , action = 'store_true' , help = 'set SO_REUSEPORT (Linux only)' )
434
435
parser .add_argument ('--test' , help = 'test this url for all remote proxies and exit' )
435
- parser .add_argument ('--reuse' , help = 'set SO_REUSEPORT (Linux only)' , dest = 'ruport' , action = 'store_true' )
436
436
parser .add_argument ('--version' , action = 'version' , version = f'%(prog)s { __version__ } ' )
437
437
args = parser .parse_args ()
438
438
if args .test :
@@ -469,14 +469,14 @@ def main():
469
469
for option in args .listen :
470
470
print ('Serving on' , option .bind , 'by' , "," .join (i .name for i in option .protos ) + ('(SSL)' if option .sslclient else '' ), '({}{})' .format (option .cipher .name , ' ' + ',' .join (i .name () for i in option .cipher .plugins ) if option .cipher and option .cipher .plugins else '' ) if option .cipher else '' )
471
471
try :
472
- server = loop .run_until_complete (option .start_server (args , option ))
472
+ server = loop .run_until_complete (option .start_server (vars ( args ) ))
473
473
servers .append (server )
474
474
except Exception as ex :
475
475
print ('Start server failed.\n \t ==>' , ex )
476
476
for option in args .ulisten :
477
477
print ('Serving on UDP' , option .bind , 'by' , "," .join (i .name for i in option .protos ), f'({ option .cipher .name } )' if option .cipher else '' )
478
478
try :
479
- server , protocal = loop .run_until_complete (option .start_udp_server (loop , args , option ))
479
+ server , protocol = loop .run_until_complete (option .start_udp_server (vars ( args ) ))
480
480
servers .append (server )
481
481
except Exception as ex :
482
482
print ('Start server failed.\n \t ==>' , ex )
0 commit comments