5&˷.ddlZddlZddlZddlZddlZddlZddlmZddlm Z ddl m Z ddl m Z ddlmZddlmZddlmZmZdd lmZdd lmZmZdd lmZdd lmZdd lmZm Z e e!Z"dZ#dZ$ dZ%Gdde&Z'GddeZ(dS)N) dataclass) getLogger)Path)Callable)urljoin)Request)APIAPIError) LicenseCLN)atomic_rewritesafe_cancel_task)DAY)g)DeadlockDetectingLock DeadlockError <ceZdZdZdS)IAIDTokenErrorz$Can't get iaid token for any reason.N)__name__ __module__ __qualname____doc__S/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/internals/iaid.pyrr&s....rrceZdZdZeejedZeejedZ eejedZ eejedZ e dZ e dz Ze dz Ze d z Ze d z Zgggd ZeZejZed GddZedddefdZedddefdZedZedZ edZ!edZ"ed)dZ#edZ$edZ%edefdZ&ed Z'ed*d#Z(ed$Z)ed%Z*ed+d&Z+ed'Z,ed+d(Z-dS),IndependentAgentIDAPIz/api/auth/agent/{}registeractivateloginz token-infoz/var/imunify360iaidz iaid-passwordz iaid-tokenziaid-activated)r r!r"T)frozencJeZdZUgdZeed<eed<eed<eed<eed<dS)IndependentAgentIDAPI.TokenInfo)validr#license_status server_id need_renewr'r#r(r)r*N)rrr __slots__bool__annotations__strrrr TokenInfor&>sX     rr/r)timeoutcorocKtj|tjd|ztzzd{V||d{VdS)N)asynciosleeprandom randrange_TIMEOUT_MULTIPLICATOR)r1attemptr0argss r_retry_on_errorz%IndependentAgentIDAPI._retry_on_errorMs}m f&qG|447MM M         dDkrc fd|j|D|j|<t|j|dkrXtj}|j|||j|g|R||ddStd|dS)Nc:g|]}||Sr)done).0tasks r z3IndependentAgentIDAPI._add_task..Ws5   TYY[[    rr3r9r0zTask %s already in retry queue) _taskslenr4get_event_loopappend create_taskr;loggerinfo)clstyper1r9r0r:loops r _add_taskzIndependentAgentIDAPI._add_taskUs   Z-    4 sz$ A % %)++D Jt  # #  'C'#-4g      KK8$ ? ? ? ? ?rc@|d|jddS)Nr!rr9)rMr!rJs radd_initial_taskz&IndependentAgentIDAPI.add_initial_taskfs" j#, :::::rcK|jD]N\}}|D]F}|s0t|d{Vtd|GOdS)NzRetry task %s was canceled.)rCitemsr>r rHrI)rJrKtasksr@s rshutdownzIndependentAgentIDAPI.shutdownjs:++-- E EKD% E Eyy{{E*4000000000KK =tDDD E E Erc4tjdjS)N_imunify)grpgetgrnamgr_gidrrr_gidzIndependentAgentIDAPI._gidrs|J''..rcj|jr|jSdSN) IAID_FILEexists read_textrPs rget_iaidzIndependentAgentIDAPI.get_iaidvs1 =   ! ! -=**,, ,trNPOSTc ddi}|||t||||r&tj|ndS)Nz Content-Typezapplication/json)methodheadersdata)updaterjsondumpsencode)urlrerdkwargs_headerss r_requestzIndependentAgentIDAPI._request|sh"$67   OOG $ $ $ 06@F##**,,,D     rcLtd|j|jfDS)Nc3>K|]}|VdSr])r_)r? iaid_files r z6IndependentAgentIDAPI.is_registered..sB             r)allr^IAID_PASSWORD_FILErPs r is_registeredz#IndependentAgentIDAPI.is_registereds:  !mS-CD      rcKtrGtd{Vtrtd |jd}|std|S#t$r}td||d}~wwxYw)zWEnsure that iaid token is up to date Return iaid token or raise IAIDTokenError.NzIAID token is expiredascii)encodingzIAID_TOKEN_FILE is emptyzCan't get iaid token, reason: )ris_token_expiredr"rIAID_TOKEN_FILEr`strip Exception)rJtokenes r get_tokenzIndependentAgentIDAPI.get_tokens ! 1 1 3 3 >'--// / / / / / / /$5577 >$%<=== N'1171CCIIKKE A$%?@@@L N N N !E!!E!EFFA M Ns$?B$$ C.CCreturnclK|d{V}d|i}||j|d}||d{V}|d}|t d| |jdi|S#t$r}t d|d||d}~wwxYw) NzX-AuthGET)rerd token_infozwrong response %rzincomplete token_info z: r)rrn TOKEN_INFO async_requestgetr r/ TypeError)rJ iaid_tokenrerequestresultr}r~s r_get_token_infoz%IndependentAgentIDAPI._get_token_infos==??****** Z(,,s~wu,MM((11111111 <(( =.77 7 O 3=))5)) ) O O O(UUUAAFGGQ N Os B B3B..B3c tj|j}|j}n#t$rd}YnwxYwt j|z t kS)Ng)osstatrzst_mtimeFileNotFoundErrortimer)rJrrs rryz&IndependentAgentIDAPI.is_token_expiredsb %73.//D}HH!   HHH y{{X%++s # 22Fr3c `K|j} |j4d{V|rF|r|r dddd{VdS|,||kr dddd{VdSt }t j}|r||d<|j|jfi|} | |d{V}|j dtt|j|d|jd|dtt|j|d|jd |d{Vn#t&$r} t(d | || j| jd ks | jd kr/|t.kr$|d|j|||dz|n"t(d|j|| Yd} ~ dddd{VdSd} ~ wwxYw dddd{VdS#1d{VswxYwYdS#t8$rt(d|YdSwxYw)Nr)T missing_okr#backupuidgid permissionspasswordi)rrz0Something went wrong on register %r - attempt %sr r3rOz-Failed to register (%s) after %s attempts: %rz>$)  ,,..((((((((W NNJ  -=C//=C//!J.. &L!0#aK$+ & K#,#  FFFgC )C )C )C )C )C )C )C )C )C )C )C )C )C )0V)GC )C )C )C )C )C )C )C )C )C )C )C )C )C )C )C )C )C )C )C )C )C )C )C )C )C )C )C )C )C )H    LLN       s~ JI1JI12J;I16F*7B3I1* I4B I>I1JII1J1 I;;J>I;?J%J-,J-cPK|js|d{VdStj}|d{V}|j|dks|j|dkr7t d|| d{VdS|j }|jr|j|ks|jr|d{VdSdS)z!Check whether the agent activatedNstatusidzGot a corrupted token: %r)rr_r!r rrr(rr)rHr reactivater^r`r'r#r*r")rJlicr}r#s rensure_is_activated_and_validz3IndependentAgentIDAPI.ensure_is_activated_and_valid sJ&--// ,,.. F"$$))++++++++  377 $ $   _ - - LL4e < < <.."" " " " " " " " F}&&(({ ejD00E4D0))++         10rc>|jjSr])rtrrrPs rrz)IndependentAgentIDAPI._get_credentials_tss%**,,55rc K|jr|td<dS|s6t d|d{VdStj rL|td<| r| d{VdStj }|st ddS|j 4d{V|jr0|td< dddd{VdS|j}|j}|}||j|||}|td<d} ||d{V|j|jd| d{Vn#t0$r}t d|||jr|jd krd}nr|jrI|jd ks |jd kr3|t4kr(|d |j|d z|t:n"t d|j||Yd}~nd}~wwxYwdddd{Vn#1d{VswxYwY|r|d|d{VdSdS)Nr#z&need to register first before activatez9Can't continue iaid activation: no valid license is found)r#rlicenseFTrz.Something went wrong on activate %r attempt %srrr!r3rBz-Failed to activate (%s) after %s attempts: %rrr) rr_rarrurHrr r is_freeryr"r_activate_lockr^r`rtrrn ACTIVATE_URLrtouchrzrr rrrMr!_ACTIVATE_MINIMUM_TIMEOUTrr) rJr9rr#rcredentials_tsrneed_to_registerr~s rr!zIndependentAgentIDAPI.activate!sc  " ) ) + +  AfI F  ""  NNC D D D,,.. F      AfI##%% "iikk!!!!!!! F"$$  NNK    F%2 "2 "2 "2 "2 "2 "2 "2 "&--// LLNN&  2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 " =**,,D-7799H 4466Nll th#GAfI$ $ "''000000000'--///B#**d*;;;iikk!!!!!!!!C   D =Q]c%9%9'+$$M#--#1E1E*,, MM" ! ' 9 "LLG( 3 #2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "2 "f  P,,T,OO O O O O O O O O O P PsD!7L+A0L4I6L K=B#K83L8K==L LLctK|jd|d{VdS)NTr)rrr!rPs rrz IndependentAgentIDAPI.reactivateksF &&$&777llnnrcK|stddS|j}|j}|}||j||} | |d{V}tt|j |d|j d|ddS#t$r}td|||t"kr]|j |jdkr"|d |j|d z| nW|jd kr|d |d{Vn(td|j||Yd}~dSYd}~dSYd}~dSd}~wwxYw)Nz#need to register first before login)r#rr}rrrz/Something wrong happened on login %r attempt %srr"r3rOrTrz*Failed to login (%s) after %s attempts: %r)rurHrr^r`rtrrn LOGIN_URLrr r.rzr_r[r rrrrMr"r r)rJr9r#rrrrr~s rr"zIndependentAgentIDAPI.loginpsS  ""  LL> ? ? ? F}&&(()33550022,,s}4(,KK ,,W55555555F. C'((w*1133HHJJ!       -    NNA1g   ##=(AMS,@,@MMGaK"]c)),,"' @$  sD GB&G  G)Nrb)FNr3)r3).rrrAPI_PATHrr _BASE_URLformatrrrrrIAID_DIRr^rtrzrrCrrr4Lockrrr/ staticmethodrr; classmethodrMrQrUr[rarnrurrryr rrr!rr"rrrrr*s#H73=(//**E*EFFL73=(//**E*EFFL xw'?'?@@I (E(EFFJt%&&H6!I!O3-O"%55F +*,,N!W\^^NYd        FGH\EF@@@8@@@[@ ;;[;EE[E//\/[     \    [  N N[ N Oi O O O[ O,,[,PPP[Pd[$66[6GPGPGP[GPR[((([(((rr))r4rXrhrr6r dataclassesrloggingrpathlibrtypingr urllib.parserurllib.requestrdefence360agent.api.serverr r !defence360agent.contracts.licenser defence360agent.utilsr r defence360agent.utils.commonr&defence360agent.internals.global_scoper1defence360agent.internals.deadlock_detecting_lockrrrrHrr8r RuntimeErrorrrrrrrs !!!!!! """"""44444444888888BBBBBBBB,,,,,,444444 8    /////\///oooooCooooor