Pagine importanti

venerdì 4 marzo 2011

ZoneMinder: notifica di connessione utente via SMS

Come molti miei lettori sapranno, il sistema di videosorveglianza del mio ufficio è disponibile per la consultazione su internet (sul sito della VPN aziendale).
Dato che cerco di "vendere" il sistema di sorveglianza basato su un server Linux con ZoneMinder (nello specifico sto cercando di vendere un prodotto basato su un server multioperativo Linux, con la possibilità di installare diversi moduli a seconda della funzionalità (es. webserver, NAS, videosorveglianza etc.)
Per consentire ad alcuni clienti di valutare il funzionamento effettivo del sistema, ho abilitato l'autenticazione nella console di ZoneMinder, ed è presente un utente "ospite" che può visionare la situazione, ma senza privilegi amministrativi (niente cancellazione, modifica etc.).
Ma siccome sono un perfezionista, e mi piace infarcire di orpelli tecnologici anche ciò che di tecnologico c'è già, volevo una funzione molto carina: volevo ricevere una notifica via SMS ogni volta che si collega l'utente "ospite".
Ora, io ho acquistato un pacchetto di sms prepagato su EhiWEB (il servizio si chiama BeSMS), che al di là di darmi la bellissima interfaccia del loro pannello di controllo, hanno delle API molto funzionali sia in SOAP, sia in XML-RPC, sia in HTTP POST. In particolare in HTTP POST (lavorando con https) è facilissimo interfacciarsi al loro sistema per poter gestire degli invii di tipo automatico.
In particolare, per raggiungere il mio scopo, ho fatto un paio di modifiche a uno dei file di ZoneMinder, e le condivido con voi perché potrebbero tornare utili.
Il file da modificare è /usr/share/zoneminder/zm_view_html_postlogin.php
All'inizio del file, dove c'è il commento sulla licenza GPL, aggiungete queste righe:
<?php
  # Se si collega l'utente "ospite", comunica via SMS il fatto.
  # NOTA: si può escludere il ciclo "if" se si vuole la notifica per ogni utente
  if ( $_POST['username'] == "ospite" ) {
    $testoSMS = date("r")." - Collegamento utente ".$_POST['username']." da IP ".$_SERVER['HTTP_X_FORWARDED_FOR'];
    $buffer = array("authlogin" => "NOME_UTENTE_BeSMS",
      "authpasswd" => "PASSWORD_BeSMS",
      "sender" => base64_encode("ZoneMinder"),
      "body" => base64_encode($testoSMS),
      "destination" => "393351234567",
      "id_api" => 999); # Cambiate numero di telefono e id dell'sms come voluto
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://secure.apisms.it/http/send_sms");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $buffer);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $risultato = curl_exec($ch);
    curl_close($ch);
    $ospite_connesso = 1;
  } else $ospite_connesso = 0; # Non è l'ospite, non dare avvisi;
Poi segue una piccola parte in fondo alla pagina, prima di chiudere l'html:
<?php
  # Se è stato inviato l'sms, lo comunica all'utente
  if ( $ospite_connesso ) {
    echo "<p><b>ATTENZIONE</b>: l'accesso dell'utente".$_POST['username']." è stato segnalato all'amministratore<br />\n";
    echo "Esito SMS di notifica: <b><tt>".$risultato."</tt></b></p>\n";
  }
?>
Ovviamente queste modifiche al file, come tutto il programma, sono rilasciate a tutta la comunità secondo la Licenza Pubblica Generica GNU/GPL, e rilasciate secondo i canoni Cardware [vi è piaciuto? Scrivetemi una cartolina di ringraziamento] e Teddyware [è stato utile? Speditemi un orsacchiotto di peluche come ringraziamento (-: ].

Nessun commento:

Posta un commento

Come detto sull'intestazione del Blog, sarete ospiti ben graditi, e per questo vi ringrazio anche per i vostri commenti, anche se messi per criticarmi. (-:
Visto lo spam ricevuto in questo periodo, i commenti sono moderati, pertanto vi prego di utilizzare questo spazio per costruire qualcosa assieme a me e agli altri lettori, astenendovi invece dal limitarvi ad approfittare di questo spazio aperto per fare pubblicità ai vostri prodotti o servizi. In caso di dubbi, in home page trovate il mio indirizzo e-mail e il mio numero di telefono (attivo dal lunedì al venerdì dalle 9 alle 13 e dalle 15 alle 19), per contattarmi.
Infine, vi prego di non utilizzare parolacce, bestemmie o termini che possano urtare la sensibilità mia o dei lettori.
Grazie mille! Grizzly