feat(extensions): auto-regenerate and reload Asterisk configs instantly on save/delete (v1.4.5)
This commit is contained in:
1 parent
07b53b8002
commit
9b2533695e
3 files changed
+44
-6
No files matched your search
+39
-1
@@ -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
@@ -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
@@ -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"
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user