feat(ucp): NexusPBX v2.5.0 Portail Utilisateur isolé (Refs #4)
This commit is contained in:
1 parent
7922e338e3
commit
72e43f1a9a
18 files changed
+3499
-62
No files matched your search
+37
-4
@@ -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),
|
||||
|
||||
Reference in new issue
Block a user