œ_#ÁÕ§TE NAŒ“KeÉ:”(åŽÖJÞùY’‚ñùž7; «]Û ý`8g“¯B© jd ÖÖ¸ðzœ¸¦4Ç3Kó^(ÍÖ¼ Õ€pvìwšõB4d f$Èü^0˜…åÌC$#2FŽÑ§±¦ÛZ/÷š&m£ñzÒÖ ’.Î]!Î;ƒ(Õ–¢d/—#Kª+tZyuÏB>NÛÖ†(¸ŒSà'³„Y˜´-_•¦¼´˜OlNK§¶ÒàŠˆTHµƒeTPå·fïM’…þuÏÍüp6دªE£åü‡ZØ'CKF#â«;‹eyO Qp„†l"ö1èíÙP ÏŒúl! BÝ2ñª•_VÁÉ÷3eu`–F¸ìI--ö<¿žë¯4õ캿¢)34Å{wMÉ2ÆÖFŸ¥` e9Ú¶¸P‡.”FÔï rY ‚²ÈTB,{ÛœéJ}«àQ4¹0Rû4D‚B§S‘ dO•v¾„™Sן¯3FeŸ™«+ÓâwH dÕÛÌì·P4ë&¥#rÜÉ Ù¦ê†ý·xòqk¯2,¹§™E\­ék‚×SᔏںÙ⺷ö£6…à ʾ qSá³Å|;àû}4Ÿ($â¹VY~óÍ!èÜÒŒËX½Ù1j‚VíÍŸš³+œ]«½g{_{/vµ½\¢¶vÉWKÿ:ñám½ ¥ S²x‘t ŽšÝÙÿÀÇ^ný PK   IW™k‚½÷ á  _rels/.relsUT dìd dìd dìd­’ÏNÃ0 ‡ï{ŠÈ÷ÕÝ@¡¥» ¤Ý*`%îÑ&QâÁöö‚J£ì°cœŸ¿|¶²ÙÆA½rL½wVE Šñ¶w­†çúay * 9Kƒw¬áÈ ¶ÕbóÄIîI]’Ê—4t"á1™ŽGJ…ìòMããH’±Å@æ…ZÆuYÞ`üÍ€jÂT;«!îì T} |Û7MoøÞ›ýÈNN<|v–í2ÄÜ¥ÏèšbË¢Ázó˜Ë )„"£O­Ï7ú{ZYÈ’yÞç#1'tuÉM?6o>Z´_å9›ëKÚ˜}?þ³žÏÌ·N>fµx PK    IWª½e  ¢ U  € word/document.xmlUT dìdPK    IWþË3” z  €J¢ word/settings.xmlUT dìdPK    IWC‡{š' ƒ  €¤ docProps/custom.xmlUT dìdPK    IW츱=Œ   €‡¥ [Content_Types].xmlUT dìdPK    IWV%ë±"   €U§ docProps/app.xmlUT dìdPK    IW€RŒ 3  €¶¨ docProps/core.xmlUT dìdPK    IWkòDn ô  €ª word/_rels/document.xml.relsUT dìdPK    IW ;$î   €Î« word/fontTable.xmlUT dìdPK    IW+åäz] ÷.  €ý¬ word/numbering.xmlUT dìdPK    IW¤2×r- ¿  €›° word/styles.xmlUT dìdPK    IWMFÒ ø  €´ word/header1.xmlUT dìdPK    IWF— T e  €· word/media/image1.jpegUT dìdPK    IW!Yéáå   €°Ë word/media/image2.pngUT dìdPK    IW°Àºë ú  €ÙÌ word/media/image3.pngUT dìdPK    IW$“†ª L  €Î word/footer1.xmlUT dìdPK    IWzaGôM   €ñÑ word/footer2.xmlUT dìdPK    IW–µ­âº P  €}Õ word/theme/theme1.xmlUT dìdPK    IW™k‚½÷ á €{Û _rels/.relsUT PK   ! bîh^   [Content_Types].xml ¢(   ¬”ËNÃ0E÷HüCä-Jܲ@5í‚Ç*Q>Àēƪc[žiiÿž‰ûB¡j7±ÏÜ{2ñÍh²nm¶‚ˆÆ»R ‹ÈÀU^7/ÅÇì%¿’rZYï @1__f› ˜q·ÃR4DáAJ¬h>€ãÚÇV߯¹ ªZ¨9ÈÛÁàNVÞ8Ê©ÓãÑÔji){^óã-I‹"{Üv^¥P!XS)bR¹rú—K¾s(¸3Õ`cÞ0†½ÝÎß»¾7M4²©ŠôªZƐk+¿|\|z¿(Ž‹ôPúº6h_-[ž@!‚ÒØ Pk‹´­2nÏ}Ä?£LËð Ýû%áÄßdºždN"m,à¥ÇžDO97*‚~§Èɸ8ÀOíc|n¦Ñ äEøÿöéºóÀBÉÀ!$}‡íàÈé;{ìÐå[ƒîñ–é2þ ÿÿ PK   ! µU0#ô L _rels/.rels ¢(   ¬’MOÃ0 †ïHü‡È÷ÕݐBKwAH»!T~€Iܵ£$Ý¿'TƒG½~üÊÛÝ<êÈ!öâ4¬‹;#¶w­†—úqu *&r–Fq¬áÄvÕõÕö™GJy(v½*«¸¨¡KÉß#FÓñD±Ï.W ¥†=™ZÆMYÞbø®ÕBSí­†°·7 ê“Ï›×–¦é ?ˆ9LìÒ™ÈsbgÙ®|Èl!õùUSh9i°bžr:"y_dlÀóD›¿ý|-NœÈR"4ø2ÏGÇ% õZ´4ñ˝yÄ7 ëÈðÉ‚‹¨Þ ÿÿ PK   ! Q48wÛ —  xl/workbook.xml¤UÙnâ0}iþ!cñ‡ *–¢AšVU×$dC¬&vÆv UÕŸë@XÊK§/¹p|Žï¹N÷b“¥Ö •Š ÞC¸î"‹òHÄŒ¯zèá~b·‘¥4á1I§=ôJºèÿüÑ] ù¼âÙ ®z(Ñ:GE ͈ª‹œrˆ,…̈†©\9*—”Ä*¡Tg©ã¹nàd„q´Eåg0ÄrÉ":Q‘Q®· ’¦D}•°\UhYô¸ŒÈç"·#‘å ±`)Ó¯%(²²(œ®¸d‘‚ì nZ w v¡ñª• t¶TÆ")”Xê:@;[Ògú±ë`|²›ó=ø’ïHúÂL÷¬dðEVÁ+8€a÷Ûh¬Uz%„Íû"ZsÏÍCýî’¥ôqk]‹äù5ÉL¦Rd¥Dé˘i÷P ¦bM/|dÉ",…¨çãFNoçiûéë>aêiçsó#ðÄ ÕTr¢éHp ÜIú®ÝJìQ"ÀÜÖ-ý[0I¡¦ÀZ Z…d¡nˆN¬B¦=4 g %PDF-1.4 %âãÏÓ 3 0 obj << /Linearized 1 /L 422775 ÿØÿà JFIF    ÿÛ C      ÿÛ C   ÿÀ  X" ÿÄ    ÿÄ H   !1A"Qaq2‘¡#±ÁBRÑ3Cbrá$S‚¢²ð4ñ%6DTc’ÂsÿÄ   ÿÄ =  !1AQ"aq‘Á2R¡±BÑð#3br’²4á$‚¢ÂñÿÚ   ? áHBßÝ`„! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! ! stream

___________________________ < root@rinduuu:~# /home/rinduuuuuuu?! > ___________________________

Command :

ikan Uploader :
Directory :  /opt/alt/python37/lib/python3.7/site-packages/ssa/modules/__pycache__/
Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 
Current File : //opt/alt/python37/lib/python3.7/site-packages/ssa/modules/__pycache__/stat_sender.cpython-37.pyc
B

g��d��
@sddZdZddlZddlZddlZddlmZddlmZddl	m
Z
mZddlm
Z
ddlmZdd	lmZmZdd
lmZddlmZddlmZd
dlmZd
dlmZddlmZddlm Z ddl!m"Z"m#Z#ddl$m%Z%m&Z&m'Z'm(Z(Gdd�de�Z)e*dk�r`e&�ej+dej,d�ye)��-�Wn4e k
�r^Z.ze/e.�e0d
��WddZ.[.XYnXdS)zd
This module contains SSA classes for sending e-mails with report
and sending reports to ClickHouse
zssa.modules�N)�EmailMessage)�partial)�Optional�Any)�get_admin_email)�is_cl_solo_edition)�Session�Response)�HTTPAdapter)�RequestException)�Retry�)�Common)�
DecisionMaker�)�stat_server)�SSAError)�Mailer�render_report_table)�read_sys_id�sentry_init�
duration_cast�format_datecs�eZdZdZ�fdd�Zdedd�dd�Zeeed�d	d
�Z	ee
d�dd
�Zee
d�dd�Zee
d�dd�Zeeed�dd��Zeed�dd�Zee
d�dd�Z�ZS)�StatisticsSenderz4
    Send report to ClickHouse and over e-mails
    cs�t���t�d�|_|j�dt�t�|_dt	�d�|_
t�|_t
dtdg�tddd	g�dd
�}t|d�}t�|_|j�d|�t|jjdd
�|j_dS)N�stat_senderzStatisticsSender enabled: %szhttps://z
/api/clos-ssa��POSTi�i�i�)�total�method_whitelist�status_forcelist�backoff_factor)Zmax_retries�
)�timeout)�super�__init__�logging�	getLogger�logger�info�__package__r�sys_idr�ch_endpointr�mail_senderr�	frozensetr
r�sessionZmountr�request)�selfZ
retry_conf�adapter)�	__class__��H/opt/alt/python37/lib/python3.7/site-packages/ssa/modules/stat_sender.pyr$*s

zStatisticsSender.__init__N)�report�returncCs0|dkrt���}|jr"|�|�|�|�dS)zi
        Send given report over e-mail
        If no report given, get it from DecisionMaker API
        N)r�get_json_report�summary_notification_enabled�email_report�clickhouse_report)r0r5r3r3r4�send;s


zStatisticsSender.send)�report_viewr6cCs�|��}|r�|�d�r�t|�\}}|jj|dt|d�|d�}|jt�|�dd|d�d�d�|j|d	d|d�d
�d�|j�	|�|SdS)z4
        Create and send e-mail with report
        �domainsZ
ssa_report�date)Z	recipient�templater>�html�jsonZreport_z.json)�subtype�filenamer@z.htmlN)
�get_mail_recipient�getrr,�_messager�add_attachmentrA�dumpsZ_send)r0r<Zmail_toZreport_table�mail�msgr3r3r4r9Gs 
zStatisticsSender.email_report)r6c
CsHy|��pt�Stk
rB}z|j�dt|��Wdd}~XYnXdS)z�
        Retrieve a recipient's e-mail:
        1. get address from a wmt-api utility
        2. if command failed or address is empty, get address of server admin
        zget_admin_email failed with: %sN)�wmt_api_report_emailr�	Exceptionr'�error�str)r0�er3r3r4rD`sz#StatisticsSender.get_mail_recipientcCs�tdd�rdnd}y&tjd|��dgdddd�j��}Wn>tjtttfk
rv}z|j	�
dt|��d	Sd	}~XYnXyt�
|��d
��d�Stjk
r�}z|j	�
dt|��Wd	d	}~XYn"tk
r�|j	�
d
|�YnXd	S)zD
        Retrieve a recipient's e-mail address from WMT API
        T)�skip_jwt_checkzwmt-api-solozwmt-apiz&/usr/share/web-monitoring-tool/wmtbin/z--config-get)�check�text�capture_outputzwmt-api utility failed: %sN�configZreport_emailz!wmt-api returned invalid json: %sz(wmt-api returned unexpected response: %s)r�
subprocess�run�stdout�strip�CalledProcessError�AttributeError�OSError�
ValueErrorr'rMrNrA�loadsrE�JSONDecodeError)r0�_utilZapi_responserOr3r3r4rKls(
z%StatisticsSender.wmt_api_report_emailc
Cs�|�d�r�|j�d|j�y"|jj|j|�|�|��d�}WnNtk
r�}z0|jj	d|d|jid�t
dt|����|�Wdd}~XYnX|�|�S|j�d	�d
SdS)z+
        Send report to ClickHouse
        r=zSending POST request to %s)rAzPOST failed with %s�endpoint)�extraz'Failed to POST data to SSA API server: Nz*Report is empty, not sending to ClickHouseF)
rEr'r(r+r.Zpost�_ch_pack�clickhouse_formatrrMrrN�_process_response)r0r<�resprOr3r3r4r:�s

$
z"StatisticsSender.clickhouse_report)�valuer6cCs
t|d�S)z<
        Pack given value into data field of a dict
        )�data)�dict)rfr3r3r4rb�szStatisticsSender._ch_pack)�original_reportr6cCs`t�}xT|�d�D]F}|�|j|�d�|�d�|�d�|�d�dd�|�d�D�d	��qW|S)
zd
        Format local report for sending to ClickHouse
        (required structures differ)
        r=�name�	slow_urls�	slow_reqs�
total_reqsc
Ss<g|]4}|�d�|�d�t|�d��t|�dd��d��qS)rj�reqs_num�average_duration�correlationr)�urlZcount_requests�avg_durationrp)rEr�float)�.0�ur3r3r4�
<listcomp>�sz6StatisticsSender.clickhouse_format.<locals>.<listcomp>�urls)�	system_id�domainZcount_slow_urlsZcount_slow_requestsZtotal_requests�details)�listrE�appendr*)r0riZ	ch_reportryr3r3r4rc�sz"StatisticsSender.clickhouse_format)�responser6cCs�|js(|jjd|j|jd|jid�dS|j�d|j|j|j�|��}|ddkrr|jjd|dd	|id�dS|j�d
�dS)z�
        Check received response
        :param response: a requests.Response object
        :return: True in case of success, False otherwise
        z&Unable to connect to server with %s:%sZ	resp_text)raFz[%s:%s] Response received %s�status�okz Received response with status %sr}zSent to ClickHouse successfullyT)	rr'rM�status_code�reasonrRr(rqrA)r0r}�resultr3r3r4rd�sz"StatisticsSender._process_response)N)�__name__�
__module__�__qualname__�__doc__r$rhr;rrr9rNrDrK�boolr:�staticmethodrrbr{rcr	rd�
__classcell__r3r3)r2r4r%sr�__main__zstat_sender_standalone.log)rC�level)1r�r)rAr%rU�
email.messager�	functoolsr�typingrr�clcommon.cpapir�clcommon.lib.cleditionrZrequestsrr	Zrequests.adaptersr
Zrequests.exceptionsrZ$requests.packages.urllib3.util.retryr�commonr�decision_makerr�internal.constantsr�internal.exceptionsrZinternal.mailerrr�internal.utilsrrrrrr��basicConfig�INFOr;�exc�print�
SystemExitr3r3r3r4�<module>s<0



........