Viewing File: /usr/lib/python2.7/site-packages/isc/rndc.pyo

ó
#u|jc@s~ddlmZddlZddlZddlZddlZddlZddlZddlZde	fd„ƒYZ
dS(iÿÿÿÿ(tOrderedDictNtrndccBs’eZdZidd6dd6dd6dd6d	d
6dd6Zd
„Zd„Zed„Zd„Zd„Z	d„Z
d„Zd„Zd„Z
RS(sRNDC protocol client libraryitmd5i¡tsha1i¢tsha224i£tsha256i¤tsha384i¥tsha512cCsŠ||_|jƒ}|jdƒr1|d}n||_tt|ƒ|_tj|ƒ|_	t
jddƒ|_d|_|jƒdS(sþCreates a persistent connection to RNDC and logs in
        host - (ip, port) tuple
        algo - HMAC algorithm: one of md5, sha1, sha224, sha256, sha384, sha512
               (with optional prefix 'hmac-')
        secret - HMAC secret, base64 encodedshmac-iiiiNi(thosttlowert
startswithtalgotgetattrthashlibthlalgotbase64t	b64decodetsecrettrandomtrandinttsertNonetnoncet_rndc__connect_login(tselfRRR((s,/usr/lib/python2.7/site-packages/isc/rndc.pyt__init__$s	
		cCst|jd|ƒdƒS(s’Call a RNDC command, all parsing is done on the server side
        cmd - a complete string with a command (eg 'reload zone example.com')
        ttypet_data(tdictt_rndc__command(Rtcmd((s,/usr/lib/python2.7/site-packages/isc/rndc.pytcall5scCsytƒ}xi|jƒD][\}}|r:|dkr:qn|tjdt|ƒƒ|jdƒ7}t|ƒtkr¤|tjddt|ƒƒ|jdƒ7}qt|ƒtkrÜ|tjddt|ƒƒ|7}qt|ƒtkr|tjddt|ƒƒ|7}qt|ƒt	kr[|j
|ƒ}|tjddt|ƒƒ|7}qtdt|ƒƒ‚qW|S(Nt_authtBtasciis>BIiis#Cannot serialize element of type %s(t	bytearraytitemststructtpacktlentencodeRtstrtbytesRt_rndc__serialize_dicttNotImplementedError(Rtdatatignore_authtrvtktvtsd((s,/usr/lib/python2.7/site-packages/isc/rndc.pyt__serialize_dict;s"	)/&&&c	Os—|jd7_ttjƒƒ}t||Ž}tƒ}tƒ|d<tƒ|d<t|jƒ|dd<t|ƒ|dd<t|dƒ|dd<|jdk	r¹|j|dd<n||d	<|j|d
tƒ}t	j
|j||jƒj
ƒ}tj|ƒ}|jdkr4tjd|ƒ|dd
<n-ttjd|j|j|ƒƒ|dd<|j|ƒ}tjdt|ƒddƒ|}|S(NiR t_ctrlt_sert_timi<t_expt_nonceRR.Rt22sthmd5tB88sthshas>IIi(RtintttimeRR)RRR+tTruethmactnewRRtdigestRt	b64encodeRR%R&R#t_rndc__algosR'(	RtargstkwargstnowR-tdtmsgthashtbhash((s,/usr/lib/python2.7/site-packages/isc/rndc.pyt__prep_messageOs,	


!!#cCsë|jdk	r*|dd|jkr*tS|jdkrJ|dd}n|ddd}t|ƒtkr€|jdƒ}n|d	d
t|ƒd
7}tj	|ƒ}|j
|dtƒ}tj
|j||jƒjƒ}||kS(NR4R8RR R:R<iR"t=iR.(RRtFalseRRR*tdecodeR'RRR+R?R@RARRRB(RRIRKtremote_hashtmy_msgtmy_hash((s,/usr/lib/python2.7/site-packages/isc/rndc.pyt__verify_msgjs&!c	OsD|j||Ž}|jj|ƒ}|t|ƒkrEtdƒ‚n|jjdƒ}t|ƒdkrxtdƒ‚ntjd|ƒ\}}|dkr¯td|ƒ‚n|d8}|jj|tj	ƒ}t|ƒ|kròtdƒ‚nt
|ƒtkrt|ƒ}n|j
|ƒ}|j|ƒs@td	ƒ‚n|S(
NsCannot send the messageisCan't read response headers>IIisWrong message version %disCan't read response datasAuthentication failure(t_rndc__prep_messagetsockettsendR'tIOErrortrecvR%tunpackR,tMSG_WAITALLRR)R#t_rndc__parse_messaget_rndc__verify_msg(	RRERFRItsenttheadertlengthtversionR-((s,/usr/lib/python2.7/site-packages/isc/rndc.pyt	__commandys(
cCsEtj|jƒ|_d|_|jddƒ}|dd|_dS(NRtnullR4R8(RUtcreate_connectionRRRR(RRI((s,/usr/lib/python2.7/site-packages/isc/rndc.pyt__connect_login–s	cCs,d}||}|d7}||||!jdƒ}||7}||}|d7}tjd|||d!ƒd}|d7}||||!}||7}||}|dkr»|||fS|dkrtƒ}	x8t|ƒdkr
|j|ƒ\}
}}||	|
<qÓW||	|fStd|ƒ‚dS(NiiR"s>IiisUnknown element type %d(ROR%RYRR't_rndc__parse_elementR,(RtinputtpostlabellentlabelRtdatalenR-trestRHtilabeltvalue((s,/usr/lib/python2.7/site-packages/isc/rndc.pyt__parse_elementœs*




!



	
cCsNtƒ}d}x8t|ƒdkrI|j|ƒ\}}}|||<qW|S(Ni(RRR'Re(RRfR/thdataRiRm((s,/usr/lib/python2.7/site-packages/isc/rndc.pyt__parse_message¶s	(t__name__t
__module__t__doc__RDRRRNR+RTR\RRReR[(((s,/usr/lib/python2.7/site-packages/isc/rndc.pyRs 

							(tcollectionsRR>R%R
R@RRRUtobjectR(((s,/usr/lib/python2.7/site-packages/isc/rndc.pyt<module>s
Back to Directory File Manager