Zى3s>ddlZddlZddlZddlZddlZddlmZmZmZddl m Z m Z ddl m Z ddlmZddlmZddlmZddlmZeGd d Zejd Zd ZGd dZdS)N) dataclassasdictfield) CONFIG_PATHPING_CONNECTIONS)WmtConfigException)parse)get_admin_email) gethostname)ListceZdZUdZdZeed<dZeed<eZ eed<dZ e ed<d Z eed <e e Zee ed <d Zeed<dZeed<dS)CfgzC Default values, in case config has not been specified yet  ping_interval ping_timeoutping_connectionsN report_email report_top)default_factory ignore_listTsummary_notification_enabledFalert_notifications_enabled)__name__ __module__ __qualname____doc__rint__annotations__rrrrstrrrlistrr rboolr/builddir/build/BUILDROOT/cl-web-monitoring-tool-3.2.3-1.el9.cloudlinux.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/wmt/common/config.pyrrsM3L#,c,,,L#J"U4888Kc888)- $---(------r%rz2\A[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+\Z)rrrrceZdZdZdZdZdefdZedZ edZ de fd Z ed Z d Zdefd Zdefd ZdS) 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 )r0rr.r5s r&r3zConfigManager._get_target_email3s! )-(=\tx$$4C\\r%c*t|jSN)rr0r5s 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_presentrreaditemsr,loggingwarningr"setattr)r6datar0keyvalues r&r/zConfigManager._init_cfg>s   55Lyy{{ee**,, ) )JC$---McMM15d6I1J1JMM S%(((( r%cJtjtSr:)ospathisfilerr$r%r&r>zConfigManager.is_presentQsw~~k***r%cr|D]\}}|tvr>t|trt|trt d|dL|dkrO|Mt|t st dt|st ddS)N"z" must be an integerrz"report_email" must be a stringz+"report_email" is not a valid email address) r@_NUMERIC_FIELDS isinstancerr#rr! _EMAIL_REmatch)rDrErFs r&_validate_valueszConfigManager._validate_valuesUs**,, K KJCo%%!%--LE41H1HL,-J-J-J-JKKKL&&$%eS11?0=???$??511K0IKKK K Kr%new_jsonc0 tj|}n3#tj$r!}tt |d}~wwxYwt ||js$tdt|j| |i| |}| drFt| dtr|dd|d<tt d5}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,wr)indentr$)jsonloadsJSONDecodeErrorrr!setr+issubsetr,r"rQr;getrNsplitopenrdumprr0)r6rR new_configeconfigfs r&modifyzConfigManager.modifyds -H--JJ# - - -$SVV,, , -:??$$%%..t/BCC ^$&]AEdFYAZAZ&]&]^^ ^ j))) llnn   ::m $ $ EFJJ}4M4Ms)S)S E$*=$9$?$?$D$DF= !+s # # +q Ifa * * * * + + + + + + + + + + + + + + +====||~~s&AAAE((E,/E,c tt5}tj|}dddn #1swxYwYn3#tj$r!}t t |d}~wwxYw|Sr:)r^rrWloadrYrr!)rcrDras r&r?zConfigManager.reads -k"" $ay|| $ $ $ $ $ $ $ $ $ $ $ $ $ $ $# - - -$SVV,, , - s2A7 A;A;AA3A..A3c8||_dSr:)r/r0r5s r&reloadzConfigManager.reloads>>##r%c|jD]@}d|vr3|dsd|}tj||rdS9||vrdSAdS)z Check if domain is in ignored list. If record contain *" then it will be processed as wildcard. Else as substring *TF)r2 startswithfnmatch)r6domainpatterns r&is_domain_ignoredzConfigManager.is_domain_ignoreds~ , Gg~~))#..,+'mmG?6733 44 f$$44%ur%cjt}|jjD]}|||S)z Generates ignored domains patterns from self.ignore_list and returns it for using as cache in self.ignored_domains set(). )rZr0radd)r6patternsrns r&r1z&ConfigManager.generate_ignored_domainss; 55x+ " "G LL ! ! ! !r%N)rrrr7r3r;rr/ staticmethodr>rQr!rdr?rhr#rorZr1r$r%r&r(r('s 5 5 5]]]   3&++\+ K K\ K$s$$$$L\$$$4"#r%r()rArHrlrWre dataclassesrrrwmt.common.constrrwmt.common.exceptionsrwmt.common.url_parserr clcommon.cpapir socketr typingr rcompilerOrMr(r$r%r&r}sK  0000000000::::::::444444''''''******  . . . . . . .  ." BJL M M UHHHHHHHHHHr%