VitalPBX : Différence entre versions

De SLM - MediaWiki
 
(39 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 
[[VOIP|Retour]]
 
[[VOIP|Retour]]
 +
==Release Note==
 +
=== Version EMMC ===
 +
[[vitalpbx_releasenote_V1.1|V1.1 - 28/03/2021]]
 +
 +
[[vitalpbx_releasenote_V1.2|V1.2 - 18/04/2021]]
 +
 +
[[vitalpbx_releasenote_V1.3|V1.3 - 22/05/2021]]
 +
 +
=== Version MSata ===
 +
[[vitalpbx_releasenote_V2.1|V2.1 - 11/09/2021]]
 +
 +
[[vitalpbx_releasenote_V2.2|V2.2 - 15/11-2021]]
 +
 +
[[vitalpbx_releasenote_V2.3|V2.3 - 25/03-2022]]
 +
 +
=== [[vitalpbx_releasenote_Roadmap|Roadmap]] ===
  
 
==Trunk SIP==
 
==Trunk SIP==
Ligne 50 : Ligne 66 :
  
 
/etc/asterisk/vitalpbx/sip__20-1-registers.conf
 
/etc/asterisk/vitalpbx/sip__20-1-registers.conf
 +
[general](+)
 +
register => trunkyyyyy@test.sewan.eu:PASSzzzzz@37.97.65.78:5070
  
 
====Appel Entrant====
 
====Appel Entrant====
Ligne 65 : Ligne 83 :
  
 
Ajouter le dialplan ci-dessous
 
Ajouter le dialplan ci-dessous
  <nowiki>[trk-1-in-custom]
+
  <nowiki>; *********************************************************************************
exten => _.,1,NoOp(Incoming call through: Trunk_sip_Sewan)
+
; @Date : Sun Apr 18 12:54:49 GMT 2021
same => n,Set(__TRUNK_ID=1)
+
; @Document : extensions__50-1-dialplan_custom.conf
same => n,Set(CDR(trunk)=1)
+
; @Author : Sébastien LE MOAL <slemoal@tiscom.fr>
same => n,Set(__DID_NUMBER=${EXTEN})
+
; @Platform : VitalPBX 3.0.6-2
same => n,Set(CDR(did)=${EXTEN})
+
; *********************************************************************************
same => n,Set(DID=${EXTEN})
+
 
same => n,Set(DID=${IF($["${CHANNEL(channeltype)}"="SIP"]?${CUT(CUT(SIP_HEADER(To),@,1),:,2)}:${CUT(CUT(PJSIP_HEADE$
+
[trk-1-in-custom]
same => n,Goto(default-trunk,${DID},1)</nowiki>
+
exten => _s,1,NoOp(Incoming call through: Trunk_sip_Sewan)
 +
same => n,Set(DID=${CUT(CUT(SIP_HEADER(To),@,1),:,2)})
 +
same => n,Goto(trk-1-in,${DID},1)
 +
</nowiki>
  
 
Mettre les droits d’exécution
 
Mettre les droits d’exécution
Ligne 224 : Ligne 245 :
  
 
[[Fichier:COS-Exten.png]]
 
[[Fichier:COS-Exten.png]]
 +
 +
==DynHost==
 +
Afin d'assurer une télémaintenance ou service externe dans le cas ou le client dispose d'une IP public dynamique, il est possible d'utiliser le service Dynhost d'OVH dans le cadre de l'abonnement au domaine tiscom.fr
 +
 +
===Configuration OVH===
 +
Se rendre sur la page d'administration:
 +
https://www.ovh.com/manager/
 +
 +
====Ajouter un DynHost====
 +
Avant de pouvoir utiliser le DynHost, vous devez le déclarer dans l’interface client OVH. Pour cela sélection le domaine dans lequel vous souhaitez déclarer votre DynHost.
 +
 +
Cliquez ensuite sur l’onglet DynHost. Cet onglet vous affiche les DynHost déjà déclaré ainsi que les adresses IP courantes. Pour créer votre DynHost cliquez sur Ajouter un DynHost (à droite).
 +
 +
[[Fichier:ovh-add-dynhost1.png]]
 +
 +
La fenêtre suivante s’affiche, choisissez le sous-domaine voulu et entré l’IP 0.0.0.0. Cette adresse sera mise a jour par le script une fois celui-ci configuré.
 +
 +
[[Fichier:ovh-add-dynhost2.png]]
 +
 +
====Créer un identifiant DynHost====
 +
Vous devrez maintenant créer un utilisateur ayant le droit de mettre à jour votre Dynhost précédemment créé. Pour cela cliquer sur Gérer les accès de la page précédente
 +
[[Fichier:ovh-add-acces1.png]]
 +
 +
cliquer sur Créer un identifiant, la popup suivante s’ouvre.
 +
 +
[[Fichier:ovh-add-acces2.png]]
 +
 +
Spécifiez un suffixe d’identifiant, le nom de domaine que vous avez spécifié tout à l’heure ou * pour autoriser tout les sous domaine dynhost et le mot de passe.
 +
 +
Enregistrez bien ces informations car elles devront etre renseignés dans le script.
 +
 +
[[Fichier:ovh-add-acces3.png]]
 +
 +
===Configuration IPBX===
 +
====Script DynHost====
 +
Se connecter en ssh ou console sur le serveur.
 +
 +
Installer le package "dnsutils" :
 +
yum install dnsutils
 +
 +
Créer le script
 +
nano /var/lib/vitalpbx/scripts/dynhost.sh
 +
 +
Ajouter les lignes suivante:
 +
 +
<nowiki>#!/usr/bin/env sh
 +
#########################################################
 +
# Création :      Sebastien Lemoal <slemoal@tiscom.fr> #
 +
# Modifications :                                    #
 +
######################################################
 +
 +
# Tous droits réservés
 +
 +
######################
 +
#      CHANGELOG    #
 +
#########################################################
 +
# 2021/07 - Script initial - slemoal                  #
 +
#######################################################
 +
 +
#######################################
 +
# Définition des Variables          #
 +
#####################################
 +
HOST=$(uname -n) # Se change depuis l'interface web "Admin -> Network -> Nom d'hote"
 +
LOGIN=domaine-id
 +
PASSWORD=LenSuperMotDePasseAutogénéréDuCompteOvh
 +
 +
PATH_LOG=/var/log/dynhostovh.log
 +
 +
HOST_IP=$(dig +short $HOST A) # Récupérer l'IP du domaine OVH
 +
 +
# Récupérer l'IP PUBLIC
 +
CURRENT_IP=$(curl ifconfig.me)
 +
echo curl "ifconfig.me="$CURRENT_IP
 +
if [ -z $CURRENT_IP ]
 +
then
 +
  CURRENT_IP=$(dig +short myip.opendns.com @resolver1.opendns.com)
 +
  echo curl "dig + short myip.opendns.com="$CURRENT_IP
 +
fi
 +
CURRENT_DATETIME=$(date -R)
 +
 +
#######################################
 +
# Mise à jour du dynhost si besoin  #
 +
#####################################
 +
 +
if [ -z $CURRENT_IP ] || [ -z $HOST_IP ]
 +
then
 +
  echo "[$CURRENT_DATETIME]: No IP retrieved" >> $PATH_LOG
 +
  echo "[$CURRENT_DATETIME]: No IP retrieved"
 +
else
 +
  if [ "$HOST_IP" != "$CURRENT_IP" ]
 +
  then
 +
    RES=$(curl -m 5 -L --location-trusted --user "$LOGIN:$PASSWORD" "https://www.ovh.com/nic/update?system=dyndns&hostname=$HOST&myip=$CURRENT_IP")
 +
    echo "[$CURRENT_DATETIME]: IPv4 has changed - request to OVH DynHost: $RES" >> $PATH_LOG
 +
    echo "[$CURRENT_DATETIME]: IPv4 has changed - request to OVH DynHost: $RES"
 +
  else
 +
    echo "L'IP n'a pas changé, pas de mise à jour necessaire"
 +
  fi
 +
    echo "HOST_IP="$HOST_IP
 +
    echo "CURRENT_IP="$CURRENT_IP
 +
fi</nowiki>
 +
 +
Donner les droits
 +
chmod +x /var/lib/vitalpbx/scripts/dynhost.sh
 +
 +
====Configuration Web GUI====
 +
Se connecter en page web à l'interface de l'IPBX
 +
 +
=====Définir le nom d'hôte=====
 +
Admin -> Network -> Paramètre réseau
 +
Celui ci doit être identique au sous domaine créer sur OVH
 +
 +
[[Fichier:Voice-host.png]]
 +
 +
=====Installer l'Addon Task Manager=====
 +
Admin -> Add-ons -> Task Manager
 +
 +
=====Créer un profil Cron=====
 +
PABX -> Outils -> Profils Cron
 +
 +
[[Fichier:Voice-Profil-cron.png]]
 +
 +
=====Créer une tache Cron=====
 +
PABX -> Outils -> Task Manager
 +
 +
[[Fichier:Voice-tache-cron.png]]
 +
 +
== Bip au démarrage et arrêt ==
 +
=== Installation package Beep ===
 +
cd /tmp/
 +
wget ftp://ftp.pbone.net/mirror/dag.wieers.com/redhat/el7/en/x86_64/dag/RPMS/beep-1.3-1.el7.rf.x86_64.rpm
 +
yum localinstall -y beep-1.3-1.el7.rf.x86_64.rpm
 +
rm -f beep-1.3-1.el7.rf.x86_64.rpm
 +
 +
=== Créer le service ===
 +
nano /etc/init.d/beep
 +
 +
<nowiki>! /bin/sh -e
 +
### BEGIN INIT INFO
 +
# Provides:          beep
 +
# Required-Start:    $syslog
 +
# Required-Stop:    $syslog
 +
# Default-Start:    2 3 4 5
 +
# Default-Stop:      0 1 6
 +
# Short-Description: beep
 +
# Description:
 +
#
 +
### END INIT INFO
 +
 +
# Carry out specific functions (start, stop, restart etc)
 +
case "$1" in
 +
  start)
 +
    beep -l 75 -f 500 -n -l 75 -f 1000 -n -l 75 -f 2000 -n -l 75 -f 3000
 +
    ;;
 +
  stop)
 +
    beep -l 75 -f 3000 -n -l 75 -f 2000 -n -l 75 -f 1000 -n -l 75 -f 500
 +
    ;;
 +
  *)
 +
    echo "Usage: /etc/init.d/beep {start|stop}"
 +
    exit 1
 +
    ;;
 +
esac
 +
 +
exit 0</nowiki>
 +
 +
=== Mettre les droits ===
 +
sudo chmod a+x /etc/init.d/beep
 +
 +
=== Activer au prochain démarrage ===
 +
systemctl enable beep.service
 +
 +
=== Redemarrer ===
 +
systemctl reboot
 +
 +
=== Tester ===
 +
systemctl reboot
 +
 +
==Zabbix==
 +
===[[Zabbix_Agent_VitalPBX_proxy|integration et Supervision via Zabbix proxy]]===
 +
 +
===Script mise à jour host===
 +
Se connecter en ssh ou console sur le serveur.
 +
 +
Créer le script
 +
nano /var/lib/vitalpbx/scripts/host_zabbix.sh
 +
 +
Ajouter les lignes suivante:
 +
 +
<nowiki>#!/bin/bash
 +
#########################################################
 +
# Création :      Sébastien Le Moal <slemoal@tiscom.fr> #
 +
# Modifications :                                    #
 +
######################################################
 +
 +
# Tous droits réservés
 +
 +
######################
 +
#      CHANGELOG    #
 +
#########################################################
 +
# 2021/11 - Script initial - slemoal                  #
 +
#######################################################
 +
 +
#######################################
 +
# Définition des Variables          #
 +
#####################################
 +
 +
host_zabbix=`uname -n`
 +
path_zabbix_proxy=/etc/zabbix/zabbix_proxy.conf
 +
path_zabbix_agent2=/etc/zabbix/zabbix_agent2.conf
 +
 +
#######################################
 +
# Début du script                    #
 +
#####################################
 +
# Proxy zabbix
 +
if  ! grep -q $host_zabbix $path_zabbix_proxy;
 +
then
 +
sed -i "s/\(Hostname=\).*/\Hostname=${host_zabbix}/" ${path_zabbix_proxy}
 +
/bin/systemctl restart zabbix-proxy.service
 +
echo "zabbix proxy: Hostname="$host_zabbix $path_zabbix_proxy "modifié"
 +
else
 +
echo "zabbix proxy: Hostname="$host_zabbix" est à jour"
 +
fi
 +
 +
# Agent2 Zabbix
 +
if  ! grep -q $host_zabbix $path_zabbix_agent2;
 +
then
 +
sed -i "s/\(Hostname=\).*/\Hostname=${host_zabbix}/" ${path_zabbix_agent2}
 +
/bin/systemctl restart zabbix-agent2.service
 +
echo "zabbix agent2: Hostname="$host_zabbix $path_zabbix_proxy "modifié"
 +
else
 +
echo "zabbix agent2: Hostname="$host_zabbix" est à jour"
 +
fi</nowiki>
 +
 +
Donner les droits
 +
chmod +x /var/lib/vitalpbx/scripts/host_zabbix.sh
 +
 +
====Configuration Web GUI====
 +
Se connecter en page web à l'interface de l'IPBX
 +
 +
=====Définir le nom d'hôte=====
 +
Admin -> Network -> Paramètre réseau
 +
Celui ci doit être identique au sous domaine créer sur OVH
 +
 +
[[Fichier:Voice-host.png]]
 +
 +
=====Installer l'Addon Task Manager=====
 +
Admin -> Add-ons -> Task Manager
 +
 +
=====Créer un profil Cron=====
 +
PABX -> Outils -> Profils Cron
 +
 +
[[Fichier:Voice-Profil-cron.png]]
 +
 +
=====Créer une tache Cron=====
 +
PABX -> Outils -> Task Manager
 +
 +
[[Fichier:Voice-tache-cron2.png]]
 +
 +
== MOTD personnalisé ==
 +
Lors d'une mise à jour, le motd vital PBX est réinitialisé, nous ne pouvons donc pas simplement le modifier.
 +
 +
Il va nous falloir en créer un nouveau, et contrôler au démarrage si le motd vitalpbx existe et dans quel cas le supprimer
 +
 +
=== Création d'un nouveau Motd ===
 +
nano /etc/profile.d/tiscomwelcome.sh
 +
 +
<nowiki>
 +
#!/bin/bash
 +
#Bash Colour Codes
 +
txtrst="\033[00;0m"
 +
bleu="\033[1;34m"
 +
 +
linux_ver=`cat /etc/redhat-release`
 +
vitalpbx_ver=`rpm -qi vitalpbx |awk -F: '/^Version/ {print $2}'`
 +
vitalpbx_release=`rpm -qi vitalpbx |awk -F: '/^Release/ {print $2}'`
 +
vpbx_version="${vitalpbx_ver}-${vitalpbx_release}"
 +
 +
echo -e "
 +
${bleu}
 +
_______  _                            __      __    _
 +
|__  __|(_)                            \ \    / /    (_)
 +
  | |    _  __  ___  ___  _ __ ___  \ \  / /___  _  ___  ___
 +
  | |  | |/ __| / __|/ _ \ | '_ ' _ \  \ \ / // _ \ | | / __|/ _ \
 +
  | |  | |\__ \| (__| (_) || | | | | |  \ V /| (_) || || (__|  __/
 +
  |_|  |_||___/ \___|\___/ |_| |_| |_|    \_/  \___/ |_| \___|\___|
 +
${txtrst}
 +
 +
Version IPBX    : ${vpbx_version//[[:space:]]}
 +
Version Asterisk : `asterisk -rx "core show version" 2>/dev/null| grep -ohe 'Asterisk [0-9.]*'`
 +
Version Linux    : ${linux_ver}
 +
Nom de domaine  : `hostname`
 +
Dispo depuis    : `uptime | grep -ohe 'up .*' | sed 's/up //g' | awk -F "," '{print $1}'`
 +
Charcge CPU      : `uptime | grep -ohe 'load average[s:][: ].*' | awk '{ print "Last Minute: " $3" Last 5 Minutes: "$4" Last 15 Minutes: "$5 }'`
 +
Utilisateurs    : `uptime | grep -ohe '[0-9.*] user[s,]'`
 +
Adresse(s) IP    : ${bleu}`ip addr | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p' | xargs`${txtrst}
 +
Heure courante  :`timedatectl | sed -n '/Local time/ s/^[ \t]*Local time:\(.*$\)/\1/p'`
 +
Syncro NTP      :`timedatectl |awk -F: '/NTP sync/ {print $2}'`
 +
"</nowiki>
 +
 +
=== Création d'un script afin de le jouer au démarrage ===
 +
nano /var/lib/vitalpbx/scripts/boot.sh
 +
 +
<nowiki>#!/bin/bash
 +
## Supprime le motd vitalpbx si existe
 +
if [ -e /etc/profile.d/vitalwelcome.sh ]
 +
then
 +
    rm -f /etc/profile.d/vitalwelcome.sh
 +
    echo "vitalwelcome.sh a été supprimé"
 +
fi
 +
</nowiki>
 +
 +
=== Donner au script des droits d’exécution ===
 +
chmod +x /var/lib/vitalpbx/scripts/boot.sh
 +
 +
=== Créer une nouveau service systemd ===
 +
nano /etc/systemd/system/SLM_boot.service
 +
 +
<nowiki>[Unit]
 +
Description=Lancement d'un script au démarrage du serveur
 +
After=network.target
 +
 +
[Service]
 +
Type=simple
 +
ExecStart=/var/lib/vitalpbx/scripts/boot.sh
 +
TimeoutStartSec=0
 +
 +
[Install]
 +
WantedBy=default.target</nowiki>
 +
 +
=== Recharger ===
 +
Reloader le process systemd pour que notre nouveau service soit pris en compte:
 +
systemctl daemon-reload
 +
 +
=== Activer ===
 +
“Activer” le service pour qu’il se lance automatiquement au démarrage de la machine:
 +
systemctl enable SLM_boot.service
 +
 +
=== Tester ===
 +
cp /etc/profile.d/tiscomwelcome.sh /etc/profile.d/vitalwelcome.sh
 +
systemctl reboot
 +
 +
== OpenVPN ==
 +
=== Installation ===
 +
Admin -> Add-ons -> Addons
 +
Installer le module '''OpenVPN'''
 +
 +
=== Configuration Serveur ===
 +
Admin -> Network -> OpenVPN Serveur
 +
* Enabled: Yes
 +
* Port: 1194
 +
* Server Range: 10.8.0.0 | 255.255.255.0
 +
* Public Host: client.tiscom.fr (le nom du dynhost ovh)
 +
* Keep-Alive: 10 | 120
 +
* Cipher Method: Blowfish
 +
* Redirect Gateway: yes (permet d'accéder au autres équipements du réseau client joignable par l'ipbx)
 +
* Primary DNS: 1.1.1.1
 +
* Secondary DNS: 1.0.0.1
 +
* Max Clients: 100
 +
* Compression: None
 +
 +
=== Configuration Client ===
 +
Il est possible de visualiser l'état des clients connectés dans le menu
 +
Admin -> Network -> OpenVPN Serveur: onglet Clients
 +
 +
==== PC Windows ====
 +
Coté VitalPBX
 +
Admin -> Network -> OpenVPN Serveur: Add Client
 +
* Description: Exemple: Sébastien Le Moal
 +
* Fixed IP: Optionnel, laisser vide pour dhcp
 +
* Type: Generic
 +
* Enabled: Yes
 +
Save
 +
 +
Admin -> Network -> OpenVPN Serveur: onglet Clients
 +
Cliquer sur l'icone download du client précédemment créer afin de télécharger l'archive.
 +
Coté PC
 +
Télécharger, installer, executer OpenVPN Connect pour Windows
 +
https://openvpn.net/client-connect-vpn-for-windows/
 +
 +
Glisser le fichier "Client full.ovpn" contenu dans l'archive précédemment téléchargé au centre de l'appli.
 +
 +
Add
 +
 +
== Gestion UPS ==
 +
=== Installation ===
 +
Se connecter en ssh
 +
cd /tmp
 +
wget https://dl4jz3rbrsfum.cloudfront.net/software/PPL_64bit_v1.4.1.rpm
 +
rpm -ivh PPL_64bit_v1.4.1.rpm
 +
 +
=== Obtenir l'état de l'onduleur ===
 +
pwrstat -status
 +
 +
<nowiki>The UPS information shows as following:
 +
 +
        Properties:
 +
                Model Name................... Value600EIGP
 +
                Firmware Number.............. BZDB103&2F4.x
 +
                Rating Voltage............... 230 V
 +
                Rating Power................. 360 Watt(600 VA)
 +
 +
        Current UPS status:
 +
                State........................ Normal
 +
                Power Supply by.............. Utility Power
 +
                Utility Voltage.............. 234 V
 +
                Output Voltage............... 234 V
 +
                Battery Capacity............. 100 %
 +
                Remaining Runtime............ 60 min.
 +
                Load......................... 0 Watt(0 %)
 +
                Line Interaction............. None
 +
                Test Result.................. Unknown
 +
                Last Power Event............. Blackout at 2022/01/25 16:02:34
 +
</nowiki>
 +
 +
=== Obtenir les paramètres du démon ===
 +
pwrstat -config
 +
 +
Répertori les paramètres de démon actuels comme suit.
 +
<nowiki>Daemon Configuration:
 +
 +
Alarm .............................................. On
 +
Hibernate .......................................... Off
 +
Cloud .............................................. Off
 +
 +
Action for Power Failure:
 +
 +
        Delay time since Power failure ............. 60 sec.
 +
        Run script command ......................... On
 +
        Path of script command ..................... /etc/pwrstatd-powerfail.sh
 +
        Duration of command running ................ 0 sec.
 +
        Enable shutdown system ..................... On
 +
 +
Action for Battery Low:
 +
 +
        Remaining runtime threshold ................ 300 sec.
 +
        Battery capacity threshold ................. 35 %.
 +
        Run script command ......................... On
 +
        Path of command ............................ /etc/pwrstatd-lowbatt.sh
 +
        Duration of command running ................ 0 sec.
 +
        Enable shutdown system ..................... On
 +
</nowiki>
 +
 +
=== Configurer l'onduleur et le démon ===
 +
 +
==== Action de configuration en cas de panne de courant à titre d'exemple ====
 +
pwrstat -pwrfail -delay 60 -active on -cmd /etc/pwrstatd-powerfail.sh -duration 1 -shutdown off
 +
 +
Comme ci-dessus, il faudra 1 seconde pour exécuter un script shell nommé /etc/pwrstatd-powerfail.sh et eteindre le système si l'alimentation secteur est en panne pendant 1 minute.
 +
 +
==== Action de configuration pour batterie faible comme exemple ====
 +
pwrstat -lowbatt -capacity 15 -active on -cmd /etc/pwrstatd-lowbatt.sh -duration 1 -shutdown on
 +
 +
Comme ci-dessus, il faudra 1 seconde pour exécuter un script shell nommé /etc/pwrstatd-lowbatt.sh et eteindre le système car la capacité de la batterie de l'onduleur est faible puis un seuil pendant 5 secondes.
 +
 +
Noter:
 +
# Le seuil de capacité de la batterie peut être modifié dans le fichier /etc/pwrstatd.conf.
 +
# Les paramètres -pwrfail et -lowbatt sont exclusivement.
 +
# L'unité de l'option -delay est la seconde.
 +
# Les deux scripts shell /etc/pwrstatd-powerfail.sh et /etc/pwrstatd-lowbatt.sh ont été copiés pendant la procédure d'installation.
 +
# Au moins un des paramètres -delay, -active, -cmd, -duration ou -shutdown est nécessaire.
 +
# L'option -cmd peut être n'importe quel script shell du système, mais elle sera exécutée par l'autorité root.
 +
# Le paramètre d'action par défaut pour -pwrfail et -lowbatt est identique au paramètre ci-dessus de l'exemple.
 +
 +
==== Désinstallation ====
 +
rpm -e powerpanel
  
 
[[Catégorie:VOIP]]
 
[[Catégorie:VOIP]]

Version actuelle datée du 25 mars 2022 à 14:28

Retour

Sommaire

Release Note

Version EMMC

V1.1 - 28/03/2021

V1.2 - 18/04/2021

V1.3 - 22/05/2021

Version MSata

V2.1 - 11/09/2021

V2.2 - 15/11-2021

V2.3 - 25/03-2022

Roadmap

Trunk SIP

SEWAN

Information communiqué par l'opérateur SIP

Il faut demander à celui ci de définir le plan de numérotation en national (non international)

Login: trunkyyyyy@test.sewan.eu 
Mot de passe: PASSzzzzz
Information du serveur : 37.97.65.78 - trunkfsc11.sewan.fr
Port d'authentification : 5070 [          ]
Durée du bail REGISTER : 600 secondes
STUN Server (optionnel) : stun.sewan.fr
SDA : 
0351123456

Configuration du trunk

Se rendre sur l'interface VitalPBX

PBX >> External >> Trunks

Configurer comme l'image ci dessous

Trunk Sewan Config-general.png

Le registrar doit avoir ce format

Login:Password@serveur:portSIP

Exemple:

trunkyyyyy@test.sewan.eu:PASSzzzzz@37.97.65.78:5070

Pour information, les fichiers de configurations auto-généré:

/etc/asterisk/vitalpbx/sip__50-1-trunks.conf

[trunk](p11)
context=trk-1-in
description=Trunk_sip_Sewan
dtmfmode=rfc2833
allow=!all,alaw
host=37.97.65.78
port=5070
secret=PASSzzzzz
insecure=port,invite
defaultuser=trunkyyyyy
remotesecret=PASSzzzzz
fromdomain=test.sewan.eu
qualify=yes
type=peer
context=trk-1-in-custom

/etc/asterisk/vitalpbx/sip__20-1-registers.conf

[general](+)
register => trunkyyyyy@test.sewan.eu:PASSzzzzz@37.97.65.78:5070

Appel Entrant

SEWAN a la particularité d'envoyer le DID (SDA) dans le champs TO de la requête SIP.

Bien qu'il existe une option pour le recuperer depuis la GUI il s'avere qu'a ce jour ça ne peux fonctionner dans notre cas.

Voir sujet sur le forum: https://community.vitalpbx.org/forums/topic/incoming-call-problem-2/

La solution de contournement est la suivante

créer un fichier custom

nano /etc/asterisk/vitalpbx/extensions__50-1-dialplan_custom.conf

Ajouter le dialplan ci-dessous

; *********************************************************************************
; @Date : Sun Apr 18 12:54:49 GMT 2021
; @Document : extensions__50-1-dialplan_custom.conf
; @Author : Sébastien LE MOAL <slemoal@tiscom.fr>
; @Platform : VitalPBX 3.0.6-2
; *********************************************************************************

[trk-1-in-custom]
exten => _s,1,NoOp(Incoming call through: Trunk_sip_Sewan)
 same => n,Set(DID=${CUT(CUT(SIP_HEADER(To),@,1),:,2)})
 same => n,Goto(trk-1-in,${DID},1)

Mettre les droits d’exécution

chmod +x /etc/asterisk/vitalpbx/extensions__50-1-dialplan_custom.conf

Dans l’onglet avancé du trunk, ajouter le nouveau context dans Custom Settings Trunk Sewan Config-advanced.png

type = peers
parameter = context 
value = trk-1-in-custom

Cette procédure doit être valable pour tout les opérateurs SIP qui indique le DID dans le champs TO (comme OVH)

Route entrante

SDA

Si joint la configuration d'une SDA sur 10 chiffres (format envoyé par SEWAN)

Format standard:

Etsi: 9 chiffres
VN6: 6 chiffres
VN4: 4 chiffres

DID-config.png

Route par défaut

Il est possible de créer une règle par défaut, afin de ne pas perdre d'appel si la SDA n'est pas renseigné.

DID-config-Default.png

Route Sortante

PBX >> External >> Outbound Routes

Afin de conserver de la souplesse au niveau des routes sortante, nous allons créer 5 routes:

  1. Urgence
  2. National
  3. GSM
  4. Spéciaux
  5. International

1 - Urgence

Outbound-1.png

Pattern:

1[579]
11[0-59]
116XXX
19[167]

2 - National

Outbound-2.png

Pattern:

0[1-59]XXXXXXXX

3 - GSM

Outbound-3.png

Pattern:

0[67]XXXXXXXX

4 - Spéciaux

Outbound-4.png

Pattern:

08XXXXXXXX
118XXX
[13]XXX

5 -International

Outbound-5.png

Pattern:

_00X.

ou pour limiter à l'union européenne

_00[34].

Restriction d'appel

Règle de restriction d'appel

PBX >> Class of Service >> Dialing Restriction rules

Nous allons créer 4 règles de discrimination:

  1. Urgence
  2. National
  3. GSM
  4. Spéciaux

L'international est joignable lorsque qu'aucune restriction n'est appliqué, il n'y a donc pas besoin de la créer.

1 - Urgence

COS-dialing-restriction-1.png

Pattern:

118XXX
0XXXXXXXXX
_00X.
[13]XXX

2 - National

COS-dialing-restriction-2.png

Pattern:

118XXX
0[678]XXXXXXXX
_00X.
[13]XXX

3 - GSM

COS-dialing-restriction-3.png

Pattern:

0[67]XXXXXXXX

4 - Spéciaux

COS-dialing-restriction-4.png

Pattern:

08XXXXXXXX
118XXX
[13]XXX

Classe de Service

PBX >> Class of Service >> Class of Service

Nous allons affecter les Regle de restriction d'appel à des Classe de Service

1 - Urgence

COS-1.png

2 - National

COS-2.png

3 - GSM

COS-3.png


4 - Spéciaux

COS-4.png

5- International

Cette règle existe et s'appelle ALL, nous allons simplement modifier sa description

COS-5.png

Affecter une restriction à un utilisateur

PBX >> Extensions >> Extensions

Sélectionner l'extension sur la quelle vous souhaitez affecter une discrimination

Et choisissez dans le menu déroulant la classe à lui affecter.

COS-Exten.png

DynHost

Afin d'assurer une télémaintenance ou service externe dans le cas ou le client dispose d'une IP public dynamique, il est possible d'utiliser le service Dynhost d'OVH dans le cadre de l'abonnement au domaine tiscom.fr

Configuration OVH

Se rendre sur la page d'administration: https://www.ovh.com/manager/

Ajouter un DynHost

Avant de pouvoir utiliser le DynHost, vous devez le déclarer dans l’interface client OVH. Pour cela sélection le domaine dans lequel vous souhaitez déclarer votre DynHost.

Cliquez ensuite sur l’onglet DynHost. Cet onglet vous affiche les DynHost déjà déclaré ainsi que les adresses IP courantes. Pour créer votre DynHost cliquez sur Ajouter un DynHost (à droite).

Ovh-add-dynhost1.png

La fenêtre suivante s’affiche, choisissez le sous-domaine voulu et entré l’IP 0.0.0.0. Cette adresse sera mise a jour par le script une fois celui-ci configuré.

Ovh-add-dynhost2.png

Créer un identifiant DynHost

Vous devrez maintenant créer un utilisateur ayant le droit de mettre à jour votre Dynhost précédemment créé. Pour cela cliquer sur Gérer les accès de la page précédente Ovh-add-acces1.png

cliquer sur Créer un identifiant, la popup suivante s’ouvre.

Ovh-add-acces2.png

Spécifiez un suffixe d’identifiant, le nom de domaine que vous avez spécifié tout à l’heure ou * pour autoriser tout les sous domaine dynhost et le mot de passe.

Enregistrez bien ces informations car elles devront etre renseignés dans le script.

Ovh-add-acces3.png

Configuration IPBX

Script DynHost

Se connecter en ssh ou console sur le serveur.

Installer le package "dnsutils" :

yum install dnsutils

Créer le script

nano /var/lib/vitalpbx/scripts/dynhost.sh

Ajouter les lignes suivante:

#!/usr/bin/env sh
#########################################################
# Création :      Sebastien Lemoal <slemoal@tiscom.fr> #
# Modifications :                                     #
######################################################

# Tous droits réservés

######################
#      CHANGELOG     #
#########################################################
# 2021/07 - Script initial - slemoal                   #
#######################################################

#######################################
# Définition des Variables           #
#####################################
HOST=$(uname -n) # Se change depuis l'interface web "Admin -> Network -> Nom d'hote"
LOGIN=domaine-id
PASSWORD=LenSuperMotDePasseAutogénéréDuCompteOvh

PATH_LOG=/var/log/dynhostovh.log

HOST_IP=$(dig +short $HOST A) # Récupérer l'IP du domaine OVH

# Récupérer l'IP PUBLIC
CURRENT_IP=$(curl ifconfig.me)
echo curl "ifconfig.me="$CURRENT_IP
if [ -z $CURRENT_IP ]
then
  CURRENT_IP=$(dig +short myip.opendns.com @resolver1.opendns.com)
  echo curl "dig + short myip.opendns.com="$CURRENT_IP
fi
CURRENT_DATETIME=$(date -R)

#######################################
# Mise à jour du dynhost si besoin   #
#####################################

if [ -z $CURRENT_IP ] || [ -z $HOST_IP ]
then
  echo "[$CURRENT_DATETIME]: No IP retrieved" >> $PATH_LOG
  echo "[$CURRENT_DATETIME]: No IP retrieved"
else
  if [ "$HOST_IP" != "$CURRENT_IP" ]
  then
    RES=$(curl -m 5 -L --location-trusted --user "$LOGIN:$PASSWORD" "https://www.ovh.com/nic/update?system=dyndns&hostname=$HOST&myip=$CURRENT_IP")
    echo "[$CURRENT_DATETIME]: IPv4 has changed - request to OVH DynHost: $RES" >> $PATH_LOG
    echo "[$CURRENT_DATETIME]: IPv4 has changed - request to OVH DynHost: $RES"
  else
    echo "L'IP n'a pas changé, pas de mise à jour necessaire"
  fi
    echo "HOST_IP="$HOST_IP
    echo "CURRENT_IP="$CURRENT_IP
fi

Donner les droits

chmod +x /var/lib/vitalpbx/scripts/dynhost.sh

Configuration Web GUI

Se connecter en page web à l'interface de l'IPBX

Définir le nom d'hôte
Admin -> Network -> Paramètre réseau

Celui ci doit être identique au sous domaine créer sur OVH

Voice-host.png

Installer l'Addon Task Manager
Admin -> Add-ons -> Task Manager
Créer un profil Cron
PABX -> Outils -> Profils Cron

Voice-Profil-cron.png

Créer une tache Cron
PABX -> Outils -> Task Manager

Voice-tache-cron.png

Bip au démarrage et arrêt

Installation package Beep

cd /tmp/
wget ftp://ftp.pbone.net/mirror/dag.wieers.com/redhat/el7/en/x86_64/dag/RPMS/beep-1.3-1.el7.rf.x86_64.rpm
yum localinstall -y beep-1.3-1.el7.rf.x86_64.rpm
rm -f beep-1.3-1.el7.rf.x86_64.rpm

Créer le service

nano /etc/init.d/beep
! /bin/sh -e
### BEGIN INIT INFO
# Provides:          beep
# Required-Start:    $syslog
# Required-Stop:     $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: beep
# Description:
#
### END INIT INFO

# Carry out specific functions (start, stop, restart etc)
case "$1" in
  start)
    beep -l 75 -f 500 -n -l 75 -f 1000 -n -l 75 -f 2000 -n -l 75 -f 3000
    ;;
  stop)
    beep -l 75 -f 3000 -n -l 75 -f 2000 -n -l 75 -f 1000 -n -l 75 -f 500
    ;;
  *)
    echo "Usage: /etc/init.d/beep {start|stop}"
    exit 1
    ;;
esac

exit 0

Mettre les droits

sudo chmod a+x /etc/init.d/beep

Activer au prochain démarrage

systemctl enable beep.service

Redemarrer

systemctl reboot

Tester

systemctl reboot

Zabbix

integration et Supervision via Zabbix proxy

Script mise à jour host

Se connecter en ssh ou console sur le serveur.

Créer le script

nano /var/lib/vitalpbx/scripts/host_zabbix.sh

Ajouter les lignes suivante:

#!/bin/bash
#########################################################
# Création :      Sébastien Le Moal <slemoal@tiscom.fr> #
# Modifications :                                     #
######################################################

# Tous droits réservés

######################
#      CHANGELOG     #
#########################################################
# 2021/11 - Script initial - slemoal                   #
#######################################################

#######################################
# Définition des Variables           #
#####################################

host_zabbix=`uname -n`
path_zabbix_proxy=/etc/zabbix/zabbix_proxy.conf
path_zabbix_agent2=/etc/zabbix/zabbix_agent2.conf

#######################################
# Début du script                    #
#####################################
# Proxy zabbix
if  ! grep -q $host_zabbix $path_zabbix_proxy;
	then
		sed -i "s/\(Hostname=\).*/\Hostname=${host_zabbix}/" ${path_zabbix_proxy}
		/bin/systemctl restart zabbix-proxy.service
		echo "zabbix proxy: Hostname="$host_zabbix $path_zabbix_proxy "modifié"
	else
		echo "zabbix proxy: Hostname="$host_zabbix" est à jour"
fi

# Agent2 Zabbix
if  ! grep -q $host_zabbix $path_zabbix_agent2;
	then
		sed -i "s/\(Hostname=\).*/\Hostname=${host_zabbix}/" ${path_zabbix_agent2}
		/bin/systemctl restart zabbix-agent2.service
		echo "zabbix agent2: Hostname="$host_zabbix $path_zabbix_proxy "modifié"
	else
		echo "zabbix agent2: Hostname="$host_zabbix" est à jour"
fi

Donner les droits

chmod +x /var/lib/vitalpbx/scripts/host_zabbix.sh

Configuration Web GUI

Se connecter en page web à l'interface de l'IPBX

Définir le nom d'hôte
Admin -> Network -> Paramètre réseau

Celui ci doit être identique au sous domaine créer sur OVH

Voice-host.png

Installer l'Addon Task Manager
Admin -> Add-ons -> Task Manager
Créer un profil Cron
PABX -> Outils -> Profils Cron

Voice-Profil-cron.png

Créer une tache Cron
PABX -> Outils -> Task Manager

Voice-tache-cron2.png

MOTD personnalisé

Lors d'une mise à jour, le motd vital PBX est réinitialisé, nous ne pouvons donc pas simplement le modifier.

Il va nous falloir en créer un nouveau, et contrôler au démarrage si le motd vitalpbx existe et dans quel cas le supprimer

Création d'un nouveau Motd

nano /etc/profile.d/tiscomwelcome.sh
#!/bin/bash
#Bash Colour Codes
txtrst="\033[00;0m"
bleu="\033[1;34m"

linux_ver=`cat /etc/redhat-release`
vitalpbx_ver=`rpm -qi vitalpbx |awk -F: '/^Version/ {print $2}'`
vitalpbx_release=`rpm -qi vitalpbx |awk -F: '/^Release/ {print $2}'`
vpbx_version="${vitalpbx_ver}-${vitalpbx_release}"

echo -e "
${bleu}
 _______  _                             __       __     _
|__   __|(_)                            \ \     / /    (_)
   | |    _   __   ___  ___   _ __ ___   \ \   / /___   _   ___  ___
   | |   | |/ __| / __|/ _ \ | '_ ' _ \   \ \ / // _ \ | | / __|/ _ \ 
   | |   | |\__ \| (__| (_) || | | | | |   \ V /| (_) || || (__|  __/
   |_|   |_||___/ \___|\___/ |_| |_| |_|    \_/  \___/ |_| \___|\___|
${txtrst}

 Version IPBX     : ${vpbx_version//[[:space:]]}
 Version Asterisk : `asterisk -rx "core show version" 2>/dev/null| grep -ohe 'Asterisk [0-9.]*'`
 Version Linux    : ${linux_ver}
 Nom de domaine   : `hostname`
 Dispo depuis     : `uptime | grep -ohe 'up .*' | sed 's/up //g' | awk -F "," '{print $1}'`
 Charcge CPU      : `uptime | grep -ohe 'load average[s:][: ].*' | awk '{ print "Last Minute: " $3" Last 5 Minutes: "$4" Last 15 Minutes: "$5 }'`
 Utilisateurs     : `uptime | grep -ohe '[0-9.*] user[s,]'`
 Adresse(s) IP    : ${bleu}`ip addr | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p' | xargs`${txtrst}
 Heure courante   :`timedatectl | sed -n '/Local time/ s/^[ \t]*Local time:\(.*$\)/\1/p'`
 Syncro NTP       :`timedatectl |awk -F: '/NTP sync/ {print $2}'`
"

Création d'un script afin de le jouer au démarrage

nano /var/lib/vitalpbx/scripts/boot.sh
#!/bin/bash
## Supprime le motd vitalpbx si existe
if [ -e /etc/profile.d/vitalwelcome.sh ]
then
    rm -f /etc/profile.d/vitalwelcome.sh
    echo "vitalwelcome.sh a été supprimé"
fi

Donner au script des droits d’exécution

chmod +x /var/lib/vitalpbx/scripts/boot.sh

Créer une nouveau service systemd

nano /etc/systemd/system/SLM_boot.service
[Unit]
Description=Lancement d'un script au démarrage du serveur
After=network.target

[Service]
Type=simple
ExecStart=/var/lib/vitalpbx/scripts/boot.sh
TimeoutStartSec=0

[Install]
WantedBy=default.target

Recharger

Reloader le process systemd pour que notre nouveau service soit pris en compte:

systemctl daemon-reload

Activer

“Activer” le service pour qu’il se lance automatiquement au démarrage de la machine:

systemctl enable SLM_boot.service

Tester

cp /etc/profile.d/tiscomwelcome.sh /etc/profile.d/vitalwelcome.sh 
systemctl reboot

OpenVPN

Installation

Admin -> Add-ons -> Addons

Installer le module OpenVPN

Configuration Serveur

Admin -> Network -> OpenVPN Serveur
  • Enabled: Yes
  • Port: 1194
  • Server Range: 10.8.0.0 | 255.255.255.0
  • Public Host: client.tiscom.fr (le nom du dynhost ovh)
  • Keep-Alive: 10 | 120
  • Cipher Method: Blowfish
  • Redirect Gateway: yes (permet d'accéder au autres équipements du réseau client joignable par l'ipbx)
  • Primary DNS: 1.1.1.1
  • Secondary DNS: 1.0.0.1
  • Max Clients: 100
  • Compression: None

Configuration Client

Il est possible de visualiser l'état des clients connectés dans le menu

Admin -> Network -> OpenVPN Serveur: onglet Clients

PC Windows

Coté VitalPBX

Admin -> Network -> OpenVPN Serveur: Add Client
  • Description: Exemple: Sébastien Le Moal
  • Fixed IP: Optionnel, laisser vide pour dhcp
  • Type: Generic
  • Enabled: Yes

Save

Admin -> Network -> OpenVPN Serveur: onglet Clients

Cliquer sur l'icone download du client précédemment créer afin de télécharger l'archive. Coté PC Télécharger, installer, executer OpenVPN Connect pour Windows https://openvpn.net/client-connect-vpn-for-windows/

Glisser le fichier "Client full.ovpn" contenu dans l'archive précédemment téléchargé au centre de l'appli.

Add

Gestion UPS

Installation

Se connecter en ssh

cd /tmp
wget https://dl4jz3rbrsfum.cloudfront.net/software/PPL_64bit_v1.4.1.rpm
rpm -ivh PPL_64bit_v1.4.1.rpm

Obtenir l'état de l'onduleur

pwrstat -status
The UPS information shows as following:

        Properties:
                Model Name................... Value600EIGP
                Firmware Number.............. BZDB103&2F4.x
                Rating Voltage............... 230 V
                Rating Power................. 360 Watt(600 VA)

        Current UPS status:
                State........................ Normal
                Power Supply by.............. Utility Power
                Utility Voltage.............. 234 V
                Output Voltage............... 234 V
                Battery Capacity............. 100 %
                Remaining Runtime............ 60 min.
                Load......................... 0 Watt(0 %)
                Line Interaction............. None
                Test Result.................. Unknown
                Last Power Event............. Blackout at 2022/01/25 16:02:34

Obtenir les paramètres du démon

pwrstat -config

Répertori les paramètres de démon actuels comme suit.

Daemon Configuration:

Alarm .............................................. On
Hibernate .......................................... Off
Cloud .............................................. Off

Action for Power Failure:

        Delay time since Power failure ............. 60 sec.
        Run script command ......................... On
        Path of script command ..................... /etc/pwrstatd-powerfail.sh
        Duration of command running ................ 0 sec.
        Enable shutdown system ..................... On

Action for Battery Low:

        Remaining runtime threshold ................ 300 sec.
        Battery capacity threshold ................. 35 %.
        Run script command ......................... On
        Path of command ............................ /etc/pwrstatd-lowbatt.sh
        Duration of command running ................ 0 sec.
        Enable shutdown system ..................... On

Configurer l'onduleur et le démon

Action de configuration en cas de panne de courant à titre d'exemple

pwrstat -pwrfail -delay 60 -active on -cmd /etc/pwrstatd-powerfail.sh -duration 1 -shutdown off

Comme ci-dessus, il faudra 1 seconde pour exécuter un script shell nommé /etc/pwrstatd-powerfail.sh et eteindre le système si l'alimentation secteur est en panne pendant 1 minute.

Action de configuration pour batterie faible comme exemple

pwrstat -lowbatt -capacity 15 -active on -cmd /etc/pwrstatd-lowbatt.sh -duration 1 -shutdown on

Comme ci-dessus, il faudra 1 seconde pour exécuter un script shell nommé /etc/pwrstatd-lowbatt.sh et eteindre le système car la capacité de la batterie de l'onduleur est faible puis un seuil pendant 5 secondes.

Noter:

  1. Le seuil de capacité de la batterie peut être modifié dans le fichier /etc/pwrstatd.conf.
  2. Les paramètres -pwrfail et -lowbatt sont exclusivement.
  3. L'unité de l'option -delay est la seconde.
  4. Les deux scripts shell /etc/pwrstatd-powerfail.sh et /etc/pwrstatd-lowbatt.sh ont été copiés pendant la procédure d'installation.
  5. Au moins un des paramètres -delay, -active, -cmd, -duration ou -shutdown est nécessaire.
  6. L'option -cmd peut être n'importe quel script shell du système, mais elle sera exécutée par l'autorité root.
  7. Le paramètre d'action par défaut pour -pwrfail et -lowbatt est identique au paramètre ci-dessus de l'exemple.

Désinstallation

rpm -e powerpanel