WH(dZddlmZddlmZmZddlZddlZddl Z ddl m Z ddl Z ddl Z ddlZddlmZddlZddlZdZdZejeZed d eeeffd Zd efd ZGddZdZdZdZ ddZdS)z Common logging, sentry reporting and confing parsing code for such tools as - /opt/imunify360/venv/bin/imunify360_pam.py - /opt/imunify360/venv/bin/pam_imunify_daemon-watchdog.py - /opt/imunify360/venv/bin/pamsock_ready_check.py ) ConfigParser) lru_cachewrapsN)Path)Dictz/etc/pam_imunify/i360.inizAhttps://576732f0a25446c4b1f5b4a706e6b9d5@sentry.cloudlinux.com/52returncL tt5}td}|d|z|dcdddS#1swxYwYdS#t $r't dtddicYSwxYw)N-default_section[-] z%s parsing errorsentryz6https://sentry.cloudlinux.com/sentry/i360-pam-imunify/)openCONFIGr read_stringread Exceptionlogger exception)fconfs G/opt/imunify360/venv/lib/python3.11/site-packages/pam_i360/internals.pypam_imunify_configrs  &\\ Q444D   Wqvvxx/ 0 0 09                    +V444 N    s5A2AA% A2%A))A2,A)-A22.B#"B#filepathcdfd}|S)NicBtfd}|S)Nct}|r1tjz |jkrX} ||n+#t $rtdYnwxYw|S#|ccYSxYw | S#t $r(tdcYSwxYw)Nz%s write errorz %s read error) rexiststimestatst_mtime write_textrrr read_text)pathrvTIMEOUTrfuns rwrapperz;returnvalue_filecaching..decorator..wrapper1s>>D;;== !TY[[7%:%)YY[[%9&:&:SUUOOB'''' AAA$$%5x@@@@@AI2IIIIIIII!>>+++ !!!$$_h???355LLL!s<!A76B$7%BB$BB$$B+/C/C54C5)r)r(r)r'rs` r decoratorz*returnvalue_filecaching..decorator0s> s ! ! ! ! ! !  !")rr*r's` @rreturnvalue_filecachingr--s/G( r+ceZdZeeddZedZeeddZeeddZ e dZ edZ d S) _SentryTagsrcttjd}|r1tt jtjd}|jS)Nr)rsysargv is_symlinkosreadlinkname)tools rr6z_SentryTags.nameIsNCHQK   ??   2 CHQK0011Dyr+ctd}|sdStd}|d|z|dddS)Nz/etc/os-releasezCloudLinux/CentOS 6r r r PRETTY_NAME")rrrrr$strip) os_releasers r os_versionz_SentryTags.os_versionQs|+,,   "" )((C000 :#7#7#9#99:::Cy'--c222r+c td5}tj|}|dcdddS#1swxYwYdS#t$rYdSwxYw)Nz/var/imunify360/license.jsonidzN/A)rjsonloadFileNotFoundError)rlicenses r server_idz_SentryTags.server_id[s 455 %)A,,t} % % % % % % % % % % % % % % % % % %!   55 s.A: A>A>A AAz#/var/cache/imunify360-pam_ipify.orgctjdd5}|cdddS#1swxYwYdS)Nzhttps://api.ipify.org)timeout)urllibrequesturlopenrdecode)rs r server_ipz_SentryTags.server_ipes^ # #$;Q # G G %16688??$$ % % % % % % % % % % % % % % % % % %s&AAAc*|SN)rD)clss ruserz_SentryTags.userks}}r+cgdgdfD]^} tj|dcS#ttjf$r}t |}Yd}~Wd}~wwxYw|S)N)z/bin/rpmz-qz#--queryformat=%{VERSION}-%{RELEASE}imunify360-pam)z/usr/bin/dpkg-queryz--showformat=${Version}z--showrST)text) subprocess check_outputr;rBCalledProcessErrorstr)cmdelast_errs rversionz_SentryTags.versionos X W W Z Z Z  C "!.s>>>DDFFFFF%z'DE " " "q66 "Os'6A% A  A%N) __name__ __module__ __qualname__ staticmethodrr6r=rDr-rM classmethodrQr\r,r+rr/r/GsYq\\\\ 33\3Yq\\\\BCC%%DC\%[  \   r+r/cXtjtSrO)logging getLoggerr/r6r,r+rrdrd}s  [--// 0 00r+cdtvs'tddsdddStjtdtj5}dt tDD]} tt|}nA#t$r4}t d |t|}Yd}~nd}~wwxYw|d kr d |i|_ r|d kr|d |||| dddn #1swxYwYdddS)NrhttpNOTSETlogging.NullHandlerlevelclasson)dsnattach_stacktracec3DK|]}|d|VdS)_N) startswith).0attrs r z_sentry_init..s3RRTT__S=Q=QRDRRRRRRr+zsentry_init() '%s' tag errorrQr?r=z os.versionERRORz-sentry_sdk.integrations.logging.SentryHandler)rrq sentry_sdkinit SENTRY_DSNconfigure_scopedirr/getattrrrrrXrQset_tag)scopetagvaluerZs r _sentry_initrs*,,,,"$$X.99&AA -*   O      # % %*RRS%5%5RRR * *C 1 S1133     !?EEEA   f}}"E]  $$ lE2222 c5)))) ****************"@  s=+!D= B+*D=+ C)5*C$D=$C))AD==EEcdddtddd}t|djdd d |S) NINFOzlogging.FileHandlerpam_loglogz/var/log/imunify360/pam.log)rjrk formatterfilenameriT)modeparentsexist_ok)rgetrparentmkdir)r&s r_pamlog_handlerrsh&&((,,U-JLL   B J%%5$%NNN Ir+[%(levelname)s] %(message)s sys.stderrc  tjdt| dddd|zdnddd d dd d gd d|iddt jt dddddn9#t$r,}t d|tcYd}~Sd}~wwxYwtS)Nrr console_logzlogging.StreamHandlerzext://%s)rjrrkstreamrgrhri)rconsolerr)rjhandlersformatz]time="%(asctime)s" level=%(levelname)s msg="%(message)s" cmdline="{cmdline}" tool={tool_name} )cmdline tool_namez%Y-%m-%dT%H:%M:%S%z)rdatefmt)rrF)r\rroot formattersdisable_existing_loggerszfailed to initiate logger: %s)rcconfig dictConfigrrjoinr1r2r/r6rrrrd)console_logfmtconsole_streamrZs r logger_initrsT(!!+,, $/ $!.4(>9  &266  "!).9117*-((38*<*<,7,<,<,>,>282$2$ 5  ).G$# $# $ $ $ $ J 8!<<<  ;;sBB C&!C C C)rr) __doc__ configparserr functoolsrrr@logging.configrcr4pathlibrrUr1r typingrurllib.requestrHrvrrxrdr]rrXrr-r/rrrr,r+rrs&%%%%%&&&&&&&&    $ P  8 $ $ 1 DcN     c433333333l111!!!H    =+,,,,,,r+