wo4h,ddlZddlZddlZddlmZddlmZmZmZm Z ddl m Z m Z m ZmZmZmZmZmZmZmZmZmZmZmZddlmZddlmZmZddlm Z ddl!m"Z"dd l#m$Z$e sdd l%m&Z&dd l'm(Z(dd l)m*Z*m+Z+ej,e-Z.d Z/dee0fdZ1 d.dee0effdZ2de e0fdZ3de e4fdZ5dZ6Gdde7Z8GddZ9Gdde9Z:Gdde9Z;Gdde9Z<Gd d!e9Z=Gd"d#e9Z>Gd$d%e9Z?Gd&d'e9Z@Gd(d)e@ZAGd*d+eAZBGd,d-eAZCdS)/N)timezone)CallableDictListOptional)ACRONISANTIVIRUS_MODE AcronisBackup BackupConfig BackupRestore CLOUDLINUXCLOUDLINUX_ON_PREMISE CLUSTERLOGICSCPANELCore DIRECTADMINPLESKR1SOFTSAMPLE_BACKEND) LicenseCLN)BackupNotFoundRestCLN)cPanel) DirectAdmin)Plesk)backup_backends) BackupFailed)BackendNonApplicableErrorBackendNotAuthorizedErrorc td|S#ttf$r#td|wxYw)NT)include_samplez"Backup system is not available: {})_get_avalible_backendsKeyErrorr ValueErrorformat)names Z/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/subsys/backup_systems.py get_backendr((siL@%T:::4@BBB / 0LLL=DDTJJKKKLs  4Areturncg}tdD]5\}} |||&#t$rY2wxYw|S)NF) include_cl)r"itemsappendr)namesr&clss r'get_available_backends_namesr0/s E+u===CCEE c  CEEE LL    )    D  Ls A  AAFTctttti}tjr|rt |t<tjrt|t<tj rt|t<nEtj rt |t"<n"t%j rt&|t(<|rt*|t,<|SN)rAcronisrR1Softr CL_BACKUP_ALLOWED CloudLinuxr CL_ON_PREMISE_BACKUP_ALLOWEDCloudLinuxOnPremiserr is_installed cPanelBackuprr PleskBackuprrDirectAdminBackuprSampler)r!r+backendss r'r"r"=s H &*:*)1>*=&' 2'    2%  ! # #2 1*#) Octdi}|do|dSN BACKUP_SYSTEMenabled backup_system)r config_to_dictget)confs r'get_current_backendrHWsJ >> ( ( * * . . C CD 88I   <488O#<#<.wrapperfs  3q.t...v........BB  & &r & 2 2 2 2C & &r & 2 2 2 2 s 2A )rVrWs` r' transactionalrYes# Nr?ceZdZdS)BackupExceptionN)__name__ __module__ __qualname__rXr?r'r[r[rsDr?r[c`eZdZd dZdZdZddZdZdZd Z d e fd Z d e e fd ZdS) BackupSystemNc"||_||_dSr2)r&log_path)selfr&rbs r'__init__zBackupSystem.__init__ws   r?cnd||r|jnddi}t|dddS)NrB)rCrDT) overwritevalidate)r&r dict_to_config)rcrCnew_confs r'rQz#BackupSystem._update_backups_config{sN ".5!?4  %%h$%NNNNNr?c6K|ddS)NTrOrP)rcrRrSs r'initzBackupSystem.inits# ##D#11111r?Fc6K|ddS)NFrOrP)rcdelete_backupss r'disablezBackupSystem.disables# ##E#22222r?c KiSr2rXrcs r'checkzBackupSystem.check  r?c KiSr2rXrps r'showzBackupSystem.showrrr?c KdSr2rXrps r' make_backupzBackupSystem.make_backups  r?r)cKtdi}|do|d|jkSrA)r rErFr&)rcrGs r' check_statezBackupSystem.check_statesU~~,,..22?BGGxx ""Mtxx'@'@DI'MMr?c KdSr2rXrps r'rJz&BackupSystem.get_last_backup_timestamps tr?r2F)r\r]r^rdrQrkrnrqrtrvboolrxrintrJrXr?r'r`r`vs!!!!OOO2223333   N4NNNN#r?r`ceZdZfdZxZS)r;cTttdSr2)superrdrrc __class__s r'rdzPleskBackup.__init__s! r?r\r]r^rd __classcell__rs@r'r;r;s8         r?r;ceZdZfdZxZS)r:cTttdSr2)rrdrrs r'rdzcPanelBackup.__init__s!      r?rrs@r'r:r:s8!!!!!!!!!r?r:ceZdZfdZxZS)r<cTttdSr2)rrdrrs r'rdzDirectAdminBackup.__init__s! %%%%%r?rrs@r'r<r<s8&&&&&&&&&r?r<c@eZdZfdZdefdZedZxZS)r4ctttjdd|_dS)Nr1softTasync_)rrdrrrKrs r'rdzR1Soft.__init__s6    &.xEEE r?r)cK|jd{V}d|DS)Nc"i|] \}}|dv || S))username timestampiprX.0kvs r' zR1Soft.show..s4   1333 q333r?rKinfor,rc info_datas r'rtz R1Soft.showV,++--------   !))    r?cPK|j||||d{VdSr2rKrk)rcrrpasswordencryption_keyrSs r'rkz R1Soft.inits:lHhGGGGGGGGGGGr? r\r]r^rddictrtrYrkrrs@r'r4r4szFFFFF D    HH]HHHHHr?r4c@eZdZfdZdefdZedZxZS) ClusterLogicsctttjtd|_dSNTr)rrdrrrKrs r'rdzClusterLogics.__init__s6 '''&.}TJJJ r?r)cK|jd{V}d|DS)Nc"i|] \}}|dv || S))rurlapikeyrXrs r'rz&ClusterLogics.show..s4   1111 q111r?rrs r'rtzClusterLogics.showrr?c@K|d=|jjdi|d{VdS)NforcerXr)rcrSs r'rkzClusterLogics.initsB 7Odl))&)))))))))))r?rrs@r'rrssKKKKK D    **]*****r?rceZdZfdZxZS)r=ctttj|jd|_dSr)rrdrrrKr&rs r'rdzSample.__init__s8 (((&.tyFFF r?rrs@r'r=r=sAGGGGGGGGGr?r=cneZdZfdZdefdZed dZd dZde e fdZ de fd Z xZS) r3cttdtjdt jtj|j d|_dS)Nz /var/log//Tr) rrdrrPRODUCTAcronisBackupConfigLOG_NAMErrKr&rs r'rdzAcronis.__init__sX  G $ .A.J.J K   '.tyFFF r?r)cK|jd{V}d|DS)Nc"i|] \}}|dv || S))rrrXrs r'rz Acronis.show..s4   1--- q---r?rrs r'rtz Acronis.showrr?FcK|jd{V }|j||||tjd{VdS)N provisionrtmp_dir)rKis_agent_installedrkrTMPDIRrcrrrrSrs r'rkz Acronis.inits"l==????????? l  K             r?NcFK|j|d{VSr2)rKbackups)rcuntils r' _list_backupszAcronis._list_backupss.\))%000000000r?cK|d{V}|r&ttd|DSdS)Nc3K|];}|jtjVz4Acronis.get_last_backup_timestamp..sWN**(,*??IIKKr?)rr|max)rcrs r'rJz!Acronis.get_last_backup_timestampss**,,,,,,,,  ")  tr?cK t|d{VS#tjtf$rt $rt dYdSwxYw)zif backup exists, than state OKNzError during checking stateF)r{rasyncioCancelledErrorr Exceptionlogger exceptionrps r'rxzAcronis.check_states d002222222233 3&(AB          : ; ; ;55 s&+:A)(A)rzr2)r\r]r^rdrrtrYrkrrr|rJr{rxrrs@r'r3r3sGGGGG D       ] 1111 #    4r?r3c@eZdZdefdZdZdeefdZddZ dS) CloudLinuxBaser)cK|jd{V}|d|d<|jd{V|d<|S)Nusagebackup_space_used_bytes login_url)rKrpoprrs r'rtzCloudLinuxBase.show sr,++-------- /8}}W/E/E +,'+|'='='?'?!?!?!?!?!?!? +r?cHKtd |jd{VdS#t$rX}t jdtt|j r|j drt|ndd}~wwxYw)Nz Making backupzCloudLinux backup failedrr) rrrKmake_initial_backup_strictrloggingrr[lenrRstr)rces r'rvzCloudLinuxBase.make_backups O$$$ ,99;; ; ; ; ; ; ; ; ; ;     8 9 9 9!af++G!&)GA  s? B! ABB!cDK|jd{VSr2)rKget_backup_progressrps r'rz"CloudLinuxBase.get_backup_progresss,\55777777777r?FcKtd|jz|jd{V }|j||||t jd{VdS)NzStarting %s initr)rrr&rKrrkrrrs r'rkzCloudLinuxBase.init s &2333"l==????????? l  K             r?Nrz) r\r]r^rrtrvrr|rrkrXr?r'rr sqD 88C=8888       r?rcZeZdZd\ZZfdZedfd ZGddZej de ffd Z ej fd Z ej de effd Zej de effd Zej deffd Zde fd Zdfd ZxZS)r6)paidunpaidc`tt|_dSr2)rrdr r&rs r'rdzCloudLinux.__init__/s$  r?FcKtjtjd{V}t |d|d|d{VdS)N server_idloginrr)racronis_credentialsr get_server_idrrk)rcrrS credentialsrs r'rkzCloudLinux.init3s#7 .00         ggll   #           r?c$eZdZedZdS)CloudLinux.DecoratorscFtjfd}|S)NcK |g|Ri|d{VS#t$r1|dd{V|g|Ri|d{VcYSwxYw)NTr)rrk)rcrRrSrVs r'wrappedzOCloudLinux.Decorators.update_credentials_on_unauthorized_error..wrappedAs:!"4!9$!9!9!9&!9!999999990:::))$)/////////!"4!9$!9!9!9&!9!9999999999:s8AA) functoolswraps)rVrs` r'(update_credentials_on_unauthorized_errorz>CloudLinux.Decorators.update_credentials_on_unauthorized_error?s8 _Q   : : : :  :Nr?N)r\r]r^ staticmethodrrXr?r' Decoratorsr>s-       r?rr)cKtd{V}tjt jd{V}|dd}|dd}||d<||d<|S)Nrsizerrpurchased_backup_gb resize_url)rrtr acronis_checkrrrF)rcrresponserrrs r'rtzCloudLinux.showKs'',,..((((((  . .00         'll6155\\%.. +> '(", ,r?cXKtd{VdSr2)rrvrs r'rvzCloudLinux.make_backupZs5gg!!###########r?cTKtd{VSr2)rrrs r'rzCloudLinux.get_backup_progress^s/WW00222222222r?cTKtd{VSr2)rrJrs r'rJz$CloudLinux.get_last_backup_timestampbs/WW66888888888r?cTKtd{VSr2)rrxrs r'rxzCloudLinux.check_statefs/WW((*********r?cK tjtjd{V}n3#t$r&}|j|dcYd}~Sd}~wwxYw|j|ddS)Nr)statusrr)rr) rrrrrUNPAIDadd_used_spacePAIDrF)rccontentrs r'rqzCloudLinux.checkjs F#1$244GG F F F"k!2B2B2D2DEE E E E E E E F)W[[-@-@AAAs,1 A!AA!A!cKtd{V|r.tjt jd{VdSdS)Nr)rrnracronis_removerr)rcrmrs r'rnzCloudLinux.disabletswggoo  O(:3K3M3MNNN N N N N N N N N N O Or?rz)r\r]r^rrrdrYrkrrrrtrvrr|rrJr{rxrqrnrrs@r'r6r6,s#LD&     ]         8 D     98 8$$$$98$838C=3333398389#999999898+4+++++98+BTBBBBOOOOOOOOOOr?r6c8eZdZfdZefdZxZS)r8c`tt|_dSr2)rrdrr&rs r'rdzCloudLinuxOnPremise.__init__{s$ ) r?cJKtj|i|d{VdSr2)rrk)rcrRrSrs r'rkzCloudLinuxOnPremise.inits:egglD+F+++++++++++r?)r\r]r^rdrYrkrrs@r'r8r8zs]*****,,,,],,,,,r?r8)FT)Drrrdatetimertypingrrrr defence360agent.contracts.configrr r rr r r rrrrrrrr!defence360agent.contracts.licenserdefence360agent.internals.clnrr*defence360agent.subsys.panels.cpanel.panelr/defence360agent.subsys.panels.directadmin.panelr)defence360agent.subsys.panels.plesk.panelrrestore_infectedr(restore_infected.backup_backends.acronisr$restore_infected.backup_backends_librr getLoggerr\rr(rr0r"rHr|rJrYrr[r`r;r:r<r4rr=r3rr6r8rXr?r'rs111111111111 988888AAAAAAAA======GGGGGG;;;;;;000000EEEEEE  8 $ $LLL d3i     #x-4=Xc]==== >#>>>>        i   """"""""J     ,   !!!!!<!!! &&&&& &&& HHHHH\HHH$*****L***,GGGGG\GGG 11111l111h     W   @KOKOKOKOKOKOKOKO\,,,,,.,,,,,r?