qjddlZddlZddlZddlZddlZddlmZmZddl m Z ddl m Z ddl mZmZddlmZddlmZejeZed Zd Zd ZGd d e ZdS)N)datetime timedelta)API)ANTIVIRUS_MODE)IndependentAgentIDAPIIAIDTokenError)run_in_executor_decorator) parse_params )minutesno_agent_tokencP tj|}nK#tttjjf$r'}td|icYd}~Sd}~wwxYwt|tr|Stdt|j iS)Nz#Cannot decode API response body: %sz&API response body is %s, not an object) jsonload ValueErrorOSErrorhttpclient HTTPExceptionloggerwarning isinstancedicttype__name__)responsebodyes _/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/api/server/analyst_cleanup.py _json_objectr sy"" !: ;)H)J)J#J#J#J#J#J#JK-G--g66666666F#)CJx &.lnnCJ{ #M    55 s AC%% C32C3c ||}|ddS#t$r&}td|Yd}~dSd}~wwxYw)&Execute the actual request in executorr#Fz&Failed to check cleanup permission: %sNT)r1get Exceptionrerrorr8r1r#rs rr7z AnalystCleanupAPI._check_allowedQso [[))F::h.. .    LLA1 E E E 44444  s*- AAAidsreturncKt|tr dd|D}nt|}|j|j}d|i} tj t||dtj d{Vid}n0#t$r#}td |d}~wwxYw||d{VS) a Retrieve tickets from Zendesk API using the show_many endpoint Args: ids (list or str): List of ticket IDs or comma-separated string of IDs Returns: list: List of dictionaries with 'id', 'status', and 'updated_at' fields ,c34K|]}t|VdS)N)str).0_ids r z0AnalystCleanupAPI.get_tickets..ms(77Cs3xx777777r&rAr(Nr)r*z&Failed to get IAID token for tickets: )rlistjoinrFSHOW_MANY_URL_TEMPLATEr4r5r0r1r2r rr6rrr?_execute_get_tickets)r8rAids_strurlparamsr1rs r get_ticketszAnalystCleanupAPI.get_tickets`s, c4  hh77377777GG#hhG(//S]/CC! n,,VS))!)>)H)J)J#J#J#J#J#J#JK-GG     LLE!EE F F F  --g666666666s,A B66 C#CC#cg} ||}|dgD]T}||d|d|ddU||cS#t$r'}td|Yd}~nd}~wwxYw |S#|ccYSxYw)z2Execute the actual get_tickets request in executorticketsidstatus updated_at)rUrVrWzFailed to get tickets: N)r1r=appendr>rr?)r8r1simplified_ticketsr#ticketrs rrNz&AnalystCleanupAPI._execute_get_ticketss  &[[))F!**Y33  "))$jj.."(**X"6"6&,jj&>&>&& % % % 8 8 8 LL6166 7 7 7 7 7 7 7 7 8 7% %% % % % % % % % %s*BB B:B50C5B::CCcK tj|j|jt jd{Vddtj d|i d}| |d{V}|S#t$rtdicYSwxYw) z'Check if email is registered in Zendeskr&Napplication/jsonr(z Content-Typecustomer_emailPOSTr+datar,zGot IAIDTokenError)r0r1r2IS_REGISTERED_URL_TEMPLATEr4r5rr6rdumpsencode_register_statusrrr?)r8emailr1r#s rcheck_registeredz"AnalystCleanupAPI.check_registereds n,,.553=5II$9$C$E$EEEEEEE$6Z!15 9::AACC-G//88888888FM     LL- . . .III sBB""&C  C c ||}|S#t$r'}td|icYd}~Sd}~wwxYw)r<z&Failed to check email registration: %sN)r1r>rr?r@s rrez"AnalystCleanupAPI._register_statuss` [[))FM    LLA1 E E EIIIIII s A AA A c K tjd{V}n#t$rddtifcYSwxYwtj|j|j |ddtj |||trdndd d }||d{VS) zAsk the backend to open a support ticket. Return an (HTTP status, response body) pair; the status is None when the backend could not be reached at all. Nmessager&r\r] pr_imunify_avpr_im360)rfsubject descriptionproductr_r`)rr6rNO_AGENT_TOKENr0r1r2CREATE_TICKET_URL_TEMPLATEr4r5rrcrrd_send_create_ticket)r8rfrmrntokenr1s r create_ticketzAnalystCleanupAPI.create_tickets  5/9;;;;;;;;EE 5 5 5)^44 4 4 4 5.((  * 1 1s} 1 E E 2"&#.+9Iz   fhh!)  $,,W555555555s 66c tj||j5}|jt |fcdddS#1swxYwYdS#tjj$r)}|j|j t |nifcYd}~Sd}~wt$r)}t d|difcYd}~Sd}~wwxYw)r<)timeoutNz*Failed to reach create-ticket endpoint: %s) r0r1urlopen_SOCKET_TIMEOUTrVr r? HTTPErrorcodefpr>rr)r8r1rrs rrrz%AnalystCleanupAPI._send_create_tickets4 ''!4( ? X(>(>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|% G G G6ad.><???BF F F F F F F    NNG K K K8OOOOOO sQ&AA  A AAAAC,B C CC;CC)r __module__ __qualname__r3rMrbrqrminr. classmethodr:r r7rFrrRrNrgrertrrrJrr"r"'si8!K; < \F [.  [ 7SE7tf777[7@&&[&,[&[66[6>  [   rJr") http.clientrr urllib.errorr0urllib.requestloggingrrdefence360agent.api.serverr defence360agent.contracts.configrdefence360agent.internals.iaidrrdefence360agent.rpc_tools.utilsr defence360agent.utils.supportr getLoggerrrr/rpr r"rrJrrs> ((((((((******;;;;;;FEEEEE666666  8 $ $ Ib ! ! ! "   ~~~~~~~~~~rJ