Nettoyage: Suppression de la persistance AstDB et adoption exclusive du standard SIP maximum_expiration pour la reconnexion automatique
This commit is contained in:
1 parent
65a62ca0e4
commit
40e36e0423
2 files changed
+4
-43
No files matched your search
@@ -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
@@ -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)"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user