Nettoyage: Suppression de la persistance AstDB et adoption exclusive du standard SIP maximum_expiration pour la reconnexion automatique

This commit is contained in:
sorcier committed 2026-11-04 12:48:50 +01:00
1 parent 65a62ca0e4
commit 40e36e0423
2 files changed
+4 -43

No files matched your search

-39
View File
@@ -257,17 +257,6 @@ class BackupManager
} }
$manifestFiles['asterisk_custom_conf'] = ['count' => count(glob($destConfs . '/*'))]; $manifestFiles['asterisk_custom_conf'] = ['count' => count(glob($destConfs . '/*'))];
// E2. Base interne Asterisk AstDB (contacts enregistrés, renvois, DND)
$astDbPath = '/var/lib/asterisk/astdb.sqlite3';
if (file_exists($astDbPath)) {
$destAstDb = $stageDir . '/astdb.sqlite3';
copy($astDbPath, $destAstDb);
$manifestFiles['astdb.sqlite3'] = [
'size' => filesize($destAstDb),
'md5' => md5_file($destAstDb),
];
}
// F. Avatars et photos des contacts de l'annuaire (/var/www/nexus-pbx/public/avatars/) // F. Avatars et photos des contacts de l'annuaire (/var/www/nexus-pbx/public/avatars/)
$publicAvatars = '/var/www/nexus-pbx/public/avatars'; $publicAvatars = '/var/www/nexus-pbx/public/avatars';
if (is_dir($publicAvatars)) { if (is_dir($publicAvatars)) {
@@ -606,15 +595,6 @@ class BackupManager
exec("chmod -R 775 " . escapeshellarg($destAvatars)); exec("chmod -R 775 " . escapeshellarg($destAvatars));
} }
// 9c. Restauration de la base interne AstDB (contacts enregistrés, renvois, DND)
if (file_exists($stageDir . '/astdb.sqlite3')) {
$targetAstDb = '/var/lib/asterisk/astdb.sqlite3';
copy($stageDir . '/astdb.sqlite3', $targetAstDb);
@chown($targetAstDb, 'asterisk');
@chgrp($targetAstDb, 'asterisk');
@chmod($targetAstDb, 0664);
}
// 10. Régénération intégrale des configurations Asterisk avec la nouvelle base restaurée // 10. Régénération intégrale des configurations Asterisk avec la nouvelle base restaurée
Database::resetConnection(); Database::resetConnection();
$dbFresh = Database::getConnection(true); $dbFresh = Database::getConnection(true);
@@ -629,25 +609,6 @@ class BackupManager
$reloadRes = ['success' => false, 'error' => $e->getMessage()]; $reloadRes = ['success' => false, 'error' => $e->getMessage()];
} }
// 12. Notification de réenregistrement immédiat des téléphones IP (check-sync)
try {
$extList = $dbFresh->query("SELECT extension FROM extensions WHERE enabled = 1")->fetchAll(\PDO::FETCH_COLUMN);
foreach ($extList as $extItem) {
$ami->runCommand("pjsip send notify snom-check-cfg endpoint {$extItem}");
}
$astContacts = $ami->runCommand("database show registrar/contact");
foreach (preg_split('/\r?\n/', $astContacts) ?: [] as $cLine) {
if (preg_match('/^\/registrar\/contact\/([^;]+);@[a-f0-9]+:\s*(\{.*\})/i', $cLine, $cM)) {
$meta = json_decode($cM[2], true);
if (!empty($meta['uri'])) {
$ami->runCommand("pjsip send notify snom-check-cfg uri " . escapeshellarg($meta['uri']));
}
}
}
} catch (Exception $e) {
// Silencieux si échec d'envoi NOTIFY
}
return [ return [
'success' => true, 'success' => true,
'message' => 'Restauration complète effectuée avec succès ! Base de données réintégrée, fichiers audio, messageries vocales et configurations Asterisk rechargées.', 'message' => 'Restauration complète effectuée avec succès ! Base de données réintégrée, fichiers audio, messageries vocales et configurations Asterisk rechargées.',
+4 -4
View File
@@ -4,9 +4,9 @@
"release_date": "2026-11-04", "release_date": "2026-11-04",
"min_php_version": "8.2", "min_php_version": "8.2",
"changelog": [ "changelog": [
"Sauvegarde et restauration intégrale de la base interne Asterisk AstDB (contacts enregistrés, renvois, DND)", "Plafond d'expiration d'enregistrement SIP standard (maximum_expiration = 300s, default = 120s) garantissant la reconnexion automatique rapide de tous les postes (1 à 3 min)",
"Notification et synchronisation SIP immédiate des téléphones IP (check-sync) après toute restauration", "Support standard PJSIP check-sync et resync sans altération de l'état système",
"Plafond d'expiration d'enregistrement SIP (maximum_expiration = 300s, default = 120s) empêchant les téléphones de rester déconnectés", "Nettoyage et isolation stricte des sauvegardes (base NexusPBX, sons, spools voicemail, certificats)",
"Support universel PJSIP Notify et point de sortie par défaut pour la réinitialisation à chaud des téléphones" "Résolution définitive et propre des conflits de préfixes Dialplan sur les SVI/IVR (*801-*899)"
] ]
} }