|dDaLddlmZmZddlZddlZddlZ ddlZddlZej Z nY#e $rQZ ej dej de zejdYdZ [ ndZ [ wwxYwdZdZdZGd d ZGd d ZddZdS))print_functiondivisionNz1AgentX: can't find Python AgentX Packet library. z%s <cdttur|St|SN)strbytesnext) generators ,/usr/lib/python3/dist-packages/ntp/agentx.pygen_nextrs' e||~~IcZeZdZ ddZdZdZdZdZdd Zdd Z dd Z dd Z ddZ dS) MIBControlNrci|_|||_d|_g|_g|_g|_||_||_||_||_dSNF) oidTreeinSetP setVarbinds setHandlers setUndoDatamibRoot rangeSubid upperBoundcontext)selfrrrr mibContexts r__init__zMIBControl.__init__ sU  "DL  $$! rc|jSr )rrs r mib_rootOIDzMIBControl.mib_rootOID/ |rc|jSr )rr#s rmib_rangeSubidzMIBControl.mib_rangeSubid2 rc|jSr )rr#s rmib_upperBoundzMIBControl.mib_upperBound5r(rc|jSr )rr#s r mib_contextzMIBControl.mib_context8r%rct|tjrt|j}|j}|} t j|d\}}|d}|| vr dddd||<|s%|||d<|||d<| |||d<dS||d i||d<||d})NTrr)readerwritersubidsr.r/r0) isinstanceaxOIDtupler0rntputil slicedatakeys)roidr.r/dynamic currentLevel remainingOIDnodes raddNodezMIBControl.addNode;s c26 " " $ ##C|   !IoFF"jI,<Z8>#888~-! S&&$9::: 8>))#<..00"SHL5H5H! KKff 5666 *!     ' ,  K  &.smm#VV>!,,..73(,3F3FKKff 56666       s@B;9B;00B;!B;; C  C D(*$D(D(( D54D5)NrrNNr@F) __name__ __module__ __qualname__r!r$r'r*r,r>rHrLrNrXrrrrrsJN  " " " "<<<<0,,,,2CCCCBBBB))))))rrceZdZdeddfdZdZdZdZdd Zd Z d Z edfd Z d Z ddZ dZdZdZdZdZdZdZdZdZdZdS) PacketControlgMbP?Ni'cfd|_||_||_i|_d|_||_d|_g|_||_d|_ d|_ d|_ d|_ tj|jtj|jtj|jtj|jtj|jtj|jtj|jtj|ji|_dS)NcHtj||Sr )r5r6dolog)txtdbgdebuglogfps rz(PacketControl.__init__..sSX^^E3s%K%KrrrF)logsocketspinGap packetLog loopCallbackdatabase receivedDatareceivedPacketstimeout sessionIDhighestTransactionID lastReceptionstillConnectedr2PDU_GET handle_GetPDU PDU_GET_NEXThandle_GetNextPDU PDU_GET_BULKhandle_GetBulkPDU PDU_TEST_SEThandle_TestSetPDUPDU_COMMIT_SEThandle_CommitSetPDU PDU_UNDO_SEThandle_UndoSetPDUPDU_CLEANUP_SEThandle_CleanupSetPDU PDU_RESPONSEhandle_ResponsePDU pduHandlers)rsockdbaserirorerds ``rr!zPacketControl.__init__sKKKKK    ! $%!!#J(:OT-COT-COT-C-t/GOT-C.0IOT-DFrc|jdurdS|rX|jrP||j||tj|j|jPn||jS)NTF)rs_dolooprktimesleepri)r runforevers rmainloopzPacketControl.mainloops  d * *5  % ) $0%%d+++ 4<((( % ) LLNNN""rc ||jr|jd}|j|jkri|d|zdt d|j|j|jdt j d}| |d|j }||j vr|j ||n|d|zd|j| |j11CfL~~dF,<&,&:FO&');Q@@e,,,NE(((' '////CeK" "    ))++Kd00H<<  * )<>$1dlA"&-";";"="="&-">">"@"@"&-">">"@"@"&-";";"="= ?? %((( X&&&"rFcx ||jr|jd}|jtjkr7|j|jko|j|jk}|s|o|j|jk}|r| dd|S|jtj |j )zBWait for a response to a specific packet, dropping everything elseTrzReceived waited for response) rrnr __class__r2rrrrprgrrri)ropkt ignoreSIDrhaveits rrzPacketControl.waitForResponses %      & "-11!44#r~55,0DD<-6?: M#L6;K)KF"HH;Q???!M& " Jt| $ $ $ %rctj}t|jD]/}|j|\}}}||kr| |d||j|=0dS)z0Check for expected responses that have timed outN)rlistrjr8)rrkey expiration originalPktcallbacks rrzPacketControl.checkResponses s}ikk ++--.. ( (C04s0C -J XZ'''HT;///N3'  ( (rc| t|j}|dkrdS t|j\}}}|sdS||_|j||j|jkr |j|_| dt|zdn#tj tj tj f$rW}|jdtjkr&||jtjd|j|_Yd}~nd}~wwxYw*)zDSlurps data from the input buffer and tries to parse packets from itTNzReceived a full packet: %srtyper) pollSocketlenrmr2 decode_packetrnrRrrqrgreprParseVersionErrorParsePDUTypeError ParseErrorheaderrsendErrorResponseRSPERR_PARSE_ERROR remainingData)rdatalenpktfullPkt extraDataes rrzPacketControl.packetEatersF  4$+,,G||t 4*,*:*:4;L*M*M'Wi 4$-!$++C000$t'@@@030AD-5S A1EEEE("*>M# 4 4 48F#r66**18R5JANNN%&O!!!!!! 4 4s%B>A#B>>&D;$A D66D;c|}|d|dt|d|j||r#|j|j|jf}|||f|j|<dSdS)NzSending packet (with reply: z): r) encodergrrhsendallrprrrj)rr expectsReply replyTimeoutrencodedindexs rrzPacketControl.sendPacket.s--// ,,,:>v,,,HIJ L L L G$$$  E%)_&E&268$DDN5 ! ! !  E Ercjdz}|_tdj|d}fd}|d|dS)NTrc| d_dSdSr)rs)rorigrs rrz(PacketControl.sendPing..callbackAs|&+###|rr)rqr2PingPDUrpr)rtidrrs` rrzPacketControl.sendPing:sl'!+$'!jjt~sA66 , , , , , TH55555rcjdz}|_tdj|d||}fd|ddS)NrTrc@||ddSdS)NTr)r)rr resendNotifyrs rrz.PacketControl.sendNotify..resendNotifyNs-{d\BBBBB{r)rqr2 NotifyPDUrpr)rvarbindsrrrrs` @r sendNotifyzPacketControl.sendNotifyGsz'!+$'!ll4a7KK C C C C C C T<00000rc t|dd|d|d|dd||}||ddS)Nflags bigEndian session_idtransaction_id packet_idrF)r2rr)r errorHeader errorType errorIndexerrs rrzPacketControl.sendErrorResponseSs]nn[1+>(6()9:(5 : 77 U#####rcBd} tj|jgggdd}|sne|d}|d}|rD|dt |zd||z }t j|_nn|xj|z c_dS)z@Reads all currently available data from the socket, non-blockingrTrizReceived data: %srN)selectrhrecvrgrrrrrm)rdatatmpnewdatas rrzPacketControl.pollSocket[s - r2q99! RZZ(?HHIIIIs =LLBM6!B!BCCCCLL''''~~dDNF4H$oq".!ULL e$$$$$rc g}|jD]} |j|d}|s>|ttj|jnQ|d\}}}||}|"t||j d}|| t d|j |j |j dtjd|} || ddSr)rrlrXrRr2rVALUE_END_OF_MIB_VIEWrP SearchRangerSrrprrrr) rrrrrWr9r.rrrs rrwzPacketControl.handle_GetNextPDUs $  D }33D$??LLB,D,0J"8"8999%)!WNC"F3KKE} "~~c48UCC  U+++~~dDNF4H$oq".!ULL e$$$$$rc 4g}|jd|j}|j|jd}|D]}|j|d}|s>|t t j|j]|d\}}} ||||D]}|j|}|s>|t t j|j\|d|j D]$\}}} |||%t d|j |j |j dt jd|} || ddSr)rnonRepsrlrXrRr2rrrPmaxRepsrrprrrr) rrrnonrepsrepeatsrrWr9r.rrs rryzPacketControl.handle_GetBulkPDUs"?FN?3"6>??3 * *D=//d;;D * RZZ(@$*MMNNNN!%aVQ VVC[[)))) . .D=//55D . RZZ(@$*MMNNNN&*?FN?&;..NCLL----.~~dDNF4H$oq".!ULL e$$$$$rc X|jjr d|j_g|j_g|j_g|j_d}t t |jD]}|j|}|j|j \}}}|tj }n|tj }n||}|d|}|tj krn^|jj||jj||jj||tj krtd|j|j|jd||} || dt |D].} |jj| d|jj| /d|j_dStd|j|j|jdtj d} || ddS)NTtestrFclear)rlrrrrrangerrrLr9r2 ERR_NO_ACCESSERR_NOT_WRITABLErrRrrprrr) rrerror bindIndexvarbindr9r.r/undoDataris rr{zPacketControl.handle_TestSetPDUs" =   # $& !$& !$& !s6?3344 7 7Ioi0G"&-"6"6w{"C"C C{(+vc{{HF67++E&& M % , ,W 5 5 5 M % , ,V 4 4 4 M % , ,X 6 6 6 6 BN " ">>$8L"(/1eYHHD OOD% ( ( (9%% K K, )!,W-1]-Fq-IKKKK#(DM >>$8L"(/1bnaIID OOD% ( ( ( ( (rc |jjs |jj}|jj}t t |D],}||d||}|t jkrn-|t jkr0t d|j |j |j d||}n9t d|j |j |j dt jd}| |ddS)NcommitTrF) rlrrrrrr2rrrprrr)rrrhandlersr rrs rr}z!PacketControl.handle_CommitSetPDUs}#  =,=,s8}}%%  AHQK(1+66E&&' BN " ">>$8L"(/1eQ@@DD>>$8L"(/1bnaIID e$$$$$rc  |jj}|jj}|jj}t t |D]3}||d||||}|t jkrn4|t jkr0t d|j |j |j d||}n9t d|j |j |j dt jd}| |ddS)NundoTrF) rlrrrrrr2rrrprrr)rrrr rr rrs rrzPacketControl.handle_UndoSetPDUs=,=,=,s8}}%%  AHQK Xa[AAE&&' BN " ">>$8L"(/1eQ@@DD>>$8L"(/1bnaIID e$$$$$rc|jj}|jj}tt |D]}||d||d|j_dS)NcleanF)rlrrrrr)rrrr r s rrz"PacketControl.handle_CleanupSetPDUs`=,=,s8}}%% . .A HQK! - - - -$ rc|j|j|jf}||jvr+|j|\}}}|j|=||||dSdSdSr )rprrrj)rrrrorrs rrz PacketControl.handle_ResponsePDUsm!6#7I DN " "-1^E-B *G[(u%#-----$# DrrYr )rZr[r\defaultTimeoutr!rrrrrrrrrrrrurwryr{r}rrrrrrr^r^sp,1>5FFFF: # # #   6###$%%%%"(((4446=K  E E E E 6 6 6 1 1 1 1$$$"""*%%%0%%%2%%%0,),),)\%%%"%%% %%%     rr^rc#Kg}g}|}t|}|d} |t|kr7|r3|\}}}}||dz }IdS||}t |t|z|fz}|||d||dfV||d} | | ||||f| |t| tr| }nD| }|ikr4|\}}}}||dz }at|}|d}||}|dz })NrTrr.r/r0) rr8sortrrr2r3r4getrRr1dict) treerootpath nodeStackoidStackcurrent currentKeyskeyIDrr9subss rrArAs IHGw||~~&&K E  C $$ $ $ 3<==??0eS  % ffXh/3&899GCL$$X.. 0@0@0J0JKKKKs|))     g{E3? @ @ @ OOC $%% $&&b==7@}}4G[%LLNNNQJEw||~~..K      Ee$C   A r)r) __future__rrrrsysntp.utilr5ntp.agentx_packet agentx_packetr2 ImportErrorrstderrwriteexitrrrrr^rArrrr(sh0/////// OOO BBJ<>>>JVaZ    CHQKKKKKKKK  ~~~~~~~~Byyyyyyyyx ++++++s&A<AA77A<