WebRTC: anche il telefono se ne va nella nuovola

L’ultimo baluardo dell’ufficio vecchia maniera era rimasto il telefono. Google e soci avevano messo in cloud tutto il necessario ad una normale postazione lavorativa. La posta su GMail, i documenti su Drive, foglio di calcolo ed editor inclusi, gli appuntamenti sul Calendar, le presentazioni video su YouTube.

Eppure il telefono eravamo comunque costretti a portarcelo dietro. Dal classico cellulare fino al softphone sul PC, per i più smaliziati. Insomma o ti portavi dietro il telefono o per lo meno il tuo PC con il tuo software di fiducia e le cuffiette. In passato ci sono stati tentativi per superare questo vincolo. Ricordo GizmoCall, FlashPhone e altri. Tutti ottimi tentativi che risentivano delle specifiche hardware o di rete, in cui la pagina web girava.

Poi i ragazzi della grande G si inventano un progetto spettacolare. Contattano i maggiori produttori di web browsers e li coinvolgono nello standardizzare una nuova tecnologia: il WebRTC, dove la sigla sta per Real-Time Communications. La soluzione all’annoso problema della comunicazione portatile viene trovata nel classico uovo di colombo.

Le solite menti visionarie si sono dette: cosa succede se integriamo nei browsers delle funzionalità per gestire audio (scheda sonora, cuffie,etc) e video (webcam), oltre che ad un protocollo per lo streaming sicuro? Ecco che così il browser diventa lo strumento per comunicare, dopo essere già diventato lo strumento per scrivere programmare e inviare mails. Ci sono delle demo (http://googlechrome.github.io/webrtc/) che mostrano la potenza di questo nuovo strumento, realizzate dai suoi inventori e fan entusiasti.

Un altro gruppo di programmatori, gli amici di FreeSWITCH, di cui tanto ho parlato in queste pagine, hanno subito cavalcato l’onda e creato un modulo per il loro  software VoIP che si interfaccia agevolmente col WebRTC. Sto parlando di mod_verto. Non sono proprio di primo pelo nelle telecomunicazioni ma la semplicità riesce ancora a stupirmi. Con poche righe di codice, riutilizzando dei pezzi di Javascript già presenti in rete da anni, si riesce a creare qualcosa di unico.

La DEMO permette di unirsi alla conference degli sviluppatori in certi giorni della settimana. Generalmente udrete musica. Il bello è che quella demo potete scaricarla e farla diventare il vostro web phone personale! Certo ci vuole un po’ di studio per modificarla a proprio piacimento, utilizzando tutti i metodi del WebRTC. Ma il risultato è più che soddisfacente.

L’ultima barriera è dunque superata. Se siete in vacanza alle Maldive e quel cliente importantissimo ha bisogno di essere chiamato, andate ad un internet point, trovate sul Drive le offerte che gli avevate mandato, accedete al vostro webphone e chiamatelo col numero dell’ufficio. Tranquilli…non vedrà le vostre infradito.

Annunci

Truffe VoIP: i telefoni Grandstream della famiglia 14XX

Lo scopo di questo blog è anche quello di mettere la gente in allarme, al fine di evitare che i soliti malintenzionati abbiano strumenti per rubare il traffico telefonico. Quindi il mio obiettivo non è quello di formare nuovi ladri ma di impedire che simili cose accadano.

A tal fine, segnalo un bello scherzetto praticato dagli “amici” hacker palestinesi sui telefoni Grandstream (testato da me sulla famiglia GXP 14XX). 

Molti possessori di telefoni IP si preoccupano di mettere passwords molto complesse per l’utente ADMIN, mentre tralasciano la parte USER. Di solito, infatti, come user si può fare poco e niente. I solerti programmatori Grandstream, invece, hanno permesso all’utente di configurarsi una rubrica di numeri con funzionalità Click To Dial!!! 

Cosa significa? Si entra nell’interfaccia web del telefono, si inserisce un numero in rubrica, si clicca sul numero e il telefono compone il numero in automatico. Dall’altra parte c’è il sistema premium del truffaldino, che risponde alla chiamata e la tiene in piedi fino a che non cade per timeout dell’operatore. 

Risultato? La nostra bolletta telefonica esplode e gli amici palestinesi ingrassano a nostre spese.

Cosa fare per proteggesi? Due cose molto semplici:

1 – Il telefono non deve essere accessibile da internet sulla sua interfaccia web (porta TCP 80)

2 – Anche la password USER (oltre a quella ADMIN) deve essere complessa!

A buon intenditore, poche parole!

 

 

Categorie:Voip:Asterisk

GNR Virtuale Clouditalia e Call Manager Express

03/12/2013 16 commenti

Sul lavoro ne capita di tutti i colori. Quando si tratta di mettere le mani su roba CISCO poi, che intende il VoIP in maniera molto proprietaria, son dolori. E sì perché il marchio leader del networking ha pensato, ormai da anni, la sua bella soluzione voip e non ammette interferenze dall’esterno…o quasi.

Quando mi sono ritrovato a configurare un account VoIP Clouditalia con selezione passante su un gateway montante IOS 15.1  e Call Manager Express ho cambiato colore del viso! Ma alla fine, anche senza certificazione, in qualche modo ne sono uscito.

La release in questione offre una serie di comandi, non ben documentati, che suppliscono alle carenze della famiglia 12, con la quale l’unica strada era ricorrere a script TCL legati ai dial-peers. Questi comandi permettono di manipolare i pacchetti SIP e raggiungere lo scopo che ci prefiggiamo. Qual’è lo scopo? Estrarre l’effettivo chiamato ingresso, perché Clouditalia manda sempre lo stesso numero sulla SIP Request URI, ma mette l’effettivo chiamato nella TO URI. Una scelta che ci rende la vita difficile in ambito CISCO, ma già recepita da molti centralini nativi voip e non.

Il primo blocco di comandi definisce le regole di manipolazione della segnalazione SIP:

voice class sip-profiles 1
request INVITE peer-header sip To copy “sip:(.*)@” u01
request CANCEL peer-header sip To copy “sip:(.*)@” u01
request INVITE sip-header SIP-Req-URI modify “.*@(.*)” “INVITE sip:\u01@\1”
request CANCEL sip-header SIP-Req-URI modify “.*@(.*)” “CANCEL sip:\u01@\1”

In pratica si copia la TO URI e si sostituisce alla SIP Request URI, unico sistema per poi matchare i dial-peers che seguono.

Quindi si imposta due regole di “ingaggio” per beccare il chiamato:

voice class uri TRUNK sip
user-id 01234567..

voice class sip-copylist 1
sip-header TO

Il grosso è fatto ma già arrivare fino a qui mi ha fatto penare!

Concludiamo con un paio di dial-peers che attuano quanto definito.  Il primo cattura il pacchetto:

dial-peer voice 99 voip
description incoming SIP Trunk
session protocol sipv2
session target sip-server
incoming uri to TRUNK
voice-class codec 1
voice-class sip copy-list 1

Il secondo lo modifica e lo ributta nel dial-plan:

dial-peer voice 300 voip
description to/from ccme
destination-pattern 01234567..
session protocol sipv2
session target ipv4:<IP Locale CCME>
voice-class codec 1
voice-class sip profiles 1
dtmf-relay rtp-nte
no vad

Naturalmente l’account principale deve essere registrato:

sip-ua
credentials username 0123456700 password 7 <password account voip> realm voiptrunk.eutelia.it
keepalive target dns:voip.eutelia.it
authentication username 0123456700 password 7 <password account voip> realm voiptrunk.eutelia.it
nat symmetric role active
nat symmetric check-media-src
no remote-party-id
retry invite 2
retry response 3
retry bye 3
retry cancel 3
retry register 10
timers connect 100
timers keepalive active 100
registrar dns:voip.eutelia.it expires 900
sip-server dns:voip.eutelia.it
connection-reuse
host-registrar

I purisiti mega certificati troveranno che dire, ma vi assicuro che a uno come me sarebbe servito come il pane trovare istruzioni del genere! Quindi sotto con i commenti ma non inferite troppo.

P.S. Per i soliti svegli: 01234567XX è un GNR di esempio…sostituite la vostra radice, mi raccomando.

Categorie:VoIP:Cisco, VoIP:Info

Il primo PBX virtuale basato su Freeswitch in Italia

29/10/2012 3 commenti

Chi segue questi miei deliri online, sa quanto sia innamorato del software voip open source Freeswitch. Su queste pagine ho pubblicato anche alcuni esperimenti che ho realizzato con questo software. Proprio leggendo i miei commenti entusiasti, sono stato contattato da una giovane software house italiana che ha realizzato e commercializzato un PBX virtuale interamente basato su Freeswitch!

I ragazzi del team di TiChiamo.it mi hanno offerto una demo gratuita e spiegato le funzionalità del loro ‘virtualpbx’ e devo dire che, sebbene il numero di servizi offerti non sia ancora paragonabile a quello delle grandi firme americane, stupisce per la semplicità di utilizzo e per la facilità con cui ci si registra al servizio con un IP-Phone di media qualità.

Le features sono quelle classiche: chiamate gratuite tra interni, gruppi di squillo, code, trasferimenti (anche verso interni virtuali corrispondenti a numeri di cellulare), voicemail, follow-me e altri ancora. Altre sono in cantiere, motivate dai clienti, data la giovane età del progetto.

Quello che mi ha colpito è la facilità di implementazione con cui certe funzionalità sono state create. Sicuramente grazie alla loro bravura, ma soprattutto per la potenza di questa piattaforma. I ragazzi mi hanno detto che per ottenere le stesse funzionalità del loro dialplan (un paio di schermate) con script Asterisk hanno dovuto riempire pagine e pagine di extensions.conf con programmazione Gosub/Goto simile ai programmi basic del povero Commodore 64 (che il dio dei computers l’abbia in gloria)!

Insomma: bravi ragazzi! Vi auguro tanta fortuna.

Lato mio gongolo, perché “ve l’avevo detto che FS è il futuro!”. Detentori di PBX virtuali basati su Asterisk, siete avvisati!

FreeTDM: attacchiamo Freeswitch alla vecchia telefonia

12/06/2012 1 commento

Per chi non lo sapesse Sangoma, nota produttrice di schede per connettere i server VoIP alla rete telefonica tradizionale, è uno dei più grossi sponsor di Freeswitch (abbreviato FS), ed è per questo che uno dei suoi tecnici ha sviluppato il modulo TDM di FS, FreeTDM appunto. Di conseguenza le loro schede sono le più indicate, per chi avesse l’esigenza di sviluppare, ad esempio, un centralino connesso ad un flusso primario.

Se però, come me, siete degli ex sviluppatori Asterisk, per lo stesso principio, vi ritroverete per il laboratorio una scheda Digium; siccome non costano un soldo, vi domanderete: “posso usarla con FS?” La risposta è “sì” ma l’operazione non è proprio scontata.

Step 1. La parte più semplice

La parte più semplice è quella che già conoscevamo: installare libpri e dahdi, esattamente come si fa su Asterisk. Alla fine della compilazione si fa partire il servizio (“service dahdi start” in Debian), si fa generare i files di configurazione e si verifica il tutto:

root@pbx:~#dahdi_genconf
root@pbx:~#dahdi_cfg

root@pbx:~#lsdahdi

### Span 1: TE4/0/1 “T4XXP (PCI) Card 0 Span 1” (MASTER) HDB3/CCS/CRC4 ClockSource
1 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
2 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
3 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
4 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
5 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
6 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
7 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
8 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
9 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
10 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
11 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
12 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
13 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
14 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
15 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
16 PRI HDLCFCS (In use) (EC: VPMOCT128 – INACTIVE)
17 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
18 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
19 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
20 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
21 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
22 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
23 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
24 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
25 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
26 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
27 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
28 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
29 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
30 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
31 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)

[…]

In verità non è stata così facile come faccio sembrare. Ho avuto la fortuna di subire un bug noto a tutti eccetto che a me, di incompatibilità tra i nuovi drivers e una scheda un po’ vecchiotta che avevo. Una giornata di lavoro per scoprire che avrei dovuto rimandarla indietro quando era l’ora!

Step 2.  La compilazione di ftmod_libpri

Libpri rimane ancora la libreria più affidabile per le Digium. Per integrarla in FS è necessario portarsi nell’apposita directory dei file sorgente /…/freeswitch/libs/freetdm

-) ./configure –with-libpri –prefix=/usr/local/freeswitch

-) make

-) make install

Al termine, per sicurezza, controllate che ftmod_libpri.laftmod_libpri.so siano apparsi sotto /usr/local/freeswitch/mod.

Step 3. Le tre conf di FS

In FS i files da modificare sono tre.

Il primo è conf/zt.conf che ho lasciato come di default:

[defaults]
codec_ms => 20
wink_ms => 150
flash_ms => 750
echo_cancel_level => 64
rxgain => 0.0
txgain => 0.0

Il secondo è conf/freetdm.conf che ho configurato per un solo primario (nonostante la scheda avesso 4 span) :

[general]
cpu_monitor => no
cpu_monitoring_interval => 1000
cpu_set_alarm_threshold => 80
cpu_reset_alarm_threshold => 70
cpu_alarm_action => warn
debugdtmf_directory=/usr/local/freeswitch/log

[span zt myPRI_1]
trunk_type => E1
group => e1group
b-channel => 1-15
d-channel => 16
b-channel => 17-31

Il terzo costituisce il legame tra FS e i driver propri dell’hardware: conf/autoload_configs/freetdm.conf.xml. Di tutti quelli elencati fin’ora è l’unico in formato XML:

<configuration name=”freetdm.conf” description=”FreeTDM Configuration”>

<settings>
<param name=”debug” value=”0″/>
</settings>

<libpri_spans>
<span name=”myPRI_1″>
<param name=”node” value=”cpe”/>
<param name=”switch” value=”euroisdn”/>
<param name=”opts” value=”omit_redirecting_number”/>
<param name=”dp” value=”unknown”/>
<param name=”debug” value=”none”/>
<param name=”dialplan” value=”XML”/>
<param name=”context” value=”public”/>
</span>

</libpri_spans>
</configuration>

Notare che il campo “span name” è pari a myPRI_1 : questo valore deve coincidere con il nome della span zt nel file freetdm.conf!

Step.4 Telefonare

A questo punto ho registrato un softphone a FS come interno 1000 nel dominio di default. Solo per fare le prove ho aggiunto sotto conf/dialplan/public/ il file 01_inbound_TDM.xml  così fatto:

<include>
<extension name=”public_tdm”>
<condition field=”destination_number” expression=”^012345678$”>
<action application=”transfer” data=”1000 XML default”/>
</condition>
</extension>
</include>

Dove 012345678 è il numero attestato sul flusso primario collegato al server tramite scheda Digium.

Poi su conf/dialplan/default.xml ho aggiunto questa extension:

<extension name=”outgoing-pri”>
<condition field=”destination_number” expression=”^61000$”>
<action application=”bridge” data=”freetdm/1/a/300112233″/>
</condition>
</extension>

Dove 300112233 è il numero del mio cellulare (non è vero , ovviamente!).

A questo punto digitando 61000 dal softphone ho parlato con il cellulare, mentre chiamando 012345678 mi è squillato il softphone e ho potuto ugualmente parlare.

Conclusioni

Ripeto la frase con cui ho iniziato: se dovete comprare una card nuova, scegliete Sangoma! Per motivi di spazio non vi posso documentare le mille difficoltà (stupidaggini) in cui sono incappato, anche grazie alla poca documentazione per le Digium. Commercialmente è giusto così, tecnologicamente parlando un po’ meno. Alla fine però il buon Freeswitch esce vincitore anche da questa vicenda, facendosi trovare già maturo alle interconnessioni TDM!

Categorie:Voip:Freeswitch

Freeswitch parla italiano

12/04/2012 7 commenti

In attesa di un set di files audio in italiano per Freeswitch, mi sono ingegnato a produrne un sottoinsieme, con l’obiettivo di fornire ai miei clienti una voicemail accettabile.

Per la sola segreteria telefonica è necessario avere anche i numeri, le date, le lettere e una serie di caratteri ascii registrati (es. cancelletto, asterisco). La materia prima, le registrazioni, le ho preso dal noto pacchetto voci registrato per Asterisk da Marco Menardi e sua moglie Paola. Naturalmente non tutte le voci erano adattabili e ho dovuto lavorare con il fido software Audacity al cut&paste. Il risultato, a mio avviso è decente e potete scaricarlo qui:

SET FILES AUDIO FREESWITCH ITALIANO

Come si installa il tutto?

  1. Copiare la cartella sounds/it sotto /usr/local/freeswitch/sounds
  2. Copiare la cartella lang/it sotto /usr/local/freeswitch/conf/lang
  3. Compilare e caricare su Freeswitch il modulo mod_say_it

Già così, configurando opportunamente la voicemail e le extensions nel profilo internal, siete in grado di utilizzare la voicemail. I messaggi vecchi però il sistema li chiamerà “salvati” perché nel sorgente di mod_voicemail.c viene richiamato l’inglese “saved”. Ho modificato il sorgente per dire “vecchi” ma dopo va ricompilato e quindi consiglio la modifica solo agli utenti evoluti. Il sorgente modificato per la release “FreeSWITCH Version 1.0.head del 27/09/2011” lo trovate nel pacchetto.

Provate il tutto e ditemi cosa ne pensate. Credo sia meglio di niente, in attesa di un set di files migliori. Ho contattato Menardi e gli ho inviato le frasi di tutto il set per Freeswitch in italiano. Non mi ha promesso niente ma ha detto che il progetto lo intriga…chi vivrà vedrà!

Attendo commenti!

Categorie:Voip:Freeswitch

Buco colossale su Elastix (Marzo 2012)

27/03/2012 12 commenti

Un mio amico è stato bucato sul suo centralino Elastix, perdendo diversi eurini, grazie alla solita cricca di palestinesi (almeno da li è l’IP sorgente) che da anni impazza per internet in cerca di IP-PBX da bucare. La colpa, come al solito, è la sua: un firewall (fisico , iptables, quello che volete) è necessario sempre se la macchina viene esposta su internet.

Verificato tutto questo ci siamo posti il problema di come sia stato possibile la truffa, dato che i palestinesi usavano direttamente gli account VoIP del mio amico, e non triangolavano sul suo centralino!

La ricerca è stata breve: Elastix ammette una vulnerabilità da paura, dovuta al nuovo CRM che integra, vTiger. Per gli esperti rimando qui per i dettagli. In soldoni, bastava con un browser all’indirizzo IP del centralino, inserendo un path specifico, per avere in chiaro tutte le password di accesso al centralino, con cui poi si poteva vedere le password SIP!

Ribadisco ancora una volta il concetto: il VoIP non è qualcosa in cui ci si può avventurare in modo inesperto, perché si rischia di perderci tanti soldini!

A fin di cronaca vi dico che gli account VoIP del mio amico sono stati svuotati del credito essendo usati su una batteria di softphones che chiamavano numeri satellitari. Trecento euro di traffico spariti in cinque minuti.

A buon intenditore…

Categorie:Voip:Asterisk