|dbdZddlmZddlZddlZddlZddlZddlZddlZddl Z dZ dZ dZ dZe ZejedZejed jZejed jZejed jZd Zd ZdZdZdZdZdZdZejZ de _!ejejge _"ej#Z$de$_!ejge$_"ej%Z&eje&_!ejge&_"ej'Z(ej)e(_!ejge(_"ejZ*eje*_!ejejge*_"ej+Z,ej-e,_!ej)ge,_"ej.Z/ej-e/_!ej)ge/_"dS)z#Access libntp funtions from Python.)absolute_importNntpcctjdrdStjdrdStjdrdSdS)zProduce library naming scheme.darwinz lib%s.dylibwin32z%s.dllcygwinz lib%s.dllzlib%s.so)sysplatform startswith*/usr/lib/python3/dist-packages/ntp/ntpc.py_fmtrs^ |x((} |w''x |x(({ :r cg}ttjdd}|tj|t tzgztj t}|r|||dt tzzt|S)z1Load the ntpc library or throw an OSError trying.Nz/usr/lib/x86_64-linux-gnu/ntp/) __file__splitossepappendjoinrLIBctypesutil find_library_dlo) ntpc_pathsj ntpc_paths r _importador sJrvss#Abfkk!tvv|n"455666 ((--I%)$$$6$&&3,GHHH   r cn|D]} tj|d}d}tjtj|dj}||kr&tj d|d|d|cS#t$rYwxYwtdtz) z Try opening library from a list.T) use_errnoz1.2.2versionzntp.ntpc wrong version 'z' != 'z' zCan't find %s library) rCDLLntppolypolystrc_char_pin_dllvaluer stderrwriteOSErrorr)pathsrlib wrap_version clib_versions rrr+s    +i4888C"L8++FO,B,B3 ,R,R,XYYL|++    LLLZfZfZf!ghhhJJJ    D  )C/ 0 00sBB BBprognameSYS_TYPE PEER_TYPE CLOCK_TYPEctjtj_t j|}tjgtj_ t|S)z(Check if name is a valid algorithm name.) rc_int_ntpc do_checknamerestyper%r& polybytesr(argtypes)name mid_bytess r checknamer?FsH!'E""4((I#)?"3E   i ( ((r c `tj}tjdz}d|_dtj_ttj |tj |t|tj |t|tj |tj |tj t|d|jS)z8Compute HMAC or CMAC from data, key, and algorithm name.@s@N) rc_size_tc_ubyter*r8do_macr:r%r&r;lenbyref bytearray)datakeyr= resultlenresults rmacrLNs!!Inr! $ $FFLEL LL##D))##D))3t99##C((#c((f%%v|I'>'>@@@ 8  i//0@0@A B BBr cbtj|}t|dS)z&Set program name for logging purposes.N)r%r&r; _setprogname) in_stringr>s r setprognamerP[s+""9--Ir ctj|}||}tj}|t jkrtd|S)z&NTP l_fp to other Python-style format.zill-formed hex date)r%r&r;r get_errnoerrnoEINVAL ValueError)callbackrOr> out_valueerrs r _lfp_wraprYasV""9--I##I    C el./// r c`t||}tj|Sz+Convert a time stamp to something readable.) _statustoar%r&r')i_typei_stmid_strs r statustoar`ks'&&G 8  G $ $$r cjtt|}tj|Sr[)rY _prettydater%r&r')rOr_s r prettydatercqs' Y//G 8  G $ $$r c,tt|S)z$NTP l_fp to Python-style float time.)rY _lfptofloat)rOs r lfptofloatrfws [) , ,,r cdtj|}t||dS)z)Log send a message to terminal or output.N)r%r&r;_msyslog)levelrOr>s rmsyslogrj|s-""9--I UIr )0__doc__ __future__rr ctypes.utilrSros.pathr ntp.polyr%rrr rr8r(r)r2r7r*TYPE_SYS TYPE_PEER TYPE_CLOCKr?rLrPrYr`rcrfrjrhr:r<ntpc_setprognamerNntpc_prettydaterbntpc_lfptofloatrec_doubler\ntpc_adj_systime adj_systimec_boolntpc_step_systime step_systimer r rr|sk*)&&&&&&        1 1 1   ? ! !% 4 4 <  uj 1 1 7 L  { 3 3 9 \  5 5 ; ))) C C C %%% %%% ---  =\6?3%  ) # o ( # o ( _ _ |V\2 $ m ( & } ) r