Sei sulla pagina 1di 42

Corso NethVoice

Andrea Marchionni - Stefano Fancello


Programma 1/2
- Installazione - FreePBX
- CentOS - Generazione file di Asterisk
- NethServer - Fwconsole
- DB - Moduli
- Template - NethVoice
- Azioni - Moduli
- Eventi - Aggiornamenti
- Template-custom - Wizard
- Community - RestAPI
- Enterprise - /etc/asterisk
- my.nethesis.it - _additional e _custom
- FreePBX - Contesti
- Interfaccia
- MySQL
Programma 2/2
- AGI
- ARI
- Creazione contesto custom
- Asterisk CLI
- Astdb
- Log
- CDR
- Sngrep
- Wireshark
- AMI
- CTI
- Rest API CTI
Installazione
- Installazione da ISO
- Interattiva

- Unattended

- Installazione su CentOS

https://nethserver.docs.nethesis.it/it/v7/installation.html

https://nethserver.docs.nethesis.it/it/v7/installation.html#install-on-centos
CentOS
“CentOS (acronimo di Community enterprise Operating System) è un sistema operativo concepito per
fornire una piattaforma di classe enterprise per chiunque intenda utilizzare GNU/Linux per usi professionali.
Si tratta di una distribuzione Linux che deriva da Red Hat Enterprise Linux con cui cerca di essere
completamente compatibile”

- Ambienti server
- Sorgenti RHEL ricompilati
- Compatibile RHEL
- RPM e yum
NethServer
- CentOS based
- Configuration layer on the top of CentOS
- Configuration DB, templates, events, actions
- Web interface

NethServer
Web interface

Config DB Template Events Actions


s
CentOS
http://docs.nethserver.org/projects/nethserver-devel/en/latest/index.html
NethServer - Template/Eventi/Azioni
NethServer - DB
- Tutte le configurazioni editabili dall’utente sono in database di configurazione
- Principali DB: configuration, networks …
- esempio:

# db configuration show logrotate


logrotate=configuration
Compression=disabled
Rotate=weekly
Times=52

http://docs.nethserver.org/projects/nethserver-devel/en/latest/databases.html
NethServer - Template # cat /etc/logrotate.conf
# ================= DO NOT MODIFY THIS FILE ==
#
- Generano i file di configurazione # Manual changes will be lost when this file i
- DB + Template = file di configurazione #
# Please read the developer's guide, which is
- Risiedono in /etc/e-smith/templates/ ...
# at NethServer official site: https://www.net
# cat /etc/e-smith/templates/etc/logrotate.conf/10base #
# see "man logrotate" for details #
{ # see "man logrotate" for details
my $rotate = $logrotate{'Rotate'} || 'weekly'; weekly
$OUT.="$rotate\n";
}
# keep 4 times worth of backlogs
# keep 4 times worth of backlogs rotate 52
{
my $times = $logrotate{'Times'} || '4';
$OUT.="rotate $times\n";
}
http://docs.nethserver.org/projects/nethserver-devel/en/latest/templates.html
NethServer - Azioni
- Script
- /etc/e-smith/events/actions/

http://docs.nethserver.org/projects/nethserver-devel/en/latest/events.html#actions
NethServer - Eventi
/etc/e-smith/events/nethserver-nethvoice14-update:
S00initialize-default-databases -> ../actions/initialize-default-databases
S50nethserver-nethvoice-conf -> ../actions/nethserver-nethvoice-conf
S60nethvoice-update-ip -> ../actions/nethvoice-update-ip
services2adjust
templates2expand

http://docs.nethserver.org/projects/nethserver-devel/en/latest/events.html#events
NethServer - Template-custom
- Sovrascrivono i template
- Definiti dall’utente
- /etc/e-smith/templates-custom

http://docs.nethserver.org/projects/nethserver-devel/en/latest/templates.html?highlight=template-custom#lo
cal-site-overrides-templates-custom-and-templates-user-custom
Community
- Update diretti
-
Enterprise
my.nethesis.it

- Controllo server installati


- Supervisione servizi
- Backup in cloud
- Controllo prestazioni server
- Allarmi personalizzabili
- Statistiche utilizzo
FreePBX
- Applicazione web
- PHP
- Modulare
- Tutte le sue configurazioni su MySQL
- Scrive i file di configurazione di Astersik

https://www.freepbx.org
https://wiki.freepbx.org
FreePBX – Interfaccia Web
- /var/www/html/freepbx (ma può variare)
- FreePBX 14 -> PHP 5.6
- Istanza di Apache che gira con utente Asterisk
FreePBX - MySQL
- mysql asterisk
- Credenziali in /etc/freepbx.conf
FreePBX - Generazione configurazione di Asterisk
- Genera i file quando si preme “Applica cambiamenti”
- Lancia “reload” di Asterisk quando ha finito
- Non cadono le chiamate
FreePBX - fwconsole
- Console di FreePBX
- Consente di interagire con FreePBX
- Su NethServer va lanciata usando PHP 5.6 da SCL

# scl enable rh-php56 -- fwconsole r # come applica cambiamenti da interfaccia


# scl enable rh-php56 -- fwconsole userman --syncall --force # sincronizza gli utenti
# scl enable rh-php56 -- fwconsole ma list # mostra la lista e lo stato dei moduli di FreePBX
FreePBX - Moduli
- FreePBX è completamente modulare
- Ha uno “store” interno per scaricare e installare i moduli
- Ha un sistema di verifica dei moduli con firma GPG
- Si aggiornano automaticamente di default
- Aggiornamenti di sicurezza automatici
- Fisicamente in /var/www/html/freepbx/admin/modules/
- Usano degli hook per scrivere il dialplan
- Usano degli hook per inserire componenti nell’interfaccia di altri moduli

# scl enable rh-php56 -- fwconsole ma list # mostra la lista e lo stato dei moduli di FreePBX
# scl enable rh-php56 -- fwconsole ma uninstall parking # disinstalla il modulo “parking”
# scl enable rh-php56 -- fwconsole ma install parking # installa il modulo “parking”
NethVoice
Web Interface

Rest API Server


nethserver-freepbx Janus CTI
Gateway
FreePBX
Asterisk Node Server

https://nethvoice.docs.nethesis.it/it/v14/
NethVoice - Moduli
Su NethVoice, i moduli di FreePBX sono:

- Installati automaticamente. Un set di moduli prestabilito è incluso nel


pacchetto nethserver-nethvoice14
- Non aggiornabili/scaricabili/gestibili da interfaccia
- Si aggiornano automaticamente quando si aggiorna il pacchetto
nethserver-nethvoice14, ma gli aggiornamenti automatici di FreePBX sono
bloccati
NethVoice - Aggiornamenti
- Automatici: ogni notte yum-cron lancia yum update
- Possibile disabilitarli, ma fortemente sconsigliato
- Testati da Nethesis: i moduli di FreePBX vengono testati e aggiornati solo
quando passano il nostro QA
NethVoice - Wizard
- Interfaccia raggiungibile https://IP/nethvoice o https://IP/freepbx/wizard
- Consente di configurare rapidamente il centralino
- Configura solo le impostazioni più comuni, per quelle più avanzate è
comunque necessario usare l’interfaccia di FreePBX
- Strumento per l’installatore / amministratore
NethVoice – Wizard – Rest API
- Le API usano le funzioni di FreePBX, quindi lo stato tra wizard e FreePBX è
sempre consistente
- Slim
- /var/www/html/freepbx/rest/modules/
- Le API possono essere usate anche da altre interfacce
- Possono essere facilmente estese

https://www.slimframework.com/
/etc/asterisk/

- Asterisk filesystem
- Configuration files
-
_additional e _custom
Contesti
AGI
- Script
- Librerie per vari linguaggi Ruby, Java, PHP, Python, C++, .NET, node.js
- Librerie per PHP incluse con FreePBX
- Possono essere anche ospitati su un’altra macchina:

exten => 1001,1,agi(agi://192.168.43.191/customivr)


ARI
- Introdotto in Asterisk 12
- Dal dialplan si invoca con Stasis(app_name,[args])
- Stasis si usa per passare il controllo del canale ad ARI

https://wiki.asterisk.org/wiki/display/AST/Getting+Started+with+ARI
https://wiki.asterisk.org/wiki/display/AST/Asterisk+Configuration+for+ARI
https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Stasis
https://wiki.asterisk.org/wiki/display/AST/Using+the+Stasis+Message+Bus
https://wiki.asterisk.org/wiki/display/AST/Stasis+Subscriber+Shutdown+Problem
Creazione contesto custom
Asterisk CLI

# asterisk -r
Asterisk 13.19.1, Copyright (C) 1999 - 2014, Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 13.19.1 currently running on settecinque (pid = 7002)
nethvoice*CLI>
astdb
- /var/lib/asterisk/astdb.sqlite3
- Stato registrazioni, call forward, call waiting …

# asterisk -rx "database show" | less


/AMPUSER/200/answermode : disabled
/AMPUSER/200/ccss/cc_agent_alert_info :
/AMPUSER/200/ccss/cc_agent_cid_prepend :
/AMPUSER/200/ccss/cc_agent_dialstring : internal
/AMPUSER/200/ccss/cc_agent_policy : generic
/AMPUSER/200/ccss/cc_max_agents : 5
/AMPUSER/200/ccss/cc_max_monitors : 5
/AMPUSER/200/ccss/cc_monitor_alert_info :
/AMPUSER/200/ccss/cc_monitor_cid_prepend :
...
Log
- /var/log/asterisk/full
CDR
- Mysql asteriskcdrdb
- Scritto direttamente da Asterisk
- Asteriskcdrdb contiene anche le voicemail, il log delle code, il CEL (channel
event logging)
# yum install -y sngrep

sngrep …

# sngrep
Wireshark
- Non è installabile su NethServer, quindi può essere usato solo per analizzare
pacchetti a posteriori
- Salviamo il traffico in un file e poi apriamo il file con Wireshark

# tcpdump -i ens3 -nn -p -w foo.pcap

https://www.wireshark.org
AMI - Asterisk Manager Interface
- Credenziali in /etc/asterisk/manager.conf
- Possibile creare account dal modulo “manager”
- Eventi
- Comandi # telnet localhost 5038
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Asterisk Call Manager/2.10.3
Action: Login
ActionID: 1
Username: admin
Secret: 908c19364fdeeec26dd30f807bf7311d

Response: Success
ActionID: 1
https://wiki.asterisk.org/wiki/pages/viewpage.action?pageI
Message: Authentication accepted
d=4817239
CTI

https://nethcti.docs.nethesis.it/it/v3/
CTI - REST API

https://nethvoice.docs.nethesis.it/it/v14/cti_dev.html
http://api.nethesis.it/nethcti-v3/