ruạṛ
a �u:j� � @ s^ d dl Z d dlZd dlZd dlmZmZ d dlmZmZm Z dZ dZdZdZ G dd � d �ZdS ) � N)�Optional�Dict)�run_sudo_as_user�read_file_as_owner�is_directoryz # --- BART_MAINTENANCE_START ---z# --- BART_MAINTENANCE_END ---z# created_by=BARTa_ <!doctype html><meta charset='utf-8'><title>Maintenance</title><meta http-equiv='Cache-Control' content='no-store, no-cache, must-revalidate'><meta http-equiv='Pragma' content='no-cache'><meta http-equiv='Expires' content='0'><style>html,body{height:100%;margin:0}body{display:flex;align-items:center;justify-content:center;font:16px/1.4 system-ui}.box{max-width:640px;padding:24px;border:1px solid #ddd;border-radius:12px;text-align:center}h1{margin:0 0 8px 0;font-size:22px}</style><div class='box'><h1>We’ll be right back</h1><p>The site is temporarily unavailable while we restore files.</p></div>c @ s� e Zd Zd$ed�dd�Zeeee d�dd�Zee d�d d �Z eed�dd �Z eeeed�dd�Zeed�dd�Zd%eeeed�dd�Z eed�dd�Zeed�dd�Zeed�dd�Zed �d!d"�Zd#S )&�MaintenanceManagerF)�allow_create_temp_htaccessc C s || _ || _d S )N)�logr )�selfZactivity_loggerr � r �P/opt/bart/bart_venv/lib/python3.9/site-packages/app/utils/maintenance_manager.py�__init__ s zMaintenanceManager.__init__)�username� abs_dest_path�returnc C sf t |�r|n tj�|�}tj�|d�}| j�d|� �� |}t||�}d}|d u r�| jsp| j�d|� d�� d S t � d�}| � |||d� d}| j�d |� �� n| j�d |� �� t|vs�t|v�r|� d�r�|n|d | �� }| � |||d� | j�d|� �� n| j�d|� �� tj�|d �} tj�| ��sX| � | t|d� | j�d| � �� ||||d�S )Nz .htaccesszSearching for .htaccess in FzNo .htaccess in z; skipping maintenance toggle.� �0644TzCreated temporary .htaccess at zFound .htaccess at zAdded maintenance block to z%Maintenance block already present in �_bart_maintenance.htmlzCreated maintenance page )� target_dir�htaccess�created_temp_htaccessr )r �os�path�dirname�joinr �noter r �BART_CREATED_TAG� _atomic_write�BART_HTACCESS_START�BART_HTACCESS_END�endswith�_maintenance_block�exists�_DEFAULT_MAINTENANCE_HTML) r r r r r �run_as_userZcurrent_htaccess�created_temp�new_content�maintenance_htmlr r r �enable_for_path# s: �z"MaintenanceManager.enable_for_path)�tokenc C s� |sd S |d }|d }|d }|d }t j�|�r�| �|�}| �|�}|rv| �|�rv| �||� | j�d|� �� n"| � |||d� | j�d|� �� t j� |d�}t j�|�r�| �||� | j�d |� �� d S ) Nr r r r zRemoved temporary .htaccess at r zRemoved maintenance block from r zRemoved )r r �isfile� _read_text�_strip_block�_is_only_tag_or_empty�_rmr r r r r"