K6h3 `dZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z m Z ddlmZdd lmZdd lmZdd lmZdd lmZejeZe dZGd dejZGddeZGddeZGddZ de!de!de!de!fdZ"de!fdZ#dddddZ$de!fd Z%e ed!d"d#e$j&$e ed%d&d'ee"dd($fZ'e ed)d*ed+e%fd,e#$e ed-d.d/ee(d0$e ed1d2d3e)$e ed4d2d5e)$fe'zZ*d;d6Z+d. Copyright © 2019 Cloud Linux Software Inc. This software is also available under ImunifyAV commercial license, see N)suppress)partial)chain)Callable)SqliteDatabase TextField) LocalConfig) im360_present)PleskSdk)find_revisium_db)SettingsExtractorcTeZdZdZeZeZGddZdS)KeyValuez#ex-Revisium settings database modelceZdZdZdS) KeyValue.MetaFN)__name__ __module__ __qualname__ primary_keyV/opt/imunify360/venv/lib/python3.11/site-packages/imav/migrations/004_plesk_configs.pyMetar0s rrN)rrr__doc__rkeyvaluerrrrrr*sX-- )++C IKKErrceZdZdZdZdS)Revisiumz'ex-Revisium database settings extractorcfttj|jkjSN)rgetrrselfs r_getz Revisium._get7s ||HLDH455;;rNrrrrr$rrrrr4s)11<<<<s%dh ===rNr%rrrr'r';s)44>>>>>rr'cXeZdZdZdeeedfzdeeedfzdefdZdZ dS) ConfigMappingz Transform a single or multiple dependent ex-Revisium settings parameters to a single ImunifyAV/360 config value and map it to a single or multiple config keys source.target converterct|ts|f}t|ts|f}||_||_||_dS)z :param source: settings extractor(s) for ex-Revisium / Plesk :param target: name(s) of target config parameter(s) for ImunifyAV/360 :param converter: a callable to convert source value(s) to a target one N) isinstancetupler-r.r/)r#r-r.r/s r__init__zConfigMapping.__init__IsO&%(( YF&%(( YF  "rc  d|jD} |j|}n:#t$r-}td|j||Yd}~dSd}~wwxYwt t |j|ft|jzS)z@Get target value from source value(s) and assign it to target(s)c6g|]}|Sr)r!).0r-s r z)ConfigMapping.convert..`s @@@&@@@rz$Fail to convert %r value(s) (%r): %rNr) r-r/ Exceptionloggerwarningr2zipr.len)r# source_values target_valuees rconvertzConfigMapping.convert^s@@DK@@@  )4>=9LL    NN6      22222 S|oDK8H8H&HIIJJJs  A"AAN) rrrrr r2strrr3r@rrrr,r,Bs #!E*;S*@$AA#eCHo%#  ####*KKKKKrr,minimummaximumrreturnc>t|t||S)z. Ensure that a value is within limits )maxmin)rBrCrs rclamprHps wE7++ , ,,rcd}tt5||z|z}dddn #1swxYwYtdd|S)zK Calculate ImunifyAV/360 CPU intensity based on a value in a range N)rZeroDivisionErrorrH)r max_value intensitys r intensity_cpurPwsI # $ $33%2 333333333333333 Ay ! !!s ,00nonedayweekmonth)neverdailyweeklymonthlycNttjpddzdS)z-A half of available CPUs/cores (at least one)rK)rFos cpu_countrrrget_max_possible_cpur]s"  #!)1 - --rra_auto_scan_periodrXzMALWARE_SCAN_SCHEDULE.interval)r/ra_hour_auto_scanrJzMALWARE_SCAN_SCHEDULE.hourra_max_worker_countrKra_max_possible_worker_count)zMALWARE_SCAN_INTENSITY.cpuz$MALWARE_SCAN_INTENSITY.user_scan_cpura_keep_backups_daysrLz(MALWARE_CLEANUP.keep_original_files_daysrZ ra_trim_filesTz,MALWARE_CLEANUP.trim_file_instead_of_removalra_use_ignore_list_by_userzPERMISSIONS.user_ignore_listct|i}trtnt}t jd|DD]?\}}|}|d^}}|D]}||i}|||<@t dt||S)Nc3>K|]}|VdSr )r@)r6ms r z.migrate_imav4plesk_settings..s*,K,KQQYY[[,K,K,K,K,K,Kr.z$Those settings=%s are to be migrated) dbinitr scan_time_mapping_only all_mappingsr from_iterablesplit setdefaultr9inforA) databaseconfigmappingsr.rdpathparamrs rmigrate_imav4plesk_settingsrysGGHF)6J%%lH,,K,K(,K,K,KKK  ||C(( u & &C S"%%AA% KK6F DDD MrFc :|rdSt}|tddS t|x}r%t |ddSdS#t $r&}td|Yd}~dSd}~wwxYw)Nz/No legacy ImunifyAV database found. Skipping...F) normalizez2Failed to migrate ImunifyAV for Plesk settings: %r)r r9rrryr dict_to_configr8r:)migratorrsfakekwargsrevisium_db_pathmigrated_configr?s rmigraters ')) EFFFP9:JKK K? K MM ( (E ( J J J J J K K PPPKQOOOOOOOOOPs4A** B4BBc dSr r)r}rsr~rs rrollbackrsDr__main__r )F)/rloggingr[ contextlibr functoolsr itertoolsrtypingrpeeweerr defence360agent.contracts.configr imav.migration_utils.otherr imav.migration_utils.plesk_sdkr imav.migration_utils.revisiumr imav.migration_utils.settingsr getLoggerrr9rkModelrrr'r,intrHrPschedule_interval_mappingr] __getitem__rmrFboolrnryrrprintrrrrs* ,,,,,,,,888888444444333333::::::;;;;;;  8 $ $^Drx<<<<< <<<>>>>> >>>+K+K+K+K+K+K+K+K\-3--S-S----"s""""  .c....M #Y//(+7 M !1%%$'%B'' M E' + + E02F2F2H2H I I      M $a((2'#q// M ot$$6 M-t44&-67 <$ P P P P      z E % %&6&6&8&8 9 9:::::r