Indice del forum www.zeroshell.net
Distribuzione Linux ZeroShell
 
 FAQFAQ   CercaCerca  GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo  Log inLog in   Messaggi privatiMessaggi privati 

Script PHP Captive Portal con registrazione utente via SMS
Vai a 1, 2  Successivo
 
Nuovo argomento   Rispondi    Indice del forum -> ZeroShell
Precedente :: Successivo  
Autore Messaggio
dadolo



Registrato: 09/02/16 23:39
Messaggi: 13

MessaggioInviato: Gio Feb 25, 2016 3:53 pm    Oggetto: Script PHP Captive Portal con registrazione utente via SMS Rispondi citando

Post aggiornato il 14/03/2016
Versione software del 14/03/2016


Ciao a tutti,
condivido in questa discussione gli script PHP che ho scritto per gestire la registrazione automatica di utenti tramite il loro numero del cellulare.
L'idea e' nata per togliere il lavoro di inserimento degli utenti all'amministratore di Zeroshell che tramite l'interfaccia web avrebbe dovuto farlo a mano, permettendo agli utenti stessi di registrarsi sul Captive Portal.

Concordo con voi che ci sono strumenti piu' avanzati e potenti come Zerotruth.
La mia esigenza era quella di lasciare l'interfaccia di Zeroshell, senza grossi cambiamenti.

    ------------------------
    Come funziona
    ------------------------

Gli utenti si collegano alla pagina di autenticazione del Captive Portal trovano il link per registrarsi.
La pagina di registrazione, scritta in PHP, richiede: nome, cognome, numero di cellulare ed indirizzo email.
Al secondo step viene inviato, via SMS, un codice di registrazione al numero di cellulare dell'utente che si sta registrando.
Inserito il codice di registrazione ed una password, l'utente e' registrato e puo' iniziare a navigare inserendo, come login, il numero di cellulare e la password.

Lo script PHP, oltre a permettere la registrazione di un nuovo utente, permette il cambio password degli utenti gia' registrati. La procedura di cambio password richiede il numero di cellulare dell'utente e successivamente invia un SMS o un EMAIL all'utente (a seconda di come viene fatta la configurazione) con una stringa random per completare la procedura di cambio password.

I campi numero di cellulare e indirizzo email devono essere unici, il sistema non lascia quindi registrare un nuovo numero di cellulare la cui email e' gia' associata ad un altro numero.


    ----------------
    Premessa
    ----------------

Non essendo un esperto di LDAP e RADIUS, ho richiamato nelle pagine PHP direttamente l'eseguibile 'ldapadd' e 'ldapmodify' prendendo spunto dal contributo di Gianfilippo Balestriero e Giorgio Piangatelli (http://www.zeroshell.net/forum/viewtopic.php?t=2387).
Non mi sono soffermato sul layout della pagina html, lascio a chi interessato modificarlo a piacimento e ad integrarlo con il layout della pagina di login di Zeroshell.


    ------------------------------------------
    File presenti del pacchetto
    ------------------------------------------

- zs.css: piccolo css per il layout di esempio
- zs_class.inc.php: funzioni generali
- zs_class_sms.inc.php: funzioni per invio SMS
- zs_config.inc.php: file con le variabili da configurare
- zs_user.php: script php per registrazione nuovo utente e cambio password


    --------------------------
    Spedizione SMS
    --------------------------

Gli SMS vengono spediti utilizzando Skebby, per utilizzare altre modalita', e' sufficiente modificare la classe 'zs_class_sms.inc.php' ricordando che la funzione di invio SMS deve chiamarsi 'Invio' ed essere invocata con il comando:
Codice:
$sms->Invio



    ------------------------
    Schema di rete
    ------------------------

Riporto uno schema di rete, per meglio spiegare i punti sotto.

Codice:
      INTERNET
          +
          |
          |
          |
    +-----+-----+
    |   modem   |
    +-----+-----+
          |
          |
          |  ETH00  192.168.10.10
      +---+---+
      |       |
      |   Z   |
      |   e   |
      |   r   | 
      |   o   |  Captive
      |   s   |  Portal
      |   h   |
      |   e   |
      |   l   |
      |   l   |
      |       |
      +---+---+
          |  ETH01  192.168.20.1
          |
          |
          |
+---------+---------+
|                   |
|                   |
|     client        |
|                   |
|   via ethernet    |
|                   |
|     o Wi-fi       |
|                   |
|                   |
|                   |
+-------------------+




    ---------------------
    Installazione
    ---------------------

1) Attiva la tua installazione di Zeroshell, richiedendo il 'feature code' come spiegato qui (http://www.zeroshell.org/activation)

2) Installa il pacchetto PHP dalla web-gui di Zeroshell

3) Installa i moduli pear per la Mail con il seguente comando da shell:

Codice:
pear install --alldeps Mail


4) Copia i file (php e css):
Codice:
   zs.css
   zs_class.inc.php
   zs_class_sms.inc.php
   zs_config.inc.php
   zs_user.php

nella directory /var/www su Zeroshell

5) Per modificare testo e layout delle pagine html che vengono create, edita la variabile di configurazione $TEXTconf che trovi nel file zs_config.inc.php ed edita le parti di codice che iniziano con:
Codice:
echo <<<END
e finiscono con:
Codice:
END;



    ------------------------
    Configurazione
    ------------------------

1) Dalla WEB-GUI di Zeroshell --> Users --> Captive Portal --> Authentication:
- modifica la 'Web Login Page Customization' in modo da inserire il link per la registrazione del nuovo utente ed eventuale cambio password:
- URL per registrazione nuovo utente:
Codice:
https://192.168.20.1/add-ons/zs_user.php?action=useradd&ZSCPRedirect=<ZS_TAG _ZSCPRedirect>

- URL per cambio password utente:
Codice:
https://192.168.20.1/add-ons/zs_user.php?action=userpwd&ZSCPRedirect=<ZS_TAG _ZSCPRedirect>

[sostituisci l'IP con quello del tuo Captive Portal]


2) Dalla WEB-GUI di Zeroshell --> Users --> Captive Portal --> Free Authorized --> abilita l'accesso alle pagine web con indirizzo
Codice:
https://192.168.20.1

vedi immagine Free authorized (altrimenti non sara' possibile la registrazione di un nuovo utente)


3) Configura il tuo ambiente editando il file (nella directory /var/www):
Codice:
zs_config.inc.php




    -------------------
    Punti aperti
    -------------------

Di seguito vi riporto alcuni punti ancora aperti, ringrazio fin da ora chi vuole darmi una mano o dei suggerimenti:
- possibilita' di configurare da data di scadenza per ogni singolo utente (esempio 3 mesi), durante la registrazione LDAP/RADIUS
- scrivere in PHP la parte di inserimento utente e cambio password che adesso richiamano tramite 'exec' i comandi shell ldapadd e ldapmodify
- aggiungere supporto per la lingua inglese
- uniformare il layout a quello utilizzato per il login (conto di farlo prossimamente) [FATTO]


    --------------------------------
    Scarica il pacchetto
    --------------------------------

versione del 14/03/2016 ZsUser.tar.gz:
- uniformato layout con quello di default di Zeroshell
- possibilita' di attivare / disattivare la procedura di registrazione di un nuovo utente tramite la variabile '$USERregister' presente nel file 'zs_config.inc.php'

versione del 25/02/2016:
- versione iniziale

Se apportero' modifiche agli script PHP, sara' mia cura renderli disponibili in questa discussione (ad inizio post ho evidenziato la data di ultimo aggiornamento e la versione software).
Buona giornata.


L'ultima modifica di dadolo il Lun Mar 14, 2016 7:51 pm, modificato 1 volta
Top
Profilo Invia messaggio privato
truthahn



Registrato: 12/06/12 11:46
Messaggi: 2214

MessaggioInviato: Gio Feb 25, 2016 9:50 pm    Oggetto: Rispondi citando

Buonasera e benvenuto con questa bella novitą.
Ottimo!!! Questo porterą sicuramente ad ampliare ancor pił la possibilitą di scelta degli utilizzatori di Zeroshell e probabilmente sarą
facilitato l'aiuto e lo sviluppo da parte di altri. Buon lavoro e buona sperimentazione.
Grazie per averlo condiviso.
Top
Profilo Invia messaggio privato
fulvio
Site Admin


Registrato: 01/11/06 17:45
Messaggi: 1551

MessaggioInviato: Ven Feb 26, 2016 7:50 pm    Oggetto: Rispondi citando

Grazie anche da parte mia per questo
contributo.
Saluti
Fulvio
Top
Profilo Invia messaggio privato
tiger



Registrato: 02/02/16 10:34
Messaggi: 190

MessaggioInviato: Ven Mar 04, 2016 12:14 pm    Oggetto: Rispondi citando

e se volessi abilitare tale funzione al momento?
tipo in una scuola vengono in visita persone per cui richiedere a loro iscrizione con questo metodo, e poi stopparlo?
dovrei riconfigurare nuovamente il cp prima?
c'é un modo per renderlo operativo al momento?

Cmq complimenti Dadolo
Top
Profilo Invia messaggio privato
dadolo



Registrato: 09/02/16 23:39
Messaggi: 13

MessaggioInviato: Ven Mar 04, 2016 1:39 pm    Oggetto: Rispondi citando

tiger ha scritto:
e se volessi abilitare tale funzione al momento?
tipo in una scuola vengono in visita persone per cui richiedere a loro iscrizione con questo metodo, e poi stopparlo?
dovrei riconfigurare nuovamente il cp prima?
c'e' un modo per renderlo operativo al momento?

Cmq complimenti Dadolo


Ciao Tiger, potresti crearti 2 template per il Captive portal, uno con le url per la registrazione e il cambio password e cambiarle a seconda delle esigenze.
Sicuro e' che le pagine rimangono quindi se qualcuno conoscesse l'url, le raggiungerebbe ugualmente.

Visto che, conto la prossima settimana, mettero' il nuovo codice con il layout uguale alla pagina di login, aggiungo questa funzionalita'... non mi costa molto lavoro.

Buona giornata
Top
Profilo Invia messaggio privato
tiger



Registrato: 02/02/16 10:34
Messaggi: 190

MessaggioInviato: Ven Mar 04, 2016 1:46 pm    Oggetto: Rispondi citando

Grazie mille.!!!
Top
Profilo Invia messaggio privato
dadolo



Registrato: 09/02/16 23:39
Messaggi: 13

MessaggioInviato: Lun Mar 14, 2016 7:54 pm    Oggetto: Versione 14/03/2016 Rispondi citando

Ho messo online la versione 14/03/2016 con l'utilizzo del layout di default di Zeroshell per le pagine di registrazione nuovo utente e cambio password.
Su suggerimento di @tiger ho aggiunto la possibilita' di abilitare/disabilitare la procedura di registrazione di un nuovo utente.

Buona serata.
Top
Profilo Invia messaggio privato
tiger



Registrato: 02/02/16 10:34
Messaggi: 190

MessaggioInviato: Mar Mar 15, 2016 12:59 pm    Oggetto: Rispondi citando

Grazie Mille dadolo sempre al top....
Top
Profilo Invia messaggio privato
dadolo



Registrato: 09/02/16 23:39
Messaggi: 13

MessaggioInviato: Mar Mar 15, 2016 8:13 pm    Oggetto: Rispondi citando

tiger ha scritto:
Grazie Mille dadolo sempre al top....


Fammi sapere se funziona tutto.
Se posso chiedere, usi Skebby per inviare gli SMS?
Top
Profilo Invia messaggio privato
tiger



Registrato: 02/02/16 10:34
Messaggi: 190

MessaggioInviato: Mar Mar 15, 2016 8:41 pm    Oggetto: Rispondi citando

Conto di testate il tuo script domani su una macchina zs di test. Si credo che useró skebby
Top
Profilo Invia messaggio privato
dadolo



Registrato: 09/02/16 23:39
Messaggi: 13

MessaggioInviato: Mer Mar 16, 2016 8:21 am    Oggetto: Rispondi citando

tiger ha scritto:
Conto di testate il tuo script domani su una macchina zs di test. Si credo che useró skebby


Se hai occasione di provare con un numero di cellulare non italiano, fammi sapere se funziona correttamente: non ho avuto possibilitą di testarlo.

Grazie e buona giornata.
Top
Profilo Invia messaggio privato
tiger



Registrato: 02/02/16 10:34
Messaggi: 190

MessaggioInviato: Mer Mar 16, 2016 11:03 am    Oggetto: Rispondi citando

dadolo come accedi alla cartella /var/www?

per caricarci i file?


singolarmente tramite wget? con telnet? fammi sapere
Top
Profilo Invia messaggio privato
tiger



Registrato: 02/02/16 10:34
Messaggi: 190

MessaggioInviato: Mer Mar 16, 2016 11:45 am    Oggetto: Rispondi citando

ho risolto dando da shell il comando "chsh" nella shell zeroshell

dare /bin/bash come directory default

eppoi accedere alle acrtelle usando winscp dando ip ZS
porta 22

e credenziali di accesso.

in questo modo ho avuto accesso alle cartelle come fossi in ftp

see you
Top
Profilo Invia messaggio privato
dadolo



Registrato: 09/02/16 23:39
Messaggi: 13

MessaggioInviato: Mer Mar 16, 2016 12:04 pm    Oggetto: Rispondi citando

tiger ha scritto:
ho risolto dando da shell il comando "chsh" nella shell zeroshell

dare /bin/bash come directory default

eppoi accedere alle acrtelle usando winscp dando ip ZS
porta 22

e credenziali di accesso.

in questo modo ho avuto accesso alle cartelle come fossi in ftp

see you


Ciao,
esatto, per copiare i file occorre utilizzare 'scp', 'winscp' o simili.
Scrivo di seguito i singoli passi che potrebbero interessare anche altre persone:

1) collegarsi via SSH al server Zeroshell, come utente 'admin':
Codice:
ssh admin@192.168.10.10

[modificare l'indirizzo IP con il proprio]

2) inserire la password con cui ci si collega a Zeroshell via web

3) selezionare:
Codice:
<S> Shell Prompt

4) editare il file delle password:
Codice:
vi /etc/passwd

5) modificare la riga:
Codice:
admin:x:0:0:root:/root:/root/kerbynet.cgi/scripts/localman

in
Codice:
admin:x:0:0:root:/root:/bin/bash

6) salvare

7) copiare i file con 'scp', 'winscp'....

N.B: al riavvio del server Zeroshell il file /etc/passwd ritorna quello originale
Top
Profilo Invia messaggio privato
emilio



Registrato: 27/11/15 21:56
Messaggi: 6

MessaggioInviato: Ven Apr 01, 2016 10:01 pm    Oggetto: ZS 3.5.0 update Rispondi citando

Ciao, bel lavoro.
Utilizzo i vecchi script per altri motivi e nell'ultima versione di ZS ho dovuto apportare qualche modifica. Probabilmente ne consegue, ma non ho potuto verificarlo, che il file zs_user.php andrebbe aggiornato:
linea 229 e 603 da
Codice:
objectClass: radiusprofile
cn: $_SESSION[cellulare]

a
Codice:
objectClass: radiusprofile
objectClass: radiusExtension
cn: $_SESSION[cellulare]

linea 609 da
Codice:
exec("$CMD[ldapmod] -D \"cn=Manager,$dn\" -x -w \"$ldap[password]\" <<EOF\n$useradd\nEOF\n", $output, $return);

a
Codice:
exec("$CMD[ldapmodify] -D \"cn=Manager,$dn\" -x -w \"$ldap[password]\" <<EOF\n$useradd\nEOF\n", $output, $return);


Grazie per aver condiviso il tuo lavoro.
Top
Profilo Invia messaggio privato
dadolo



Registrato: 09/02/16 23:39
Messaggi: 13

MessaggioInviato: Ven Apr 08, 2016 10:10 pm    Oggetto: Re: ZS 3.5.0 update Rispondi citando

Ciao Emilio,
ti ringrazio per le osservazioni, per quanto riguarda la nuova versione di ZS non l'ho ancora provata e quindi non posso confermarti la prima modifica da te suggerita. Quando lo faro' rispondero' direttamente in questa discussione.

Non e' invece corretta la seconda modifica che suggerisci alla linea 609 del file zs_user.php, come puoi vedere in zs_config.inc.php, l'array associativo $CMD e' cosi' definito:
Codice:

$CMD = array(
   'ldapadd'   =>   '/usr/local/bin/ldapadd',
   'ldapmod'   =>   '/usr/local/bin/ldapmodify',
);
Top
Profilo Invia messaggio privato
emilio



Registrato: 27/11/15 21:56
Messaggi: 6

MessaggioInviato: Ven Apr 08, 2016 11:18 pm    Oggetto: Rispondi citando

Perdono, perdono, perdono... perdonato, vero?
La riga 609 č una mia svista!
Ho invece provato a verificare le prime due sulla 3.5:

root@zs ~> /usr/local/bin/ldapsearch -LLL -x
...
dn: cn=emilio,ou=Radius,dc=xxx,dc=xxx,dc=it
objectClass: organizationalPerson
objectClass: top
objectClass: radiusprofile
objectClass: radiusExtension
cn: emilio
sn: 23afe39f
dialupAccess: yes
...

Come vedi il comando restituisce il nuovo objectClass radiusExtention.
Questo potrą essere utile se qualcuno volesse utilizzare il tuo lavoro sulla 3.5 e forse anche per le tue future verifiche e aggiornamenti.
Ciao.
Top
Profilo Invia messaggio privato
xavier



Registrato: 23/02/14 22:19
Messaggi: 97

MessaggioInviato: Lun Mag 02, 2016 3:57 pm    Oggetto: Re: Script PHP Captive Portal con registrazione utente via S Rispondi citando

dadolo ha scritto:
1) Dalla WEB-GUI di Zeroshell --> Users --> Captive Portal --> Authentication:
- modifica la 'Web Login Page Customization' in modo da inserire il link per la registrazione del nuovo utente ed eventuale cambio password


Probabilmente sarą un stupidaggine, sto girando attorno alla schermata "Authentication" da un bel po', ma non riesco a vedere l'opzione per "inserire il link per la registrazione".

Chi mi aiuta a trovarla ?
Top
Profilo Invia messaggio privato
dadolo



Registrato: 09/02/16 23:39
Messaggi: 13

MessaggioInviato: Mar Mag 03, 2016 9:05 am    Oggetto: Re: Script PHP Captive Portal con registrazione utente via S Rispondi citando

xavier ha scritto:
dadolo ha scritto:
1) Dalla WEB-GUI di Zeroshell --> Users --> Captive Portal --> Authentication:
- modifica la 'Web Login Page Customization' in modo da inserire il link per la registrazione del nuovo utente ed eventuale cambio password


Probabilmente sara' un stupidaggine, sto girando attorno alla schermata "Authentication" da un bel po', ma non riesco a vedere l'opzione per "inserire il link per la registrazione".

Chi mi aiuta a trovarla ?


Ciao xavier,
guarda questo screenshot, sono indicati i passi per trovare la pagina 'incriminata'. Una volta premuto su 'Template', seleziona 'Use customized template' e, dal menu' a tendina affianco, 'View source': ti comparira' il codice della pagina a cui dovrai inserire quello riportato nel punto 1) Dalla WEB-GUI di Zeroshell --> Users --> Captive Portal --> Authentication

Facci sapere com'e' andata.
Top
Profilo Invia messaggio privato
xavier



Registrato: 23/02/14 22:19
Messaggi: 97

MessaggioInviato: Sab Mag 07, 2016 9:56 pm    Oggetto: Re: Script PHP Captive Portal con registrazione utente via S Rispondi citando

Provato tutto come da tue indicazioni fino al punto in cui dici

dadolo ha scritto:
ti comparira' il codice della pagina a cui dovrai inserire quello riportato nel punto 1) Dalla WEB-GUI di Zeroshell --> Users --> Captive Portal --> Authentication


Qua mi perdo completamente.

Non riesco a vedere un URL esistente nel codice del "customized template" da sostituire con il tuo.

Potresti postare uno spezzone di codice di quella pagina nel punto in cui hai inserito i tuoi due URL ?

Basterebbe una riga prima ed una dopo, giusto per capire in che tratto fare la modifica.
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> ZeroShell Tutti i fusi orari sono GMT + 1 ora
Vai a 1, 2  Successivo
Pagina 1 di 2

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi


Powered by phpBB © 2001, 2005 phpBB Group
phpbb.it