
    nDj                         S SK Jr  S SKrS SKrS SKrS SKJr  S SKJr  \" S5      r	S\
4S jrS\
SS4S	 jrSS
\S\S-  S\4S jjrSS
\S\S-  S\4S jjrg)    )PathN)load_config)
get_loggerzactions.cronreturnc                     [         R                  " SS/SSSS9n U R                  S:w  aM  U R                  R	                  5       nSU;   d  SU;   a  g	[        S
U R                  R                  5        35      eU R                  $ )Ncrontabz-lTFcapture_outputtextcheckr   zno crontab forz
no crontab zFailed to read crontab: )
subprocessrun
returncodestderrlowerOSErrorstripstdout)resultr   s     6D:\Programs\laragon\www\wolf\agent\src\actions\cron.pyread_crontabr      sy    ^^Y-dUZ[FA$$&v%)?01D1D1F0GHII==    contentc                 T   SS K nUR                  SS9u  p# [        R                  " USSS9 nUR	                  U 5        U (       a'  U R                  S5      (       d  UR	                  S5        S S S 5        [        R                  " SU/S	S	S
S9nUR                  S:w  a&  [        SUR                  R                  5        35      e  [        R                  " U5        g ! , (       d  f       Nv= f! [         a     g f = f!  [        R                  " U5        f ! [         a     f f = f= f)Nr   cron_)prefixwutf-8encoding
r   TFr	   zFailed to write crontab: )tempfilemkstemposfdopenwriteendswithr   r   r   r   r   r   remove)r   r#   fd	temp_path	temp_filer   s         r   write_crontabr-      s   $$G$4MBYYr31YOOG$w//55% 2
 I 6tRV^cd!5fmm6I6I6K5LMNN "	IIi  21  			IIi  		sZ   C> A C-AC> C. 
C+'C> .
C;:C;>D' DD'
D$!D'#D$$D'payload
backup_dirc                     [        U R                  SS5      5      n[        U R                  SS5      5      n[        U R                  SS5      5      nSU4SU4SU44 H  u  pVSU;   d  SU;   d  M  [        SU 35      e   UR                  5       nUR                  5       nUR                  5       n	U(       a  U(       a  U	(       d  [        S5      eS	U;   d  S	U;   a  [        S
5      eSU	;   a#  U	R	                  S5      S   R                  5       n
OU	R                  5       n
U
(       d  [        S5      eUc  [        5       nUR                  S-  nUR                  SSS9  [        5       n[        [        R                  " 5       5      nUSU S3-  nUR                  USS9  [        R                  SU5        U SU SU
 3nUR                  5        Vs/ sH  nUR                  5       (       d  M  UPM     nnUR                  U5        SR!                  U5      S-   n[#        U5        [        R                  SU
5        SSU
S.$ s  snf ! [$         a.  n[        R'                  SU5        S[        U5      S.s S nA$ S nAff = f)Nscheduler   commandcommentr"   Newline character detected in z+schedule, command, and comment are required#z8Hash character (#) is not allowed in schedule or commandwolfpanel-managed:z%Invalid cron_id resolved from commentbackupsTparentsexist_okcrontab_.bakr   r    crontab backed up to %s z # wolfpanel:zadded cron job with id %szCron job created successfullysuccessmessagecron_idzcron creation failed: %sFrB   error)strget
ValueErrorr   splitr   etc_dirmkdirr   inttime
write_textloginfo
splitlinesappendjoinr-   	ExceptionrF   )r.   r/   schedule_rawcommand_rawcomment_rawnamevalr1   r2   r3   rD   configcurrent	timestampbackup_filenew_linelinelinesnew_contentexcs                       r   handle_cron_createrd   (   sl   A
7;;z267'++i45'++i45 &|4y+6NQZ\gPhiIDs{dck #A$!HII j  %%'##%##%wgJKK(?cWnWXX  7*mm$89"=CCEGmmoGDEE  ]F)3J5 . 		$	 Xi[#==w9*K8 Zq	wi@")"4"4"6G"6$$**,"6GXii&-k",g6 6
 	
 H  
		,c2X
 	

s>   A+I 1E!I I.I4AI I 
I?#I:4I?:I?c                     S HI  nU R                  U5      nU(       d  M  S[        U5      ;   d  S[        U5      ;   d  M=  [        SU 35      e   U R                  S5      nU(       dK  U R                  SS5      nSU;   a#  UR                  S5      S	   R	                  5       nOUR	                  5       nU(       d  [        S
5      eUc  [        5       nUR                  S-  nUR                  SSS9  [        5       n[        [        R                  " 5       5      nUSU S3-  n	U	R                  USS9  [        R                  SU	5        UR                  5       n
/ nSnSnSU 3nU
 HQ  nU(       a  SnM  UR	                  5       nUU;   a  SnUR                  S5      (       a  SnM@  UR!                  U5        MS     U(       d  [        SU S35      eU(       a  SR#                  U5      S-   OSn[%        U5        [        R                  SU5        SSUS.$ ! [&         a.  n[        R)                  SU5        S[        U5      S.s S nA$ S nAff = f)N)
command_idr3   r"   r4   r5   rf   r3   r   r7   r8   z7command_id or comment containing managed id is requiredr9   Tr:   r=   r>   r   r    r?   Fz# wolfpanel:r6   zCron job marker 'z' not found in crontabzdeleted cron job with id %szCron job deleted successfullyrA   zcron deletion failed: %srE   )rH   rG   rI   rJ   r   r   rK   rL   r   rM   rN   rO   rP   rQ   rR   
startswithrS   rT   r-   rU   rF   )r.   r/   keyrZ   rD   r3   r[   r\   r]   r^   ra   	new_lines	skip_nextfoundmarkerr`   strippedrb   rc   s                      r   handle_cron_deletern   m   sB   H
,C++c"CsC(DCH,< #A#!GHH -
 ++l+kk)R0G#w.!--(<=bAGGI!--/VWW  ]F)3J5 . 		$	 Xi[#==w9*K8 ""$		y)D!	zz|H!&&s++ $IT"  08NOPP5>dii	*T1Bk".8 6
 	

  
		,c2X
 	

s)   H H GH 
I#III)N)pathlibr   rN   r%   r   r[   r   loggerr   rP   rG   r   r-   dictrd   rn    r   r   <module>rs      s      	    c 3 4 &B
 B
$+ B
 B
JI
 I
$+ I
 I
r   