Ë
    \êjì"  ã                   ó„   — d Z ddlZddlZddlZddlZddlZddlZddlZddlmZ ddl	m
Z
 h d£Zg d¢Zh d£Z G d„ d	«      Zy)
u7   
Terminal Service - bezpeÄ�nÃ© spouÅ¡tÄ›nÃ­ pÅ™Ã­kazÅ¯
é    N)Údatetime)ÚPath>   ÚdfÚduÚlsÚwcÚcatÚgitÚpipÚpwdÚechoÚfileÚfindÚgrepÚheadÚpip3ÚstatÚtailÚtreeÚwhichÚpytestÚpython3)z\brm\s+-rf\bz\bsudo\bz\bsu\bz\bchmod\s+777\bz\bcurl\bz\bwget\bz\bssh\bz\bscp\bz\bnc\bz\bncat\bz\bmkfs\bz\bdd\bz\bshutdown\bz
\breboot\bz\bkill\bz	\bpkill\bz\bmv\s+/z\bcp\s+.*\s+/etcz	>\s*/dev/z	>\s*/etc/z\|\s*bash\bz	\|\s*sh\bz`.*`z\$\(.*\)>	   úcherry-pickúfilter-branchÚgcÚrmÚpushÚcleanÚresetÚrebaseÚrevertc                   ó†   — e Zd ZdZddefd„Zdedefd„Zdefd„Z		 dd	ed
edede
def
d„Zdedefd„Zdd	ede
dee   fd„Zy)ÚTerminalServiceu-   Servis pro bezpeÄ�nÃ© spouÅ¡tÄ›nÃ­ pÅ™Ã­kazÅ¯Ú
audit_filec                 ó€   — t        |«      | _        | j                  j                  j                  dd¬«       i | _        y )NT)ÚparentsÚexist_ok)r   r$   ÚparentÚmkdirÚrunning)Úselfr$   s     úH/home/oem/CyberBrain26-unified/src/cyberbrain26/core/terminal_service.pyÚ__init__zTerminalService.__init__>   s2   € Ü˜zÓ*ˆŒØ�‰×Ñ×$Ñ$¨T¸DÐ$ÔAØ46ˆ�ó    ÚcommandÚreturnc                 ó*  — |j                  «       }|syddl}t        D ](  }|j                  |||j                  «      sŒ!dd|› �fc S  	 t        j                  |«      }|sy|d   }|t        vrdd|› d�fS |d	k(  r4t        |«      d
k  ry|d   }|t        v rdd|› d�fS h d£}||vrdd|› d�fS |dk(  rBt        |«      d
k\  r4|d   }	|	dk(  s*|	j                  d«      s|	j                  d«      sdd|	› d�fS y# t        $ r}dd|› �fcY d}~S d}~ww xY w)u)   Zkontroluje pÅ™Ã­kaz. VracÃ­ (ok, chyba).)Fu   PrÃ¡zdnÃ½ pÅ™Ã­kazr   NFu   ZakÃ¡zanÃ½ vzor: zChyba v syntaxi: u
   PÅ™Ã­kaz 'u   ' nenÃ­ v whitelistur
   é   )Fu   git vyÅ¾aduje subcommandé   zgit u    je zakÃ¡zÃ¡n>   úls-filesú	rev-parseÚaddÚlogÚdiffÚshowÚmergeÚstashÚbranchÚcommitÚstatusÚcheckoutÚworktreeu    nenÃ­ povolenr   z	--versionz-mz.pyzpython3 u    nenÃ­ povoleno)TÚ )ÚstripÚreÚFORBIDDEN_PATTERNSÚsearchÚ
IGNORECASEÚshlexÚsplitÚ
ValueErrorÚALLOWED_COMMANDSÚlenÚFORBIDDEN_GITÚ
startswithÚendswith)
r+   r/   rC   ÚpatternÚpartsÚeÚfirstÚsubcmdÚallowed_gitÚseconds
             r,   Ú_validate_commandz!TerminalService._validate_commandC   so  € à—-‘-“/ˆÙØ.ó 	Ü)ò 	<ˆGØ�y‰y˜ '¨2¯=©=Õ9ØÐ 1°'°Ð;Ð;Ò;ð	<ð
	2Ü—K‘K Ó(ˆEñ Ø.ð �a‘ˆØÔ(Ñ(Ø˜J u gÐ-AÐBÐBÐBð �EŠ>Ü�5‹z˜AŠ~Ø8Ø˜1‘XˆFØœÑ&Ø  V H¨MÐ:Ð:Ð:òˆKð
 ˜[Ñ(Ø  V H¨NÐ;Ð;Ð;ð �IÒä�5‹z˜QŠØ˜q™�Ø +Ò-°×1BÑ1BÀ4Ô1HÈFÏOÉOÐ\aÔLbØ  H¨V¨H°OÐ"DÐDÐDàøôG ò 	2ØÐ-¨a¨SÐ1Ð1Õ1ûð	2ús   Á
C8 Ã8	DÄDÄDÄDÚentryc                 ó°   — t        | j                  dd¬«      5 }|j                  t        j                  |d¬«      dz   «       ddd«       y# 1 sw Y   yxY w)u   ZapÃ­Å¡e zÃ¡znam do audit loguÚaúutf-8©ÚencodingF)Úensure_asciiú
N)Úopenr$   ÚwriteÚjsonÚdumps)r+   rW   Úfs      r,   Ú
_log_auditzTerminalService._log_auditw   sI   € ä�$—/‘/ 3°Ô9ð 	B¸QØ�G‰G”D—J‘J˜u°5Ô9¸DÑ@ÔA÷	B÷ 	Bñ 	Bús   ™*AÁAÚtask_idÚworktree_pathÚtimeoutc                 ó‚  — | j                  |«      \  }}|sDd||ddddddœ}| j                  t        j                  «       j	                  «       ||d|dœ«       |S t        |«      }|j                  «       r|j                  «       sdd|› �|ddddddœS t        t        j                  «       «      dd	 }	t        j                  «       }
	 t        j                  t        j                  |«      dt        |«      t        j                   t        j                   d
t#        t$        d«      rt$        j&                  nd¬«      }|| j(                  |	<   	 |j+                  |¬«      \  }}|j,                  }d}t?        t        j                  «       |
z
  dz  «      }| j(                  jA                  |	d«       |dk(  |rdnd|||dd |dd ||	|dœ	}| j                  t        j                  «       j	                  «       ||d
|||	|dœ«       |S # t        j.                  $ r} 	 t%        j0                  t%        j2                  |j4                  «      t6        j8                  «       n# t:        $ r |j=                  «        Y nw xY w|j+                  «       \  }}d}d
}Y �Œ#w xY w# t:        $ rž}t?        t        j                  «       |
z
  dz  «      }| j(                  jA                  |	d«       | j                  t        j                  «       j	                  «       ||d
t        |«      |dœ«       dt        |«      |ddd||	dœcY d}~S d}~ww xY w)u(   SpustÃ­ pÅ™Ã­kaz v worktree s timeoutem.FéÿÿÿÿrA   r   N)ÚsuccessÚerrorr/   Ú	exit_codeÚstdoutÚstderrÚduration_msÚexecution_id)Ú	timestampre   r/   Úallowedrk   zWorktree neexistuje: é   TÚsetsid)ÚshellÚcwdrm   rn   ÚtextÚ
preexec_fn)rg   iè  ÚTimeouti'  )	rj   rk   r/   rl   rm   rn   ro   rp   Ú	timed_out)rq   re   r/   rr   rl   ro   rp   rz   )rq   re   r/   rr   rk   ro   )!rV   rd   r   ÚutcnowÚ	isoformatr   ÚexistsÚis_dirÚstrÚuuidÚuuid4ÚtimeÚ
subprocessÚPopenrG   rH   ÚPIPEÚhasattrÚosrt   r*   ÚcommunicateÚ
returncodeÚTimeoutExpiredÚkillpgÚgetpgidÚpidÚsignalÚSIGTERMÚ	ExceptionÚkillÚintÚpop)r+   re   rf   r/   rg   Úokrk   ÚresultÚwtrp   ÚstartÚprocrm   rn   rl   rz   ro   rQ   s                     r,   ÚexecutezTerminalService.execute|   s  € ð ×*Ñ*¨7Ó3‰	ˆˆEÙà ØØ"ØØØØ Ø $ñ	ˆFð �O‰OÜ%Ÿ_™_Ó.×8Ñ8Ó:Ø"Ø"Ø Øñô ð ˆMô �-Ó ˆØ�y‰yŒ{ "§)¡)¤+à Ø0°°Ð@Ø"ØØØØ Ø $ñ	ð 	ô œ4Ÿ:™:›<Ó(¨¨!Ð,ˆÜ—	‘	“ˆðI	Ü×#Ñ#Ü—‘˜GÓ$¨EÜ˜“GÜ!—‘Ü!—‘ØÜ(/´°HÔ(=œ2Ÿ9š9À4ôˆDð *.ˆD�L‰L˜Ñ&ð!Ø!%×!1Ñ!1¸'Ð!1Ó!B‘�˜Ø ŸO™O�	Ø!�	ô œtŸy™y›{¨UÑ2°dÑ:Ó;ˆKØ�L‰L×Ñ˜\¨4Ô0ð %¨™>Ù&/™°RØ"Ø&Ø   %˜.Ø   %˜.Ø*Ø ,Ø&ñ
ˆFð �O‰OÜ%Ÿ_™_Ó.×8Ñ8Ó:Ø"Ø"ØØ&Ø*Ø ,Ø&ñ	ô 	ð ˆMøôI ×,Ñ,ò !ð Ü—I‘IœbŸj™j¨¯©Ó2´F·N±NÕCøÜ ò  Ø—I‘I–Kð úà!%×!1Ñ!1Ó!3‘�˜Ø�	Ø “	ð!ûôL ò 	ÜœtŸy™y›{¨UÑ2°dÑ:Ó;ˆKØ�L‰L×Ñ˜\¨4Ô0Ø�O‰OÜ%Ÿ_™_Ó.×8Ñ8Ó:Ø"Ø"ØÜ˜Q›Ø*ñô ð !Ü˜Q›Ø"ØØØØ*Ø ,ñ	õ 	ûð	úsj   Ã	BJ Å#H Å0BJ ÈJÈAIÉJÉI6É3JÉ5I6É6JÊJ ÊJÊJ Ê	L>Ê BL9Ì3L>Ì9L>rp   c                 ó   — | j                   j                  |«      }|sdddœS 	 t        t        d«      rBt        j                  t        j
                  |j                  «      t        j                  «       n|j                  «        t        j                  d«       |j                  «       €|j                  «        | j                   j                  |d«       d|dœS # t        $ r}dt!        |«      dœcY d}~S d}~ww xY w)	u   ZastavÃ­ bÄ›Å¾Ã­cÃ­ pÅ™Ã­kazFzExecution nenalezena)Ústoppedrk   r‹   g      à?NT)r›   rp   )r*   Úgetr†   r‡   r‹   rŒ   r�   rŽ   r�   Ú	terminater‚   ÚsleepÚpollr‘   r“   r�   r   )r+   rp   r˜   rQ   s       r,   ÚstopzTerminalService.stopö   s»   € à�|‰|×Ñ Ó-ˆÙØ$Ð/EÑFÐFð	7Ü”r˜8Ô$Ü—	‘	œ"Ÿ*™* T§X¡XÓ.´·±Õ?à—‘Ô Ü�J‰J�sŒOØ�y‰y‹{Ð"Ø—	‘	”Ø�L‰L×Ñ˜\¨4Ô0Ø#°\ÑBÐBøÜò 	7Ø$¬s°1«vÑ6Õ6ûð	7ús   ¤B7C Ã	C=Ã%C8Ã2C=Ã8C=Úlimitc                 óF  — | j                   j                  «       sg S g }t        | j                   d¬«      5 }|D ]=  }	 t        j                  |«      }|j                  d«      |k(  r|j                  |«       Œ? 	 ddd«       || d S # t        $ r Y ŒZw xY w# 1 sw Y   ŒxY w)u$   VrÃ¡tÃ­ historii pÅ™Ã­kazÅ¯ z auditurZ   r[   re   N)r$   r}   r_   ra   Úloadsrœ   Úappendr�   )r+   re   r¡   Úitemsrc   ÚlinerW   s          r,   ÚhistoryzTerminalService.history	  s¥   € à�‰×%Ñ%Ô'ØˆIØˆÜ�$—/‘/¨GÔ4ð 	¸Øò �ðÜ ŸJ™J tÓ,�EØ—y‘y Ó+¨wÒ6ØŸ™ UÔ+øñ	÷	ð �e�V�Wˆ~Ðøô !ò Ùðú÷	ð 	ús.   ¶B½:BÁ7BÂ	BÂBÂBÂBÂB N)zdata-lab/terminal_audit.jsonl)é   )é2   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r-   ÚtuplerV   Údictrd   r’   r™   r    Úlistr§   © r.   r,   r#   r#   ;   s¥   „ Ù7ñ7 3ó 7ð
2¨ð 2°ó 2ðhB ó Bð ñxàðxð ðxð ð	xð
 ðxð 
óxðt7 ð 7¨ó 7ñ&˜sð ¨3ð ¸¸T¹
ô r.   r#   )r­   ra   r‡   rG   rŽ   rƒ   r‚   r€   r   Úpathlibr   rJ   rD   rL   r#   r±   r.   r,   ú<module>r³      sJ   ðñó Û 	Û Û Û Û Û Ý Ý òÐ òÐ ò8€÷[ò [r.   