diff --git a/.gitignore b/.gitignore index abbd33b..7e93550 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ /storage/*.sqlite /storage/*.sqlite-shm /storage/*.sqlite-wal +/storage/*.prerestore.* # Données dynamiques et métriques /storage/metrics_prev.json diff --git a/install.sh b/install.sh index 5c31fe9..fe39281 100755 --- a/install.sh +++ b/install.sh @@ -200,6 +200,28 @@ EOF_OVERRIDE done systemctl daemon-reload +# Configuration des limites d'upload PHP (Restauration d'archives 512 Mo & Sons volumineux) +for php_dir in /etc/php/*; do + if [ -d "$php_dir/fpm/conf.d" ]; then + cat << 'EOF_PHP' > "$php_dir/fpm/conf.d/99-nexus.ini" +upload_max_filesize = 512M +post_max_size = 512M +memory_limit = 512M +max_execution_time = 300 +max_input_time = 300 +EOF_PHP + fi + if [ -d "$php_dir/cli/conf.d" ]; then + cat << 'EOF_PHP' > "$php_dir/cli/conf.d/99-nexus.ini" +upload_max_filesize = 512M +post_max_size = 512M +memory_limit = 512M +max_execution_time = 300 +max_input_time = 300 +EOF_PHP + fi +done + # 5. Configuration d'Asterisk & Certificats TLS de secours echo -e "${C_GREEN}[4/8] Configuration du moteur Asterisk PJSIP & AMI...${C_RESET}" diff --git a/public/api.php b/public/api.php index cfb1080..6532f7b 100644 --- a/public/api.php +++ b/public/api.php @@ -1992,7 +1992,18 @@ try { case 'upload_restore_backup': if (empty($_FILES['backup_file']['tmp_name']) || !is_uploaded_file($_FILES['backup_file']['tmp_name'])) { - throw new InvalidArgumentException("Aucun fichier de sauvegarde valide n'a été téléversé."); + $errCode = $_FILES['backup_file']['error'] ?? null; + $errMessages = [ + UPLOAD_ERR_INI_SIZE => "L'archive dépasse la taille maximale autorisée par le serveur (upload_max_filesize).", + UPLOAD_ERR_FORM_SIZE => "L'archive dépasse la taille maximale spécifiée dans le formulaire.", + UPLOAD_ERR_PARTIAL => "Le fichier de sauvegarde n'a été que partiellement téléversé.", + UPLOAD_ERR_NO_FILE => "Aucun fichier de sauvegarde n'a été sélectionné.", + UPLOAD_ERR_NO_TMP_DIR => "Dossier temporaire manquant sur le serveur.", + UPLOAD_ERR_CANT_WRITE => "Échec d'écriture du fichier temporaire sur le disque.", + UPLOAD_ERR_EXTENSION => "Une extension PHP a arrêté le téléversement de l'archive.", + ]; + $msg = $errMessages[$errCode] ?? "Aucun fichier de sauvegarde valide n'a été téléversé (erreur de transfert ou fichier trop volumineux)."; + throw new InvalidArgumentException($msg); } $origName = $_FILES['backup_file']['name'] ?? 'backup.tar.gz'; diff --git a/scripts/fix.sh b/scripts/fix.sh index 4b95959..c12bc72 100755 --- a/scripts/fix.sh +++ b/scripts/fix.sh @@ -99,6 +99,28 @@ EOF_OVERRIDE done systemctl daemon-reload +echo "-> Configuration des limites d'upload PHP (512 Mo)..." +for php_dir in /etc/php/*; do + if [ -d "$php_dir/fpm/conf.d" ]; then + cat << 'EOF_PHP' > "$php_dir/fpm/conf.d/99-nexus.ini" +upload_max_filesize = 512M +post_max_size = 512M +memory_limit = 512M +max_execution_time = 300 +max_input_time = 300 +EOF_PHP + fi + if [ -d "$php_dir/cli/conf.d" ]; then + cat << 'EOF_PHP' > "$php_dir/cli/conf.d/99-nexus.ini" +upload_max_filesize = 512M +post_max_size = 512M +memory_limit = 512M +max_execution_time = 300 +max_input_time = 300 +EOF_PHP + fi +done + echo "-> Génération des configurations Asterisk..." php -r ' require_once "/var/www/nexus-pbx/src/Database.php"; diff --git a/src/FirewallManager.php b/src/FirewallManager.php index 619b031..55c2de2 100644 --- a/src/FirewallManager.php +++ b/src/FirewallManager.php @@ -380,7 +380,7 @@ server { listen [::]:80 default_server; server_name _; - client_max_body_size 64M; + client_max_body_size 512M; root /var/www/nexus-pbx/public; index index.php; @@ -429,7 +429,7 @@ server { ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; - client_max_body_size 64M; + client_max_body_size 512M; root /var/www/nexus-pbx/public; index index.php;