feat(extensions): auto-regenerate and reload Asterisk configs instantly on save/delete (v1.4.5)

This commit is contained in:
sorcier committed 2026-11-04 10:39:28 +01:00
1 parent 07b53b8002
commit 26d832c69f
3 files changed
+44 -6

No files matched your search

+39 -1
View File
@@ -140,7 +140,7 @@ try {
$installedVerData = file_exists("{$appDir}/version.json")
? json_decode((string)file_get_contents("{$appDir}/version.json"), true)
: [];
$installedVer = $installedVerData['version'] ?? '1.4.4';
$installedVer = $installedVerData['version'] ?? '1.4.5';
echo json_encode([
'success' => true,
@@ -369,6 +369,13 @@ try {
// Synchronisation automatique de l'annuaire d'entreprise
PhonebookManager::syncExtensions($db);
// Régénération automatique des fichiers Asterisk et rechargement PJSIP/Dialplan en direct
$generator->writeAllConfigs();
try {
$ami = AmiClient::fromDatabase($db);
$ami->reloadPjsipAndDialplan();
} catch (\Throwable $e) {}
$modeBadge = $transport === 'tls' ? 'Distant (TLS + SRTP)' : ($encryption ? 'Interne (UDP + SRTP)' : 'Interne (UDP)');
echo json_encode([
'success' => true,
@@ -381,6 +388,13 @@ try {
$stmt = $db->prepare('DELETE FROM extensions WHERE id = :id');
$stmt->execute([':id' => $id]);
PhonebookManager::syncExtensions($db);
$generator->writeAllConfigs();
try {
$ami = AmiClient::fromDatabase($db);
$ami->reloadPjsipAndDialplan();
} catch (\Throwable $e) {}
echo json_encode([
'success' => true,
'message' => 'Poste téléphonique supprimé de la base SQLite.',
@@ -440,6 +454,12 @@ try {
]);
}
$generator->writeAllConfigs();
try {
$ami = AmiClient::fromDatabase($db);
$ami->reloadPjsipAndDialplan();
} catch (\Throwable $e) {}
echo json_encode([
'success' => true,
'message' => "Groupe d'appel {$extension} ({$name}) sauvegardé.",
@@ -449,6 +469,12 @@ try {
case 'delete_group':
$id = (int)($payload['id'] ?? 0);
$db->prepare('DELETE FROM groups WHERE id = :id')->execute([':id' => $id]);
$generator->writeAllConfigs();
try {
$ami = AmiClient::fromDatabase($db);
$ami->reloadPjsipAndDialplan();
} catch (\Throwable $e) {}
echo json_encode([
'success' => true,
'message' => "Groupe de sonnerie supprimé.",
@@ -540,6 +566,12 @@ try {
]);
}
$generator->writeAllConfigs();
try {
$ami = AmiClient::fromDatabase($db);
$ami->reloadPjsipAndDialplan();
} catch (\Throwable $e) {}
echo json_encode([
'success' => true,
'message' => "Groupe de téléavertissement {$extension} ({$name}) sauvegardé.",
@@ -549,6 +581,12 @@ try {
case 'delete_paging_group':
$id = (int)($payload['id'] ?? 0);
$db->prepare('DELETE FROM paging_groups WHERE id = :id')->execute([':id' => $id]);
$generator->writeAllConfigs();
try {
$ami = AmiClient::fromDatabase($db);
$ami->reloadPjsipAndDialplan();
} catch (\Throwable $e) {}
echo json_encode([
'success' => true,
'message' => "Groupe de téléavertissement supprimé.",
+1 -1
View File
@@ -18,7 +18,7 @@ $companyLogo = trim($branding['company_logo'] ?? '');
$hasBranding = !empty($companyName) || !empty($companyLogo);
$appVerData = file_exists(__DIR__ . '/../version.json') ? json_decode((string)file_get_contents(__DIR__ . '/../version.json'), true) : [];
$appVersion = $appVerData['version'] ?? '1.4.4';
$appVersion = $appVerData['version'] ?? '1.4.5';
?>
<!DOCTYPE html>
<html lang="fr" class="h-full">
+4 -4
View File
@@ -1,12 +1,12 @@
{
"version": "1.4.4",
"version": "1.4.5",
"codename": "Helios",
"release_date": "2026-11-04",
"min_php_version": "8.2",
"changelog": [
"Application instantanée des mots de passe SIP et configurations des postes dans Asterisk (rechargement PJSIP en temps réel)",
"Suppression du délai d'application sur les postes, groupes de sonnerie et groupes de téléavertissement",
"Fiabilisation maximale de la mise à jour (rechargement web asynchrone non-bloquant et gestion d'erreurs tolérante)",
"Sonde automatique de secours évitant toute fausse alerte réseau sous Safari / WebKit lors du rechargement des services",
"Nouvelle boîte modale élégante et personnalisée pour confirmer le lancement des mises à jour",
"Rendu serveur natif garanti du logo et nom de l'exploitant sur la page de connexion"
"Nouvelle boîte modale élégante et personnalisée pour confirmer le lancement des mises à jour"
]
}