U
    Eh
                     @   sv   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mZ d dlZ	d dl
mZ eeZdd Zdd ZdS )	    N)Path)datetimetimezone)trigger_sync_hookc              	   C   s~  t tj d|  d}| s4td|  d dS t|d}t|}W 5 Q R X |d rt	
|d t	jtjdk rtd	|  d
 dS ||d krtd|  d|  dS |d | d rt	
|d | d t	jtjdk rtd|  d|  dS d|d | d kr@|dkr@td|  d|  dS d|d | d krz|dkrztd|  d|  dS dS )Nz/conf/users/key_z.jsonzAuthentication file for key z
 not foundFrZexpiration_date)ZtzzSSH-key z is expiredZreposzUser with SSH-key z" is not authorized to access repo z" has expired permissions for repo Zallow)zgit-upload-packz% is not authorized to pull from repo wzgit-receive-packz# is not authorized to push to repo T)r   configGIT_DIRexistsloggererroropenjsonloadr   ZfromisoformatZnowr   Zutc)key_idZrepocommandZkey_filefdata r   ./actions.pyis_authorized   s,    $8  r   c                 C   sL  dd t jdd D }|s.td d S |^}}|tjkrTtd|  d S t|sjtd d S |^}}tj	 d| }zt
| ||sW d S W n8 tk
r } ztd	|  W Y d S d }~X Y nX z.tj||g| d
d |dk rt|| W nF tk
rF } z&td| d| d| d|  W 5 d }~X Y nX d S )Nc                 S   s   g | ]}| d qS )')strip).0argr   r   r   
<listcomp>1   s     zexecute.<locals>.<listcomp>ZSSH_ORIGINAL_COMMAND zNo command providedzCommand is not authorized: zNo repo name providedz/repos/z Failed to authorize with error: <   )timeoutr   zCommand  z was executed with error: )osenvirongetsplitr   Zwarningr	   ZGIT_COMMANDSlenr
   r   	Exceptionr   
subprocessrunr   )r   Zoriginal_commandr   argsZrelative_repo_pathZabsolute_repo_pather   r   r   execute0   s4    




4r+   )r'   Zloggingr   r!   pathlibr   r   r   Zconfig_loadr	   Z	sync_hookr   Z	getLogger__name__r   r   r+   r   r   r   r   <module>   s   
 