VitalPBX

De SLM - MediaWiki

Retour

Release Note

Changement de Version

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 beep-1.2.2-1.el6.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

Supervision via Zabbix

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