|iddlZddlZddlZddlZddlmZddlmZddlm Z dZ dZ ej e ZGddeZd ed eeefd ed efd Zdeeefd ed efdZdS)N) defaultdict)Any)SqliteDatabasez* {} z2/var/imunify360/files/modsec/v2/general_rules.jsonceZdZdS)DatabaseNotFoundErrorN)__name__ __module__ __qualname__]/opt/imunify360/venv/lib/python3.11/site-packages/im360/subsys/modsec_app_version_detector.pyrrsDr rcomponents_sqlite_file tags_mapping is_corazareturnctj|s"td|t |}g}|D].\}}||tj |f/| d}tt}t} |D]x\} } | | d}||| |9|D]<\}}|| r"|| ||| | <n=yt#||S)Nz-App detector database '{}' couldn't be found.zselect path, title from apps)ospathisfilerformatritemsappendrecompile execute_sqlrsetdictgetaddmatch generate_conf) rrrdb tags_regextagregcursor path_tagscachertitles r map_components_versions_to_tagsr*sn 7>>0 1 1 # ; B B&     . / /BJ &&((22S3 301111 ^^: ; ;FC  I FFE   eiit$$ ? dO   $ $ $ $&  S99U##dO'',,,#&E%LE I . ..r r'c fg}|rtjtrBt td5}t j|}dddn #1swxYwYn$ddg}tdt| D]:\}}| |tt||zd;t j t|dd S| D]`\}}| d t j |d t|at d t|S)z Generate conf file with rules Use json.dumps for converting special symbols like and escape quoters inside quoters :param is_coraza: :param path_tags: :return: rNnoshow service_im360z&File %s does not exist. Using fallback)r enabled_tagsc|dS)Nrr )vs r zgenerate_conf..Ps 6r )key),:) separatorszL SecRuleRemoveByTag ^(?!(?:service.*|noshow|{})$) | )rrexists GENERAL_RULESopenjsonloadloggerwarningrrsortedlistdumpsrjoinRULES_CONF_PATTERN)r'rconfigf general_rulesrtagss r r!r!4sFD 7>>- ( ( mS)) -Q $ !  - - - - - - - - - - - - - - -&7M NN8-   $//++  JD$ MM $*4:: +E$F$F     z 622 3 3 3     $//++  JD$ MMJt$$chhvd||&<&<    "((6&>>)B)BCCCsAA#&A#)r<loggingrr collectionsrtypingrpeeweerrDr: getLoggerrr> Exceptionrstrrboolr*rr!r r r rQs(  ######!!!!!!CD  8 $ $     I   ///3CH~/JN/////@'D[c2'Dt'D'D'D'D'D'D'Dr