feat(ucp): NexusPBX v2.5.0 Portail Utilisateur isolé (Refs #4)

This commit is contained in:
sorcier committed 2026-11-11 18:47:25 +01:00
1 parent 7922e338e3
commit 72e43f1a9a
18 files changed
+3499 -62

No files matched your search

+37 -4
View File
@@ -13,6 +13,7 @@ require_once __DIR__ . '/../src/FirewallManager.php';
require_once __DIR__ . '/../src/PhonebookManager.php';
require_once __DIR__ . '/../src/CdrManager.php';
require_once __DIR__ . '/../src/ClusterManager.php';
require_once __DIR__ . '/../src/UcpManager.php';
// Autoloader PSR-4 automatique pour toutes les classes du namespace App
spl_autoload_register(function (string $class): void {
@@ -36,6 +37,7 @@ use App\FirewallManager;
use App\PhonebookManager;
use App\CdrManager;
use App\ClusterManager;
use App\UcpManager;
header('Content-Type: application/json; charset=utf-8');
header('Cache-Control: no-store, no-cache, must-revalidate');
@@ -96,10 +98,7 @@ try {
]);
} else {
// Journalisation de sécurité pour Fail2ban (jail nexus-web)
$clientIp = $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1';
if (str_contains($clientIp, ',')) {
$clientIp = trim(explode(',', $clientIp)[0]);
}
$clientIp = FirewallManager::resolveClientIp();
$logMsg = date('[Y-m-d H:i:s] ') . "[NEXUS-WEB-AUTH-FAIL]: " . $clientIp . " (username: " . ($username ?: 'vide') . ")\n";
@file_put_contents('/var/log/nexus_security.log', $logMsg, FILE_APPEND | LOCK_EX);
@@ -210,6 +209,7 @@ try {
'backups_count' => count(BackupManager::listBackups($db)),
'phonebook_contacts' => PhonebookManager::getContacts($db),
'phonebook_groups' => PhonebookManager::getGroups($db),
'ucp_users' => UcpManager::listUsers($db),
'metrics' => SystemMetrics::collect($db),
'previews' => [
'pjsip' => $generator->generatePjsipConf(),
@@ -273,6 +273,13 @@ try {
@chgrp($webLog, 'asterisk');
@chmod($webLog, 0664);
}
$ucpLog = FirewallManager::UCP_SECURITY_LOG;
if (file_exists($ucpLog)) {
@file_put_contents($ucpLog, '');
@chown($ucpLog, 'www-data');
@chgrp($ucpLog, 'asterisk');
@chmod($ucpLog, 0664);
}
@unlink('/tmp/nexus_fw_status_cache.json');
exec('sudo /usr/bin/systemctl restart fail2ban 2>&1 || sudo /usr/bin/fail2ban-client reload 2>&1');
@@ -2446,6 +2453,32 @@ try {
echo json_encode($res);
break;
case 'get_ucp_users':
echo json_encode([
'success' => true,
'users' => UcpManager::listUsers($db),
]);
break;
case 'save_ucp_user':
$users = UcpManager::saveUser($db, $payload);
echo json_encode([
'success' => true,
'users' => $users,
'message' => 'Compte utilisateur UCP enregistré avec succès.',
]);
break;
case 'delete_ucp_user':
$uid = (int)($payload['id'] ?? 0);
$users = UcpManager::deleteUser($db, $uid);
echo json_encode([
'success' => true,
'users' => $users,
'message' => 'Compte utilisateur UCP supprimé.',
]);
break;
case 'get_cdr':
$filters = [
'limit' => (int)($payload['limit'] ?? $_GET['limit'] ?? 100),