HeddlZddlZddlZddlmZmZmZddlmZddl m Z ddl m Z ddl mZddlmZddlmZeGd d ZGd d ZdS) N) dataclassasdictfield) CONFIG_PATH)WmtConfigException)parse)get_admin_email) gethostname)ListceZdZUdZdZeed<dZeed<dZe ed<e e Z e e ed <d Zeed <d Zeed <dS) CfgzC Default values, in case config has not been specified yet  ping_interval ping_timeoutN report_email)default_factory ignore_listTsummary_notification_enabledalert_notifications_enabled)__name__ __module__ __qualname____doc__rint__annotations__rrstrrlistrr rboolrF/opt/cloudlinux/venv/lib/python3.11/site-packages/wmt/common/config.pyr r sM3L#L#"U4888Kc888)- $---(,,,,,,r!r ceZdZdZdZdZdefdZedZ de fdZ ed Z d Z defd Zdefd Zd S) ConfigManagerc4tj|_dt |_t |_||_ | |_ | |_ dS)Nzweb-monitoring-tool@)r __dataclass_fields__keysallowed_paramsr from_emailr default_report_email _init_cfgcfggenerate_ignored_domains_ignored_domains_get_target_email target_emailselfs r"__init__zConfigManager.__init__s{!6;;==@@@$3$5$5!>>##!% = = ? ? 2244r!c@|jjr |jjn|jS)a This function checks to see which email address to use for TO: field of smtp. If report_email has been defined by user then report_email will be used. By default (in case not defined by user) default_report_email will be used )r,rr*r1s r"r/zConfigManager._get_target_email's! )-(=\tx$$4C\\r!c*t|jSN)rr,r1s r"to_dictzConfigManager.to_dict/sdhr!returnc P|stS|}t}|D]L\}}||jvr-t jd|dt|j;t|||M|S)Nzunsupported parameter "z:", please ensure config contains only allowed parameters: ) is_presentr readitemsr(loggingwarningrsetattr)r2datar,keyvalues r"r+zConfigManager._init_cfg2s   55Lyy{{ee**,, ) )JC$---McMM15d6I1J1JMM S%(((( r!cJtjtSr6)ospathisfilerr r!r"r:zConfigManager.is_presentEsw~~k***r!new_jsonc tj|}n3#tj$r!}tt |d}~wwxYwt ||js$tdt|ji| |}| drFt| dtr|d d|d<ttd5}tj||ddddn #1swxYwYt#di||_| S) z Changes configuration of wmt Returns: self.to_dict() Raises: WmtConfigException Example: wmt-api-solo --config-change {'key': 'val'} Nz@some of passed params are unsupported, only allowed parameters: r,w)indentr )jsonloadsJSONDecodeErrorrrsetr'issubsetr(rr7get isinstancesplitopenrdumpr r,)r2rG new_configeconfigfs r"modifyzConfigManager.modifyIs -H--JJ# - - -$SVV,, , -:??$$%%..t/BCC ^$&]AEdFYAZAZ&]&]^^ ^ llnn   ::m $ $ EFJJ}4M4Ms)S)S E$*=$9$?$?$D$DF= !+s # # +q Ifa * * * * + + + + + + + + + + + + + + +====||~~s&AAA/EEEc tt5}tj|}dddn #1swxYwYn3#tj$r!}t t |d}~wwxYw|Sr6)rUrrMloadrOrr)rZr@rXs r"r;zConfigManager.readms -k"" $ay|| $ $ $ $ $ $ $ $ $ $ $ $ $ $ $# - - -$SVV,, , - s2A7 A;A;AA3A..A3c8||_dSr6)r+r,r1s r"reloadzConfigManager.reloadvs>>##r!c||jvS)z5 Check if domain is in ignored list. )r.)r2domains r"is_domain_ignoredzConfigManager.is_domain_ignoredys...r!ct}|jjD]@}t|}d|vr|dd}||A|S)al Generates ignored domains from self.ignore_list and returns it for using as cache in self.ignored_domains set(). Purpose of this function is to generate formatted url as "http://www.test.com" from user entered urls in self.ignore_list. It makes sense to check domains names with this cache before pings or reports httpshttp)rPr,rrreplaceadd)r2domainsddomain_from_ignore_lists r"r-z&ConfigManager.generate_ignored_domainssk%%% 1 1A&+Ahh #111*A*I*I'SY*Z*Z' KK/ 0 0 0 0r!N)rrrr3r/r7r r+ staticmethodr:rr[r;r_rrbrPr-r r!r"r$r$s 5 5 5]]]   3&++\+"s""""H\$$$/4//// #r!r$)r=rDrM dataclassesrrrwmt.common.constrwmt.common.exceptionsrwmt.common.url_parserrclcommon.cpapir socketr typingr r r$r r!r"rss 0000000000((((((444444''''''******  - - - - - - -  -vvvvvvvvvvr!