
    ^jj                    t    d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZ d ZddZddZddd	Zdd
Zy)    )annotationsN)Path)Any)MASTER_KEY_FILESECRETS_ROOTensure_dirsc                 z   	 ddl m}  t	                t        j                         r#t        j                         j                         }n@| j                         }t        j                  |       	 t        j                  t
        d        | |      S # t        $ r}t        d      |d }~ww xY w# t        $ r Y 0w xY w)Nr   )Fernetu2   Не установлен пакет cryptography.  )cryptography.fernetr
   ImportErrorRuntimeErrorr   r   exists
read_bytesstripgenerate_keywrite_bytesoschmodOSError)r
   exckeys      @/var/www/origus_pro_usr/data/www/origus.pro/core/secret_store.py_fernetr   
   s    Z. M((*002!!###C(	HH_e, #;  ZOPVYYZ  		s)   B /B. 	B+B&&B+.	B:9B:c                    dj                  d | j                         D              }|st        d      t        | dz  S )N c              3  J   K   | ]  }|j                         s|d v s|  yw)z_-N)isalnum).0chs     r   	<genexpr>z_path.<locals>.<genexpr>   s     P"RZZ\R4Z2Ps   ##u&   Некорректный connector keyz.enc)joinlower
ValueErrorr   )	connectorsafes     r   _pathr'      s=    77P	 1PPDABBTF$-''    c                   t                t        j                  |d      j                  d      }t	        |       }|j                  t               j                  |             	 t        j                  |d       y # t        $ r Y y w xY w)NF)ensure_asciiutf-8r   )r   jsondumpsencoder'   r   r   encryptr   r   r   )r%   payloaddatapaths       r   save_secretr3   "   sl    M::gE299'BDDWY&&t,-
u s   %A< <	BBc                `   t        |       }|j                         s|rt        d|  d      i S 	 t               j	                  |j                               }t        j                  |j                  d            }t        |t              r|S i S # t        $ r}t        d|  d      |d }~ww xY w)Nu   Секреты connector «u   » не настроены.r+   uB   Не удалось прочитать секреты connector «u   ».)r'   r   r   r   decryptr   r,   loadsdecode
isinstancedict	Exception)r%   requiredr2   rawobjr   s         r   load_secretr>   ,   s    D;;=!<YKGbcdd	yi 12jjG,- d+s33 y_`i_jjmnouxxys   AB B 	B-B((B-c                `    t        |       j                         xr t        j                         S )N)r'   r   r   )r%   s    r   
configuredr@   9   s$    ""$A)?)?)AAr(   )r%   strreturnr   )r%   rA   r0   dict[str, Any]rB   None)T)r%   rA   r;   boolrB   rC   )r%   rA   rB   rE   )
__future__r   r,   r   pathlibr   typingr   core_dbr   r   r   r   r'   r3   r>   r@    r(   r   <module>rK      s5    "  	   > >$(yBr(   