Fix: add phonebook_contacts to database schema and migrations; harden install script
This commit is contained in:
1 parent
fb0997e759
commit
563a01e3c3
4 files changed
+68
-6
No files matched your search
+6
-4
@@ -304,6 +304,11 @@ if [ -z "$PHP_SOCK" ]; then
|
||||
PHP_SOCK="/run/php/php8.4-fpm.sock"
|
||||
fi
|
||||
|
||||
# Préparation des répertoires Nginx et activation de nexus-pbx
|
||||
mkdir -p /etc/nginx/sites-available /etc/nginx/sites-enabled
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
ln -sf /etc/nginx/sites-available/nexus-pbx /etc/nginx/sites-enabled/nexus-pbx
|
||||
|
||||
# Application de la configuration Nginx complète (Ports 80, 8080, 8443)
|
||||
php -r '
|
||||
require_once "/var/www/nexus-pbx/src/Database.php";
|
||||
@@ -313,9 +318,6 @@ $st = $db->query("SELECT admin_https_port, certbot_strict_port80 FROM settings W
|
||||
App\FirewallManager::applyNginxConfig((int)($st["admin_https_port"] ?? 8443), (int)($st["certbot_strict_port80"] ?? 0));
|
||||
'
|
||||
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
ln -sf /etc/nginx/sites-available/nexus-pbx /etc/nginx/sites-enabled/nexus-pbx
|
||||
|
||||
# Filtre Fail2ban Asterisk
|
||||
cat << 'EOF' > /etc/fail2ban/filter.d/asterisk.conf
|
||||
[Definition]
|
||||
@@ -391,4 +393,4 @@ systemctl restart cron && systemctl enable cron
|
||||
|
||||
# Exécution immédiate de la bannière console
|
||||
clear || true
|
||||
/usr/local/bin/nexus-banner
|
||||
/usr/local/bin/nexus-banner --force || true
|
||||
@@ -3,8 +3,8 @@
|
||||
# NexusPBX - Terminal Console Banner & Network Status (FreePBX-style)
|
||||
# ==============================================================================
|
||||
|
||||
# Ne s'exécute que pour les shells interactifs
|
||||
if [ -t 1 ]; then
|
||||
# Ne s'exécute que pour les shells interactifs ou avec l'option --force
|
||||
if [ -t 1 ] || [ "${1:-}" = "--force" ] || [ -n "${SSH_TTY:-}" ]; then
|
||||
|
||||
C_GREEN="\033[1;32m"
|
||||
C_CYAN="\033[1;36m"
|
||||
|
||||
@@ -269,6 +269,24 @@ class Database
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 13. Table phonebook_contacts : Annuaire d'Entreprise & Carnet d'Adresses IP Phone
|
||||
CREATE TABLE IF NOT EXISTS phonebook_contacts (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
extension_id INTEGER DEFAULT NULL,
|
||||
display_name VARCHAR(128) NOT NULL,
|
||||
internal_number VARCHAR(32) NOT NULL DEFAULT '',
|
||||
mobile_number VARCHAR(32) NOT NULL DEFAULT '',
|
||||
other_number VARCHAR(32) NOT NULL DEFAULT '',
|
||||
email VARCHAR(128) NOT NULL DEFAULT '',
|
||||
photo_url TEXT NOT NULL DEFAULT '',
|
||||
group_name VARCHAR(64) NOT NULL DEFAULT 'Général',
|
||||
is_internal INTEGER NOT NULL DEFAULT 1,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_phonebook_ext ON phonebook_contacts(extension_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_phonebook_group ON phonebook_contacts(group_name);
|
||||
SQL;
|
||||
|
||||
$db->exec($schema);
|
||||
@@ -282,6 +300,7 @@ class Database
|
||||
self::migrateIvrsTable($db);
|
||||
self::migrateCertificatesTable($db);
|
||||
self::migrateFeatureCodesTable($db);
|
||||
self::migratePhonebookContactsTable($db);
|
||||
|
||||
// Création du compte admin par défaut (admin / admin123) s'il n'existe aucun utilisateur
|
||||
$userCount = (int)$db->query('SELECT COUNT(*) FROM users')->fetchColumn();
|
||||
@@ -867,5 +886,27 @@ class Database
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static function migratePhonebookContactsTable(PDO $db): void
|
||||
{
|
||||
$db->exec("
|
||||
CREATE TABLE IF NOT EXISTS phonebook_contacts (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
extension_id INTEGER DEFAULT NULL,
|
||||
display_name VARCHAR(128) NOT NULL,
|
||||
internal_number VARCHAR(32) NOT NULL DEFAULT '',
|
||||
mobile_number VARCHAR(32) NOT NULL DEFAULT '',
|
||||
other_number VARCHAR(32) NOT NULL DEFAULT '',
|
||||
email VARCHAR(128) NOT NULL DEFAULT '',
|
||||
photo_url TEXT NOT NULL DEFAULT '',
|
||||
group_name VARCHAR(64) NOT NULL DEFAULT 'Général',
|
||||
is_internal INTEGER NOT NULL DEFAULT 1,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_phonebook_ext ON phonebook_contacts(extension_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_phonebook_group ON phonebook_contacts(group_name);
|
||||
");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,25 @@ class PhonebookManager
|
||||
*/
|
||||
public static function syncExtensions(PDO $db): void
|
||||
{
|
||||
$db->exec("
|
||||
CREATE TABLE IF NOT EXISTS phonebook_contacts (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
extension_id INTEGER DEFAULT NULL,
|
||||
display_name VARCHAR(128) NOT NULL,
|
||||
internal_number VARCHAR(32) NOT NULL DEFAULT '',
|
||||
mobile_number VARCHAR(32) NOT NULL DEFAULT '',
|
||||
other_number VARCHAR(32) NOT NULL DEFAULT '',
|
||||
email VARCHAR(128) NOT NULL DEFAULT '',
|
||||
photo_url TEXT NOT NULL DEFAULT '',
|
||||
group_name VARCHAR(64) NOT NULL DEFAULT 'Général',
|
||||
is_internal INTEGER NOT NULL DEFAULT 1,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_phonebook_ext ON phonebook_contacts(extension_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_phonebook_group ON phonebook_contacts(group_name);
|
||||
");
|
||||
|
||||
// 1. Récupère la cartographie des groupes d'extensions
|
||||
$egRows = $db->query("SELECT id, name, members FROM extension_groups")->fetchAll();
|
||||
$extToGroup = [];
|
||||
|
||||
Reference in new issue
Block a user