o
    sg                     @   s   U d dl Z d dlmZmZmZmZmZmZ d dlm	Z	m
Z
 d dlmZ d dlZe  ededdZe dZe d	Ze	eeZe
ed
< dZeddd Zejddgddd Zejddgddd Zejddgddd ZdS )    N)	Blueprintrender_templaterequestredirecturl_forflash)create_clientClient)load_dotenvmod_managementz/mod-management)
url_prefixSUPABASE_URLSUPABASE_KEYsupabasez/home/minecraft/server/mods/c               
   C   s   zdd t ttddD } W n ty    g } tdd Y nw ztdd	d	d

 j}W n tyN } zg }td| d W Y d}~nd}~ww td| |dS )u   모드 관리 페이지c                 S   s$   g | ]\}}| d r||dqS )z.jar)idname)endswith).0idxfile r   4/var/www/html/minecraft/app/routes/mod_management.py
<listcomp>   s    z"mod_management.<locals>.<listcomp>   )startz9Mods directory not found. Please check your server setup.dangermod_requests*statuspendingzFailed to fetch mod requests: Nzmod_management.html)installed_modsr   )	enumerateoslistdirMODS_DIRFileNotFoundErrorr   r   tableselecteqexecutedata	Exceptionr   )r!   r   er   r   r   r      s    
"z/deletePOST)methodsc               
   C   s   t jd} z'tjt| }tj|r#t| t	d|  dd n	t	d|  dd W n t
yJ } zt	d|  d| d W Y d	}~nd	}~ww ttd
S )u   설치된 모드 삭제mod_nameMod 'z' deleted successfully.successz' not found.r   zFailed to delete mod 'z': Nmod_management.mod_management)r   formgetr#   pathjoinr%   existsremover   r,   r   r   )r0   	file_pathr-   r   r   r   
delete_mod+   s   
"r;   z/approvec            	   
   C   sn  t jd} ztddd|  jd }|d }|d }t	 d| }t
|}td	|j d
|  |jdkrtjttj|}t|d}||j W d   n1 s]w   Y  td|  tdddid|   td| d| dd ntd|j W n! ty } ztd|  td| d W Y d}~nd}~ww ttdS )u   모드 요청 승인
request_idr   r   r   r   r:   r   z/storage/v1/object/public/mods/zSupabase download response: z, URL:    wbNzFile saved to r   approvedr1   z)' approved and installed successfully at .r2   z"Failed to download mod file: HTTP zError during mod approval: zFailed to approve mod request: r   r3   )r   r4   r5   r   r'   r(   r)   r*   r+   r   requestsprintstatus_coder#   r6   r7   r%   basenameopenwritecontentupdater   r,   r   r   )	r<   mod_requestr:   r0   
public_urlresponseserver_file_pathfr-   r   r   r   approve_mod_request=   s0   "

 rN   z/rejectc               
   C   s|   t jd} ztdddid|   tdd W n t	y7 } ztd| d	 W Y d
}~nd
}~ww t
tdS )u   모드 요청 거절r<   r   r   rejectedr   z"Mod request rejected successfully.r2   zFailed to reject mod request: r   Nr3   )r   r4   r5   r   r'   rH   r)   r*   r   r,   r   r   )r<   r-   r   r   r   reject_mod_requestd   s    rP   )r#   flaskr   r   r   r   r   r   r   r   r	   dotenvr
   rA   __name__bpgetenvr   r   __annotations__r%   router   r;   rN   rP   r   r   r   r   <module>   s&   
  




&