
    Sh                     r   S SK JrJrJrJrJrJrJr  S SKJ	r	  S SK
JrJrJr  S SKrS SKrS SKJr  S SKJr  \" S\SS	S
9rSS jr\R.                  \	S 5       5       r\R3                  S5      S 5       r\R3                  SS/S9S 5       r\R3                  S5      S 5       r\R3                  S5      S 5       rg)    )	Blueprintcurrent_appgrequestabortrender_templatejsonify)require_admin)SQLiteSnapshotProviderPostgresSnapshotProviderMySQLSnapshotProviderN)Path)dbstudio_execute
db_browserz/db	templates)
url_prefixtemplate_folderc                 |   [        [        R                  R                  SS5      5      nUR	                  SSS9  US-  n[
        R
                  " 5       U UUUU[        R                  S.nUR                  S5       nUR                  [        R                  " U5      S-   5        S S S 5        g ! , (       d  f       g = f)	NDB_AUDIT_LOG_DIRlogsT)exist_okparentszdb_browser_audit.log)	timestampusersqlparamssnapshotrows	client_ipa
)r   r   configgetmkdirtimer   remote_addropenwritejsondumps)	r   r   r   r   r   	audit_dirlog_pathentryfs	            6/root/zotify-API/Gonk/GonkUI/db_browser_integration.py	log_auditr0      s    [''++,>GHIOOT4O011HYY[((E 
s	q	

5!D() 
		s   ;)B--
B;c                  f    [         R                  R                  SS5      (       d  [        S5        g g )NENABLE_DB_BROWSERTi  )r   r"   r#   r        r/   enforce_admin_and_configr5      s*     !!"5t<<c
 =r4   /c                      [        S5      $ )z(Renders the placeholder UI for dbstudio.zdbstudio/base.html)r   r3   r4   r/   indexr8   "   s     /00r4   z/queryPOST)methodsc                  f  ^
 [         R                  n U R                  S5      m
U R                  S/ 5      nU R                  SS5      nT
R                  5       R	                  5       R                  S5      (       a  ST
R	                  5       ;  a&  T
S[        R                  R                  SS	5       3-  m
[        T
U5      nUR                  S
/ 5      n[        [        R                  R                  T
U[        U5      S9  [        S
U05      $ [        R                  R                  SS5      (       a  [        SS5        U(       d.  / SQn[!        U
4S jU 5       5      (       a  [        SSS.5      S4$ [#        [        R$                  R&                  5      n[        R                  R                  SS5      nS nUR                  S5      (       a  [)        [        R$                  U5      nOaUR                  S5      (       a  [+        [        R$                  U5      nO0UR                  S5      (       a  [-        [        R$                  U5      nSn	U(       a  UR/                  5       n	[        T
U5      n[        [        R                  R                  T
XUR0                  S9  [        UR0                  U	S.5      $ )Nr   r   confirmFselectlimitz LIMIT DB_BROWSER_MAX_ROWSi  r   )r   DB_BROWSER_READONLYi  zDatabase is in read-only mode.)droptruncatezdelete fromc              3   H   >#    U  H  oTR                  5       ;   v   M     g 7f)N)lower).0keywordr   s     r/   	<genexpr>run_query.<locals>.<genexpr>=   s     N9Mgciik)9Ms   "confirmation_requiredz,This is a destructive query. Please confirm.)statusmessagei  DB_BROWSER_SNAPSHOT_DIR	snapshotssqlite
postgresqlmysqlzN/A)r   r   )rows_affectedr   )r   r)   r#   striprD   
startswithr   r"   r   r0   r   current_userusernamelenr	   r   anystr	db_engineurlr   r   r   create_snapshotrowcount)datar   r<   resultr   destructive_keywordsengine_url_strsnapshot_dirsnapshot_providersnapshot_pathr   s             @r/   	run_queryrd   '   s-   <<D
((5/CXXh#Fhhy%(G
yy{%%h//#))+%W[//334I4PQRRC!#v.zz&"%!..))3SYG~&&!!"7??#78#F N9MNNN+BO} ~  BE  E  E[22667"))--.GU $$X.. 6{7L7Ll [&&|44 89N9NP\ ]&&w// 5k6K6K\ Z-==?M!#v.!..))3U[UdUdemTUUr4   z/exportc                      [        SS05      $ )NrJ   zexport placeholder)r	   r3   r4   r/   exportrf   S   s    H2344r4   z
/audit_logc                      g)Nz<h1>Audit Log Placeholder</h1>r3   r3   r4   r/   audit_log_viewrh   W   s    +r4   )NN)flaskr   r   r   r   r   r   r	   GonkUI.authr
   GonkUI.db_snapshotr   r   r   r%   r)   pathlibr   GonkUI.third_party.dbstudio.appr   __name__db_bpr0   before_requestr5   router8   rd   rf   rh   r3   r4   r/   <module>rr      s    U U U % f f   =,UKX*     S1 1 Xx()V ))VV Y5 5 \, ,r4   