Università degli Studi di Napoli Federico II Facoltà di Scienze MM.FF.NN. Corso di Laurea in Informatica Tesi Sperimentale di Laurea Triennale Implementazione di un modulo per l'autenticazione degli utenti unina su portale di monitoraggio della rete di Ateneo Relatori Candidato Prof. Guido Russo Dr. Ing. Catello Di Martino Anno accademico 2009/2010 Pisa Marco Matricola: 873/15 Desidero ringraziare ... Il prof. G. Russo e all'Ing. C. Di Martino per l'opportunita che mi hanno dato e per il supporto umano e professionale che mi hanno messo a disposizione durante tutto lo svolgimento del tirocinio I miei genitori, mio fratello e la mia ragazza per avermi sostenuto in questa esperienza di vita. Tutti gli amici, colleghi del corso di laurea e del centro ScoPe, in particolare Enzo e Nicola che mi sostenuto e condiviso questa esperienza E tutte le persone a me care che hanno creduto in me, e mi hanno sostenuto. Un GRAZIE a tutti Indice 1 Introduzione ...............................................................................................................5 2 Monitoraggio & Porting..............................................................................................7 2.1 Il Portale wifed.scope.unina.it..........................................................................................7 2.1.1 Architettura del Portale: I Servizi Offerti ................................................................8 2.1.2 LAMPP: Linux, Apache, Mysql, Php, Perl............................................................12 2.1.3 CMS Joomla...........................................................................................................12 2.2 Monitoraggio della rete..................................................................................................14 2.2.1 Protocollo SNMP....................................................................................................15 2.2.2 Cacti........................................................................................................................16 2.2.3 Rrdtool : Round-Robin Database Tool ..................................................................22 2.3 Porting del Portale..........................................................................................................24 2.3.1 Requisiti per il Porting............................................................................................24 2.3.2 Virtual Machine: Vmware......................................................................................25 2.3.3 Wifed.scope.unina.it: porting..................................................................................25 2.3.4 Wifed02.scope.unina.it: porting..............................................................................26 2.3.5 Wifed03.scope.unina.it : Guida al Porting..............................................................27 2.3.6 Statistiche Wi-Fi : Porting del Servizio..................................................................27 3 Gestione dell'Accesso...............................................................................................29 3.1 Autenticazione di un Utente...........................................................................................30 3.2 Il Protocollo Ldap...........................................................................................................31 3.2.1 Ldap: di unina ........................................................................................................34 3.3 CMS Joomla:struttura sviluppatore................................................................................41 3.3.1 Struttura del CMS Joomla......................................................................................41 3.3.2 Componenti ...........................................................................................................43 3.3.3 Moduli....................................................................................................................43 3.3.4 Plug-in....................................................................................................................44 3.3.5 Scelta di Implementare il progetto tramite il Plugin di joomla..............................44 3.4 Interfacciarsi con i server Ldap di unina.......................................................................48 3.4.1 Perchè un Web Service?.........................................................................................48 3.4.2 Web Service di unina..............................................................................................49 4. Progetto: Autenticazione tramite Ldap nel CMS Joomla.........................................51 4.1 Analisi dei requisiti.........................................................................................................51 4.2 Realizzazione Prototipo..................................................................................................52 4.3 Progettazione..................................................................................................................55 4.3.1 Problematiche riscontrate.......................................................................................55 4.3.2 Scelte Progettuali....................................................................................................56 4.3.3 Casi D'uso...............................................................................................................57 4.3.4 Diagrammi delle classi...........................................................................................58 4.3.5 Diagrammi di Sequenza..........................................................................................59 4.3.6 Implementazione....................................................................................................60 5 Conclusioni...............................................................................................................64 6 Appendice.................................................................................................................66 Marco Pisa 873/15 Pagina 3 di 127 6.1 Codice Sorgente.............................................................................................................66 6.1.1 Codice plugin..........................................................................................................66 6.1.2 File xml di configurazione......................................................................................71 6.2 Guida alla configurazione del Plug-in............................................................................73 6.3 How To...........................................................................................................................82 6.3.1 Installazione Lamp:................................................................................................83 6.3.2 Cacti........................................................................................................................92 6.3.3 Tomcat....................................................................................................................99 6.3.4 Tomcat : installazione modulo Axis......................................................................104 6.3.5 Vmware: installazione "player"&"workstation"...................................................106 6.3.6 Vmware: creare un virtual machine con OS Ubuntu............................................107 6.3.7 Joomla: installazione & configurazione...............................................................114 6.3.8 Ripristino dei servizio di Statistiche del Portale Wifed........................................121 Bibliografia................................................................................................................126 Sitografia.................................................................................................................... 127 Marco Pisa 873/15 Pagina 4 di 127 1 Introduzione L'obbiettivo del lavoro realizzato durante il periodo di tirocinio, consiste nell'apprendere conoscenze, esperienza e familiarità con gli strumenti di lavoro usati al centro Scope "Controll Room", sede del mio tirocinio. Per raggiungere questo obbiettivo, mi sono stati affidati due progetti, uno nell'ambito del monitoraggio, l'altro nell'ambito delle tecnologie web. I due progetti (o lavori) sono: il porting su macchine virtuali del portale "wifed" e la creazione di un plug-in per autenticarsi su un server Ldap esterno al portale web, per la precisione il server ldap è quello di unina. Questo per permettere a qualsiasi studente di unina di Autenticarsi sul nostro portale wifed. Questi lavori, si collocano nell'ambito dell'iniziativa "WiFiSud" del progetto "ICT4 University" che realizza quanto previsto dall'obbiettivo Università del Piano E-Gov 2012. In particolare l'iniziativa ha previsto il finanziamento di progetti delle università del sud per realizzare, estendere o completare reti di connettività senza fili e sviluppare servizi on-line di tipo amministrativo e/o didattico, accessibili gratuitamente da parte degli studenti. La tesi affronta, quindi, due argomenti fondamentali: le problematiche affrontate durante il porting del portale wifed sulle macchine virtuali e la creazione del plugin per l'autenticazione di un utente con credenziali unina. I problemi maggiori riscontrati durante il lavoro di Porting del portale "wifed" sono stati la scarsa conoscenza e la difficoltà nell'analisi dei servizi offerti, che erano molti e dislocati in tre macchine fisiche, difficile capire chi monitorasse cosa. Queste difficoltà derivano anche dalla scarsa conoscenza dei tool utilizzati per creare i vari servizi di monitoraggio. Lo scopo del porting, e quello di svincolare il software dell'hardwar, utilizzando le Virtul Machine. Inizialmente i servizi del portale erano dislocati in tre macchine fisiche, che sono state riprodotte in tre macchine virtuali, che risiedono ora Marco Pisa 873/15 Pagina 5 di 127 su una sola macchina server dedicata. La configurazione delle tre macchine virtuali e identica alle tre macchine fisiche, salvo per una differenza: si è deciso di utilizzare come sistema operativo Ubuntu Server 10.10. Per riuscire a effettuare il porting, si è dovuto accrescere la conoscenza di alcuni strumenti di lavoro come: cacti,bash,script perl. Un piccolo aiuto è arrivato dalle tesi dei colleghi che hanno creato il portale con i relativi servizi. L'altro lavoro svolto e stato quello di creare un plugin che, integrato al CMS Joomla, permettesse allo stesso di autenticare un utente con le credenziali unina. Quindi questo plugin doveva effettuare un interrogazione ai server Ldap di unina, per controllare le credenziali inserite dall'utente. Per motivi di sicurezza, unina ci ha permesso di interrogare i loro server tramite un web service, che viene già sfruttata da altre strutture che utilizzano le credenziali unina, per autenticare i propri utenti. La ricca documentazione fornita in allegato al framework del cms joomla, è stata di enorme aiuto alla comprensione della struttura dello stesso. Durante la fase di implementazione del plugin, sono stati effettuati molti test in un ambiente simulato, per non creare problemi al web service di unina. Il codice realmente scritto non è molto, ma l'analisi del core di joomla effettuata ha richiesto molto tempo. Il tipo di plugin implementato, può essere riutilizzato in qualsiasi altro ambiente che sia scritto in php. Nel prossimo capitolo inizieremo a descrivere l'ambiente di lavoro creato per effettuare il Porting del portale "Wifed". Marco Pisa 873/15 Pagina 6 di 127 2 Monitoraggio & Porting In questo capitolo come già anticipato nel precedente, parlerò dell'ambiente di lavoro e degli strumenti usati per effettuare il porting del portale, iniziando conl'analisi dettagliata dei servizi offerti e della loro locazione sulle macchine del centro scope "controll Room". 2.1 Il Portale wifed.scope.unina.it Premetto che il portale è stato realizzato da altri colleghi, quindi ho analizzato in dettaglio la struttura per riuscire poi a replicarla su altre macchine. È stato usato il CMS Joomla per facilitare la gestione delle pagine e la rappresentazione grafica delle informazioni da mostrare al pubblico. È possibile effettuare piccole e veloci modifiche al portale da remoto, utilizzando delle credenziali di amministrazione, grazie alla natura del CMS, in quanto possiede un'interfaccia di gestione dei contenuti. Anche per le statistiche wi-fi c'è un interfaccia web di amministrazione da remoto. Il compito del portale è offrire all'utenza, nel caso specifico gli studenti, lo stato della rete universitaria, sia wi-fi che wired. Inoltre mostra anche le statistiche sulla sola rete wi-fi. I dati che vengono raccolti e messi a disposizione sotto forma di grafici sono moltissimi, tra cui il numero di client (pc collegati) collegati alla rete wi-fi, il numero di Access Point attivi in quel momento, il livello di traffico sui protocolli TCP, UDP e molti altri. Lo strumento usato, che permette il monitoraggio di tutti questi dati è "cacti" con licenza "open source", che usa il protocollo SNMP per effettuare la raccolta dati e rrdtool per memorizzarli e interpretarli. Al momento ci sono solo Marco Pisa 873/15 Pagina 7 di 127 quattro zone sotto monitoraggio: Monte Sant'Angelo (Chimica, Matematica, Aulario, Centri Comuni) , Ingegneria (Via Claudio, P.le Tecchio, Agnano), Zona Ospedaliera (pansolini) e il Centro Storico. Il portale web "wifed" fa uso delle più aggiornate tecnologie web al momento in uso, tra cui possiamo vedere : Html4, Css2, Lamp, CMS joomla, Perl, bash e moltri altri strumenti. 2.1.1 Architettura del Portale: I Servizi Offerti Il portale wifed, è composto da tre gruppi di servizi : monitoraggio wi-fi, monitoraggio wired, statistiche wi-fi. I tre gruppi di servizi sono stati sviluppati da tre colleghi differenti. È questo il motivo principale per il quale il portale risiedeva, prima del porting, su tre macchine differenti. Le macchine sono così chiamate: wifed, wifed02, wifed03. – La prima si occupa di mascherare la sotto struttura, caricando poi il CMS in un "iframe" all'interno della pagina principale, in questo modo si mascherano tutte le richieste. – La seconda si occupa del monitoraggio wi-fi, sia della creazione dei grafici, sia della strutturazione e visualizzazione dei dati raccolti. – La terza macchina si occupa di ospitare il cms e di monitorare la "wired", di prendere i dati statistici della wi-fi e di mostrarli su richiesta. Inoltre si occupa anche di girare le richieste sul monitoraggio della wi-fi sulla macchina "wifed02". Marco Pisa 873/15 Pagina 8 di 127 La figura seguente vi mostra come era dislocato il portale e come erano divisi i servizi offerti. Figura 1: Struttura delle Macchine e Sintesi dei Servizi Offerti Marco Pisa 873/15 Pagina 9 di 127 Di seguito invece mostriamo come è ora localizzato il portale. Figura 2: Nuova Struttura delle Macchine e Sintesi dei Servizi Offerti Marco Pisa 873/15 Pagina 10 di 127 Schematizziamo come ora sono divisi i vari servizi: – net-mon.scope.unina.it: ● contiene tutte le virtual machine – VM - Wifed.scope.unina.it: ● Maschera tutta la struttura del portale tramite un "iframe". – VM - Wifed02.scope.unina.it: ● Monitoraggio wi-fi della zona Monte Sant'Angelo, Ingegnaria, Zona Ospedaliera, Centro Storico. ● Applicativo "Server" delle Statistiche Wi-Fi. – VM - Wifed03.scope.unina.it: ● Monitoraggio Wi-Red della zona Monte Sant'Angelo, Ingegneria , Centro Storico, Zona Ospedaliera. Monitorando il traffico in entrate e uscita. ● Applicativo "Client" delle statistiche Wi-Fi. ● Portale Web, creato tramite CMS joomla. ● Interfaccia Web delle statistiche Wi-Fi. Marco Pisa 873/15 Pagina 11 di 127 2.1.2 LAMPP: Linux, Apache, Mysql, Php, Perl LAMP è un acronimo che indica una piattaforma per lo sviluppo di applicazioni web che prende il nome dalle iniziali dei componenti software con cui è realizzata. Lamp sta ad indicare appunto Linux, Apache, Mysql, Php. Sulle nostre macchine c'è la variante che contiene anche Perl. La piattaforma LAMP è una delle più utilizzate a livello mondiale. Ognuna delle applicazioni dalle quali è composta è predisposta per l'eccellente funzionamento in concomitanza con le altre. - Linux : Sistema Operativo - Apache: Web Server -Mysql : Database management system (o database server); -Php : Linguaggio di scripting per programmazione web lato server -Perl : Linguaggio di programmazione alti livello. 2.1.3 CMS Joomla Cosè un CMS? Un content management system, in acronimo CMS, letteralmente "sistema di gestione dei contenuti", è uno strumento software installato su un server web studiato per facilitare la gestione dei contenuti di siti web, svincolando l'amministratore da conoscenze tecniche di programmazione Web. Joomla è un software di content management per siti web, realizzato completamente nel linguaggio PHP. È pubblicato con licenza open source GNU GPL v.2 Joomla è uno dei pochi CMS completamente modulari, cioè e composto da estensioni (o moduli) i quali permettono di accrescere le funzionailtà di base del CMS. Le componenti fondamentali di questo cms sono: Template,Core di joomla; le estensioni vengono agganciate tramite il core per poter essere interfacciate con il Marco Pisa 873/15 Pagina 12 di 127 template. Per template si intende una struttura grafica base, come mostrato in figura, e la stilizazzione delle varie parti che lo compongono. Figura 3: Template bse di joomla. Ad ogni parte del template viene impostato uno stile ben preciso, che verrà mantenuto anche se si inserisce una nuova estensione. Per estensioni si intendono script php completi che offrono nuove funzionalità da agganciare al core in qualsiasi parte del template, non comprendono al loro interno istruzioni grafiche, le stesse vengono delegate al template. A loro volte le estensioni si dividono in tre elementi distinti, in base a quanto sono indipendenti o quanto modificano una funzionalità già esistente nel CMS Joomla. Più avanti parleremo in modo più approfondito di questo strumento, per capire come integrare un plug-in. Marco Pisa 873/15 Pagina 13 di 127 2.2 Monitoraggio della rete I servizi offerti dal portale sono messi a disposizione grazie al CMS joomla, come già detto precedentemente, ma vengono resi disponibili grazie all'azione di monitoraggio effettuato da altri strumenti, come rrdtool e cacti. Anche loro per poter lavorare necessitano del sistema Lamp e di altri strumenti. Una corretta valutazione dello stato di un sistema complesso è alla base del processo di manutenzione, gestione ed evoluzione del sistema stesso. Il monitoraggio dunque svolge un ruolo di primaria importanza nella vita ed evoluzione del sistema. I monitoraggi attivi, raccolgono informazioni sullo stato della rete attraverso interrogazioni periodiche fatte ai vari apparati che si vogliono monitorare. In tale ambito, il protocollo maggiormente utilizzato è quello SNMP, che è anche quello usato dai nostri servizi di monitoraggio. Di seguito parleremo in modo più dettagliato dei tre strumenti usati per il monitoraggio: SNMP, Cacti, RrdTool. Marco Pisa 873/15 Pagina 14 di 127 2.2.1 Protocollo SNMP Simple Network Management Protocol (SNMP) appartiene alla suite di protocolli Internet definita dalla IETF (Internet Engineering Task Force). Il protocollo opera al livello 7 del modello OSI. Esso consente di effettuare interrogazioni, controllli nonchè gestire il funzionamento degli elementi di una rete che sfrutta il protocollo IP, per essere identificato. Fino ad oggi sono in circolazione tre Standard di snmp, venendo identificati tra loro in base alla versione (v1,v2,v3).La SNMPv2 venne creata per migliorare, in linea generale, la prima versione, la SNMPv3 create per migliorare l'aspetto sulla sicurezza. L'SNMP è un protocollo che usa UDP come protocollo di trasporto. E' stato preferito il protocollo UDP a TCP per minimizare l'aumento del traffico dovuto alle comunicazioni fatti al dispositivo. Non è stato scelto il protocollo TCP essendo orientato alla connessione richiede più risorse di rete. L'aspetto negativo derivante dall'uso del protocollo UDP è che non si ha la certezza che il messaggio arrivi a destinazione. Inoltre è stato scelto questo protocollo poichè l' SNMP è nato per gestire e monitorare le prestazioni di rete e un'eventuale congestione di quest'ultima , sarebbe aggravata dall'utilizzo di TCP. Internet Network Management Framework (SNMP), è composta da tre componenti fondamentali : • Le apparecchiature gestite (managed devices) sono degli elementi di rete (ponti, hub, router o server), che contengono degli "oggetti di gestione" (managed objects) da dove vengono estrapolate le informazioni sull'apparato; • Gli agenti (management agent ), cioè un'applicazione di gestione di rete che risiede in una periferica e incaricata di trasmettere i dati locali di gestione della periferica in formato SNMP; Marco Pisa 873/15 Pagina 15 di 127 • I sistemi di management della rete (network management systems sigla NMS o manger), cioè una console attraverso la quale gli amministratori possono realizzare dei compiti amministrativi. Il manager rappresenta l'applicazione remota che avvia il programma che gestisce SNMP. I sistemi gestiti a loro volta, sono dotati di un programma di management agent, ospitano quindi un agente di gestione. Il management agent, si frappone tra il manager e il managed devices, per permettere la comunicazione tramite il protocollo snmp. Il management agent è anche responsabile dell'accesso alla base di dati MIB. Il funzionamento di SNMP è molto semplice. La piattaforma della gestione di rete invia interrogazioni all'agente, quest'ultimo a sua volta risponde. Interrogazioni e risposte si riferiscono a variabili accessibili solo da parte del management agent. Le variabili d'agente sono memorizzate nella base di dati chiamata MIB , il management agent recupera le variabili nella MIB utilizzando un identificativo ( OID Object ID ), che è organizzato gerarchicamente. 2.2.2 Cacti Cacti è un sistema web-based di statistiche sui servizi che consente di tenere sotto controllo lo stato dei sistemi raggiungibili sulla rete. Questo è il sistema scelto dai miei predecessori per monitorare la rete. Le strutture principali sono: • I grafici: possono essere a barre o composti da linee, possono rappresentare i dati tramite diverse scale o presentare leggende e sintesi testuali delle informazioni. • I device: sono le apparecchiature da controllare, server, stampati o stazioni sismiche. Esistono decine di test che possono essere usati per controllarne il funzionamento. • I data source: sono le sorgenti dati o ancora meglio l’insieme delle tecniche Marco Pisa 873/15 Pagina 16 di 127 usate per collezionare le informazioni dalle macchine. Scritto interamente in php , linguaggio di scripting, fa di lui uno strumento leggero facile da usare e molto potente dal punto di vista della flessibilità. Il sistema si appoggia ad altri strumeni per funzionare: • Net-SNMP, per le interrogazioni SNMP; • RRDTool, per la persistenza dei dati frutto di monitoraggio e la loro presentazione per mezzo di grafici; • piattaforma LAMP (Linux Apache Mysql Php), ed in particolare: ◦ PHP ed Apache, per la presentazione dei dati e per le interfacce utente; ◦ MySQL, per la persistenza dei dati di configurazione. Tutto l’applicativo è altamente personalizzabile e può avere più utenti con viste personalizzate e diversi livelli di permesso per le modifiche. La figura di seguito mostrata la schermata iniziale di Cacti attraverso la quale è possibile accedere. Figura 4: Autenticazione di Cacti Marco Pisa 873/15 Pagina 17 di 127 Una schermata modulare di cacti potrebbe essere la seguente: Figura 5: Schermata Modulare di cacti Per quanto riguarda la definizione dei monitoraggi, le chiamate a Net-SNMP possono essere definite per mezzo di: • script di shell bash; • script Perl; • definizione di template in XML (eXtensible Markup Language). Una volta definite le interrogazioni SNMP desiderate, attraverso processo di polling, Cacti prevede ad eseguirle ad intervalli di tempo regolari, passandone i risultati ad RRDTool. In prima istanza, RRDTool può essere considerato come un vero e proprio database ottimizzato per gli ambienti di monitoraggio in genere. Nel successivo Marco Pisa 873/15 Pagina 18 di 127 paragrafo sarà descritto in maniera esaustiva tale software, del quale Cacti viene considerato un'interfaccia user friendly, in quanto l'applicazione realizzata prevede, a livello del data layer, una ricca interazione con quest'ultimo. Di seguito visualizzeremo alcune parti dell'interfaccia Web del Tool Cacti: • Inserimento nuovo dispositivo da monitorare, come si può vedere le opzini per il monitoraggio sono molto esaustive. Figura 6: Interfaccia Grafica, Inserimento Nuovo Dispositivo Marco Pisa 873/15 Pagina 19 di 127 • Lista Dispositivi Monitorati, ci offre una panoramica dei dispositivi monitorati, quanti dati stiamo raccogliendo (numero dei DataSorce), e quanti grafici aggiorna ogni ciclo, e molte altre info ulti , ping, ip, cicli lettura ecc... Figura 7: Interfaccia Grafica, Lista Dispositivi Monitorati Marco Pisa 873/15 Pagina 20 di 127 • Lista di alcuni grafici filtrati, riguadante la macchina locale. Figura 8: Lista Dei Grafici filtrata su dispositivo "localHost" Marco Pisa 873/15 Pagina 21 di 127 2.2.3 Rrdtool : Round-Robin Database Tool RRDTool (acronimo di Round Robin Database Tool) è un software open source realizzato interamente in C da Tobias Oetiker ed è uno degli strumenti maggiormente utilizzati nell'ambito dei sistemi di monitoraggio in genere. Il compito principale di RRDTool, in un sistema di monitoraggio, è l'archiviazione di serie temporali. Le principali caratteristiche sono: • dimensioni degli archivi (file RRD – Round Robin Database), a regime, costanti; • dump degli archivi in file XML; • fetch di serie temporali parziali dagli archivi, file rrd; • rappresentazione dei dati per mezzo di grafici (fig. ). Figura 9: Grafico generato da uno script bash che utilizza rrdtool Marco Pisa 873/15 Pagina 22 di 127 RRDTool può essere utilizzato per monitorare qualsiasi tipo di dato sia possibile raccogliere in maniera automatica, ma viene soprattutto utilizzato in congiunzione col protocollo SNMP. È basato essenzialmente sul concetto del round robin una tecnica che utilizza un numero finito di elementi e un puntatore all'elemento corrente. I nuovi elementi vengono aggiunti sovrascrivendo i dati più vecchi. In pratica il database è circolare, una volta raggiunta la fine il puntatore si sposta di nuovo sul primo elemento e inizia a sovrascrivere i dati. I vantaggi delll'utilizzio di questa tecnica sta nel fatto che le dimensione degli archivi non variano mai, una volta creato è associato ad un dispositivo monitorato, la dimensione è fissa.Questo aggevola la manutenzione del databse. Un altro aspetto importante da evidenziare di RRDTool è che i valori non vengono memorizzati quando disponibili, ma ad intervalli di tempo predeterminati. Se durante l'intervallo di raccolta il dato non è disponibile, viene memorizzato al suo posto il valore unknown (nan) per quell'intervallo. E' chiaro che con troppi intervalli in cui i dati non sono disponibili i risultati risulteranno evidentemente alterati, per cui è molto importante garantire in qualche modo un flusso costante di dati per l'aggiornamento del database. Un RRD (Round Robin Database) può contenere qualsiasi tipo di dato numerico, non necessariamente intero, con l'unico limite dato dall'applicabilità della sua struttura circolare. Marco Pisa 873/15 Pagina 23 di 127 2.3 Porting del Portale L'obbiettivo di questo porting è spostare il portale su una macchina più potente, che permetta una migliore gestione del portale web. Prima di tutto si sono analizati i requisiti per poi procedere con le relative installazioni e configurazione dei vari software necessari al porting. 2.3.1 Requisiti per il Porting I requsiti necessari per portale questo porting a buon fine, sono: – Analisi corretta del vecchio portale. – Disponibilità software dei Sistemi Operativi, e delle configurazioni degli stessi. – Disponibilità saftware di tutti i tool utilizati dal vecchio portale. – Conoscenza delle configurazione degli stessi. – Accesso a tutti i software protetti. – Macchina fisica, di destinazione delle Vistual Machine, connessa a internet, nella stessa rete delle vecchie macchine fisiche. Precisazione: si è deciso di non rispettare lo stesso ambiente di esecuzione, infatti sulle nuove macchine, il Sistema Operativo è Ubuntu server 10.10 . Scelta fatta sulla base della semplicità d'uso di tale sistema, la natura "server" dello stesso e per la ricca comunità che "ubuntu" possiede per eventuali problemi. Marco Pisa 873/15 Pagina 24 di 127 2.3.2 Virtual Machine: Vmware Per migliorare la portabilità del portale in futuro, si e deciso di trasportare lo stesso su macchine virtuali. Una macchina virtuale è un software che crea un ambiente virtuale che emula il comportamento di una macchina fisica ed in cui alcune applicazioni possono essere eseguite come se interagissero con tale macchina. Il software di virtualizzazione utilizato è "vmware" , nello specifico la distribuzione usata è "workstation v7", che permette di creare una o più virtual machine e di gestirele in modo ottimale. Tale distribuzione è stata ustata per creare le tre macchine virtuali. 2.3.3 Wifed.scope.unina.it: porting Per quanto riguarda la macchina "wifed", funge da server principale, è gira tutte le richieste alle altre due macchine. Effettuando un redirect all'interno del frame, inserito nella pagina "index.html" del web server apache2, che vi è installato. Sulla macchina è stato installato appunto solo il LAMP, per avere una configurazione standard, anche se bastava mettere solo apache2. Il motivo per cui questa macchina ha solo l vunzionalità di "redirect", anche se carica tutte le richieste all'interno di un "iframe" e quello di mascerare la struttura fisica del portale, cioe l'utente meno esperto non si accorge che in realtà sono diverse macchine a offrire il servizzi che lui utilizza. Marco Pisa 873/15 Pagina 25 di 127 2.3.4 Wifed02.scope.unina.it: porting Recapitolando iservizi offerti, monitoraggio di 6 dispositivi e creazione di 64 grafici. Prima di tutto la classica configurazione LAMP, in più si è dovuto installare il pacchetto "libnet-snmp-perl" e "perl" per far funzionare correttamente degli script, che completano il servizio di monitoraggio. Per quanto riguarda il LAMP si è usato l'installer "Wifi Web Monitoring Portal", scaricabile dallo stesso Portale "Wifed". Dopo aver configurato l'ambiente, si è passato alla pratica, copiando i vari servizi: si è effettuato il dump del DB "cacti", per salvare tutte le configurazioni, dopo è stato importato il file .sql nel database presente nella virtual machine. Effettuato la copia del database, ora passiamo alla copia degli "rrd". Per trasportare gli "rrd" su una differente macchina c'è bisogno di trasformarli prima in file "xml" formato che memorizza i dati indipendentemente dalla macchina o dal SO, poi sono stati copiati in questa forma nella virtual machine e riconvertiti in formato "rrd". Queste operazioni vengono fatte tramite uno script shell. Dopo aver effettuato queste copie dei dati di configurazione, si è passati alla ricreazione del monitoraggio dei dispositivi e dei grafici in cacti, che anche se sono stati copiati, non hanno funzionato correttamente, decidendo di reinserirli a mano, copiando la configurazione dalla macchina originaria. Si sono anche dovuti sistemare gli script di aggiornamento dei grafici del sito, che hanno subbito una leggera modifica dovuta alla riconfigurazione dei grafici in cacti. Completate le configurazioni dei vari software tool (es: cacti,rrdtool,script bash), e della cartella di root del web server, si sono avviati gli script per aggiornare i grafici del portale e si è atteso per vedere se tutto era andato come doveva. Marco Pisa 873/15 Pagina 26 di 127 2.3.5 Wifed03.scope.unina.it : Guida al Porting In questa macchina vi dovranno essere installatti i seguenti servizi: CMS Joomla, monitoraggio di 4 dispositivi e 16 grafici. Anche qui abbiamo messo la configurazione base, Lamp più cacti; dopo di che siamo passati a fare il "dump" di tutti i DataBase che ci servivano, sulla veccchia macchina: cacti,joomla,rrdb ; effettuando le stesse operazioni descritte precedentemente. Effettuato il dump di tutte le basi di dati, si è passati all'inserimento manuale dei dispositivi e dei grafici che questa macchina deve monitorare, copiandoli dalla macchina originaria. Effettuato l'inserimento e controllato che tutto funzionava correttamente, siamo passati a joomla, dove ci siamo limitati a copiare l'intera cartella "Joomla", nella stessa locazione ma nella macchina virtuale, cioè nella root del web server. 2.3.6 Statistiche Wi-Fi : Porting del Servizio Le statistiche Wi-Fi sono composte da due sistemi indipendenti, che lavorano su due tipologie di macchine, il prima, server, che ha lo scopo di raccogliere i dati per metterli a disposizione del secondo, client, che li prende e li pubblica attraverso il CMS Joomla. Questi sistemi possono funzionare su qualsiasi macchina che dispone di: Joomla o cacti in base al tipo di operazione, per la presentazione e per la raccolta dei dati. Nel nostro caso il sistema server è situato sulla wifed02, raccolta dati, e il sistema client è situato sulla wifed03, presentazione dei grafici. Detti ciò passiamo all'installazione del sistema server delle statistiche. Per prima cosa, abbiamo installatto il pacchetto "sun-java6-jdk", su entrambe le macchine, per permettere l'esecuzione di applicazioni scritte in "java". Per effettuare una corretta configurazione del sistema server delle statistiche, abbiamo seguito le indicazioni sulla guida di Paolo Vanacore, creatore del servizio. Rimandando all'appendice "How To" Marco Pisa 873/15 Pagina 27 di 127 per una miniguida alla configurazione. Il programma "DataServer.jar", viene fornito con un file di configurazione: server_config.xml dove all'interno vengono definite le proprieta del servizio, che devono essere impostate correttamente per un corretto funzionamento del servizio. Eseguendo il file jar tramite la seguante istruzione: shell>java -jar ./DataServer.jar > ./logfile & l'applicativo genera un autuput, sullo "stdio" che abbiamo reindirizzato su un file di log, per tenere traccia di eventuali errori. Per quanto eiguarda il lato "client" c'è voluto l'installazione di "tomcat", per permettere la messa in esercizio dell'interfaccia di amministrazione delle statistiche. A cui si può acceder anche da remoto, tramite il web. Per quanto riguarda "tomcat" si è installato la stessa versione della macchina portingata: la versione 6. Installato tomcat 6 correttamente, e avviato, si è modificata la porta di ascolto alla "8090", e si è configurato anche qui il file, dataclient_config.xml anche qui i parametri da settare sono molto semplici. Dopo aver configurato correnttamente il client, avviarlo con il comando analogo al server: shell>java -jar ./DataServer.jar > ./logfile & anche qui c'è il redirect dell'imput per tenere traccia di eventuali errori nel log. Dopo di ciò si è passati al "deploy" delle interfaccie WiStatAdmin & WiStat, tramite l'interfaccia di tomcat, raggiungibile all'indirizzo "http:\\localhost:8090" e autenticandosi come "manager" o "amministratore".Per effettuare una corretta configurazione del sistema client delle statistiche e di tomcat, abbiamo seguito le indicazioni sulla guida di Paolo Vanacore, creatore del servizio. Rimandando all'appendice "How To" per una miniguida alla configurazione. Marco Pisa 873/15 Pagina 28 di 127 3 Gestione dell'Accesso L'infrastruttura di rete Dell'Università di Napoli Federico II possiede innumerevoli risorse informatiche che richiedono all'utilizatore un autenticazione per poter usare tale risorsa. Dato il gran numero di utenza che l'università possiede e impraticabile e impensabile che ogni servizio o gruppo di servizi gestisca separatamente l'autenticazione, infatti tutti i servizi si appoggiano ad un unico servizio di autenticazione dell'utenza, questo servizio è composto da un database basato su Directory Access utilizante il sitema OpneLdap per comunicare con gli altri sistemi, lo stesso si basa sul protocollo Ldap. Questo tipo di servizio è composto da più server ridondanti posizionati in modo distribuito nelle varie sedi principali di unina, questo per garantire il funzionamento del servizio sia per grassi carichi, sia per eventuali guasti a un o più server. Marco Pisa 873/15 Pagina 29 di 127 3.1 Autenticazione di un Utente L’autenticazione è un processo mediante il quale un computer o software verifica la corretta identità dell’utente che vuole avvedervi. Essa utilizza diverse tipologie di credenziali, per effettuare l’autenticazione. Le tipologie di credenziali vanno dalla più semplice coppia UserName Password, a quelle biometriche come le impronte digitale o la scansione della retina oculare. Un utente autenticato, a seconda del software che sta utilizzando può avere più privilegi rispetto a un utente ospite. Il modulo di autenticazione, progettato, che viene integrato nel cms joomla, viene usato per riconoscere un qualsiasi utente che si collega al portale “wifed”, come utente unina tramite la coppia di credenziali “userName” e “password” che usa per accedere al portale unina. Lo username rappresenta in modo univoco mediante il quale un utente viene riconosciuto dal sistema informatico, in questo caso dal portale. Questo nome nella maggior parte delle volte non corrisponde al nome reale dell’utente ma è uno pseudonimo. La password unita all’username permette l’identificazione di un utente. Mente lo username e di dominio pubblico, tutti lo possono conoscere la password e privata e solo l’utente la dovrebbe conoscere. Marco Pisa 873/15 Pagina 30 di 127 3.2 Il Protocollo Ldap Ldap sta per Lightweight Directory Access Protocol, si tratta di un protocollo clientserver utilizato per accedere a servizi di "directory". I Directory sono database specializati ad offrire massime prestazioni in fase di lettura delle informazione. Unendo il protocollo al tipo di server, oggi si parla direttamente di "directory Ldap". Questi database vengono usati principalmente dove la loro potenzialità e meglio sfruttata, dove i dati sono statici e le modifiche sono rare o quasi del tutto assenti. Un server Directory Ldap organizza le informazioni in una struttura gerarchica di oggetti chiamati "Entry". L'insieme di tutte queste Entry, vanno a formare una struttura dati organizata ad albero, dove ogni nodo o foglia viene identificat mediante un Relative Distinuished Name (RDN), l'unione di tutti gli RDN a partire dalla foglia fino alla radice dell'albero, forma il Distinguished Name (DN) che identifica in modo univoco una Entry, di seguito una figura che faccia capire la struttura di una directory Marco Pisa 873/15 Pagina 31 di 127 Figura 10: Struttura ad Albero generica di un server Ldap Ciascuna Entry ha una serie di attributi, costituiti dall'associazione attributo-valore; per ogni attributo possono esserci più valori. Ognuno degli attributi dell'elemento è definito come membro di una classe di oggetti, raggruppati in uno schema. Ogni elemento nella directory è associato a una o più classi di oggetti, che definiscono se un attributo sia opzionale o meno, e che tipo di informazioni questo contenga. I nomi degli attributi solitamente sono scelti per essere facilmente memorizzabili, per esempio "cn" per common name, o "mail" per un indirizzo e-mail. I valori degli attributi Marco Pisa 873/15 Pagina 32 di 127 dipendono dal tipo. Esistono anche i LDIF (Ldap Data Interchange Format) che permettono di importare o esportare "entry" tramite un semplice file di testo che contiene un attributo (nome/valore) per ogni riga del file. Marco Pisa 873/15 Pagina 33 di 127 3.2.1 Ldap: di unina L'università dispone anchessa di questo tipo di server per consentire l'accesso agli utenti nei propri servizi. Quindi anche io con il mio progetto iterrogherò questo server per determinare se un utente, puo o meno essere autenticato come utente unina: studente,ricercatore o professore che sia. Di sefuito lo schema del server Ldap di unina: version: 1 dn: dc=unina,dc=it objectClass: dcObject objectClass: organization dc: unina o: unina dn: ou=opensso,dc=unina,dc=it objectClass: organizationalUnit objectClass: top ou: opensso dn: ou=istituzionali,ou=opensso,dc=unina,dc=it objectClass: organizationalUnit objectClass: top ou: istituzionali dn: ou=Docenti,ou=istituzionali,ou=opensso,dc=unina,dc=it objectClass: organizationalUnit objectClass: top ou: Docenti dn: ou=POLO DELLE SCIENZE E DELLE TECNOLOGIE (400000),ou=Docenti,ou=istituzionali,ou=opensso,dc=unina,dc=it objectClass: top objectClass: organizationalUnit objectClass: inetLocalMailRecipient objectClass: posixAccount cn: POLO DELLE SCIENZE E DELLE TECNOLOGIE (400000) description: 400000 gidNumber: 100 homeDirectory: /home/400000 mailLocalAddress: [email protected] mailRoutingAddress: [email protected] ou: POLO DELLE SCIENZE E DELLE TECNOLOGIE (400000) uid: doc_400000 uidNumber: 103618 dn: ou=DIPARTIMENTO DI SCIENZE FISICHE (100560),ou=POLO DELLE SCIENZE E DELLE TECNOLOGIE (400000),ou=Docenti,ou=istituzionali,ou=opensso,dc=unina,dc=it Marco Pisa 873/15 Pagina 34 di 127 objectClass: top objectClass: organizationalUnit objectClass: inetLocalMailRecipient objectClass: posixAccount cn: DIPARTIMENTO DI SCIENZE FISICHE (100560) description: 100560 gidNumber: 100 homeDirectory: /home/100560 mailLocalAddress: [email protected] mailRoutingAddress: [email protected] ou: DIPARTIMENTO DI SCIENZE FISICHE (100560) uid: doc_100560 uidNumber: 103618 dn: cn=docente docente ([email protected]),ou=DIPARTIMENTO DI SCIENZE FISICHE (100560),ou=POLO DELLE SCIENZE E DELLE TECNOLOGIE (400000),ou=Docenti,ou=istituzionali,ou=opensso,dc=unina,dc=it objectClass: inetOrgPerson objectClass: inetLocalMailRecipient objectClass: posixAccount objectClass: shadowAccount objectClass: organizationalPerson objectClass: person objectClass: top objectClass: inetUser businessCategory: N carLicense: {SHA}98O8HYCOBHMq32eZZczDTKeuNEE= cn: docente docente ([email protected]) departmentNumber: DDDDDD11D11D111D description: cn=User,ou=gruppi,ou=opensso,dc=unina,dc=it employeeNumber: 098765 employeeType: Docenti gidNumber: 100 givenName: docente homeDirectory: /home/docente inetUserStatus: Active internationaliSDNNumber: 100560 loginShell: /bin/false mail: [email protected] mail: [email protected] mailLocalAddress: [email protected] mailRoutingAddress: [email protected] ou: docente docente ([email protected]) physicalDeliveryOfficeName: 170000 physicalDeliveryOfficeName: FACOLTA' DI SCIENZE MATEMATICHE, FISICHE E NATURALI sn: docente title: Docenti di ruolo di Ia fascia uid: docente uidNumber: 12445 userPassword:: e1NIQX1RS0R2WHRlUWFuTC8wa3lHN1d1a1BDdUhOZWc9 Marco Pisa 873/15 Pagina 35 di 127 dn: ou=PersonaleT.A.,ou=istituzionali,ou=opensso,dc=unina,dc=it objectClass: organizationalUnit objectClass: top ou: PersonaleT.A. dn: ou=altra struttura (100000),ou=PersonaleT.A.,ou=istituzionali,ou=opensso,dc=unina,dc=it objectClass: top objectClass: organizationalUnit objectClass: inetLocalMailRecipient objectClass: posixAccount cn: ALTRA STRUTTURA (100000) description: 100000 gidNumber: 100 homeDirectory: /home/100000 mailLocalAddress: [email protected] mailRoutingAddress: [email protected] ou: altra struttura (100000) uid: doc_100000 uidNumber: 103618 dn: ou=csi - centro di ateneo per i servizi informativi (295550),ou=altra struttura (100000),ou=PersonaleT.A.,ou=istituzionali,ou=opensso,dc=unina,dc=it objectClass: top objectClass: organizationalUnit objectClass: inetLocalMailRecipient objectClass: posixAccount cn: CSI - CENTRO DI ATENEO PER I SERVIZI INFORMATIVI (295550) description: 295550 gidNumber: 100 homeDirectory: /home/295550 mailLocalAddress: [email protected] mailRoutingAddress: [email protected] ou: csi - centro di ateneo per i servizi informativi (295550) uid: doc_295550 uidNumber: 103618 dn: cn=personale personale([email protected]),ou=csi - centro di ateneo per i servizi informativi (295550),ou=altra struttura (100000),ou=PersonaleT.A.,ou=istituzionali,ou=opensso,dc=unina,dc=it objectClass: inetOrgPerson objectClass: inetLocalMailRecipient objectClass: posixAccount objectClass: shadowAccount objectClass: organizationalPerson objectClass: inetUser objectClass: person objectClass: top businessCategory: N carLicense: {SHA}98O8HYCOBHMq32eZZczDTKeuNEE= Marco Pisa 873/15 Pagina 36 di 127 cn: personale personale([email protected]) departmentNumber: PPPPPP11P11P111P description: cn=User,ou=gruppi,ou=opensso,dc=unina,dc=it employeeNumber: 011111 employeeType: PersonaleTA gidNumber: 100 givenName: personale homeDirectory: /home/personale inetUserStatus: Active loginShell: /bin/false mail: [email protected] mail: [email protected] mailLocalAddress: [email protected] mailRoutingAddress: [email protected] ou: personale personale([email protected]) physicalDeliveryOfficeName: 295550 physicalDeliveryOfficeName: CSI - CENTRO DI ATENEO PER I SERVIZI INFORMATIVI sn: personale title: Personale tecnico amm.vo uid: personale uidNumber: 11990 userPassword:: e1NIQX05OE84SFlDT0JITXEzMmVaWmN6RFRLZXVORUU9 dn: ou=studenti,ou=opensso,dc=unina,dc=it objectClass: organizationalUnit objectClass: top ou: studenti dn: ou=attivi,ou=studenti,ou=opensso,dc=unina,dc=it objectClass: top objectClass: organizationalUnit ou: attivi dn: ou=FACOLTA' DI SCIENZE MATEMATICHE FISICHE E NATURALI (17),ou=attivi,ou=studenti,ou=opensso,dc=unina,dc=it objectClass: top objectClass: organizationalUnit objectClass: inetLocalMailRecipient objectClass: posixAccount cn: FACOLTA' DI SCIENZE MATEMATICHE FISICHE E NATURALI (17) description: 17 gidNumber: 100 homeDirectory: /home/17 mailLocalAddress: [email protected] mailRoutingAddress: [email protected] ou: FACOLTA' DI SCIENZE MATEMATICHE FISICHE E NATURALI (17) uid: fac17 uidNumber: 200784 Marco Pisa 873/15 Pagina 37 di 127 dn: ou=INFORMATICA (566),ou=FACOLTA' DI SCIENZE MATEMATICHE FISICHE E NATURALI (17),ou=attivi,ou=studenti,ou=opensso,dc=unina,dc=it objectClass: top objectClass: organizationalUnit objectClass: inetLocalMailRecipient objectClass: posixAccount cn: INFORMATICA (566) description: 566 gidNumber: 100 homeDirectory: /home/566 mailLocalAddress: [email protected] mailRoutingAddress: [email protected] ou: INFORMATICA (566) uid: cdl566 uidNumber: 200825 dn: cn=studente studente ([email protected]),ou=INFORMATICA (566),ou=FACOLTA' DI SCIENZE MATEMATICHE FISICHE E NATURALI (17),ou=attivi,ou=studenti,ou=opensso,dc=unina,dc=it objectClass: inetOrgPerson objectClass: inetLocalMailRecipient objectClass: posixAccount objectClass: shadowAccount objectClass: organizationalPerson objectClass: person objectClass: top objectClass: inetUser carLicense: {SHA}98O8HYCOBHMq32eZZczDTKeuNEE= cn: studente studente ([email protected]) departmentNumber: SSSSSS11S11S111S description: cn=User,ou=gruppi,ou=opensso,dc=unina,dc=it description: cn=Admin,ou=gruppi,ou=opensso,dc=unina,dc=it employeeNumber: 566001111 employeeType: Studente gidNumber: 100 givenName: studente homeDirectory: /home/studente inetUserStatus: Active loginShell: /bin/bash mail: [email protected] mail: [email protected] mailLocalAddress: [email protected] mailLocalAddress: [email protected] mailRoutingAddress: [email protected] ou: studente studente ([email protected]) physicalDeliveryOfficeName: 566 roomNumber: 839624 sn: studente street: Inactive uid: studente Marco Pisa 873/15 Pagina 38 di 127 uidNumber: 158671 userPassword:: e1NIQX1PY00rWVhqaUVMMm9WSnREdzk2VXJEYS90eXM9 dn: cn=studente2 studente ([email protected]),ou=INFORMATICA (566),ou=FACOLTA' DI SCIENZE MATEMATICHE FISICHE E NATURALI (17),ou=attivi,ou=studenti,ou=opensso,dc=unina,dc=it objectClass: inetOrgPerson objectClass: inetLocalMailRecipient objectClass: posixAccount objectClass: shadowAccount objectClass: organizationalPerson objectClass: person objectClass: top objectClass: inetUser carLicense: {SHA}98O8HYCOBHMq32eZZczDTKeuNEE= cn: studente2 studente ([email protected]) departmentNumber: SSSSSS11S11S111S description: cn=User,ou=gruppi,ou=opensso,dc=unina,dc=it description: cn=Admin,ou=gruppi,ou=opensso,dc=unina,dc=it employeeNumber: 566001111 employeeType: Studente gidNumber: 100 givenName: studente homeDirectory: /home/studente inetUserStatus: Active loginShell: /bin/bash mail: [email protected] mail: [email protected] mailLocalAddress: [email protected] mailLocalAddress: [email protected] mailRoutingAddress: [email protected] ou: studente studente ([email protected]) physicalDeliveryOfficeName:566 roomNumber: 839624 sn: studente2 street: Inactive uid: studente2 uidNumber: 158671 userPassword:: e1NIQX1PY00rWVhqaUVMMm9WSnREdzk2VXJEYS90eXM9 dn: ou=gruppi,ou=opensso,dc=unina,dc=it objectClass: organizationalUnit objectClass: top ou: gruppi dn: cn=User,ou=gruppi,ou=opensso,dc=unina,dc=it objectClass: groupOfUniqueNames objectClass: top cn: User Marco Pisa 873/15 Pagina 39 di 127 uniqueMember: cn=studente studente ([email protected]),ou=INFORMATICA (566),ou=FACOLTA' DI SCIENZE MATEMATICHE FISICHE E NATURALI (17),ou=attivi,ou=studenti,ou=opensso,dc=unina,dc=it dn: cn=Admin,ou=gruppi,ou=opensso,dc=unina,dc=it objectClass: groupOfUniqueNames objectClass: top cn: admin uniqueMember: cn=studente studente ([email protected]),ou=INFORMATICA (566),ou=FACOLTA' DI SCIENZE MATEMATICHE FISICHE E NATURALI (17),ou=attivi,ou=studenti,ou=opensso,dc=unina,dc=it dn: cn=SuperUser,ou=gruppi,ou=opensso,dc=unina,dc=it objectClass: groupOfUniqueNames objectClass: top cn: superuser uniqueMember: cn=studente studente ([email protected]),ou=INFORMATICA (566),ou=FACOLTA' DI SCIENZE MATEMATICHE FISICHE E NATURALI (17),ou=attivi,ou=studenti,ou=opensso,dc=unina,dc=it dn: cn=Administrator,ou=gruppi,ou=opensso,dc=unina,dc=it objectClass: groupOfNames objectClass: top cn: Administrator member: cn=studente studente ([email protected]),ou=INFORMATICA (566),ou=FACOLTA' DI SCIENZE MATEMATICHE FISICHE E NATURALI (17),ou=attivi,ou=studenti,ou=opensso,dc=unina,dc=it Questo è solo una parte dello schema Ldap dei server Unina. Marco Pisa 873/15 Pagina 40 di 127 3.3 CMS Joomla:struttura sviluppatore Per quanto riguarda il lato del CMS Joomla, che comprende la funzione di mandare le richieste al server Ldap unina per poter identificare un utente, parleremo della sua struttura o meglio del lato dallo sviluppatore. Più precisamente parleremo delle Estensioni, la cui facilità di implementazione di una di essa, lo ha reso popolare nel mondo dei CMS. 3.3.1 Struttura del CMS Joomla Il cms joomla e composto da un core o motore, che è la parte principale del CMS che lo rende già completo così comè.Il motore del cms è in grado di eseguire delle funzionalità aggiuntive tramite l'installazione delle estensioni più precisamente tramite la registrazione delle estensioni nella stessa componente del motore del cms. Durante questa registrazione dell'estenzione, vengono impostati vari valori, tra cui anche quello che determina se l'estenzione deve essere eseguita o meno. Le Estenzioni si dividono in tre categorie fondamentali: Componenti, Moduli, Plugin; ogni estensione ha il suo campo di esercizio. In base alle esigenze della funzionalità che si vuole implementare si sfrutta uno di questi tre pattern. Tutti e tre i pattern si basano sull' MVC (che sta per, Model View Controller ), che permette la creazione delle estensioni (componente, modulo o plugin che sia), separando durante l'implementazione le tre entità del pattern. Le sue entità principali sono: • il Modello: fornisce i metodi per accedere ai dati utili all'applicazione; • la Vista: visualizza i dati contenuti nel model e si occupa dell'interazione con utenti e agenti; • il Controllore: riceve i comandi dell'utente (in genere attraverso il view) e li Marco Pisa 873/15 Pagina 41 di 127 attua modificando lo stato degli altri due componenti; Il Modello rappresenta lo stato del sistema (modellizza il sistema) per mezzo di oggetti e/o strutture dati. La Vista è una rappresentazione del Modello mentre il Controller è Figura 11: Struttura a Blocchi CMS Joomla un oggetto che si occupa dell'interazione con l'utente. Di seguito la figura dello schema a blocchi del CMS Joomla: Spiegheremo di sequito quel'è il campo di esercizio ed eventualmente le defferenze tra i tre tipi di estensioni. Marco Pisa 873/15 Pagina 42 di 127 3.3.2 Componenti Le Componenti sono elementi del nucleo fondamentale delle funzionalità di Joomla, perché rappresentano la funzionalità nella sua interezza, senza bisogno di interagire con altre funzionalità. Es di componenti sono: Banner, Newsfeed, Sondaggi e Weblink, ecc … L'implementazione delle componenti avviene spesso quando si crea una funzionalità che non appoggia addosso ad altre per funzionare.Quindi una funzionalità nuova e indipendente. Di solito queste funzionalità comprendono principalmente la visualizzazione dei contenuti nella parte principale del template. 3.3.3 Moduli I Moduli estendono le capacità di Joomla. Sono più snelli delle componti, ofrono al software nuove funzinalità. I Moduli sono piccole voci di contenuto che possono essere visualizzate dovunque il template consenta di essere visualizzate assegnandole a posizioni e pagine attraverso il gestore dei moduli nella interfaccia amministrativa. I Moduli di Joomla possono comprendere: Menu principale, Top Menu, Selettore template, Sondaggi, Conteggio click ecc. A differenza delle componenti i moduli sono più snelli nel codice è di solito per offrire la funzionalità si appoggiano ad altre già esistenti. Marco Pisa 873/15 Pagina 43 di 127 3.3.4 Plug-in Plugin è il termine usato nella versione 1.5, mentre mambot veniva usato nella versione 1.0. Un plugin o mambot è una piccola funzione finalizzata ad un determinato compito che intercetta il contenuto prima che questo venga visualizzato e lo manipola in qualche modo. Joomla fornisce un numero di Plugin nella distribuzione base, per esempio gli editore WYSIWYG, ma ci sono molti altri plugin disponibili per specifiche funzioni. Il plug-in a differenza degli altri due tipi di estensioni, non comprende a presciendere la programmazione della logica e della modellazione dell'informazione, il suo scopo è quello di effettuare controllo di flusso aggiuntivi per migliorare o potenziare una determinata funzionalità. 3.3.5 Scelta di Implementare il progetto tramite il Plugin di joomla Si è deciso di implementare un plug-in anzicche uno degli altri due tipi di estensioni, poiche in raltà non si richiede di creare una funionalità nuova ma solo di estendere la già esistente funzione di autenticazione che offre il cms jooma. Oltre a ciò in questo modo si sfrutta il modulo classico di login, il classico form "UserName & Password", che è già fornito dal CMS joomla, permettendoci cosi di concentrarci solo sul codice che si doveva eseguire, o meglio sui controlli delle credenziali. Joomla aggancia i suoi plug-in a eventi, che vengono scatenati in determinati momenti. Il CMS Joomla offre un numero considerevole di eventi a cui si può agganciare il prorpiro plug-in, gli eventi sono suddivisi in gruppi, in base a quale parte del codice motore del cms lo scatena, i gruppi sono: • authentication: per estendere l'autenticazione Marco Pisa 873/15 Pagina 44 di 127 • content: per effettuare controlli o inserire funzionalità nei contenuti • editors: per realizzare editor • search: per estendere le funzionalità di ricerca • system: per far eseguire codice in vari momenti del caricamento del framework • user: per estendere le funzionalità degli utenti Nel nostro caso, la funzione viene aganciata all'evento "onAuthenticate", nel gruppo di eventi "authentication".L'evento viene lanciato dal core di joomla quando si rende necessario controllare le credenziali di un utente. Questo evento viene associato al modulo "Autenticati", già esistente dal pacchetto base di joomla. L'enveto viene scatenato subito dopo aver inviato i dati, quindi la richiesta viene girata in modo gerarchico a tutti i plugin che sono aganciati a l'evento "onAuthenticate". Se uno fallisce, login fallito, si passa al plugin successivo fino a quando o si a successo o sono finiti i plugin. Quindi l'ordine gerarchico dei plugin è importantissimo se si ha più di un plugin agganciato sullo steso evento. Questo sistema ci consente di non intaccare i sistemi di autenticazione già esistenti ed eventualemente funzionante. Di seguito la lista completa di tutti gli eventi che il motore del CMS joomla è in grado di gestire: Authentication: • onAuthenticate Content: • onPrepareContent • onAfterDisplayTitle • onBeforeDisplayContent • onBeforeContentSave Marco Pisa 873/15 Pagina 45 di 127 • onAfterContentSave Editors: • onInit • onGetContent • onSetContent • onSave • onDisplay • onGetInsertMethod Editors XTD (Extended): • onDisplay Search: • onSearch • onSearchAreas System: • onAfterInitialise • onAfterRoute • onAfterDispatch • onAfterRender User: • onLoginUser • onLoginFailure • onLogoutUser • onLogoutFailure Marco Pisa 873/15 Pagina 46 di 127 • onBeforeStoreUser • onAfterStoreUser • onBeforeDeleteUser • onAfterDeleteUser XML-RPC: • onGetWebServices Marco Pisa 873/15 Pagina 47 di 127 3.4 Interfacciarsi con i server Ldap di unina 3.4.1 Perchè un Web Service? Un primo problema è stato riscontrato quando è stato necessario contattare gli amministratori di rete unina per chiedere l'accesso ai server Ldap, che per ovvi motivi sulla sicurezza interna degli stessi, mi è stato negato. Con loro si è cercato una soluzione che mi permettesse comunque di interrogare i server ldap di unina, in modo da determinare se delle credenziali fossero corrette o meno. Durante questo colloquio con gli amministratori, sono state poste due possibilità di interrogazione dei server Ldap di unina, entrambe non permettono di comunicare direttamente con i server, ma con le due strategie differenti proposte, ero in grado di controllare le credenziali. Le due strategie proposte sono: interrogazione di un Service Web tramite comunicazione SOAP e utilizare una classe java da loro fornito per comunicare a più basso livello con i server ldap di unina. La classe java doveva esser inclusa all'interno del codice del mio programma. Sono state analizate le due proposte ed è stata scartata subito quella della classe java, visto che il programma veniva sviluppato in linguaggio script php, che è lo stesso linguaggio di scripting con cui è stato realizato il cms joomla. Pertanto si è passati a strutturare il plugin in modo da interagire con un servizio web. Di seguito illustrero cosè un Servizio Web. Marco Pisa 873/15 Pagina 48 di 127 3.4.2 Web Service di unina Secondo la definizione data dal World Wide Web Consortium (W3C) un Web Service (servizio web) è un sistema software progettato per supportare l'interoperabilità tra diversi elaboratori su di una medesima rete. La caratteristica fondamentale di un Web Service è quella di offrire un'interfaccia software attraverso la quale altri sistemi possono interagire con lo stesso attivando le operazioni descritte nell'interfaccia tramite appositi "messaggi" inclusi in una "busta" (la standard è SOAP:Simple Object Access Protocol): tali messaggi sono, solitamente, trasportati tramite il protocollo HTTP e formattati secondo lo standard XML. Questo permette a software scritti in diversi linguaggi di comunicare tra loro tramite lo scambio di messaggi formattati in xml. Nel nostro caso si farà comunicare uno script in php con il service di unina, questo ci permetterà di effettuare l'autenticazione di un utente tramite le credenziali semplici di uno studente unina. Un Service Web per poter esser publicato, ha bisogno che venga accompagnato da un documento che ne descriva come lo si può utilizare. Questo documento e il WDSL, formattato come un XML, con delle specifiche regole di composizioni. DEF:Un WDSL (Web Services Description Language), è un documento che descrive il servizio, cosa offra e che parametri si aspetta. Questo documento permette agli altri software di comunicare con un service senza che si sappia la sua vera natura. Esempio dell'architettura di un servizio: Marco Pisa 873/15 Pagina 49 di 127 Figura 12: Schema di Funzionamento di un Servizio Web. • Fase1: Il client recupera il "wdsl" tramite una richiesta http. • Fase2: Dopo aver analizato il descrittore del servizio, compone il messaggio in modo che il servizio lo posso comprendere, utilizando lo standard Soap. Lo serializza e lo invia al servizio. • Fase 3: Il Servizio deserializza il messaggio in input, e lo legge per poi rispondere alla richiesta con un'altro messaggio. • Fase 4: dopo aver elaborato il messaggio in imput, ne produce uno per rispondere alla richiesta, serializandolo e inviandolo tramite lo standard Soap. • Fase 5: Il client deserializza la risposta e la leggere. Questo è un ciclo di "richiesta-Risposta", completo. Marco Pisa 873/15 Pagina 50 di 127 4. Progetto: Autenticazione tramite Ldap nel CMS Joomla Di seguito varrà spiegato cosa ho progettato e come lo creato, i vari problemi affrontati e come sono stati risolti. 4.1 Analisi dei requisiti Il progetto è volto a realizare un servizio di autenticazione di tutti gli studenti unina sul portale "wifed" con le stesse credenziali unina. In particolare si deve creare una funzionalità al già presente portale web, che interroghi i server Ldap di unina per effettuare l'autenticazione di un utente con le credenziali semplici. Il sistema prevede, al momento della progettazione, tre gruppi di utenti: – Visitatore – Utente Autenticato – Amministratore Il Visitatore, è un utente che non ha effettuato l'autenticazione, quindi non ha privilegi. L'Utente Autenticato, è un utente che effettuato il "login" e avuto successo nell'operazione, ha privilegi di visitare l'intero portale wifed, salvo l'interfaccia di amministrazione del CMS joomla che l'interfaccia di amministrazione delle statistiche wifed. L'Amministratore, ha i massimi privilegi nel portale "wifed". Al momento la gestione degli amministratori avviene sul database interno del portale wifed, questo per avere una gestione personale degli utenti che ne fanno parte. Marco Pisa 873/15 Pagina 51 di 127 4.2 Realizzazione Prototipo Durante la fase di analisi del lavoro che dovevo svolgere, si è deciso di sviluppare un prototipo dell'applicazione reale, odne evitare problemi al servizio di autenticazione unina, che potevano scaturire dalle varie fasi di test sull'applicazione che si stava realizando. Per creare un abiente di test verosimile, si è dovuto creare e pubblicare un servizio web che imitasse quello di unina. Ciò è stato fatto con l'aiuto di due moduli aggiuntivi di apache2 che ci ha permesso di aggevolare il lavoro di pubblicazione e generazione del wdsl del servizio, questi due moduli sono Tomcat6 e Axis. Tomcat, più conosciuto, che permette l'esecuzione di codice java e interfacciarlo su internet. Axis si occupa di compilare la classe java e generare il wdsl che la descriveva. Tramite l'interfaccia "localhost:8080" si poteva comunicare con il servizio web. Di seguito una struttura a blocchi dei tuol installati nell'ambiente creato per effettuare i test di funzionamento del prototipo: Marco Pisa 873/15 Pagina 52 di 127 Figura 13: Struttura a blocchi dei tool installati nell'ambientedi testing Durante le fasi di test si sono riscontrati molti problemi sull'interrogazione del servizio. La composizione del messaggio che veniva inviato al servizio e del tutto automatica, grazie alla classe php "SOAPClient" che compilava il messaggio tramite l'analisi del wdls, perciò gli errori riscontrati spesso non si capivano. Dopo lunghe fasi di test si è scoperto che per usare quella classe SoapClient, si devono conoscere i metodi da interrogare, quindi basta analizare il wdsl. Quindi in analisi del proptotipo realizato, si e visto che gli unici parametri di configurazione sono l'indirizzo del wdsl. Il nome del metodo deve esser inserito nel codice a mano, questo provocherà problemi in caso venga aggiornao o moificato il servizio a livello di codie. Invece se viene spostato, basterà andare a modificare l'indirizzo del wdsl del servizio nell'interfaccia di configurazione del plugin tramite l'interfccia amministrativa del cms joomla. Marco Pisa 873/15 Pagina 53 di 127 Di seguito un esempio dell'interfaccia di configurazione del plug-in di test: Figura 14: Schermata di configurazione del plugin Marco Pisa 873/15 Pagina 54 di 127 4.3 Progettazione Di seguito viene descritto il lavoro svolto e la struttura dettagliata del software creato. 4.3.1 Problematiche riscontrate Durante l'analisi del problema e la creazione del prototipo, si sono riscontrati diversi ostacoli: • Mantenimento del Database Locale degli utenti. • Staticita nella struttura del messaggio soap per interrogare il servizio di autenticazione unina. • Conoscenza approfondita del framework del cms joomla questi problemi hanno rallentato la fase di implementazione, ma per fortuna sono stati, tutti o in parte, risolti. Marco Pisa 873/15 Pagina 55 di 127 4.3.2 Scelte Progettuali Nella creazione e messa in esercizio del programma da implementare sono state fatta varie scelte che hanno determinta la natura del programma. Premessa: si deve dire che l'ambiente di sviluppo di questa applicazione e limitato dal fatto che deve essere integrato all'interno di un cms web, per la precisione il cms e Joomla. Le scelte fatte sono sinteticamente: • Creazione di un plugin (modulo di joomla): scelto perchè permette di non modificare la già utilizata autenticazione sul db locare, infatti permette di estendere la funionalità di autenticazione in modo parallelo. Quindi l'autenticazione funzioneranno entrambe sia sul db locare sia tramite credenziali unina. Con priorita alle credenziali unina. Precisando che nel database locale esiste solo il gruppo utenti "amministatori". • Utilizzo del Web Service di unina per controllare le credenziali di uno studente, comunicazione tramite lo standard soap. • Utilizzo della classe SOAPClient della libreria standard di php, con la limitazione, già anticipata, che si deve conoscere il nome del metodo da richiamre per far effettuare il controllo delle credenziali dal web Service. Il framework di sviluppo e il CMS Joomla. Marco Pisa 873/15 Pagina 56 di 127 4.3.3 Casi D'uso Di seguito viene illustrato il diagrammi dei casi d'uso: Figura 15: Diagramma dei Casi D'Uso Si evince che il Visitatore per effettuare l'autenticazione il sistema usufruisce sempre del plugin da me progettato, anche se ad autenticarsi e un amministratore di sitema che è registrato nel database locale. Marco Pisa 873/15 Pagina 57 di 127 4.3.4 Diagrammi delle classi Di sequito in dettaglio il diagramma della classe implemantata per creare il plugin. Figura 16: Diagramma delle classi Il nostro plugin nasce estendendo una classe più generica fornitaci dal core di joomla. La nostra classe estendendo "jplugin" sovrascrive anche l'evento a cui si sta aganciando, in questo modo il core di joomla eseguirà il nostro metodo sovrascrito allo scatenarsi dell'evento "onAuthenticate". La nostra classe comunica con l'oggetoo "SOAPClient" che mette a disposizione funzioni per interrogare un Web Service con più sicurezza e automazione. Marco Pisa 873/15 Pagina 58 di 127 4.3.5 Diagrammi di Sequenza Diagramma di sequenza di un autenticazione andata con successo. Figura 17: Diagramma sequenza, Autenticazione Marco Pisa 873/15 Pagina 59 di 127 4.3.6 Implementazione In questo paragrafo si parlera di come è stato implementato il plugin, descrivendo la funzionalità di alcune righe di codice, utilizate nel plugin in esercizio. Una premessa prima di passare alla descrizione dell'implementazione: per meglio capire la struttura di funzionamento qui di seguito uno schema a blocchi che ci fa capire come il plugin viene interrogato dal cor di joomla. Figura 18: Struttura di interrogazione di un plugin.ù Come potete vedere il core di joomla ha in se registrati tutti i plugin agganciati ad uno specifico evento. Nella reggistrazione del plugin, joomla chiede anche la priorità di esecuzione, o meglio chiede l'ordine con cui i plugin registrati devono essere interrogati. In base alla priorità assegnata il core di joomla interroga uno ad uno i plugin registrati fino a quando o uno non esce con stato "ok" o finchè non finisce la lista dei plugin registrati ad un dato evento. Una volta che il plugin viene selezionato per l'interrogazione, viene eseguito il costruttore e poi viene lanciato il metodo che è agganciato all'evento, nel nostro caso "onAuthenticate(...)". Marco Pisa 873/15 Pagina 60 di 127 All''inizio la funzione effettua lettura dei paramtri in ingresso e lettura dei parametri di configurazione, l'unico e l'indirizzo del wdsl. Successivamente utiliza la classe "SOAPClient" per scaricare il descrittore del Web Service. Dopo di che invia le credenziali al WebService per verificare se sono valide. In caso vi sia un erroe durante la richiesta, viene catturato: se al contrario la comunicazione non ha problemi si continua con l'esecuzione del codice. Passando al contrllo della risposta ricevuta dal web service per capire quale è stato il risultato della verifica delle credenziali. In base al al valore ritornato dalla richiesta di verifica, lo funzione imposta un valore di "stato" ed esce dalla funzione. Se le credenziali sono errate si esegue: Marco Pisa 873/15 Pagina 61 di 127 se al contrario il test ha avuto esito positivo si esegue: impostando oltre allo stato di "autenticato", il nome dell'utente autenticato, che risiede nella posizione "2", e l'email che risiede nella posizione "1". Nel caso in cui la risposta del web service da esito negativo il core di joomla si ritroverà con un ritorno di stato "jauthenticate_status_failure", e passerà ad interrogare il plugin successivo, che nella nostra configurazione è quello di default di joomla, cioè autentica gli utenti tramite il database locale dello stesso joomla. Oltre all'implementazione del plugin, ho dovuto settare il descrittore del plugin, cioè quel file che permette al core di joomla di registrare il nostro plugin su un dato evento. Oltre a collegare il nostro plugin su l'evento, il descrittore del plugin permetti di creare una interfaccia di "back-and" che permette la configurazione dello stesso plugin e eventualmente il settaggio di parametri. Per fare tutto ciò il plugin deve essere installato e esenza questo descrittore joomla non permette l'installazione. Il descrittore e un file xml che accompagna il codice del plugin che è scritto in php. Alcune delle direttive più importanti sono: che è la direttiva più importante, poichè indica a joomla dei dati generali sul plugin, versione tipo di estensione e gruppo di appartenenza. La riga 1 ci fa capire che si tratta di un file xml, è quindi per essere preso in considerazione deve essere correttamnte formato. Marco Pisa 873/15 Pagina 62 di 127 I successivi sono di carattere descrittivo del plugin, compensibili da chiunque dopo di che vi è la lista dei file che viene associata al plugin, nel nostro caso che è un plugin di controllo e quindi il codice sta tutto in un solo file. In fine vi è la lista dei parametri, i tipi di parametri possono essere: • text: box di testo a una linea • textarea: box di testo a più linee • list: visualizza una combobox a cascata che ti permette di selezionare un valore • raio: visualizza più opzione da cui se ne seleziona una sola. • space: mette uno spazio bianco nella visualizzazione dei parametri ogni tipo di parametro ha i suoi attributi che possono essere impostati, come nel nostro caso. Marco Pisa 873/15 Pagina 63 di 127 5 Conclusioni Il risultato del lavoro svolto dà la possobilità a uno studente iscritto alla federico II° di accedere con le credenziali universitaria al portale di monitoraggio Wifed.scope.unina.it. Il lavoro è stato diviso in due fasi: 1) fase di analisi del probblema e della struttura del cms joomla, per meglio integrare l'idea all'interno del portale web. 2) la fase di sviluppo di un prototipo in ambiente di test, e successivamente l'implementazione del software integrato nel portale web, questa analisi potrà essere sfruttata nel caso si vogliano aggiungere altre funzionalità al portale web. Il plugin sviluppato, verifica se le credenziali inserite sono corrette; non controlla o legge altri dati come ad esempio il livello di privilegi. Uno sviluppo futuro potrebbe essere: • modificare il codice e inserire il grado di privilegio di amministratore • permettere al portale web di riconoscere il tipo di utente che si è autenticato e quindi controllare se si tratta di uno studente o professore. Sotto l'aspetto personale, questo tirocinio mi ha permesso di migliorare le mie nozioni di sviluppatore, aumentando notevolmente la mia conoscenza su molti tool di monitoraggio e sviluppo di servizi web. Marco Pisa 873/15 Pagina 64 di 127 Inoltre ho avuto la possibilità, quando si è trattato l'argomento sul porting, di lavorare in gruppo, all'interno del quale ho avuto scambi di opinioni, dissensi su alcuni temi, consensi su altri. Ho avuto l'opportunità di inquadrare e analizzare i problemi da più punti di vista e ciò mi ha permesso di condividere con loro le soluzioni migliori. E' stato sicuramente un momento di crescita professionale e di vita. Marco Pisa 873/15 Pagina 65 di 127 6 Appendice 6.1 Codice Sorgente Qui di seguito tutto il codice sorgente del plugin implementato. 6.1.1 Codice plugin File si chiama : "LdapWebService.php" il codice : <?php /** * @version $Id: ldap.php 14401 2010-01-16 14:10:00Z louis $ * @package Joomla * @subpackage JFramework * @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved. * @license GNU/GPL, see LICENSE.php * Joomla! is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See COPYRIGHT.php for copyright notices and details. */ // Check to ensure this file is included in Joomla! defined('_JEXEC') or die( 'Restricted access' ); jimport( 'joomla.plugin.plugin' ); Marco Pisa 873/15 Pagina 66 di 127 /** * LDAP Authentication Plugin * * @package Joomla * @subpackage JFramework * @since 1.5 */ class plgAuthenticationLdapWebService extends JPlugin { /** * Constructor * * For php4 compatability we must not use the __constructor as a constructor for plugins * because func_get_args ( void ) returns a copy of all passed arguments NOT references. * This causes problems with cross-referencing necessary for the observer design pattern. * * @param object $subject The object to observe * @param array $config An array that holds the plugin configuration * @since 1.5 */ /** Costruttore */ function plgAuthenticationLdapWebService(& $subject, $config) { parent::__construct($subject, $config); } Marco Pisa 873/15 Pagina 67 di 127 /** * This method should handle any authentication and report back to the subject * * @access public * @param array $credentials Array holding the user credentials * @param array $options * @param object $response * @return object boolean Array of extra options Authentication response object * @since 1.5 */ function onAuthenticate( $credentials, $options, &$response ) { // LDAP does not like Blank passwords (tries to Anon Bind which is bad) if (empty($credentials['password'])) { $response->status = JAUTHENTICATE_STATUS_FAILURE; $response->error_message = 'Controllare inserimento della password'; return false; } if (empty($credentials['username'])) { $response->status = JAUTHENTICATE_STATUS_FAILURE; $response->error_message = 'Controllare inserimento dell\' UserName'; return false; } Marco Pisa 873/15 Pagina 68 di 127 /** Ritorna 4 parametri : * @param array[0] Esito richiesta [true,false] * @param array[1] login * @param array[2] fullName * @param array[3] msg_error */ /** load plugin params info */ $wdsl= $this->params->get('wdsl'); /** Effettua il controllo delle credenziali tramite il service web, offerto da unina! */ try{ /** Legge il wsdl, per interfacciarsi con il servizio (da caricare) */ $service =new SoapClient($wdsl); /** Effettua la richiesta di controllo credenziali () */ $result = $service->autentica($credentials['username'],$credentials['password']); } catch (SoapFault $e){ $response->status = JAUTHENTICATE_STATUS_FAILURE; $response->error_message = 'Errore durante la richiesta al servizio web'; return false; } /** ok, la rischiesta ha avuto una risposta */ if($result[0]) { $response->email = $result[1]; $response->fullname = $result[2]; $response->status = JAUTHENTICATE_STATUS_SUCCESS; $response->error_message = $result[3]; } Marco Pisa 873/15 Pagina 69 di 127 else { $response->status = JAUTHENTICATE_STATUS_FAILURE; $response->error_message = $result[3]; } } } ?> Marco Pisa 873/15 Pagina 70 di 127 6.1.2 File xml di configurazione Qui di seguito verrà riportato il file di configurazione utilizato per integrare il plugin all'interno di joomla. File: LdapWebService.xml contenuto: <?xml version="1.0" encoding="utf-8"?> <install version="1.5.0" type="plugin" group="authentication"> <name>Authentication - LdapWebService</name> <author>Joomla! Project</author> <creationDate>November 2005</creationDate> <copyright>Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.</copyright> <license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license> <authorEmail>[email protected]</authorEmail> <authorUrl>www.joomla.org</authorUrl> <version>1.5</version> <description>Autenticazione tramite un Web Service</description> <files> <filename plugin="LdapWebService">LdapWebService.php</filename> </files> Marco Pisa 873/15 Pagina 71 di 127 <params> <param name="wdsl" type="text" size="50" default="http:\\" label="Indirizzo del wdsl" description="Immettere l'indirizzo del descrittore del web service" /> </params> </install> Marco Pisa 873/15 Pagina 72 di 127 6.2 Guida alla configurazione del Plug-in Qui verrà illustrato e spiegato come fare per installare e configurare il plugin da me implementeto. Per far funzionare il tutto si devono soddisfare le seguenti condizioni: Aver installato: • Lamp • Cms joomla sulla macchina avere accesso al Web Service di Unina. Dopo di che accedere alla prte amministrativa di joomla, tramite l'interfaccia di login lato back-and e inserendo le credenziali. Se il login ha avuto successo ci troveremo nella sezione del back-and del cms joomla: Marco Pisa 873/15 Pagina 73 di 127 Figura 19: Interfaccia Jooma, Sezione Amministrazione Dopo di che dal menù in alto, sezione Estenzione , selezioniamo "installa\Disistalla" come mostrato di seguito: Figura 20: Interfaccia di joomla, Menu Installa/disistalla Marco Pisa 873/15 Pagina 74 di 127 Dopo di che ci troveremo nella sezione delle Estenzioni, qui vengono mostrate tutte le estenzioni installate nel cms joomla, divise per categoria, con delle varie statistiche: versione, compatibilità, attiva/disattiva ecc... Noi ci troviamo nella paggina principale dove ci permette di aggiungere una nuova estenzione: Figura 21: Interfaccia di Joomla, installazione estenzione tramite l'interfaccia intuitiva e semplice selezionare il pacchetto del plugin fornito e cliccare su "carica file & installa". Marco Pisa 873/15 Pagina 75 di 127 Se tutto è andato bene uscirà il seguente messaggio: Figura 22: Interfaccia di Joomla, estenzione installata con successo altrimenti al posto del messaggio di successo, uscira il nome dell'errore evidenziato non in blu ma in rosso. In questo caso riferirsi alla documentazione ufficiale, per evitare di commettere ulteriori errori. Dopo aver installato l'estenzione (plugin), ritornare nella home dell'amministratore. Marco Pisa 873/15 Pagina 76 di 127 andare nel menu "estenzioni", ma questa volta fare clik su "gestione plugin". Figura 23: Interfaccia di Joomla, menù Gestione Plugin Marco Pisa 873/15 Pagina 77 di 127 Ci troveremo un elenco di tutti i plugin installati e funzionanti. Figura 24: Interfaccia joomla, lista plugin Da qui si può decidere cosa fare di un plugin, o meglio si accede alla pagina di configurazione di ogni plugin. Marco Pisa 873/15 Pagina 78 di 127 Cercare il plugin appena installato e cliccare sopra al nome, per accedere alla pagina di configurazione. Figura 25: Interfaccia configurazione plugin LdapWebService oltre ai valori standard che possiede ogni plugin (lato sinistro), vi sono paramatri avanzati sul lato destro, nel nostro caso vi è solo la posizione del "wdsl" necessaria per poter comunicare con il web service. Una volta effettuata la configurazione il gico è fatto, si potrebbe anche uscire e utilizare finalmente il nostro plugin. Marco Pisa 873/15 Pagina 79 di 127 Ultimo accorgimento, joomla di defoult possiede un plugin che registra automaticamente nel database locale tutti gli utenti che vengono autenticati con altri plugin. Nel nostro caso deve essere disattivato, per non duplicare le informazioni e per non contaminare la gestione degli utenti del DB locale. Per fare ciò si deve ritornare nella sezione "gestione plugin", cercare il plugin : • User Joomla Figura 26: Interfaccia joomla, plugin: User joomla Marco Pisa 873/15 Pagina 80 di 127 e nella scheda di configurazione, spuntare l'opzione di auto registraizone. Figura 27: Auto Registrazione Utente Joomla Salvare il tutto e uscire dall'interfaccia per poi verificare il corretto funzionamento del plugin. Marco Pisa 873/15 Pagina 81 di 127 6.3 How To Tutte le guide che vengono indicate qui, sono state fatte durante la configurazione dell'ambiente di test e durante il lavoro svolto nel porting. Quindi le ripropongo qualora qualcuno dovesse mettere mano al mio lavoro, o reimpostare alcuni servizi del portale web. Di seguito ci sono anche le guide per l'installazione di tutti i tool utilizati durante il mio tirocinio al centro "ScoPE Control Room". Marco Pisa 873/15 Pagina 82 di 127 6.3.1 Installazione Lamp: Configurazione per sitemi (debian) Pacchetti da installare: • apache2 • mysql-server • mysql-client • php5 • libapache2-mod-php5 • phpmyadmin: tool per gestire graficamente i vostri DataBase Il comando per effettuare un installazione e molto semplice sudo apt-get install <nome pacchetto> Anche se si può inserire tutti i pacchetti separati da uno spazzio, io preferisco fare le installazioni dei pachetti separatemente per ogni programma. Quindi seguiamo i mini wizard che si avvieranno con l'esecuzione di questi tre comandi. sudo apt-get install apache2 sudo apt-get install mysql-server mysql-client sudo apt-get install php5 libapache2-mod-php5 Marco Pisa 873/15 Pagina 83 di 127 Nei wizard verranno chieste, per apache niente; per mysql verrà chiesto la pasword di root da impostare; per php5 verra chiesto, tramite una serie di ozioni, quale server web abinare il pacchetto, noi segneremo apache2. Dopo aver fatto tutto bisogna vedere se funziona tutto, ma prima riavviamo i servizi principali: sudo /etc/init.d/apache2 restart sudo /etc/init.d/mysql restart dopo il riavvio dei servizi possiamo verificare se mysql funziona, basta che inseriamo un semplice comando da shell di linux: ~ mysql -u root -p vi chiederà la password di root, che è stata inserita nel wizard durante l'installazione, dopo di che se funziona correttamente la schell diventerà: mysql> Con il comando "sql" che segue show databases; vi elenchera tutti i database che sono presenti nel nostro DatabaseSystem dovrebbero uscire solo il db di configurazione: [immagine] poi per uscire esequire il seguente comando: quit; Marco Pisa 873/15 Pagina 84 di 127 dopo aver verificato che mysql funziona, possiamo passiamo al PHP. Per verificare che php funzioni dobbiamo creare un nuovo file nella cartella che apache riconosce come root del vostro “localhost”, se rimangono le impostazzioni base, la cartella è :/var/www/ Andiamo in questa cartella e creiamo un file che chiameremo “index.php” il cui contenuto sarà: <?php phpinfo(); ?> questo lo possiamo fare con un semplice editor oppure scrivendo questa riga da terminale: cd /var/www; gksudo chmod 775 ./ ; echo “<?php phpinfo(); ?>” > index.php; Questo dovrebbe automatizzare il tutto! Dopo di che aprite un Browser-Web e nella barra degli indirizzi scrivete: http://locahost/index.php dovrebbe uscire una pagina contenete tutte le informazioni riguardanti il modulo PHP installato. In caso contrario , si è sicuramente verificato un errore, durante la procedura di installazione. Fatto ciò per controllare che tutto il sistema Ldap sia correttamente installato e funzionante, si deve verificare che il modulo php riesca a comunicare con mysql. Prima di controllare si deve modificare il file di configurazione del modulo php: il file Marco Pisa 873/15 Pagina 85 di 127 php.ini che sta nella cartella: /etc/php5/apache2/ Visto che si deve modificarlo, aprirlo con i diritti di amministratore, o usare il seguente comando: sudo gedit /etc/php5/apache2/php.ini Questo comando aprirà "gedit" si può usare qualsiasi edito di testo per effettuare questa modifica. Se nonavete gedit o non funziona, potete usare "vi" che c'è sempre in una distribuzione linux, il comando diventerà: sudo vi /etc/php5/apache2/php.ini Una volta aperto il file, il primissimo controllo che si deve fare, è la configurazione delle estensioni, quindi controlliamo che tutte le estensioni essenziali ci siano. Andiamo nella cartella, precedentemente detta cd /etc/php5/apache2 all'interno troveremo il file di configurazione di php, lo apriamo e cerchiamo questa estensione: "extension=msql.so" Sicuramente la troviamo, ma potrebbe essere che sia commentata, se e' commentata togliere il commento ";" altrimenti lasciate stare. Un suggerimento, di solito questo comando risiede alla richa 936, se non vi è in tale locazione non vuol dire che non ci sia. Nel caso non ci sia aggiungere la riga cercatta così come. Dopo aver fatto la modifica, salvare e chiudere il file "php.ini". Ora per verificare praticamente che php comunichi con mysql, si deve scrivere un piccolo programmino che cerchi di connettersi al database, o più facilmente Marco Pisa 873/15 Pagina 86 di 127 installiamo un utiliti, che ci permette di lavorare con i database a livello grafico. Il mio consiglio e "PhpMyAdmin", scitto in interamente in php. Non è un tool essenziale per il corretto funzionamento di "Lamp", ma aiuta con la gestione dei database. PHPMYADMIN Figura 28: PhpMyAdmin Interfaccia Utente principale Marco Pisa 873/15 Pagina 87 di 127 Installiamo ora un gestore grafico per DB, che vi aiuterà a gestire al meglio Mysql. Il pacchetto è: sudo apt-get install phpmyadmin Dopo di che lasciate fare tutto a lui. Anche qui dovrebbe partire un pocolo wizard, come sempre seguide le istruzioni che vi dice, e rispondete alle domande che vi vengono poste. L'installazione automatica non vi mette la cartella di "PhpMyAdmin" nella "default root" /var/www che viene raggiunta da apache, quindi dobiamo mettere un link simbolico, che permetta ad apache di raggiungere il nuovo gestore appena installato. Quindi dopo l’installazione scrivere questa riga per abbilitare PhpMyAdmin ad essere raggiunto da Apache2, o meglio per creare il link. sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin se la cartella di origini :"/usr/share/phpmyadmin", non è quella giusta (prima di effettuare il comando verificare se lo è); sostituitela con la cartella giusta. Fatto ciò tutto dovrebbe andar bene, in caso di errori andate sulla documentazione ufficiale : "" Un accorgimento, gli errori derivanti potrebbero essere causati da permessi non corretti. Se non si hanno specifiche richieste sui permessi, impostare l'intera cartella a 775 (o 755), in questo modo: sudo chmod 775 -R /usr/share/phpmyadmin per evitare che non riesca ad accedere al file di configurazione. Dopo di che, riavviamo il demone apahe2 e di mysql sudo /etc/init.d/mysql restart Marco Pisa 873/15 Pagina 88 di 127 sudo /etc/init.d/apache2 restart (in redat httpd è il nome del servizio) Dopo aver installato, ci troveremo il tool all'indirizzo: "http:\\loclhost\phpmyadmin" (attenzione l'indirizo e case sensite) Vi troverete a dover inserire delle credenziali, a meno che durante il wizar non avete impostato diversamente. Figura 29: PhpMyAdmin Interfaccia Login con accesso da amministratore si posso fare molte cose: • creare un nuovo database, quadrato rosso come visto nella prima figura • creare uno nuovo gruppo o nuovo utente: Marco Pisa 873/15 Pagina 89 di 127 Figura 30: Creare nuovo Gruppo o Utente • creare e configurare dettagliatamente i campi di una tabella: Figura 31: Creare i campi di una tabella Marco Pisa 873/15 Pagina 90 di 127 • configurare i permessi di un nuovo utente : Figura 32: Impostazioni dei permessi di un utente è molto altro ancora. Per ulteriori approfondimenti riferirsi alla documentazione ufficiale, o alla grandissima comunita di questo tool. "http://www.phpmyadmin.net/home_page/docs.php" Marco Pisa 873/15 Pagina 91 di 127 6.3.2 Cacti installazione da repository del tool "cacti". Pacchetto: cacti-spine per installare sudo apt-get installa cacti-spine e seguire il mini wizard che parte subito dopo l’installazione( o durante) Dopo si devono effettuare due controlli fondamentali: 1)controllare che abbia installato il DB in Mysql, con il comando: mysql -u root -p entriamo in mysql, poi vediamo i database presenti, con il seguente comando: show databases; che vi mostrerà tutta la lista dei database presenti, ci dovrebbe essere anche “cacti” Se avete particolari permessi per Mysql, ricordate di dare pieno accesso al Db:“cacti” a cacti. 2) aprire un browser e andare all'indirizzo http:\\localhost:/cacti partira un breve wizard dove non bisogna modificare praticamente niente, visto che ci sono i link ai sorgenti dei programmi e protocolli usati da cacti. Marco Pisa 873/15 Pagina 92 di 127 Figura 33: Wizard install di cacti, prima pagina In questa pagina permette di indicare se è una nuova installazione o un aggiornamento, fecendo anche un riepilogo di alcuni dati riguardante il sistema operativo e i dati del database a cui accederà per il suo funzionamento. Marco Pisa 873/15 Pagina 93 di 127 Figura 34: Wizard installa di cacti, seconda facciata Nella seconda pagina, visualizza un riepilogo di tutte le locazioni più importante tra cui dove reperire i tool che usa per il monitoraggio, ES: rrdtool, snmp ecc... Marco Pisa 873/15 Pagina 94 di 127 Andando avanti si potrà accedere con le credenziali iniziali login/pw=admin/admin Che dovranno esser modificate subito, stesso cacti avviera la procedura di modifica password, per evitare che c'è ne dimentichiamo. Dopo la modifica della password cacti e pronto. Figura 35: Pagina principale di cacti Marco Pisa 873/15 Pagina 95 di 127 Cacti di default si mostra con il monitoraggio della macchina "localhost" per controllare il funzionamento dello stesso nel monitorare un dispositivo. Al primo accesso si avrà la configurazione di default, ma stesso dall'interfaccia si è in grado di configurare cacti a piacimento. Nel setting dell’interfaccia è possibile fare tutto quello che si vuole.Vi è anche una sezione "Utiliy" dove si può accedere ai log e ad altre sezioni utili. Figura 36: Interfaccia di cacti, Utility Marco Pisa 873/15 Pagina 96 di 127 CRON Per rendere il monitoraggio di cacti sempre attivo, si ricorre ad un'altro tool: "CRON" che permette di eseguire, comandi da schell a cadenze periodiche. Quello che interessa è che il file "poller.php", si deve forzare il suo avvio ogni 5min, per permettere a cacti di funzionare meglio. Per inserire un comando nel toll Cron, bisogn configurare il file "crontab". Le locazioni che ci interessano sono: /etc/init.d/cron -> servizio /etc/crontab -> Script( listaistruzioni) la riga da inserire in crontab, dopo aperto con il seguente comando sudo gedit /etc/crontab e: (senza i ") "*/5 **** php /usr/share/cacti/site/poller.php > /usr/share/cacti/site/poller.log 2>&1" o se nn va provate a mettete quest’altra. "*/5 **** php /usr/share/cacti/site/poller.php-> forza/dev/null 2>&1 " Ricordate che il tempo per verificare il fuzionamento di un nuovo dispositivo, e di circa 5m cioe' il tempo che intercorre tra un interrogazione e un'altra. tenre presente che all'inserimento di un nuovo dispositivo il tempo di ricerca potrebbe richiedere piu' cicli di interrogazione. quindi aspettare almeno una 30' di minuti. Marco Pisa 873/15 Pagina 97 di 127 controllare sempre anche il log di cacti presente nella sezione "System Utilites". che mostra tutte le operazioni del poller.php. Il log mostra anche eventuali "worning", utili a capire cosa non funziona perfettamente durante il monitoraggio dei dispositivi. Prima di inserire vedete se il file "poller.php" si trova veramente nella cartella che state indicando, altrimenti il monitoraggio non funziona. Se non si trova lì cambiate il path /usr/share/cacti/site/poller.php con quello vostro. ATTENZIONE ci potrebbero essere problemi con i permessi di accesso a questo file, controllare sempre nel log o in caso di sicurezza dare 775 come permessi. Marco Pisa 873/15 Pagina 98 di 127 6.3.3 Tomcat (guida per sistemi Debian) Apache Tomcat (o semplicemente Tomcat) è un web container open source sviluppato dalla Apache Software Foundation. Implementa le specifiche JSP e Servlet di Sun Microsystems, fornendo quindi una piattaforma per l'esecuzione di applicazioni Web sviluppate nel linguaggio Java. La sua distribuzione standard include anche le funzionalità di web server tradizionale, che corrispondono al prodotto Apache. Tomcat non è l'unico Application Server per Servlet/JSP in circolazione, ha la licenza "open" ed è anche il più diffuso, quindi ha una comunita molto grande che lo sostiene. Cosa da considerare in caso di problemi durante l'instllazione o l'utilizzo di un software. Questa guida servirà ad installare Apache Tomcat utilizzando i pacchetti precompilati di Ubuntu prelevabili dal repository Universe. Prima di iniziare con la procedura di installazione di tomcat dobbiamo assicurarci di aver installato la java vitual machine e la jre, nel dubbio eseguiamo il seguente comando per installare il pacchetto jdk che contiene tutto il necessario: sudo apt-get install sun-java6-jdk dopo di che si può passare all'installazione del pacchetto di tomcat, installeremo la versione più stabile al momento: sudo apt-get install tomcat6 Marco Pisa 873/15 Pagina 99 di 127 la procedura automatica di installazione, dovrebbe fare tutto, ma si potrebbe verificare qualche problema con lo script di avvio del servizio. In tal caso creare uno script per init.d per fa si che il demone di tomcat venga attivato all'avvio o comunque dia la possibilità di avviarlo, arrestarlo e riavviarlo. Crearlo in /etc/init.d/tomcat con l'editor di testo preferito e copiare quanto segue : #!/bin/bash # Startup script for the Tomcat server # chkconfig: - 83 53 # description: Starts and stops the Tomcat daemon. # processname: tomcat # pidfile: /var/run/tomcat.pid # See how we were called. case $1 in start) export JAVA_HOME=/usr/lib/jvm/java-1.6.0-sun/ export CLASSPATH=/usr/local/tomcat/lib/servlet-api.jar export CLASSPATH=/usr/local/tomcat/lib/jsp-api.jar export JRE_HOME=/usr/lib/jvm/java-1.6.0-sun/ echo "Tomcat is started" sh /usr/local/tomcat/bin/startup.sh ;; stop) export JRE_HOME=/usr/lib/jvm/java-1.6.0-sun/ sh /usr/local/tomcat/bin/shutdown.sh echo "Tomcat is stopped" ;; restart) export JRE_HOME=/usr/lib/jvm/java-1.6.0-sun/ sh /usr/local/tomcat/bin/shutdown.sh echo "Tomcat is stopped" Marco Pisa 873/15 Pagina 100 di 127 sh /usr/local/tomcat/bin/startup.sh echo "Tomcat is started" ;; *) echo "Usage: /etc/init.d/tomcat start|stop|restart" ;; esac exit 0 Da notare che ci sono dei riferimenti, nello script, alle variabili d'ambiente che indicano a tomcat dove trovare java, eventuali problemi sul funzionamento di tomcato potrebbero derivare dalle non corrette informazioni all'interno di questo script, quindi prima di registrare lo stesso, controllare che la vostra java virtual machine si trovi nelle posizioni indicate. Prima di avviare lo script, impostare dei permessi che ne permettino l'esecuzione, eseguite il seguente comando, per impostare i permessi a tutti gli utenti: sudo chmod 775 /etc/init.d/tomcat Dopo aver scritto lo script, e dato i permessi possiamo avviare il servizio, tramite il seguente comando: sudo /etc/init.d/tomcat start Se la configurazione è stata effettuata correttamente puntando all'indirizzo http:\\localhost:8080 si dovrebbe avere la pagina di benvenuto di tomcat. Per accedere al pannello amministrativo di Tomcat è necessario attivare Tomcat Manager (nel caso non lo si trova gia installato lo si può installare dal repositori tramite il pacchetto tomcat6-nanager). Marco Pisa 873/15 Pagina 101 di 127 Per attivare il pacchetto amministrativo si deve creare un utente "amministratore" nell'archivio utenti di tomcat. Per farlo basta andare a modificare il file tomcat-users.xml che risiede nella cartella: /usr/share/tomcat/skel/conf/ lo si può aprire con un qualsiasi editor di testo. Il file ha la struttur di un file "xml". Prima di creare una voce utente, si deve creare il ruolo di "manager" e di "amministratore", basta copiare le seguenti riche: <role rolename="manager"/> <role rolename="admin"/> mentre per creare l'utente con i ruoli di admin e manager, inserire: <user username="YOUR USERNAME " password="YOUR PASSWORD" roles="admin,manager"/> Per dare all'utente un unico ruolo, come admin, basta impostare ala proprietà roles un solo ruolo: <user username="YOUR USERNAME " password="YOUR PASSWORD" roles="admin"/> Fatto questo, chiudere il file e salvere, dopo di che per accedere al pannello di controllo di tomcat manager digitare il seguente indirizzo http://localhost:8080/manager vi chiedere delle credenziali, inseritele ed ecco a voi la schermate di gestione delle servlet di tomacat. Marco Pisa 873/15 Pagina 102 di 127 Figura 37: Tomcat6 - Gestore Grafico delle Servlet Marco Pisa 873/15 Pagina 103 di 127 6.3.4 Tomcat : installazione modulo Axis Innanzi tutto diciamo che Axis e un modulo di apache, ed è il framework di sviluppo per i web service mentre Tomcat è l'application server dove avviene l'esposizione dei web server. Quindi Axis si appoggia a tomcat per esporre i web service. Axis viene utilizato nella fase di testing del plugin per creare un web service che simula quello di unina. L'installazione è molto semplice, dall'ambiente viene visto come applicativo di tomcat, quindi basta effettuare il deploy del pacchetto compresso tramite l'interfaccia di manager di tomcat. Figura 38: Interfaccia di Tomcat per il Deploy di un applicazione Marco Pisa 873/15 Pagina 104 di 127 oppure andare nella cartella delle webapps di tomcat, copiare la cartella di axis. /usr/share/tomcat6/webapps/ dopo aver effettuato questa operazione, si deve verificare che axis funzioni. Per verificare ciò basta vedere se all'indirizzo http:\\localhost:8080\axis axis è accessibile, dovrebbe visualizare questa pagina: Figura 39: Home Page di Axis fatto ciò dovrebbe funzionare correttamnte. Marco Pisa 873/15 Pagina 105 di 127 6.3.5 Vmware: installazione "player"&"workstation" Innanzi tutto andarsi a scaricare l'applicazione sul sito http:\\www.vmware.com nella sezione dawload o produzione scaricarsi vmware player , per riuscire a scaricarsi l'applicativo, bisogna registrarsi e accettare la licenza d'uso prima di ricevere il software. Dopo di che eseguire l'applicativo, l'installer fa partire un wizard che ti permettera di configurare a piacimento il tool. I passi del wizard sono i classici di ogni wizard di installazione software, locazione, cartella predefinita per le virtual machine, ecc ... Di seguito vi spiegherò come creare una macchina virtuale, tramite l'utilizzo del wizard di vmware player. Il wizard e del tutto simile a quello che offre Workstation. Marco Pisa 873/15 Pagina 106 di 127 6.3.6 Vmware: creare un virtual machine con OS Ubuntu Una volta installato il software di virtualizazzione, creare una macchina virtuale diventa abbastanza semplice. Per prima cosa si deve analizare la propria macchina fisica per determinare se è in grado di supportare anche quella virtuale, e determinare anche quante risorse gli può dare. Dopo l'analisi e prima di avviare il software di virtualizzazione, ci dobbiamo procurare il Sistema Operativo che voglio far partire sulla nostra macchina virtuale, fatto ciò si avvia il software che si presenta così: Figura 40: vmware - home del tool Marco Pisa 873/15 Pagina 107 di 127 • Click su "create a new virtual machine",vi si aprirà un wizard di configurazione. La prima cosa che vi chiederà è: come si vuole installare l'SO, se da CD-ROM\DVD o tramite ISO. Figura 41: vmware - dove si trova il SO da installare Marco Pisa 873/15 Pagina 108 di 127 • Fatta qusta scelta si passerà ad impostare i dati di utente di root, che per un sistema Linux e importantissimo. Figura 42: vmware - Dati utente root del SO Marco Pisa 873/15 Pagina 109 di 127 • Dopo di che ci permetterà di impostare il nome della VM, e dove la vogliamo memorizare. Figura 43: vmware - Dove memorizare la VM Marco Pisa 873/15 Pagina 110 di 127 • Dopo di che si deve configurare la dimensione dell'hdd virtuale, e quale formato del file si decide di usare, mediamente si utilizano sui 20/40 gb per la creazione di una VM per un ambiente di test, ma in base al vostro spazzio o quello che si deve fare si può inserire qualsiasi dimensione. • La seconda opzione e se si vuole dividere il filesystem virtuale in più file, o rimanere che abbia una dimensione fissa. Ovviamente le due scelte hanno pro e contro. Figura 44: vmware - Dimensione hdd virtuale Marco Pisa 873/15 Pagina 111 di 127 • Arrivati a questo punto siamo quasi alla fine, se ci accontentiamo della configurazione custom della VM, basta clickare su "finish" e il software passera alla procedura di installazione del SO. Altrimenti si fa click su "customize hardware" per personalizare le impostazioni hardware della macchina. Figura 45: vmware - riepilogo hardware macchina virtuale Marco Pisa 873/15 Pagina 112 di 127 • Come ad esempio la dimensione che si riserva per la Ram. Per questo motivo prima di installare una vm si deve conoscere le risorse diponibili di quella fisica. Oltre alla ram il wizard permette di configurare ogni componente hardware che si vuole "virtualizare", anche il numero di processori. Figura 46: vmware - impostazione hardware personalizata Finita la configurazione personalizata si ritorna alla schermata del riepilogo delle componenti hardware e si fa click su "finish", e il tool si occupera di virtualizare la macchina e avviare la procedura di installazione del s.o. scelto nalla prima fase del wizard. Marco Pisa 873/15 Pagina 113 di 127 6.3.7 Joomla: installazione & configurazione PREMSESSA: Da tenere presente che il cms joomla senza la piattaforma Lamp che lo supporta non funziona, quindi prima di continuare a seguire questa guida, ci si preoccupi di installare è configurare correttamente Lamp. Per installare il cms joomla è molto semplice, innanzitutto scaricare l'ultima versione stabile o la versione 1.5, che è ustata nel nostro portale web. http:\\www.joomla.com Scompattare il file zip, e inserire tutta la cartella nella cartella del Server Web Apache: /var/www. Cerchiamo di rinominare prima la cartella che ci siamo scaricati dando un nome semplice, Es:joomla. Una volta effettuato il posizionamento del pacchetto di joomla nella cartella "www",accederemo al cms tramite l'indirizzo, con un qualsiasi browser, http:\\localhost\joomla è si presenterà un piccolo wizard da seguire obligatoriamente, che serve a effettuare una prima configurazione. La prima schermata sarà: • Selezionare la lingua, sia del back-and sia del front-and: Marco Pisa 873/15 Pagina 114 di 127 Figura 47: Joomla- Selezione lingua • Dopo di che andando su avanti, il wizard effettuerà dei controlli sui servizi che servono per far funzionare correttamente il cms. Controlla se vi è presente il php, la versione, i supporti concessi, oltre a controllare i servizi a cui si più aganciare, controlla anche le impostazioni del file di configurzione di php, per meglio capire se si sta in fase di pubblicazione o di testing. Ovviamente se manca qualcosa di importante, o qualche impostazione rende il cms joomla vulnerabile, l'interfaccia suggerira di modificare tale impostazione. Marco Pisa 873/15 Pagina 115 di 127 Figura 48: joomla - contrplli di preinstallazione • Prima di questa schermata ci viene presentata la licenza uso, che deve essere letta, poi si passa avanti. • Dopo di che si passa ad impostare il database, per impostare il Database, basta dirgli dove lo si raggiunge:Tipo,Nome Host (localhost, nel nostro caso), dati di un utente che abbia i permessi di creare un nuovo DataBase. Il cms joomla permette di installare nel proprio spazio, più copiè, per fare ciò basta che quando si è in questa perte di configurazione, si acceda a proprieta avanzate in fondo alla pagina, e si setti un prefisso a tutto il database, questo per tutte le copie (ovviamente ad ogni copia un prefisso differente). Marco Pisa 873/15 Pagina 116 di 127 Figura 49: joomla - Configurazione del DataBase • In questa schermata di imposta il servizio ftp automatico offerto dal cms. Nel nostro caso il servizio non viene sfruttato, visto che si ha accesso diretto alla macchina su cui si sta lavorando. Lo si sfrutta quando non si conoscono client ftp, o ci si avvicina per la prima volta ai CMS, e quindi non si conosce la struttura del filesystem dello stesso. Marco Pisa 873/15 Pagina 117 di 127 Figura 50: joomla - Configurazione Ftp • Dopo l'ftp si passa a configurare i dati del nostro nuovo portale: Titolo, credenziali del Super Amministratore è la nostra email, nel caso qualche utente ci volesse contattare. Marco Pisa 873/15 Pagina 118 di 127 Figura 51: joomla - Configurazione dati Sito • Successivamente si passa alla schermata di conclusione,che ci dice che tutto è andato bene, joomla è installato correttamente e per iniziare ad usarlo dobbiamo cancellare la cartella "installation", anche se io consiglio di mettere un prefisso. Figura 52: joomla - messaggio di completamento installazione. Marco Pisa 873/15 Pagina 119 di 127 • Nel caso ci dimenticassimo di cancellare quella cartella joomla non riesce a funzionare, poichè cercherebbe sempre di effettuare il wizard. Partendo da questa posizione invece ci ricoderebbe di cancellare la cartella installation. Figura 53: joomla - Cancellare cartella "installation" Dopo di che il cms è installato e si può raggiungere il front-and all'indirizzo : http:\\localhost\joomla\index.php e il Back-and all'indirizzo: http:\\localhost\joomla\administrator\ il back-and ci permette di inserire i contenuti e di configurare il nostro cms come meglio ci piace o ci è più consono al suo utilizzo. Marco Pisa 873/15 Pagina 120 di 127 6.3.8 Ripristino dei servizio di Statistiche del Portale Wifed Nella fase del porting si è dovuto trasportare anche il servizio di statistiche dei dispositivi wi-fi che il portale monitorava. Questa operazione non è molto semplice, per effettuare un corretto ripristino del servizio, per prima cosa bisgno installare tomcat sulla macchina che espone i dati, o meglio quella che contiene il cms joomla. Per un aiuto vedere la guida al paragrafo 6.3.4 installazione di Tomcat6 prima di continuare, si deve dire che il servizio di statistica wi-fi viene garantito da due applicazioni DataServer.jar , DataClient.jar queste applicazioni java hanno una il compito di raccogliere le informazioni e l'altro di esporre sotto forma di grafici le stesse informazioni. Il DataServer.jar deve risiedere nella "home" della macchina Wifed02 Il DataClient.jar deve risiedere nella "home" della macchina Wifed03 Passiamo alle singole configurazioni delle applicazioni: WIFED02: L'applicazione viene fornita oltre che dal jar, di altri due file: • server_config.dtd • server_config.xml che permettono di configurare l'applicazione su alcuni spetti. Dopo aver configurato il DataServer, modificando adeguatamente il file "server_config.xml" lo si può lanciare con il seguente comando: Marco Pisa 873/15 Pagina 121 di 127 /> java -jar DataServer.jar > logfile & questo tipo di comando gira tutto l'outuput dell'applicazione in un file "logfile" che risiede nella cartella dell'applicazione. Per terminare il DataServer è sufficiente uccidere il relativo processo. Tramite il comando netstat -ltup è possibile conoscere l'elenco delle porte sulle quali vi sono processi in ascolto. Da questo elenco si può identificare il PID del DataServer. Successivamente è sufficiente uccidere il processo con il comando kill -9 <PID> dove <PID> è l'identificativo del processo precedentemente identificato. WIFED03: In questa macchina va installato il DataClient.jar che è accompoagnato anchesso da altri file: • dataclient_config.dtd • dataclient_config.xml • rrdb.sql i soliti due fai per la configurazione, è un ".sql" che è il dump del database che usa per creare i grafici da esporre tramite il cms joomla. Quindi prima di avviare il DataClient, bisogna creare il Database, per farlo accedere alla shell di comanfo e eseguire i deguenti comandi: /> mysql -u root -p mysql> source "</pathname/>rrdb.sql" Dove </pathname/> è il percorso completo al file rrdb.sql . Questi due comandi ci permettono di creare il database necessario al corretto funzionamento del programma. Marco Pisa 873/15 Pagina 122 di 127 Come per il DataServer anche per il DataClient è necessario configurare il file dataclient_config.xml. L'esecuzione e la terminazione del DataClient è analoga a quella del DataServer. E' quindi possibile digitare il seguente comando bash per eseguire il DataClient : /> java -jar DataClient.jar > logfile & Dopo di che il tutto dovrebbe funzionare correttamente. Ricordiamo di effettuare il deploy, tramite l'interfaccia di tomcat delle applicazioni: • Wistat • Wistat Admin sempre fornite con le applicazioni DataServer.jar e DataClient.jar. Marco Pisa 873/15 Pagina 123 di 127 Queste permetto di accedere tramite interfaccia alle impostazioni delle statistiche. Di seguito il deploy, tramite interfaccia web di tomcat: Figura 54: Interfaccia di Tomcat: deploy di un applicazione web Marco Pisa 873/15 Pagina 124 di 127 Di seguito riporto l'interfaccia di gestione delle statistiche wi-fi, utilizata per controllare cosa si sta monitorando, è a quale DataServer si è collegati. Figura 55: Interfaccia di Wistat Admin Marco Pisa 873/15 Pagina 125 di 127 Bibliografia 1. R. Pressman. Principi di ingegneria del sofware. McGraw Hill 2. Bruce Eckel, "Thinking in Java", Prentice Hall, 3rd ed., 2002 3. Marco Pisa 873/15 Pagina 126 di 127 Sitografia 1. wikipedia http://www.wikipedia.it 2. Guida html http://www.html.it 3. Cacti http://www.cacti.net 4. apache2 http://it.wikipedia.org/wiki/Apache_HTTP_Server 5. apache2 http://www.apache.org/ 6. Mysql http://www.mysql.com/ 7. PhpMyAdmin http://www.phpmyadmin.net 8. Vmware http://www.vmware.com 9. Joomla http://www.joomla.it/ 10. Tomcat http://tomcat.apache.org/ 11. rrdtool http://oss.oetiker.ch/rrdtool/ Marco Pisa 873/15 Pagina 127 di 127