{"id":77,"date":"2017-02-20T00:07:46","date_gmt":"2017-02-19T23:07:46","guid":{"rendered":"http:\/\/blog.ilarionocentini.eu\/?p=77"},"modified":"2017-02-20T09:50:13","modified_gmt":"2017-02-20T08:50:13","slug":"pfsense-captive-portal-inviare-vouchers-via-sms-e-mantenere-il-log","status":"publish","type":"post","link":"https:\/\/blog.ilarionocentini.eu\/?p=77","title":{"rendered":"Pfsense captive portal: inviare vouchers via sms e mantenere il log"},"content":{"rendered":"<p>Per offrire un servizio internet a vari utenti (nel mio caso un centro di accoglienza diurno) \u00e8 necessario mantenere il log degli accessi e <img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"94\" data-permalink=\"https:\/\/blog.ilarionocentini.eu\/?attachment_id=94\" data-orig-file=\"https:\/\/i0.wp.com\/blog.ilarionocentini.eu\/wp-content\/uploads\/2017\/02\/pfsense-logo.png?fit=406%2C226&amp;ssl=1\" data-orig-size=\"406,226\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"pfsense-logo\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/blog.ilarionocentini.eu\/wp-content\/uploads\/2017\/02\/pfsense-logo.png?fit=300%2C167&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/blog.ilarionocentini.eu\/wp-content\/uploads\/2017\/02\/pfsense-logo.png?fit=406%2C226&amp;ssl=1\" class=\"size-medium wp-image-94 alignleft\" src=\"https:\/\/i0.wp.com\/blog.ilarionocentini.eu\/wp-content\/uploads\/2017\/02\/pfsense-logo.png?resize=300%2C167\" alt=\"\" width=\"300\" height=\"167\" srcset=\"https:\/\/i0.wp.com\/blog.ilarionocentini.eu\/wp-content\/uploads\/2017\/02\/pfsense-logo.png?resize=300%2C167&amp;ssl=1 300w, https:\/\/i0.wp.com\/blog.ilarionocentini.eu\/wp-content\/uploads\/2017\/02\/pfsense-logo.png?w=406&amp;ssl=1 406w\" sizes=\"auto, (max-width: 300px) 85vw, 300px\" \/>dell&#8217;identit\u00e0 degli utenti, in maniera tale da mettere i dati a disposizione dell&#8217;autorit\u00e0 giudiziaria, se richiesto.<\/p>\n<p>Pfsense gi\u00e0 supporta il logging sul captive portal, e lo associa al singolo voucher, quindi se siete in grado di assegnare i voucher manualmente, di identificare i vari utenti e di collegare ogni voucher ad un utente siete a posto, potete smettere di leggere. Nel mio caso, per\u00f2, gli operatori hanno gi\u00e0 troppo da fare per poter gestire anche i voucher, e quindi c&#8217;era bisogno di qualcosa di automatico. In particolare l&#8217;idea era di far spedire i voucher via sms ai cellulari, come fanno molti provider commerciali. Questo ha due vantaggi: il primo che la distribuzione dei vouchers \u00e8 automatica, il secondo che si pu\u00f2 collegare ogni singolo voucher al numero di cellulare corrispondente. Se i cellulari sono italiani questo risponde anche all&#8217;obbligo di identificazione, poich\u00e9 ad ogni sim \u00e8 comunque collegata una identit\u00e0 verificata dall&#8217;operatore.<\/p>\n<p>Ho scoperto che qualcosa del genere gi\u00e0 esiste, liberamente disponibile su <a href=\"https:\/\/sourceforge.net\/projects\/vouchergen\/\">Sourceforge<\/a>, e sichiama Vouchergenerator. Attualmente \u00e8 alla versione 1.6, potete scaricarlo direttamente da Sourceforge. Ne allego anche una <a href=\"http:\/\/blog.ilarionocentini.eu\/wp-content\/uploads\/2017\/02\/vouchergenerator1.6.zip\">copia qui<\/a>, just in case. Grazie a\u00a0<a href=\"https:\/\/sourceforge.net\/u\/eagle2-2\/profile\/\"><em>eagle2\u00a0<\/em><\/a>per averlo creato e messo a disposizione di tutti.<\/p>\n<p>Il software \u00e8 in lingua tedesca ed inglese, qui mi riferisco sempre alla versione inglese. Non ha alcuna interazione con Pfsense, sarete voi che manualmente dovrete generare i vouchers ed esportarli in formato CSV per poi caricare il file esportato su Vouchergenerator. Il pacchetto si installa in un normale server LAMP (Linux, Apache, Mysql, Php), in una qualsiasi sottodirectory de vostro sito web. Potete seguire le istruzioni allegate al file zip. Unico accorgimento, la posizione delle directories che estrarrete dal file zip vanno leggermente modificate. In particolare se il vostro sito per generare i vouchers via sms si trova nella posizione <em>www.miosito.org\/sms\/ <\/em> allora la directory <em>\/sms\/ <\/em> dovr\u00e0 contenere le directories <em>smsrequest_en<\/em>, <em>smsrequest_de<\/em> e tutto il contenuto della cartella <em>vouchergenerator1.6<\/em> (il contenuto della cartella, non la cartella stessa!) Seguite le istruzioni fornite ed il software si installer\u00e0. Create il database dei vouchers importando il file CSV generato da Pfsense, come richiesto. Fate attenzione che nel tab Settings il valore <em>Voucher table for text message<\/em> deve corrispondere alla <em>table name<\/em> del campo <em>databasetables<\/em>, come indicato nella figura che segue (in questo caso voucher02), altrimenti avrete una serie di warnings quando provate a generare l&#8217;sms, e ci perdete svariate ore di sonno per fare il debugging (fatto!).<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"83\" data-permalink=\"https:\/\/blog.ilarionocentini.eu\/?attachment_id=83\" data-orig-file=\"https:\/\/i0.wp.com\/blog.ilarionocentini.eu\/wp-content\/uploads\/2017\/02\/screenshot1.png?fit=601%2C162&amp;ssl=1\" data-orig-size=\"601,162\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"screenshot1\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/blog.ilarionocentini.eu\/wp-content\/uploads\/2017\/02\/screenshot1.png?fit=300%2C81&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/blog.ilarionocentini.eu\/wp-content\/uploads\/2017\/02\/screenshot1.png?fit=601%2C162&amp;ssl=1\" class=\"alignnone size-full wp-image-83\" src=\"https:\/\/i0.wp.com\/blog.ilarionocentini.eu\/wp-content\/uploads\/2017\/02\/screenshot1.png?resize=601%2C162\" alt=\"\" width=\"601\" height=\"162\" srcset=\"https:\/\/i0.wp.com\/blog.ilarionocentini.eu\/wp-content\/uploads\/2017\/02\/screenshot1.png?w=601&amp;ssl=1 601w, https:\/\/i0.wp.com\/blog.ilarionocentini.eu\/wp-content\/uploads\/2017\/02\/screenshot1.png?resize=300%2C81&amp;ssl=1 300w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Prima di avere un sistema utilizzabile, per\u00f2, vanno fatte delle modifiche. Il creatore del software \u00e8 tedesco e quindi il software \u00e8 pensato per i numeri telefonici tedeschi e si appoggia ad un service provider di sms tedesco, ovvero <a href=\"http:\/\/www.smsflatrate.net\">smsflatrate<\/a>. Poich\u00e9 probabilmente siete interessati invece a mandare, come me, i vouchers via sms a delle sim italiane, dovrete fare alcune modifiche al codice php. Le modifiche che vi descrivo sotto sono per mandare sms a sim italiane utilizzando il <a href=\"https:\/\/hosting.aruba.it\/servizio-sms.aspx\">servizio sms del provider Aruba<\/a>.\u00a0 Se preferite altri providers dovrete cambiare il codice php di conseguenza, a condizione che il provider scelto offra una API HTTP con il metodo GET.<\/p>\n<p>Cominciamo dalla prima modifica, ovvero cambiare i prefissi tedeschi con i prefissi italiani.<br \/>\nNel file <em>include\/sms_api.php<\/em>, linea 22, dovete cambiare la linea da<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n$dest=&quot;00491&quot; . $empf;\r\n<\/pre>\n<p>in<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n$dest=&quot;%2b393&quot; . $empf;\r\n<\/pre>\n<p>ovverosia si inserisce il prefisso +39 ed il 3 che \u00e8 la prima cifra di tutti i numeri cellulari italiani.<\/p>\n<p>La seconda modifica \u00e8 da fare alla linea 25, che va modificata da:<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n$fileOpenTRI = &quot;https:\/\/www.smsflatrate.net\/schnittstelle.php?key=&quot; . $settings&#x5B;'sms_gtwkey'] . &quot;&amp;to=&quot; . $dest . &quot;&amp;text=&quot; . $text . &quot;&amp;type=3&quot;;\r\n<\/pre>\n<p>a<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n$fileOpenTRI = &quot;http:\/\/admin.sms.aruba.it\/sms\/send.php?&quot; . $settings&#x5B;'sms_gtwkey'] . &quot;&amp;rcpt=&quot; . $dest . &quot;&amp;data=&quot; . $text . &quot;&amp;sender=null&amp;qty=ll&quot;;\r\n<\/pre>\n<p>Bisogna ora fare in modo che siano selezionabili i prefissi italiani. La modifica che segue va fatta sia nel file <em>sms.php<\/em> che nel file <em>smsrequest_en\/index.php<\/em>. In entrambi i file troverete una blocco di questo tipo:<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n&lt;select name=&quot;handyvorwahl&quot;&gt;\r\n&lt;option value=&quot;50&quot;&gt;0150&lt;\/option&gt;\r\n&lt;option value=&quot;51&quot;&gt;0151&lt;\/option&gt;\r\n&lt;option value=&quot;52&quot;&gt;0152&lt;\/option&gt;\r\n&lt;option value=&quot;57&quot;&gt;0157&lt;\/option&gt;\r\n&lt;option value=&quot;59&quot;&gt;0159&lt;\/option&gt;\r\n&lt;option value=&quot;60&quot;&gt;0160&lt;\/option&gt;\r\n&lt;option value=&quot;61&quot;&gt;0161&lt;\/option&gt;\r\n&lt;option value=&quot;62&quot;&gt;0162&lt;\/option&gt;\r\n&lt;option value=&quot;63&quot;&gt;0163&lt;\/option&gt;\r\n&lt;option value=&quot;64&quot;&gt;0164&lt;\/option&gt;\r\n&lt;option value=&quot;70&quot;&gt;0170&lt;\/option&gt;\r\n&lt;option value=&quot;71&quot;&gt;0171&lt;\/option&gt;\r\n&lt;option value=&quot;72&quot;&gt;0172&lt;\/option&gt;\r\n&lt;option value=&quot;73&quot;&gt;0173&lt;\/option&gt;\r\n&lt;option value=&quot;74&quot;&gt;0174&lt;\/option&gt;\r\n&lt;option value=&quot;75&quot;&gt;0175&lt;\/option&gt;\r\n&lt;option value=&quot;76&quot;&gt;0176&lt;\/option&gt;\r\n&lt;option value=&quot;77&quot;&gt;0177&lt;\/option&gt;\r\n&lt;option value=&quot;78&quot;&gt;0178&lt;\/option&gt;\r\n&lt;option value=&quot;79&quot;&gt;0179&lt;\/option&gt;\r\n&lt;\/select&gt;\r\n<\/pre>\n<p>Il blocco va modificato come segue (i prefissi vengono da <a href=\"https:\/\/it.wikipedia.org\/wiki\/Prefissi_telefonici_dei_cellulari_italiani\">Wikipedia<\/a> ):<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n&lt;select name=&quot;handyvorwahl&quot;&gt;\r\n&lt;option value=&quot;20&quot;&gt;320&lt;\/option&gt;\r\n&lt;option value=&quot;24&quot;&gt;324&lt;\/option&gt;\r\n&lt;option value=&quot;27&quot;&gt;327&lt;\/option&gt;\r\n&lt;option value=&quot;28&quot;&gt;328&lt;\/option&gt;\r\n&lt;option value=&quot;29&quot;&gt;329&lt;\/option&gt;\r\n&lt;option value=&quot;30&quot;&gt;330&lt;\/option&gt;\r\n&lt;option value=&quot;31&quot;&gt;331&lt;\/option&gt;\r\n&lt;option value=&quot;33&quot;&gt;333&lt;\/option&gt;\r\n&lt;option value=&quot;34&quot;&gt;334&lt;\/option&gt;\r\n&lt;option value=&quot;35&quot;&gt;335&lt;\/option&gt;\r\n&lt;option value=&quot;36&quot;&gt;336&lt;\/option&gt;\r\n&lt;option value=&quot;37&quot;&gt;337&lt;\/option&gt;\r\n&lt;option value=&quot;38&quot;&gt;338&lt;\/option&gt;\r\n&lt;option value=&quot;39&quot;&gt;339&lt;\/option&gt;\r\n&lt;option value=&quot;40&quot;&gt;340&lt;\/option&gt;\r\n&lt;option value=&quot;42&quot;&gt;342&lt;\/option&gt;\r\n&lt;option value=&quot;44&quot;&gt;344&lt;\/option&gt;\r\n&lt;option value=&quot;45&quot;&gt;345&lt;\/option&gt;\r\n&lt;option value=&quot;46&quot;&gt;346&lt;\/option&gt;\r\n&lt;option value=&quot;47&quot;&gt;347&lt;\/option&gt;\r\n&lt;option value=&quot;48&quot;&gt;348&lt;\/option&gt;\r\n&lt;option value=&quot;49&quot;&gt;349&lt;\/option&gt;\r\n&lt;option value=&quot;50&quot;&gt;350&lt;\/option&gt;\r\n&lt;option value=&quot;51&quot;&gt;351&lt;\/option&gt;\r\n&lt;option value=&quot;53&quot;&gt;353&lt;\/option&gt;\r\n&lt;option value=&quot;60&quot;&gt;360&lt;\/option&gt;\r\n&lt;option value=&quot;66&quot;&gt;366&lt;\/option&gt;\r\n&lt;option value=&quot;68&quot;&gt;368&lt;\/option&gt;\r\n&lt;option value=&quot;70&quot;&gt;370&lt;\/option&gt;\r\n&lt;option value=&quot;71&quot;&gt;371&lt;\/option&gt;\r\n&lt;option value=&quot;73&quot;&gt;373&lt;\/option&gt;\r\n&lt;option value=&quot;75&quot;&gt;375&lt;\/option&gt;\r\n&lt;option value=&quot;77&quot;&gt;377&lt;\/option&gt;\r\n&lt;option value=&quot;80&quot;&gt;380&lt;\/option&gt;\r\n&lt;option value=&quot;84&quot;&gt;384&lt;\/option&gt;\r\n&lt;option value=&quot;85&quot;&gt;385&lt;\/option&gt;\r\n&lt;option value=&quot;88&quot;&gt;388&lt;\/option&gt;\r\n&lt;option value=&quot;89&quot;&gt;389&lt;\/option&gt;\r\n&lt;option value=&quot;91&quot;&gt;391&lt;\/option&gt;\r\n&lt;option value=&quot;92&quot;&gt;392&lt;\/option&gt;\r\n&lt;option value=&quot;93&quot;&gt;393&lt;\/option&gt;\r\n&lt;\/select&gt;\r\n<\/pre>\n<p>A questo punto l&#8217;ultima cosa da fare prima di poter mandare il primo sms \u00e8 inserire i propri dati identificativi del servizio sms di Aruba.\u00a0 Lo potete fare nel tab Settings, nel campo <em>smsflatrate.net-Gateway-Key<\/em> . Poich\u00e9 stiamo utilizzando Aruba e non Smsflatrate dovremo inserire non la loro gateway-key ma user e password assegnataci da Aruba, nel formato:<\/p>\n<p>user=Sms12345&amp;pass=qwerty89<\/p>\n<p>Ovviamente dovrete modificare i dati con i vostri dati di accesso al servizio sms di Aruba.<\/p>\n<p>A questo punto il sistema dovrebbe funzionare, attraverso la pagina <em>www.miosito.org\/sms\/<\/em> sarete in grado di amministrare il sistema, mentre alla pagina <em>www.miosito.org\/sms\/<\/em><em>smsrequest_en<\/em> i vostri utenti potranno richiedere il voucher (ricordate di inserire questo link nella white list del vostro captive portal). Il software che avete installato ha avarie altre features, tipo la generazione di un pdf con i vouchers da distribuire manualmente. tenete presente che se un voucher \u00e8 stampato non pu\u00f2 essere inviato per sms e viceversa. In pratica stampare o inviare un voucher lo toglie da quelli disponibili. Inoltre ogni numero telefonico pu\u00f2 richiedere massimo un voucher al giorno. La durata dei vouchers ovviamente la definite voi in fase di generazione.<\/p>\n<p>L&#8217;ultima cosa da fare \u00e8 attivare il logging dei vouchers associati al numero telefonico richiedente. Per far questo dovrete inserire nel file <em>include\/sms_api.php<\/em>, subito dopo la linea 25, le seguenti linee:<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n$logfile='\/var\/www\/www.miosito.org\/sms\/logs\/'.date('Ymd').'_vouchers.txt';\r\n$logentry=$data.&quot;\\t&quot;.&quot;3&quot;.$empf.&quot;\\t&quot;.date('d-m-Y_H:i').&quot;\\n&quot;;\r\nfile_put_contents($logfile, $logentry, FILE_APPEND | LOCK_EX);\r\n<\/pre>\n<p>Tenete presente che la directory <em>\/logs\/<\/em> deve esistere con i permessi appropriati e che il path deve essere assoluto. Nell&#8217;esempio \u00e8 come apparirebbe in un sistema Ubuntu, ma naturalmente pu\u00f2 variare. Consultate la documentazione di Apache, se avete problemi.<\/p>\n<p>Se tutto funziona ogni voucher inviato via sms viene registrato sul file di log del giorno corrente. Ogni giorno viene creato un nuovo file di log con un nuovo nome.\u00a0 A questo punto se avete salvato\u00a0log di Pfsense e dovete fornire delle informazioni al riguardo analizzando i due file del giorno in questione siete in grado di sapere quale utente (corrispondente ad una data sim) ha fatto cosa.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Per offrire un servizio internet a vari utenti (nel mio caso un centro di accoglienza diurno) \u00e8 necessario mantenere il log degli accessi e dell&#8217;identit\u00e0 degli utenti, in maniera tale da mettere i dati a disposizione dell&#8217;autorit\u00e0 giudiziaria, se richiesto. Pfsense gi\u00e0 supporta il logging sul captive portal, e lo associa al singolo voucher, quindi &hellip; <a href=\"https:\/\/blog.ilarionocentini.eu\/?p=77\" class=\"more-link\">Leggi tutto<span class=\"screen-reader-text\"> &#8220;Pfsense captive portal: inviare vouchers via sms e mantenere il log&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[8],"tags":[6,18,19],"class_list":["post-77","post","type-post","status-publish","format-standard","hentry","category-tech","tag-aruba","tag-pfsense","tag-sms"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7LlHs-1f","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/blog.ilarionocentini.eu\/index.php?rest_route=\/wp\/v2\/posts\/77","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ilarionocentini.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ilarionocentini.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ilarionocentini.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ilarionocentini.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=77"}],"version-history":[{"count":14,"href":"https:\/\/blog.ilarionocentini.eu\/index.php?rest_route=\/wp\/v2\/posts\/77\/revisions"}],"predecessor-version":[{"id":95,"href":"https:\/\/blog.ilarionocentini.eu\/index.php?rest_route=\/wp\/v2\/posts\/77\/revisions\/95"}],"wp:attachment":[{"href":"https:\/\/blog.ilarionocentini.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=77"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ilarionocentini.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=77"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ilarionocentini.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=77"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}