Files
Shadowsocks-For-WHMCS/Server/shadowsocks/tcprelay.pyc

123 lines
17 KiB
Plaintext
Raw Normal View History

2016-05-27 11:18:25 +08:00
<EFBFBD><EFBFBD>
T#zUc@s8ddkZddkZddkZddkZddkZddkZddkZddkZddkZddk Z ddk
l Z dZ dZ dZdZdZdZd ZdZdZdZdZd
ZdZd ZdZd ZdZdZeeBZd d Zd e fd<00><00>YZ!de fd<00><00>YZ"dS(i<><69><EFBFBD><EFBFBD>N(t parse_headeriii iiiiii itTCPRelayHandlercBs<>eZd<00>Zd<00>Zed<00><00>Zd<00>Zd<00>Zd<00>Zd<00>Z d<00>Z
d<00>Z d <00>Z d
<00>Z d <00>Zd <00>Zd <00>Zd<00>Zd<00>Zd<00>Zd<00>Zd<00>ZRS(cCs%||_||_||_||_d|_||_||_||_t |_
t i |d|d<19>|_ t|_g|_g|_t|_t|_d|_|o|i<00>|_n|||i<00><|it<00>|ititid<00>|i|t i!t i"B<>d|_#|i$<00>dS(Ntpasswordtmethodii(%t_servert_fd_to_handlerst_loopt _local_socktNonet _remote_sockt_configt _dns_resolvert _is_localt
STAGE_INITt_stagetencryptt Encryptort
_encryptortFalset_fastopen_connectedt_data_to_write_to_localt_data_to_write_to_remotetWAIT_STATUS_READINGt_upstream_statustWAIT_STATUS_INITt_downstream_statust_remote_addresst _get_a_servert_chosen_servertfilenot setblockingt
setsockopttsockettSOL_TCPt TCP_NODELAYtaddt eventlooptPOLL_INtPOLL_ERRt last_activityt_update_activity(tselftservertfd_to_handlerstloopt
local_socktconfigt dns_resolvertis_local((s%/home/wwwroot/shadowsocks/tcprelay.pyt__init__Rs2                  cCs
t|<00>S(N(tid(R)((s%/home/wwwroot/shadowsocks/tcprelay.pyt__hash__nscCs|iS(N(R(R)((s%/home/wwwroot/shadowsocks/tcprelay.pytremote_addresssscCs]|id}|id}t|<00>tjoti|<00>}ntid||<00>||fS(NR*t server_portschosen server: %s:%d(R
ttypetlisttrandomtchoicetloggingtdebug(R)R*R5((s%/home/wwwroot/shadowsocks/tcprelay.pyRws   cCs|ii|<00>dS(N(Rtupdate_activity(R)((s%/home/wwwroot/shadowsocks/tcprelay.pyR(<00>scCsSt}|tjo'|i|jo||_t}qnn5|tjo'|i|jo||_t}qnn|o<>|ioati}|it @o|ti
O}n|it @o|ti O}n|i i|i|<00>n|ioati}|it @o|ti O}n|it @o|ti
O}n|i i|i|<00>qOndS(N(Rt STREAM_DOWNRtTruet STREAM_UPRRR$R&tWAIT_STATUS_WRITINGtPOLL_OUTRR%RtmodifyR (R)tstreamtstatustdirtytevent((s%/home/wwwroot/shadowsocks/tcprelay.pyt_update_stream<61>s0    
 
 cCs<>| p| otSt}y@t|<00>}|i|<00>}||jo||}t}nWn<57>ttfj
ox}ti|<00>}|ti ti
ti fjo
t}q<>t i |<00>|idoti<00>n|i<00>tSnX|oy||ijo$|ii|<00>|itt<00>q<>||ijo$|ii|<00>|itt<00>q<>t i d<00>nV||ijo|itt<00>n2||ijo|itt<00>nt i d<00>tS(Ntverboses write_all_to_sock:unknown socket(RtlentsendR>tOSErrortIOErrorR$terrno_from_exceptionterrnotEAGAINt EINPROGRESSt EWOULDBLOCKR:terrorR
t tracebackt print_exctdestroyRRtappendRGR=R@R RR?R(R)tdatatsockt
uncompletetltsteterror_no((s%/home/wwwroot/shadowsocks/tcprelay.pyt_write_to_sock<63>sB  

 
  cCs<>|io|ii|<00>}n|ii|<00>|io<>|i o<>|ido<>y<>t|_|i|i d|i d<19>}|i
i |t i <00>di|i<00>}t|<00>}|i|t|i <00>}||jo*||}|g|_|itt<00>n#g|_|itt<00>t|_Wq<57>ttfj
o<>}t i|<00>tijo|itt<00>q<>t i|<00>tijo(ti d<00>t!|id<|i"<00>q<>ti |<00>|idot#i$<00>n|i"<00>q<>XndS(Nt fast_openiits"fast open not supported on this OSRH(%R RRRRVRR
R>t_create_remote_socketRRR#R$R&tjoinRRItsendtot MSG_FASTOPENRGR?tWAIT_STATUS_READWRITINGRt STAGE_STREAMRRKRLRMRNRPtENOTCONNR:RRRRURSRT(R)RWt remote_sockRZR[R\((s%/home/wwwroot/shadowsocks/tcprelay.pyt_handle_stage_reply<6C>s>
   
      cCsxy)|io<>t|d<19>}|tjo<>tid<00>|iitijo
d}nd}|ii <00>\}}ti
|ii|<00>}t i d|<00>}|i ||||i<00>t|_dS|tjo|d}qtid|<00>|i<00>dSnt|<00>}|djotd|id <16><00>n|\} }
} } tid
|
| f<16>|
| f|_|itt<00>t|_|ioV|i d |i<00>|ii|<00>} |ii | <00>|i!i"|i#d |i$<00>nBt%|<00>| jo|ii || <1F>n|i!i"|
|i$<00>WnHtj
o<}ti|<00>|id ot&i'<00>n|i<00>nXdS(Nis UDP associatesss>Hisunknown command %ds[%s]can not parse headerR5sconnecting %s:%ds
iRH((R tordtCMD_UDP_ASSOCIATER:R;RtfamilyR tAF_INET6t getsocknamet inet_ptontstructtpackR^tSTAGE_UDP_ASSOCRt CMD_CONNECTRRRURRt ExceptionR
tinfoRRGR?R@t STAGE_DNSRRRRVR tresolveRt_handle_dns_resolvedRIRSRT(R)RWtcmdtheadertaddrtportt addr_to_sendt port_to_sendt header_resulttaddrtypet remote_addrt remote_portt header_lengtht data_to_sendR\((s%/home/wwwroot/shadowsocks/tcprelay.pyt_handle_stage_hello<6C>sZ
  
 
  
   
 
  c
Cs<>ti||dtiti<00>}t|<00>djotd||f<16><00>n|d\}}}}}ti|||<00>} | |_||i| i<00><| i t
<00>| i titi d<00>| S(Nisgetaddrinfo failed for %s:%di( R t getaddrinfot SOCK_STREAMR!RIRtR RRRRRR"(
R)tipR|taddrstaftsocktypetprotot canonnametsaRh((s%/home/wwwroot/shadowsocks/tcprelay.pyRa!s   c
Cs<>|oti|<00>|i<00>dS|o~|d}|oiyt|_|}|io|id}n|id}|io+|idot|_|i t
t <00>n<>|i ||<00>}y|i ||f<00>Wn8ttfj
o&}ti|<00>tijoqnX|ii|titiB<>t|_|i t
t<00>|i tt <00>dSWq<57>ttfj
o2}ti|<00>|idoti<00>q<>q<>Xq<58>n|i<00>dS(NiR_RH(R:RRRUt STAGE_REPLYRR RRR
RGR?RRatconnectRKRLR$RMRNRPRR#R&RAReR=RSRT(R)tresultRRR<>R<>R<>RhR\((s%/home/wwwroot/shadowsocks/tcprelay.pyRx.sF 

 
          cCs<>|i<00>|ipdS|i}d}y|iit<00>}WnHttfj
o6}ti |<00>t
i t
i t
i fjodSnX|p|i<00>dS|iit|<00>7_|p"|ii|<00>}|pdSn|itjo8|io|ii|<00>}n|i||i<00>dS|o1|itjo!|id|i<00>t|_dS|itjo|i|<00>nA|o|itjp| o!|itjo|i|<00>ndS(Ns(R(RR RtrecvtBUF_SIZERKRLR$RMRNt ETIMEDOUTRORQRURtserver_transfer_ulRIRtdecryptRRfRR^R R t STAGE_HELLOR<4F>RiR<>(R)R0RWR\((s%/home/wwwroot/shadowsocks/tcprelay.pyt_on_local_readXsB

  

 
 c Cs7|i<00>d}y|iit<00>}WnHttfj
o6}ti|<00>t i
t i t i fjodSnX|p|i <00>dS|iit|<00>7_|io|ii|<00>}n|ii|<00>}y|i||i<00>WnHtj
o<}ti|<00>|idoti<00>n|i <00>nXdS(NRH(R(RR R<>R<>RKRLR$RMRNR<>RORQRURtserver_transfer_dlRIR RR<>RR^RRtR:RRR
RSRT(R)RWR\((s%/home/wwwroot/shadowsocks/tcprelay.pyt_on_remote_read|s,
 


 cCsP|io2di|i<00>}g|_|i||i<00>n|itt<00>dS(NR`(RRbR^RRGR=R(R)RW((s%/home/wwwroot/shadowsocks/tcprelay.pyt_on_local_write<74>s

 cCsYt|_|io2di|i<00>}g|_|i||i<00>n|itt<00>dS(NR`( RfRRRbR^R RGR?R(R)RW((s%/home/wwwroot/shadowsocks/tcprelay.pyt_on_remote_write<74>s  
 cCsBtid<00>|iotiti|i<00><00>n|i<00>dS(Nsgot local error(R:R;RRRR$tget_sock_errorRU(R)((s%/home/wwwroot/shadowsocks/tcprelay.pyt_on_local_error<6F>s 
cCsBtid<00>|iotiti|i<00><00>n|i<00>dS(Nsgot remote error(R:R;R RRR$R<>RU(R)((s%/home/wwwroot/shadowsocks/tcprelay.pyt_on_remote_error<6F>s 
cCse|itjotid<00>dS||ijo<>|ti@o#|i<00>|itjodSn|titi B@o#|i
<00>|itjodSn|ti @o|i <00>qan<>||i jo<>|ti@o#|i<00>|itjodSn|titi B@o#|i<00>|itjodSn|ti @o|i<00>qantid<00>dS(Nsignore handle_event: destroyedsunknown socket(RtSTAGE_DESTROYEDR:R;R R$R&R<>R%tPOLL_HUPR<50>RAR<>RR<>R<>R<>twarn(R)RXRF((s%/home/wwwroot/shadowsocks/tcprelay.pyt handle_event<6E>s4 
 
 
 
 cCs|itjotid<00>dSt|_|io[yMtid<00>|ii|i<00>|i|ii<00>=|ii <00>d|_Wq<57>q<>Xn|i o[yMtid<00>|ii|i <00>|i|i i<00>=|i i <00>d|_ Wq<57>q<>Xn|i i |i<00>|ii|<00>dS(Nsalready destroyedsdestroying remotesdestroying local(RR<>R:R;R RtremoveRRtcloseRRR tremove_callbackRxRtremove_handler(R)((s%/home/wwwroot/shadowsocks/tcprelay.pyRU<00>s0  
   
   (t__name__t
__module__R1R3tpropertyR4RR(RGR^RiR<>RaRxR<>R<>R<>R<>R<>R<>R<>RU(((s%/home/wwwroot/shadowsocks/tcprelay.pyRQs&     ' $ 9 * $     tTCPRelaycBsYeZd<00>Zd<00>Zd<00>Zd<00>Zd<00>Zd<00>Zd<00>Zd<00>Z d<00>Z
RS( c Cs<>||_||_||_t|_d|_h|_ti<00>|_ d|_
d|_ |d|_ g|_ d|_h|_|o|d}|d}n|d}|d}ti||dtiti<00>}t|<00>djotd||f<16><00>n|d\}}} }
} ti||| <00>} | ititid <00>| i| <00>| it<00>|d
oQy| itid d <00>Wq<57>tij
o!tid <00>t|id
<q<>Xn| id<00>| |_dS(Nlttimeoutit local_addresst
local_portR*R5scan't get addrinfo for %s:%diR_iis#warning: fast open is not availablei(R
R R Rt_closedRt
_eventloopRttimet
_last_timeR<65>R<>t_timeoutt _timeoutst_timeout_offsett_handler_to_timeoutsR R<>R<>R!RIRtRt
SOL_SOCKETt SO_REUSEADDRtbindRRRR:tlistent_server_socket( R)R.R/R0t listen_addrt listen_portR<74>R<>R<>R<>R<>R<>t server_socket((s%/home/wwwroot/shadowsocks/tcprelay.pyR1<00>sH            


     cCsq|iotd<00><00>n|iotd<00><00>n||_|i|i<00>|ii|ititi B<>dS(Nsalready add to loopsalready closed(
R<>RtR<>t add_handlert_handle_eventsR#R<>R$R%R&(R)R,((s%/home/wwwroot/shadowsocks/tcprelay.pyt add_to_loops

 cCs*|ii|i<00>|ii|i<00>dS(N(R<>R<>R<>R<>R<>(R)((s%/home/wwwroot/shadowsocks/tcprelay.pytremove_to_loop#scCs_|i<00>xD|ii<00>D]3}y|i|i<00>Wqtj
o }qXqW|i<00>dS(N(R<>RtkeysRURtR<>(R)tfdR\((s%/home/wwwroot/shadowsocks/tcprelay.pyRU's
 cCsM|iit|<00>d<00>}|djo!d|i|<|it|<00>=ndS(Ni<4E><69><EFBFBD><EFBFBD>i(R<>tgetthashRR<>(R)thandlertindex((s%/home/wwwroot/shadowsocks/tcprelay.pyR<79>2s  cCs<>tti<00><00>}||itjodS||_|iit|<00>d<00>}|djod|i|<nt |i<00>}|ii
|<00>||it|<00><dS(s set handler to active Ni<4E><69><EFBFBD><EFBFBD>i( tintR<74>R'tTIMEOUT_PRECISIONR<4E>R<>R<>RR<>RIRV(R)R<>tnowR<77>tlength((s%/home/wwwroot/shadowsocks/tcprelay.pyR<9s  cCsT|ioFtitid<00>ti<00>}t|i<00>}|i}x<>||jo<>|i|}|op||i|i joPq<50>|i
oti d|i
<16>nti d<00>|i <00>d|i|<|d7}qD|d7}qDW|tjoR||d?joA|i||_x$|iD]}|i|c|8<qWd}n||_ndS(Nssweeping timeoutsstimed out: %s:%ds timed outii(R<>R:tlogtutilst VERBOSE_LEVELR<4C>RIR<>R'R<>R4R<>RURtTIMEOUTS_CLEAN_SIZER<45>(R)R<>R<>tposR<73>tkey((s%/home/wwwroot/shadowsocks/tcprelay.pyt_sweep_timeoutHs4
    
  
 

c
Cs<>x<>|D]<5D>\}}}|o,titid|tii||<00><00>n||ijo<>|ti@ot d<00><00>nyOti
d<00>|ii <00>}t ||i |i|d|i|i|i<00>Wq<57>ttfj
og}ti|<00>}|tititifjoqqBti|<00>|idoti<00>qBq<>Xq|o4|i i|d<00>}|o|i||<00>q<>qtid<00>qWti<00>} | |i t!jo|i"<00>| |_ ndS(Nsfd %d %ssserver_socket errortacceptiRHspoll removed fd(#R:R<>R<>R<>R$t EVENT_NAMESR<53>R<>R&RtR;R<>RRR<>R
R R RKRLRMRNRORPRQRRRSRTRR<>R<>R<>R<>R<>R<>(
R)teventsRXR<>RFtconnR\R]R<>R<>((s%/home/wwwroot/shadowsocks/tcprelay.pyR<79>js>    
cCst|_|ii<00>dS(N(R>R<>R<>R<>(R)((s%/home/wwwroot/shadowsocks/tcprelay.pyR<79><00>s ( R<>R<>R1R<>R<>RUR<>R<R<>R<>R<>(((s%/home/wwwroot/shadowsocks/tcprelay.pyR<79><00>s +    " %(#R<>R RNRpR:RSR8RR$R<>tcommonRR<>R<>RdRstCMD_BINDRkR R<>RrRvR<>RfR<>R?R=RRR@ReR<>tobjectRR<>(((s%/home/wwwroot/shadowsocks/tcprelay.pyt<module>sB          

<16><00>