Un Sistema di Monitoraggio per il Remote Management
Transcript
Un Sistema di Monitoraggio per il Remote Management
Università degli Studi di Napoli Federico II Facoltà di Scienze MM.FF.NN. Corso di Laurea in Informatica Tesi Sperimentale di Laurea Triennale Un Sistema di Monitoraggio per il Remote Management delle attrezzature di un Data Center Relatori Candidato Prof. Guido Russo Dr. Domenico Del Prete Anno accademico 2009/2010 Nicola Sergnese Matricola: 566/2002 Ringraziamenti. Ringrazio la mia famiglia che mi ha sostenuto in questi anni, specialmente mamma (che mi segue ancora) e papà (purtroppo mi ha seguito fino a due anni fa), il Prof Guido Russo per avermi consentito di svolgere questo lavoro di tesi e per la sua piena disponibilità, il Dott. Domenico Del Prete per avermi seguito con costanza e pazienza, tutti i compagni e amici conosciuti all'università, in particolare modo il Dott. Crisci Giovanni e il Dott. Daniele Finelli, per il loro aiuto, nonché i loro genitori per l'ospitalità che mi è stata data, i ragazzi di S. Maria a Vico, Amedeo, Mimmo, ecc., e per ultimi non meno importanti Marco Pisa e Paolo Romano che mi hanno sostenuto in momenti di crisi. Ultimo ringraziamento, sperando che vada sempre più in alto, va alla S.S.C NAPOLI che mi diverte nei fine settimana. Indice generale 1 Introduzione...........................................................................................................................1 2 Come nasce la necessità del monitoraggio per i Data Center.................................................3 2.1 Le Esigenze Del Remote Management Di Un Data Center............................................5 2.2 Le Esigenze Specifiche Del Data Center Atlas...............................................................8 2.3 Idea Progettuale.............................................................................................................13 3 Il Portale User Interface .......................................................................................................19 3.1 Sistema Di Monitoraggio Web: Il Portale Di Integrazione...........................................23 3.2 Web Contnet Portlet......................................................................................................26 3.3 Iframe Portlet.................................................................................................................27 4 Tipologie D'autenticazione Esistenti.....................................................................................30 4.1 Username E Password Statiche O Dinamiche...............................................................33 4.2 Dispositivi Di Memorizzazione Di Chiavi O Certificati...............................................34 4.3 Dispositivi Biometrici;..................................................................................................34 4.4 Unificazione Accessi Per Il Remote Management SSO................................................35 4.5 SSO Utilitazzato Sul Portale OpenSSO........................................................................39 4.6 Oltre SSO: Identity Management..................................................................................41 4.7 Pagine Di Login Dei Remote Web Management..........................................................41 4.7.1 CMC-TC (controllo rack)......................................................................................42 4.7.2 SW3COM ( SWITCHES )....................................................................................45 4.7.3 IMPI( Service Nodes)............................................................................................48 4.7.4 E4 ( storage Elements)...........................................................................................51 4.7.5 ASUS ( storage elements)......................................................................................55 4.7.6 Drac (worker nodes solo dell)...............................................................................58 4.7.7 Centron ( monitoraggio e configurazione privata ) ...........................................64 5 Realizzazione ed Implementazione.......................................................................................66 5.1 Analisi............................................................................................................................66 5.1.1 Requisiti funzionali................................................................................................66 5.1.2 Requisiti non funzionali.........................................................................................66 5.1.3 Di dominio.............................................................................................................66 5.2 Analisi Dei Rischi..........................................................................................................67 5.3 Diagramma Dei Casi D'uso...........................................................................................68 5.4 Tabelle Di Cockburn......................................................................................................69 5.5 Diagramma Di Navigazione..........................................................................................71 5.6 Progettazione & Implementazione................................................................................72 5.6.1 Linguaggi utilizzati................................................................................................72 5.6.2 Sviluppo.................................................................................................................73 5.6.2.1 CMC-TC........................................................................................................74 5.6.2.2 IMPI...............................................................................................................75 5.6.2.3 ASUS..............................................................................................................77 5.6.2.4 E4...................................................................................................................77 5.6.2.5 CENTRON.....................................................................................................77 5.6.2.6 DRAC (solo dell)...........................................................................................79 5.6.2.7 SW3COM......................................................................................................80 5.6.2.8 Pagina SSO Login..........................................................................................82 5.6.2.9 Pagina di selezione servizio...........................................................................84 5.6.3 Integrazione Liferay..............................................................................................91 6 Conclusioni...........................................................................................................................92 7 Appendici .............................................................................................................................93 7.1 Glossario .......................................................................................................................93 7.2 Codice ...........................................................................................................................97 7.3 Codice Pagina Asus.....................................................................................................126 7.4 Codice Pagina E4.......................................................................................................215 8 Sitografia & Bibliografia....................................................................................................227 1 Introduzione I sistemi informatici sono sempre più presenti negli ambienti domestici e lavorativi e diventano sempre più potenti e ricchi di funzioni. L'uso di questi sistemi permettono all'utente, ovunque questi si trovi, di gestire le proprie informazioni in qualsiasi momento. Tale vantaggi sono sfruttati in particolare da chi ha un bisogno costante di poter gestire e monitorare tali informazioni non appena se ne presenta la necessità. In particolare i data center utilizzano dei software per il monitoraggio per tenere sempre sotto osservazione il funzionamento della propria infrastruttura di rete e dei servizi che offrono. È molto importante che i servizi offerti del data center girino costantemente ed interrottamente e quindi la problematica principale e che tali servizi si possano interrompere sia per guasti hardware sia per problemi software. È necessario quindi utilizzare dei corretti sistemi che garantiscano la sicurezza e che rilevino per tempo un problema hardware, per quanto ciò sia possibile. La sicurezza è garantita attraverso richiesta di autorizzazioni e utilizzo di certificati digitali sui servizi. Il fatto che i servizi da monitorare siano in numero elevato ha portato a un numero elevato di richieste di autorizzazione, quindi l'utente era nella condizione di dover ricordare le proprie credenziali di autorizzazione per ogni servizio dato che non obbligatoriamente le stesse. Il lavoro svolto sul sistema ha portato ad un'analisi per la risoluzione di questo problema, quindi ad uno studio delle varie tipologie di autenticazione, della considerazione dei vantaggi e degli svantaggi e del peso che questi aveva sul data center atals e S.Co.P.E. Quindi si è arrivato ad applicare la tecnica SSO (Single Sign-On) per poter poter accedere a una qualsiasi risorsa della rete autenticandosi solo una volta, quindi Sergnese Nicola 566/2002 Pagina 1 di 228 all'integrazione di tale metodologia SSO a tutti quei servizi che ancora ne erano sprovvisti. Infine è stata creata un'interfaccia comune che raggruppi tutti i vari servizi agevolando quindi l'amministratore nel suo lavoro di monitoraggio e gestione degli stessi. Sergnese Nicola 566/2002 Pagina 2 di 228 2 Come nasce la necessità del monitoraggio per i Data Center Viviamo in quella che si è soliti definire la civiltà dell'informazione e il computer è il mezzo che rende possibile la counicazione. Non c'è attività pubblica o privata nella quale non ci sia, l'uso, o in progetto l'utilizzo, di macchine consone a renderla più sicura e spedita. Non sono solo i calcoli lunghi e complessi che vengono affidati al computer, ma ogni tipo di operazione che implichi la registrazione di dati e la ricerca. Così, mentre aziende come le banche e gli uffici amministrativi, piccoli o grandi, trovano nei computer uno strumento eccellente, per l'esattezza e la rapidità dei loro conteggi, le aziende che hanno altri scopi, trovano nel computer la disponibilità dei dati utili che vi sono stati registrati e che possono essere a ogni momento utilizzati per decisioni, orientamenti o controlli. Il computer è non solo una memoria perfetta di informazioni opportune, ma anche un mezzo per rilevare somiglianze, analogie e rapporti di qualsiasi genere fra gli elementi nuovi e apparentemente estranei che l'esperienza offre, e quelli di cui esso contiene la registrazione. Può servire cosi ad avviare ricerche o addirittura costruire sintesi tra elementi nuovi di scoperte o realizzare teorie per nuove scoperte. È utilissimo quindi in tutti i campi della scienza, nei quali può mettere in luce nuovi rapporti tra avvenimenti diversi. Una idea delle potenzialità dei computer si ha con l'interconnessione in rete dei computer Internet è la parola "magica" che apre possibilità impensabili fino a pochi anni fa, consultare testi, visitare musei, lavorare, concludere affari, tenere conferenze, acquistare beni, servizi, monitorare e gestire apparecchi, tutto questo oggi è possibile farlo "on line", stando a casa propria e comunicando in pratica con il mondo intero. Con la ristrutturazione dell'organizzazione del lavoro, di un ufficio, delle attività delle aziende private, delle attività di uffici amministrativi, delle attività ministeriali, delle attività bancarie, delle attività scolastiche, dei progetti universitari e non, basata nuovi Sergnese Nicola 566/2002 Pagina 3 di 228 sistemi computerizzati tutte le operazioni vengono svolte tramite questi. Con l'aumento della complessità delle reti, della complessità dei software e l'accrescere del numero di macchine e apparati collegati, diventa sempre più complicato non commettere errori nel scrivere software inoltre anche i computer sono soggetti ad errori, possono dipendere da un fattore umano, o dal fatto che il software sia obsoleto, o anche da guasti a livello hardware, come ad esempio la rottura dell'alimentatore o del hard-disk. La diffusione di tali apparecchiature, in un qualsiasi ambito, da quello domestico a quello lavorativo, unito alla complessità di gestione, ha portato alla formazione di persone esperte e specializzate nella gestione, nel controllo e nella riparazione di tali oggetti. Queste persone, anche solo per controllare, prima dovevano recarsi dove materialmente c'era il problema, oggi con l'avvento delle nuove tecnologie informatiche e dei nuovi programmi possono gestire tutto, anche, in mobilità. È ovvio che se il guasto è hardware devono recarsi alla sorgente per aggiustarlo, ma il controllo sarà fatto in remoto cioè dalla propria postazione di lavoro(chiamata anche workstation), ciò e possibile grazie a dei software di remote management( di gestione remota). Più dettagliatamente queste persone che gestiscono, controllano e per prevengono il verificarsi di guasti, che alcune volte portano alla perdita di molto lavoro nonché ritardo nel finire il progetto di lavoro, sono chiamati amministratori di sistema. Le esigenze di remote management e l'integrazione di software di remote management sul portale User Interface del tier-2, nello specifico esigenze di remote management del Data Center Atlas per tier-2 nonchè il suo sviluppo e l'implementazione saranno oggetto del mia tesi. Sergnese Nicola 566/2002 Pagina 4 di 228 2.1 Le Esigenze Del Remote Management Di Un Data Center Una delle caratteristiche più evidenti della maggior parte dei moderni Data Center è che sono in continuo aggiornamento. Si assiste col passare degli anni, infatti, alla introduzione di nuovi apparati o soluzioni software, anche differenti tra loro, al fine di soddisfare la nascita delle nuove esigenze. Si osserva di frequente come i tradizionali sistemi sinora usati per il monitoraggio dei luoghi e degli apparati dei Data Center, non siano adatti a dare un quadro completo e tempestivo della condizione dell'intero centro, ma solo dei singoli componenti o dei sistemi facenti parte della stessa soluzione informatica. La capacità di disporre un quadro completo ed immediato della condizione dell'intero centro consentirebbe di intervenire in maniera tempestiva e significativa in caso di anomalie o indisponibilità delle risorse facente parte del centro, prevenendo in alcuni casi la stessa indisponibilità. Il maggior parte delle volte grosse aziende ed enti pubblici, tra cui le università, dispongono di diversi sistemi di monitoraggio, uno per ogni tipo di apparato e servizio che è integrato nella rete, e ciò comporta uno spezzettamento dei report dello status1 di tutti gli apparati e servizi, con la conseguenza che è quasi impossibile monitorare in maniera complessiva il funzionamento dell'intera rete del data center. Spesso accade che l'addetto o l'amministratore del sistema rilevi delle irregolarità, guasti o disservizi solo nel momento della comunicazione da parte di utenti, dipendenti,collaboratori, etc. determinando enormi disagi e considerevoli rallentamenti nel conseguimento del lavoro. Inoltre una soluzione del genere costringe l'utente a dover navigare tra diverse servizi durante l'esame della rete e la ricerca delle cause di un problema su di essa. Un altra considerazione da fare, sempre per quanto riguarda il monitoraggio dei Data Center, è che attualmente in circolazione ci sono moltissimi sistemi commerciali in grado di effettuare il monitoraggio delle apparecchiature, ma non sempre sono in grado di soddisfare le esigenze di un intero gruppo di lavoro che frequentemente ha bisogno di un vero e proprio sistema personalizzato. 1 stato di salute Sergnese Nicola 566/2002 Pagina 5 di 228 Data la natura commerciale di tali software, questi non sono molto configurabili e non sono facilmente estendibili; ciò ne limita l'utilizzo ai soli sistemi già testati o che rispecchiano le specifiche richieste dal produttore. Inoltre spesso presentano dei costi elevati visto che le operazioni di installazione, manutenzione e gestione del programma devono essere effettuate dagli addetti delle case produttrici. L'obiettivo di un sistema di monitoraggio valido è verificare che determinati servizi di una rete (ad es. stato della rete) siano sempre operativi in un'azienda. Un sito web che non è raggiungibile, anche per un breve lasso di tempo, può provocare danni anche economici per un’azienda. Quindi tutti i servizi che sono gestiti su internet, devono essere frequentemente monitorati. Un sistema di monitoraggio deve notificare tempestivamente i problemi riscontrati, in modo tale da poter prendere le opportune decisioni in base alla natura del problema. Più precisamente a noi interessa il controllo remoto del monitoraggio di un Data Center. Specifichiamo meglio cosa sia un data center, per capire più dettagliatamente le sue esigenze di monitoraggio. Nella seguente figura è mostrato come è fatto internamente il Data Center S.Co.P.E-Atlas Cos'è un Data Center? Sergnese Nicola 566/2002 Pagina 6 di 228 E' un posto costruito appositamente per contenere e mantenere i sistemi di elaborazione, gli apparati di storage (immagazzinamento chiamati storage elements) e di comunicazione (switches, hub, worker nodes, service nodes), tutti questi apparanti vengono disposti in contenitori (containers, utilizzati anche all'interno di data center di modeste dimensioni. Uno dei primi a usare questa soluzione è stato Google, seguito da un colosso come Microsoft, e ad oggi sembra destinata a divenire una delle soluzioni "standard" per il mondo dei data center, soprattutto quando parliamo di cloud computing. I containers sono ambienti che consentono di "aggiungere" potenza al data center un poco alla volta, con ambienti ad alta densità che possono essere gestiti abbastanza semplicemente per i manager di data centers), in ogni contenitore è messo un apparecchio che ne controlla lo stato . Il ruolo di un Data Center è quello di fornire servizi di alimentazione, di storage dei dati, di sicurezza, e non meno importante degli altri, condizioni ambientali ottimali: • Alimentazione:, deve fornire ad un'alimentazione corretta dal punto di vista elettrico oltre a permettere il funzionamento continuo degli apparati con gruppi di continuità. • Storage: deve fornire a mantenere dati di backup in caso di guasti di alcuni apparati di storage. • Sicurezza: deve fornire a non permettere attacchi di agenti esterni al sistema. • Condizioni ambientali: deve garantire le condizioni più idonee di umidità e temperatura, affinché la piattaforma possa funzionare al meglio. Infatti, tutti gli apparati elettronici producono calore, e se non adeguatamente raffreddati, riducono la propria funzionalità. Quindi un Data Center ha bisogno di affidabilità(basso livello di guasti), di sistemi di monitoraggio continuo ( il che comporta monitoraggio dello stato, degli alimentatori, dei gruppi di continuità, degli apparati di storage anche chiamati storage elements , di Sergnese Nicola 566/2002 Pagina 7 di 228 tutti gli apparati di comunicazione, switches, hub, worker nodes, service nodes), che l'accesso fisico e virtuale sia sorvegliato (il che comporta sistemi d'accesso per ogni apparato), ed infine un sistema che controlla le condizioni climatiche degli apparati e sistemi di rilevamento di incendi. Un Data Center ha anche bisogno di efficienza della rete (prestazioni elevate, affidabilità, stabilita, alta densità), gestibilità (facilità e velocità d'installazione nuovi apparecchi), flessibilità (facilità e velocità negli spostamenti e modifiche), adattabilità (adattamento alle nuove tecnologie e rapidità nel reperimento dei componenti standard). Come visto ogni monitoraggio ha bisogno di un accesso differente e per Data Center di medie-grandi dimensioni ciò comporterebbe grandi difficoltà nella gestione e nel monitoraggio che potrebbero ripercuotersi gravemente sull'efficienza della rete e sulla gestibilità, quindi molte aziende richiedono la centralizzazione e la gestione remota dei servizi di monitoraggio. 2.2 Le Esigenze Specifiche Del Data Center Atlas Nello specifico il nostro data center riguarda il modello di calcolo di Atlas. Il modello di calcolo di ATLAS presenta un alto grado di decentramento ed ha molta fiducia sulle risorse esterne al CERN e sulla loro condivisione. Pur essendo basato principalmente sul paradigma Grid, il modello mantiene ruoli ben specifici ai diversi elementi che compongono l’infrastruttura di calcolo, secondo il modello gerarchico a livelli sviluppato nell’ambito del progetto MONARC (Model Of Networked Analysis At Regional Centres). Ai vari livelli, dei centri, sono assegnati compiti primari e compiti ausiliari, da svolgere qualora i centri addetti siano temporaneamente impossibilitati. Accanto alla struttura primaria (gerarchica), esistono strutture orizzontali che legano Sergnese Nicola 566/2002 Pagina 8 di 228 tra di loro centri dello stesso livello, con funzioni sia complementari che sussidiarie. Il modello fissa essenzialmente la tipologia e la qualità delle risorse e dei servizi che le facility ai vari livelli devono fornire: centri dello stesso rango possono differire in dimensione (compatibilmente con gli impegni contrattati con la Collaborazione). Di seguito sono spiegati i ruoli dei vari tier: 1. Il Tier0 è responsabile dell’archiviazione e della distribuzione ai Tier1 (e Tier2) dei dati RAW. Ricostruisce gli eventi (utilizzando le costanti di calibrazione calcolate) e produce i dataset derivati (ESD1, AOD2 e TAG3 “primari”). Distribuisce i dataset derivati ai Tier1. In caso di problemi di processamento o trasmissione, memorizza i dati in un disk buffer che corrisponde a ~ 5 giorni di presa dati. 2. Il modello prevede circa 10 Tier1. Ogni Tier1 tiene in archivio 1/10 dei RAW4 data e ne garantisce l’accesso a lungo termine. Ogni Tier1 tiene copia di 1/5 degli ESD e di tutti gli AOD e TAG (la versione più recente su disco, le precedenti eventualmente su mass storage a più lento accesso). I Tier1 ospitano e rendono velocemente accessibili i campioni di eventi simulati prodotti nei Tier2 che a loro fanno riferimento. I Tier1 devono garantire la capacità di calcolo necessaria a riprocessare ed analizzare tutti i dati ivi residenti (Grid!). Le risorse dichiarate devono essere disponibili a tutta la collaborazione (ancora Grid!). Il livello dei servizi, in termini di affidabilità e tempi di risposta, deve essere elevato; non dovrebbero verificarsi interruzioni superiori alle 12 ore e, in caso di periodi più lunghi, è previsto che un altro dato Tier1 fornisca almeno accesso agli stessi dati. 1 2 3 4 Event Summary Data: l’output completo della ricostruzione in formato POOL ROOT; sufficiente per quasi ogni applicazione eccetto che per calibrazioni e sviluppo algoritmi di ricostruzione Analysis Object Data: rappresentazione dell’evento ridotta, derivata dagli ESD, conveniente per l’analisi, in formato POOL ROOT; contiene gli oggetti fisici e altri elementi di interesse Tag Data :informazioni essenziali sugli eventi per permettere un’efficiente identificazione e selezione degli eventi di interesse per una data analisi; per facilitarne ed ottimizzarne l’accesso sono memorizzati in un database relazionale Raw Data: eventi in formato “ByteStream” prodotti dalla catena di TDAQ; in genere costruiti dagli Event Builders e trasmessi in output dall’Event Filter l’ultimo stadio degli High Level Trigger Sergnese Nicola 566/2002 Pagina 9 di 228 3. I Tier2 assumono molti ruoli e funzioni, in particolare ruoli e funzioni per le calibrazioni, la simulazione e l’analisi secondo gli interessi e le attività delle comunità locali e in accordo con le loro caratteristiche (risorse, connessioni di rete, affidabilità). La loro dimensione e il tipo di risorse può variare sensibilmente a seconda delle attività e della dimensione dei gruppi di fisica che vi fanno riferimento. Un Tier2 ospiterà tipicamente 1/3 degli AOD correnti e tutti i TAG. Ospiterà anche i DPD1 di interesse locale e campioni di RAW data e ESD per analisi e sviluppo algoritmi. I Tier2 forniscono tutta la capacità di simulazione necessaria alla collaborazione; a meno che un Tier2 non riesca a garantirne esso stesso l’accesso in modo veloce e affidabile, i dati simulati saranno migrati al Tier1 di riferimento (si ipotizzano circa 4 Tier2 per ogni Tier1). Alcuni centri, a seguito del coinvolgimento della comunità locale in un rivelatore, potranno avere un ruolo rilevante nelle procedure di calibrazione e allineamento. 4. Il ruolo dei Tier3 è meno definito di quello dei centri di rango superiore, comunque nel modello attuale essi assumono una importanza rilevante nella simulazione e l’analisi degli utenti singoli. La loro dimensione e il tipo di risorse può variare sensibilmente a seconda delle attività e del numero degli utenti che vi fanno riferimento. Contengono DPD e campioni di AOD e ESD per analisi specifiche e sviluppo algoritmi. Il controllo delle risorse (allocazione, priorità, condivisione, …) è completamente sotto controllo locale. I Tier3 costituiscono un importante buffer di risorse per fronteggiare tutte le inefficienze o gli imprevisti non esplicitamente considerati nel modello di calcolo. Più precisamente il nostro data center si riguarda il tier2 di questo modello. Quindi 1 Derived Physics Data :rappresentazione tipo n-tupla dei dati dell’evento per l’analisi e la istogrammazione dell’utente finale; inclusa nel data model per permettere un’analisi immediata e la visualizzazione dei risultati con i tanti tool standard di analisi PAW, ROOT, JAS, … Sergnese Nicola 566/2002 Pagina 10 di 228 approfondiamo un pò specificando meglio quale sia il loro ruolo. In generale i Tier2 forniscono capacità di analisi per i gruppi e sottogruppi di fisica, vale a dire un’infrastruttura di calcolo adeguata a sostenere un’attività multiutente e tendenzialmente caotica. Oltre alla potenza di calcolo il Tier2 deve permettere lo storage di circa un terzo dell’ultima versione degli AOD e dell’intero campione dei TAG nella versione piu recente. Dovrà inoltre ospitare tutti i DPD prodotti dalla comunità locale ed eventualmente campioni di RAW e ESD per sviluppo e messa a punto di algoritmi di ricostruzione o criteri di selezione a vari livelli. Inoltre essi devono farsi carico di tutta la capacità di simulazione necessaria all’esperimento, anche se i dati risultanti verranno generalmente trasferiti nei Tier1 a cui essi fanno capo e ivi resi disponibili permanentemente a tutta la Collaborazione (in effetti, il livello di servizio richiesto ai Tier2 in termini di accessibilità e tempi di risposta è inferiore, a meno che non si contrattino con l’esperimento ruoli specifici con relativi livelli di servizio). Alcuni Tier2 possono assumere ruoli significativi nelle procedure di calibrazione dei sottosistemi, in accordo con il grado di coinvolgimento e l’interesse dei gruppi locali. E’ fondamentale per assolvere tutti questi compiti che i Tier2 siano pienamente accessibili attraverso gli strumenti Grid standard. Da questo quindi ricaviamo le risorse necessarie ai Tier2 che visualizziamo nella seguente immagine: Sergnese Nicola 566/2002 Pagina 11 di 228 Figura 2: risorse necessarie Tier2 Così come in un data center normale anche noi abbiamo bisogno, oltre le caratteristiche sopra descritte, dei diversi monitoraggi nonché, dell'efficienza della rete (prestazioni elevate, affidabilità, stabilita, alta densità), gestibilità (facilità e velocità d'installazione nuovi apparecchi), flessibilità (facilità e velocità negli spostamenti e modifiche), adattabilità (adattamento alle nuove tecnologie e rapidità nel reperimento dei componenti standard) sicurezza. Sergnese Nicola 566/2002 Pagina 12 di 228 2.3 Idea Progettuale Per quanto detto sinora l'obiettivo di questa tesi è quello di trovare una soluzione per migliorare il monitoraggio e la gestione degli apparati della rete, centralizzando e rendendo effettivo il remote web management, non adoperando software commerciali tutto ciò dovrà essere integrato con il portale già esistente. Quindi visto che sul portale già è integrato OpenSSO. Mi è stato proposto di fare in modo che l'utente, con la giusta autorizzazione, acceda con semplicità e velocemente al web management senza doversi autenticare continuamente per ogni servizio di management richiesto in questo caso è stato pensato di bypassare la pagina di login adoperando le portlets iframe, web content dispalys e modificando codice sorgente delle pagine di login dei diversi servizi di management. Come visto per mantenere il corretto funzionamento del data center c'è bisogno che qualcuno monitorizzi e gestisca i diversi apparati che ne fanno parte, questa persona è l'amministratore. L'amministratore tramite programmi di web management monitorizza e gestisce i diversi apparati. Questi programmi hanno bisogno di un'autenticazione il che implica che la persona (persone nel caso ne siano di più) si autentichi per ogni web remote management, ma tale ripetitiva azione compromette in negativo alcune caratteristiche da noi richieste come efficienza della rete, gestibilità e sicurezza. Il sistema esistente, da noi analizzato, utilizzava già una metodologia di autenticazione Single Sign-On sul portale web (http://tier2.na.infn.it), permettendo l'utilizzo delle diverse risorse autenticandosi solo una volta al portale. Il portale però non aveva integrato tutte le risorse di cui il data center necessitava. In particolare alcuni servizi come “gridsu” e “cacti” già disponevano del sistema SSO mentre su altri tale sistema non era integrato, come i servizi di web management dei “CMC”, “worker nodes”, “switches”, “service nodes”, “storage elements” ne per quanto riguarda la parte di atlas ne per quanto riguarda lo S.Co.P.E. Sergnese Nicola 566/2002 Pagina 13 di 228 Quindi l'idea è quella che una volta che l'amministratore si è autenticato possa avere una visuale di tutti i servizi di web management principali, che sono: CMC (controllo rack e monitoraggio ambientale), worker nodes, Storage elements, switches, e i service nodes. Tali servizi saranno distinti per categoria sia per quanto riguarda il progetto atlas sia per quanto riguarda il progetto S.Co.P.E. Si permetterà, comunque, la visualizzazione dell'elenco completo dei servizi, su richiesta. In questo modo introduciamo l'utilizzo del sistema Single Sign-On su tutti i servizi di web management evitando un ulteriore richiesta di autenticazione, che era necessaria prima del mio lavoro. Specifichiamo un pò meglio l'idea aggiungendo delle figure di come dovrebbe essere svolto il lavoro. Sergnese Nicola 566/2002 Pagina 14 di 228 L'idea è di visualizzare le categorie dei relativi servizi cosi come nella seguente figura. Facendo clic con il pulsante sinistro del mouse su uno dei bottoni ci troveremo nella pagina dove a destra ci sarà la tabella relativa alla categoria del bottone premuto e a sinistra ci sarà l'elenco di tutte risorse web remote management ad esempio facendo clic con il pulsante sinistro del mouse sul bottone CMC sotto la voce “L2: SCoPE Data Center” avremo la pagina della figura successiva Sergnese Nicola 566/2002 Pagina 15 di 228 Facendo clic con il pulsante sinistro del mouse su spoiler si avrà la lista di tutte le risorse principali, e passando su una di queste ultime si aprirà un piccolo elenco con tutte le web remote management per quella risorsa, facendo clic con il pulsante sinistro del mouse su una risorsa web remote management si andrà alla pagina di quest'ultima senza passare per la pagina di autenticazione cosi come nelle due figure successive. Sergnese Nicola 566/2002 Pagina 16 di 228 Apertura spoiler: Sergnese Nicola 566/2002 Pagina 17 di 228 selezione della singola risorsa richiesta Sergnese Nicola 566/2002 Pagina 18 di 228 3 Il Portale User Interface Prima di continuare è necessario per prima cosa specificare il termine portale, compito non così semplice. Il vocabolo "portale" è ormai di uso comune e non solo da parte degli addetti ai lavori, ma quasi certamente non è chiaro cosa si intenda con questo vocabolo. Definire il vocabolo “portale” in termini informatici non è semplice perché in realtà non esiste una definizione univoca. Ripensandoci su, è il vocabolo stesso che contiene in se’ la propria definizione: "un portale è una porta di accesso unica a un insieme di applicazioni, dati e servizi". Per apprendere meglio questa definizione possiamo pensare al concetto di applicazione web. Una applicazione web, nella maggior parte dei casi, nasce con lo scopo di risolvere uno specifico problema e fornisce funzionalità verticali realizzate per raggiungere lo allo scopo. Ogni singola applicazione ha la sua interfaccia, le sue funzioni e in alcuni casi la sua funzione di autenticazione. All’interno di una organizzazione, soprattutto se di grandi dimensioni quali ad esempio una grande azienda o un grande ente pubblico, è possibile avere tante di queste applicazioni a disposizione degli utenti, interni o esterni che siano. Ma come fornire un unico punto di accesso per gli utenti a tutto il parco applicativo mediante una interfaccia unica, coerente e organizzata? La soluzione è ciò di cui stiamo parlando, il portale. Un portale è stato progettato per essere un singolo ambiente basato sul web dal quale tutte le applicazioni di un utente possono essere eseguite, e queste applicazioni sono integrate tra loro in modo coerente e sistematico. La definizione esprime proprio il concetto che stavamo esponendo, inquadrando un portale, dal punto di vista dell’aggregazione, in un’unica interfaccia di molteplici applicazioni, mettendo in evidenza una funzioni principali di un portale: quella di strumento di integrazione. Ma un portale non è solo questo. Dal punto di vista funzionale possiamo dire che un portale copre le esigenze in tre grandi aree: Sergnese Nicola 566/2002 Pagina 19 di 228 aggregazione di applicazioni, gestione di contenuti, collaborazione. Un portale quindi è molto di più di quanto abbiamo detto fino ad ora e ci fa comprendere come le potenzialità di uno strumento simile sono enormi purche’ se ne comprenda a fondo la differenza rispetto a una normale applicazione web e si utilizzino piattaforme che forniscono tutti gli strumenti necessari a realizzare le funzionalità nelle aree elencate. Portale come aggregatore di applicazioni Dal punto di vista più strettamente applicativo, il ruolo di integrazione che può svolgere un portale è quello più interessante e promettente. Il problema delle eterogeneità di applicazioni è da sempre presente nelle organizzazioni che quasi sempre, tranne che in pochi casi fortunati, si trovano al proprio interno un patrimonio informativo fatto di applicazioni diversificate per funzioni, tecnologie realizzative e interfacce. Senza entrare nei dettagli dell’argomento, indipendentemente dalla soluzione di integrazione scelta tra quelle possibili, un portale può svolgere il ruolo fondamentale dell’integrazione lato interfaccia utente delle sorgenti dati, delle applicazioni o dei servizi con i quali il nostro sistema informativo è costruito. Ciò consentirà all’utente di accedere dalla medesima interfaccia in una modalità integrata coerente e personalizzabile a molteplici sorgenti informative. Questo perché, la pagina di un portale è costruita assemblando tante "mini-applicazioni", che forniscono una vista sui dati, sulle applicazioni verticali e sui servizi del nostro patrimonio informativo. Il tutto ovviamente in modo che l’utente possa disporre delle funzionalità e delle informazioni in modo omogeneo senza dover accedere singolarmente alle diverse sorgenti. Portale come gestore di contenuti Fino ad ora abbiamo concentrato la nostra attenzione sulla integrazione di applicazioni. Un portale è però anche un gestore di contenuti. Tutti noi usufriamo ogni giorno sul web di contenuti più disparati sia che navighiamo nel portale della nostra Sergnese Nicola 566/2002 Pagina 20 di 228 squadra del cuore sia che leggiamo un quotidiano su internet. Documenti, animazioni, foto, video, immagini sono il pane quotidiano di ogni utilizzatore di internet. Mentre prima ci siamo soffermati sul portale guardandolo dal punto di vista applicativo, è forse molto più evidente il ruolo del portale come strumento informativo in senso stretto. Se il primo aspetto è più rivolto a chi sviluppa applicazioni e sistemi informativi e a chi usufruisce di funzionalità applicative via web, (ad esempio un dipendente di una organizzazione che utilizza il portale aziendale per la registrazione dei dati di una trasferta o una persona che dispone un bonifico sul portale della propria banca), il secondo è comprensibile a qualsiasi navigatore internet. Basti pensare alle pagine web nelle quali troviamo un articolo su un argomento di nostro interesse corredato di foto, la versione PDF dell’articolo da scaricare e magari un video sull’argomento reperito da YouTube; una singola pagina in cui tutti questi contenuti sono pubblicati in forma aggregata e organizzati per un uso omogeneo ed efficace. Anche in questo caso sono le funzionalità del portale che consentono un simile risultato. Oltre all’integrazione ed all’aggregazione di sorgenti informative diverse, entra in gioco anche l’esigenza di gestire la molteplicità dei contenuti da pubblicare e quindi il bisogno di strumenti flessibili ed efficaci per la gestione degli stessi. Le funzionalità di gestione dei contenuti vanno sotto il nome di CMS, Content Management System. Una piattaforma di gestione di portali non è semplicemente un CMS ma generalmente fornisce le funzionalità tipiche dei CMS, quali la compilazione dei contenuti secondo template personalizzabili, la pubblicazione di contenuti, la definizione di workflow per il processo di compilazione, la gestione di categorie e il tagging dei contenuti, la gestione multilingua, l’ottimizzazione per i motori di ricerca e così via. Una piattaforma di sviluppo di portali che si rispetti deve consentire quindi la gestione e la pubblicazione di contenuti testuali e multimediali. Se uniamo questo alla possibilità di aggregare contenuti di tipo applicativo vediamo come le potenzialità a Sergnese Nicola 566/2002 Pagina 21 di 228 nostra disposizione diventano sempre più vaste ed interessanti. Portale come strumento di collaborazione Da diverso tempo sono diventati argomento di discussione il Web 2.0 e le nuove modalità di interazione e di utilizzo delle tecnologie web. Quello che è certo è che internet tra le altre cose è diventato sempre più uno strumento "sociale" che consente a comunità di utenti più disparate di comunicare, collaborare e scambiare informazioni. Il web è sempre più interattivo e consente a ciascuno di creare e condividere i propri spazi e i propri contenuti Il portale quindi può essere utilizzato come uno strumento per la collaborazione di team di lavoro in una intranet aziendale piuttosto che per la creazione di comunità di utenti su internet, quindi è uno strumento abilitante al social networking, fenomeno di grande diffusione al giorno d’oggi. Integrazione di applicazioni, gestione di contenuti e collaborazione tutti integrati in un’unica piattaforma fanno di un portale uno strumento dalle potenzialità enormi che unisce in sè mondi diversi e che fornisce agli utenti ampie possibilità. Abbiamo introdotto il concetto di portale e abbiamo visto cosa intendiamo con questo termine. Come abbiamo visto i campi di applicazione sono molto vasti e le potenzialità enormi. Una piattaforma per la realizzazione di portali di alto livello abilita con un unico strumento l'aggregazione di applicazioni, la possibilità di pubblicare contenuti e le funzionalità per la collaborazione tra gli utenti. È evidente che tutte queste possibilità insieme aprono scenari infiniti al progettista web, molto più vasti di quelli tipici di una applicazione web verticale e quindi anche più complessi da affrontare e da indirizzare correttamente per ottenere risultati efficaci e di reale utilità per gli utenti. La definizione è stata data senza entrare nel dettaglio di tecnologie specifiche, proprio per dare un senso di generalità a quanto discusso. Ma diamo anche una definizione, non molto dettagliata perché sarà approfondita in seguito, del portale liferay, che in fondo è quello che viene utilizzato per il nostro portale Liferay Portal è un Sergnese Nicola 566/2002 Pagina 22 di 228 portalizzatore di classe Enterprise Open Source sviluppato in Java (JEE) in grado di interoperare con tutti i principali Application Servers JEE presenti sul mercato e con tutti i principali databases relazionali disponibili.. 3.1 Sistema Di Monitoraggio Web: il Portale Di Integrazione Liferay è un portale open source Java-based ricco di funzionalità che consente la realizzazione di portali web in modo molto semplice e veloce. Dal punto di vista dell’utilizzatore è un prodotto molto completo in quanto dispone di più di 60 portlet già pronte per l’uso che assolvono a tutti i più comuni compiti di un moderno portale di livello enterprise. Con Liferay è possibile mettere in piedi un portale web in pochissimo tempo senza necessità di scrivere codice, vista la notevole disponibilità di portlet e di temi grafici già pronti per l’uso. Quello che è più interessante dal punto di vista dello sviluppo di funzionalità custom è che Liferay è anche una completa piattaforma di sviluppo, un vero e proprio framework per lo sviluppo di portali in Java. Questa seconda caratteristica , meno evidente ad un utilizzatore finale, lo rende una delle migliori piattaforme di sviluppo di portali e di applicazioni web in genere disponibili oggi nel mondo open source. Ovviamente Liferay Portal è perfettamente conforme a quanto detto prima rispetto agli ambiti di applicazioni di un portale web; è un gestore di contenuti, un aggregatore di applicazioni e un potente strumento di collaborazione. È bene sottolineare da subito che Liferay non è un semplice CMS ma, come detto, è una piattaforma software che tra le molteplici funzionalità ha anche tutte le funzionalità tipiche di un CMS. Per cui, in base a ciò, non ha senso dal punto di vista funzionale e tecnico paragonare Liferay con prodotti CMS che si prefiggono il solo scopo della gestione dei contenuti. Il campo di applicazione della piattaforma Liferay va ben oltre quello della gestione dei contenuti che non è neanche la sua funzionalità Sergnese Nicola 566/2002 Pagina 23 di 228 più importante; anzi se si desidera una gestione dei contenuti più completa e sofisticata Liferay può essere integrato con piattaforme di gestione dei contenuti più potenti e complesse quali ad esempio Alfresco. Liferay è quindi una piattaforma di sviluppo, integrazione e collaborazione realizzata secondo i principi della architettura a servizi. Dispone di tutte le funzionalità necessarie alla realizzazione di un portale web quali web publishing, content management, enterprise collaboration e social networking, il tutto costruito su una piattaforma open source completamente realizzata in accordo a standard aperti e allineata alle ultime tecnologie. Di seguito sono elencate a titolo esemplificativo alcune delle caratteristiche principali di Liferay Portal. Tools pronti per l’uso È distribuito con numerose funzionalità già pronte per l’uso che coprono la gran parte delle esigenze comunemente previste per un moderno portale web di classe enterprise. Funzionalità di content management, social networking, web publishing per un totale di più di 60 componenti applicative pronte per l’uso out-of-the-box. Gestione di utenti e ruoli Dispone di una gestione di utenti, gruppi, ruoli e permessi molto potente e flessibile che arriva fino alla gestione dei permessi di un singolo contenuto o di un singolo elemento del portale. Gestione single sign-on È integrato con diversi sistemi di gestione delle identità quali OpenID, OpenSSO, CAS ed abilita la fruizione in modalità single sign-on a sistemi eterogenei. Supporto multilingua È localizzato in più di venti lingue e fornisce tutte le funzionalità per la localizzazione di ogni elemento del portale nella lingua desiderata. Sergnese Nicola 566/2002 Pagina 24 di 228 Gestione communities Consente la gestione di comunità nell’ambito di un medesimo portale per una gestione flessibile ed organizzata di comunità di utenti. SOA Framework L’architettura di riferimento è l’architettura orientata a servizi. Liferay è quindi una vera e propria piattaforma di sviluppo e integrazione strutturata secondo un paradigma architetturale flessibile ed efficiente. Gestione dei contenuti Le funzionalità di CMS di Liferay consentono la gestione aggregata e unificata di tutti i contenuti: articoli, documenti, immagini. È insita nel prodotto la gestione delle versioni di ogni singolo contenuto e dei workflow di redazione, approvazione e pubblicazione degli stessi tali da soddisfare le più disparate esigenze organizzative redazionali. Liferay dispone di funzionalità di gestione di tag, di tassonomie, di ricerca contenuti, di indicizzazione, di ottimizzazione per il posizionamento nei motori di ricerca (SEO): tutto ciò che serve per la gestione efficace di ogni tipo di contenuto. Collaborazione Liferay dispone di tutte le funzionalità di collaborazione e di social networking. Sono già fornite pronte per l’uso funzionalità quali blog, wiki, forum, chat, RSS, calendari condivisi, sondaggi che fanno del portale un potente strumento di collaborazione in ottica Web 2.0. Riassumendo, Liferay Portal è stato scelto perchè sono state valutate più che soddisfacenti le seguenti caratteristiche: 1. open source; 2. completamente gratuita, sia per la componente di gestione del portale che per i tool di sviluppo; Sergnese Nicola 566/2002 Pagina 25 di 228 3. allo stato dell’arte della tecnologia; 4. costantemente evoluta a costo zero a seguito delle innovazioni tecnologiche; 5. di livello enterprise, quindi progettata per le esigenze di organizzazioni complesse; 6. fondata su standard aperti, quindi senza vincoli tecnologici legati a standard proprietari imposti da un singolo vendor; 7. ben documentata e supportata da una vasta comunità, il che garantisce di non essere vincolati al know-how proprietario di un singolo fornitore; 8. personalizzabile in tutte le sue parti. 3.2 Web Contnet Portlet Questa portlet permette di pubblicare pubblicare qualsiasi contenuto web in una pagina del portale. Queste portlet comprendono la maggior parte del contenuto di Liferay.com e altri siti Liferay-driven, e possono essere organizzati su una pagina grazie alla caratteristica drag & drop di Liferay. É stata una delle portlets più utilizzate nello sviluppo del mio tirocinio l'ho utilizzata per lo sviluppo delle tabelle e dello spoiler. Di seguito ci sono riportata la portlet richiesta. Sergnese Nicola 566/2002 Pagina 26 di 228 Nella web content display va inserito il codice della pagina da far visualizzare,bisogna mettere il nome “Autogenerate ID ” salvare e approvare. 3.3 Iframe Portlet La portlet Iframe permette di contenere immagini, un'altra pagina HTML, tabelle, ecc all'interno della pagina corrente. Inoltre l'utente può navigare nella pagina contenuta senza perdere il contesto della pagina del portale. La portlet Iframe utilizza il tag iframe HTML ed è supportato in tutti i principali browser. La portlet iframe si adeguerà alle dimensioni della pagina HTML se la pagina Sergnese Nicola 566/2002 Pagina 27 di 228 è presente nel server stesso. Il browser aggiunge le barre di scorrimento se la pagina contenuta non rientra nella dimensione del iframe. La funzione di base di questa portlet è proprio quella che ci serve cioè contenere remote web sites. Di seguito e riportata la portlet utilizzata. Nel iframe portlet va inserito nel voce source l'indirizzo della pagina che si vuole visualizzare. Inoltre se si vuole, come nel nostro caso, fare in modo di bypassare la pagina di login bisogna utilizzare l'opzione autenticate, poi a seconda di come è richiesto dal server scegliere il tipo di autenticazione, e il metodo. Poi inserire i dati di autenticazione nelle voci ”User Name” e “Password” rispettivamente il nome e la password che sono presenti nella pagina sorgente e poi inserire i relativi valori Sergnese Nicola 566/2002 Pagina 28 di 228 facciamo un esempio: come si vede allora bisogna mettere nel campo name della voce ”User Name” p0404 e il valore nel campo “value”, nel campo name della voce “Password” p0405 e il valore nel rispettivo campo “value”. Poi nel opzione (campo) hidden variables bisogna inserire le eventuali variabili hidden che generalmente, se ci sono, sono alla fine della pagina del codice sorgente. Ancora se si vuole si possono cambiare o aggiungere degli attributi alla pagina HTML cambiando o aggiungendo opzioni nella voce Advanced html attributes. Sergnese Nicola 566/2002 Pagina 29 di 228 4 Tipologie D'autenticazione Esistenti In generale col termine autenticazione si indica un procedimento mediante il quale si prova l'identità di qualcuno allo scopo di consentirne l'accesso a risorse di qualsiasi genere. Esistono molteplici tecniche di autenticazione, che si differenziano sia per procedimento che per efficacia , in funzione di diversi fattori. Molto semplicemente si può dire che una tecnica di autenticazione è efficace quando garantisce con ottima probabilità che l'individuo che ha richiesto l'accesso sia effettivamente quello che ne ha il diritto. E' ovvio che alcune informazioni, come il pin della propria carta bancomat, siano vitali per l'utente e quindi da proteggere ad ogni costo. Il fatto che queste viaggiano su un canale non sicuro e che siano potenzialmente intercettabile da chiunque, comporta per l'utente una necessità di nasconderle a soggetti terzi, tenendo allo stesso tempo presente il bisogno di potervi accedere in qualsiasi momento. Da questa necessità nascono le tecniche di autenticazione prima dell'accesso alle informazioni e di trasmissione cifrata delle stesse. Probabilmente l'esempio più semplice, presente nella vita reale, è quello relativo a strumenti utilizzati comunemente come il bancomat e la carta di credito. Nel caso di quest'ultima l'unico elemento di autenticazione certo è il possesso della carta, mentre nel caso del bancomat siamo obbligati a ricordare un PIN oltre che a possedere, all'atto dell'utilizzo, la carta magnetica. In entrambi i casi, l'autenticazione da accesso alle risorse finanziarie dislocate su un conto corrente bancario. Nel caso delle tecnologie dell'informazione, l'autenticazione è usata a moltissimi livelli e spesso non ci si rende neanche conto del numero di volte che viene utilizzata. Alcune delle operazioni più comuni che richiedono autenticazione : 1. L'accesso al proprio Personal Computer; Sergnese Nicola 566/2002 Pagina 30 di 228 2. L'accesso alla rete locale della propria azienda;L'accesso alla rete locale della propria azienda; 3. L'accesso alle proprie caselle di posta elettronica o mediante software specifici o mediante applicazioni web. 4. L'accesso a risorse di rete; 5. L'accesso a programmi opportunamente protetti; Purtroppo non sempre viene compresa la necessità di nascondere tali informazioni, e di conseguenza, quanto possa essere importante la sicurezza delle stesse. Per cui accade spesso che le credenziali di autenticazione sono inserite una sola volta, tipicamente alla configurazione iniziale di un programma, quindi il processo di autenticazione viene impostato per essere eseguito automaticamente ogni qualvolta si richiede la funzionalità offerta dal software, velocizzando così accesso al software. Questo è “malcostume” parecchio diffuso, che va a ridurre la sicurezza perché in questo modo, chiunque abbia accesso al nostro Personal Computer potrà accedere a tali risorse senza dover fornire le credenziali di autenticazione. Inoltre le informazioni sono spesso debolmente protette, ad esempio da password facilmente intuibili (come il nome del proprio figlio o la propria data di nascita) e facilmente recuperabili in pochi tentativi. Infine, spesso sono trasmesse in chiaro, come spesso avviene per la posta elettronica. Per cui il fattore sicurezza deve essere prima compreso, poi applicato. Non serve a nulla impostare autenticazioni complicatissime e sicure per il proprio ambiente personale/lavorativo se poi l'utente, per ricordare la propria password (lunghissima e piena di caratteri non alfanumerici) la scirve su un foglietto attaccato al monitor. Per quanto riguarda le tecniche di autenticazione, la complessità di queste dipende essenzialmente da quanto critica è l'identificazione, da quali sono i fattori che la possono limitare, e dal valore delle informazioni cui si garantisce l'accesso dopo l'operazione di autenticazione: maggiore è il valore delle informazioni – o delle risorse in generale – più complessa sarà la tecnica di autenticazione. Sergnese Nicola 566/2002 Pagina 31 di 228 Le tecniche di autenticazione sono comunemente classificate sulla base delle entità alle quali fanno riferimento. Una metodo di autenticazione può infatti far riferimento a: 1. qualcosa di cui si è in possesso, come ad esempio una carta magnetica, un dispositivo di memoria o dispositivi anche più complessi come le smart card basate su processore; 2. qualcosa che si conosce, come ad esempio una password o un PIN; 3. qualcosa che caratterizza la propria persona, come le impronte digitali, l'impronta retinica o quella vocale. I metodi possono essere anche sovrapposti per formare un sistema più forte. Con l'aumentare della complessità della tecnica di autenticazione si fa strada un altro concetto fondamentale, oltre a quello dell'identità: la non ripudiabilità. In altri termini, una tecnica di autenticazione sicura, oltre a garantire l'identità di colui che accede, impedirà che quest'ultimo possa negare di aver avuto accesso alle risorse garantitegli dall'autenticazione. Di conseguenza, la fiducia nella tecnica di autenticazione deve sussistere sia da parte del responsabile del sistema cui ci accede, sia da parte dell'utente stesso. Ci si può immaginare come questo elemento rivesta particolare importanza nel caso di acceso – anche remoto - a reti aziendali, o di enti, a supporto di applicazioni di normale utilizzo dell'attività lavorativa. In altri termini, anche l'utente deve essere conscio dell'efficacia della procedura di autenticazione visto che questa – oltre a garantire la sicurezza dell'ente – può essere uno strumento di verifica dell'accesso al sistema informativo dell'azienda. E qui entra in gioco l'immediata applicazione a sistemi a supporto del telelavoro. D'altra parte, nessun sistema di autenticazione può dirsi realmente efficace se non con la stretta collaborazione dell'utente. E' infatti cura dell'utente il ricordo dell'eventuale password, la conservazione di smart card o di dispositivi di memorizzazione e il non comunicare ad altri gli estremi del proprio sistema di autenticazione. Dal punto di vista pratico, i metodi maggiormente utilizzati per l'autenticazione in ambito informatico si possono Sergnese Nicola 566/2002 Pagina 32 di 228 sintetizzare nei tre seguenti: 1. Username e password statiche o dinamiche; 2. Dispositivi di memorizzazione di chiavi o certificati; 3. Dispositivi biometrici; 4.1 Username e password statiche o dinamiche Password statiche L'utilizzo di username e password statiche, ossia che non vengono modificate in tempo reale durante il processo di autenticazione, è quello più diffuso ed è sostanzialmente il più semplice da implementare. In questo caso l'utente deve ricordare la propria username e la password ad essa associata che, ovviamente, sono anche memorizzate sul sistema di accesso. Tale metodo, se non è associato ad altri meccanismi, può però risultare piuttosto debole in quanto si presta a diversi tipi di attacchi. Attacchi che però possono essere ostacolati e a volte addirittura vanificati utilizzando una password robusta e modificandola periodicamente. C'è anche da sottolineare che, con le opportune precauzioni e concordemente al tracciamento del computer dal quale ci si autentica, il metodo basato su password statiche è sufficiente per un gran numero di casi pratici, a meno di non pretendere la validità legale inoppugnabile per l'intero processo di autenticazione. In quest'ultimo caso può essere necessario ricorrere a sistemi che, pur basandosi su metodi statici, coinvolgano un certificato digitale conforme all'attuale normativa. Password Dinamiche In tale metodo le password sono generate automaticamente mediante sistemi automatici e la generazione avviene soltanto all'occorrenza. Inoltre la validità di tali “password” è estremamente limitata nel tempo. L'utente, spesso, utilizza quasi Sergnese Nicola 566/2002 Pagina 33 di 228 inconsapevolmente sistemi basati su tale metodo – la cui gestione è completamente a carico dei responsabili dei sistemi informativi relativi – e i campi di applicazione sono moltissimi. Si va dai sistemi di pagamento online, per i quali sarebbe troppo lungo e pericoloso utilizzare password non crittografate e intercettabili, allo scambio di informazioni protette, alla trasmissione su canali sicuri. Non è, in senso stretto, un sistema di autenticazione rivolto all'individuo ma può essere utilizzato in congiunzione al sistema delle password statiche per realizzare sistemi estremamente robusti di autenticazione e – unitamente – di trasmissione. 4.2 Dispositivi di memorizzazione di chiavi o certificati In questa categoria rientrano i meccanismi di autenticazione basati su sistemi fisici come le smart card, le carte magnetiche e le chiavi di memoria. Su tali dispositivi è memorizzata una chiave o, meglio, un certificato digitale che garantisce, unitamente a una password statica, l'identificazione del possessore. Il meccanismo è analogo a quello del bancomat ma molto più robusto in quanto il “PIN”, ossia la password statica, può essere modificato dal possessore e, inoltre, può essere associata a un certificato per altri scopi tra cui la crittografia del canale di comunicazione. Si tratta, però, di un sistema comunque più costoso e che richiede il possesso costante di un dispositivo fisico che, in caso di smarrimento, deve essere rigenerato provocando l'interruzione del servizio per un tempo non sempre accettabile. 4.3 Dispositivi biometrici; In questa categoria rientrano i dispositivi di riconoscimento automatico della persona sulla base di alcune caratteristiche fisiche come le impronte digitali, l'impronta retinica Sergnese Nicola 566/2002 Pagina 34 di 228 o quella vocale, etc... Sono nati per garantire, in teoria, il massimo livello di sicurezza nell'autenticazione individuale a partire da caratteristiche singolari della persona fisica. Una volta disponibili in commercio, molti si sono affidati quasi ciecamente a tali sistemi nella convinzione, priva di qualsiasi fondamento, che la determinazione di tali caratteristiche sia univoca come le caratteristiche stesse. Purtroppo i sistemi di riconoscimento sono soggetti ad errori statistici che non possono essere eliminati. Inoltre, come accade per altre cose, le caratteristiche fisiche possono essere imitate in qualche modo e la violazione di un sistema del genere può portare a ripercussioni inimmaginabili, proprio per la fiducia incondizionata che istintivamente si ripone in esso. Ad ogni modo, allo stato attuale, tali sistemi hanno senso solo in situazioni di alta richiesta di sicurezza nell'identificazione della persona fisica “a vista” e sono sempre associati a sistemi ulteriori di controllo e di emergenza. Sono assolutamente da scartare in caso di autenticazione remota, non assistita, e implicano un costo notevole per la loro implementazione. 4.4 Unificazione accessi per il remote management SSO Come visto, l'amministratore di un data center ha bisogno di accedere a diverse risorse per gestire, controllare e manutenere il funzionamento della rete, quindi delle attrezzature. Se ogni risorsa per i motivi di sicurezza richiedesse un'identificazione diversa ciò comporterebbe, da parte dell'amministratore, la memorizzazione di username e password per ogni risorsa, situazione che presenterebbe grosse difficoltà; per semplificare ciò si può ricorrere ad un programma o sistema che faccia ciò in automatico. Uno dei sistemi più utilizzati è il sistema SSO (Single sign-on ) che permette all'utente (amministratore o addetto) di autenticarsi solo una volta e di accedere a tutte le risorse informatiche alle quali è abilitato, evitando così di doversi ri- Sergnese Nicola 566/2002 Pagina 35 di 228 autenticare ad ogni accesso di una differente risorsa. Quindi questo sistema semplifica la gestione dell'autenticazione aumentando la sicurezza e semplificando la gestione degli accessi ai vari servizi. Vi sono tre metodi per creare un sistema SSO: 1. Centralizzato: Metodo destinato principalmente ai servizi dipendenti tutti dalla stessa entità, per esempio all'interno di una azienda. Il principio è di disporre di un database globale e centralizzato di tutti gli utenti e di centralizzare allo stesso modo la politica della sicurezza. 2. Federativo: metodo sviluppato per realizzare la gestione decentralizzata degli utenti: ogni gestore federato mantiene il controllo della propria politica di sicurezza. Con questo metodo differenti gestori ("federati" tra loro) gestiscono dati di uno stesso utente. L'accesso ad uno dei sistemi federati permette automaticamente l'accesso a tutti gli altri sistemi. Es: Un viaggiatore potrebbe essere sia passeggero di un aereo che ospite di un albergo. Se la compagnia aerea e l'albergo usassero un metodo federativo avrebbero un accordo reciproco sull'autenticazione dell'utente. Il viaggiatore potrebbe ad esempio autenticarsi per prenotare il volo e essere autorizzato, in forza di quella sola autenticazione, ad effettuare la prenotazione della camera d'albergo. 3. Cooperativo: metodo che risponde ai bisogni di strutture istituzionali nelle quali gli utenti sono dipendenti da una entità, come ad esempio in università, laboratori di ricerca o amministrazioni. Il metodo cooperativo parte dal principio che ciascun utente dipenda, per ciascun servizio, da uno solo dei gestori cooperanti. In questo modo se si cerca, ad esempio, di accedere alla rete locale, l'autenticazione viene effettuata dal gestore che ha in carico l'utente per l'accesso alla rete. Come per il metodo federativo, in questa maniera ciascun gestore gestisce in modo indipendente la propria politica di sicurezza. Esistono molti SSO gratuiti e commerciali, eccone una lista parziale: Sergnese Nicola 566/2002 Pagina 36 di 228 1. Il JA-SIG Central Authentication Service (CAS) è un servizio single sign-on libero (originariamente sviluppato dall'Università di Yale) che permette alle applicazioni web la possibilità di rinviare tutte le autenticazioni a un server centrale o a più server di fiducia. Numerosi client sono disponibili gratuitamente, inclusi client per Java, Microsoft .Net, PHP, Perl, Apache, uPortal, Liferay e altri. 2. A-Select è il sistema di autenticazione Olandese co-sviluppato da SURFnet (l'olandese NREN). A-Select ora è diventata open source ed è usata dal Governo Olandese per esempio per DigiD, il loro sistema di autenticazione. A-Select permette allo staff e agli studenti di ottenere l'accesso a svariati servizi web attraverso una sola autenticazione on-line. Le istituzioni possono usare A-Select per proteggere le loro applicazioni web in maniera semplice. Possono usare differenti strumenti di autenticazione che vanno da username/password a metodi più sicuri come una one-time password mandata a un cellulare o a un'autenticazione bancaria su Internet. 3. CoSign è un progetto open source, originariamente sviluppato per dotare l'Università del Michigan di un sicuro sistema di autenticazione web di tipo single sign-on. CoSign permette di autenticare gli utenti sul web server e poi fornisce un campo variabile lo username. Quando l'utente accede a una parte del sito che richiede l'autenticazione, la presenza di questa variabile permette l'accesso senza doversi loggare nuovamente. CoSign è parte del software lancio del National Science Foundation Middleware Initiative. 4. Enterprise single sign-on (E-SSO), chiamato anche legacy single sign-on, dopo una prima autenticazione utente, intercetta i prompt del login presentati da un'applicazione secondaria e li inserisce automaticamente nei campi come un loginID o una password. Il sistema E-SSO tiene conto dell'interazione con le applicazioni che sono incapaci di tirar fuori l'autenticazione, fatta precedentemente dall'utente, essenzialmente attraverso lo "screen scraping". Sergnese Nicola 566/2002 Pagina 37 di 228 5. Il Web single sign-on (Web-SSO), anche chiamato Web Access Management (Web-AM), lavora in sinergia con le applicazioni e le risorse che hanno accesso a un web browser. L'accesso alle risorse web è intercettato sia usando un web proxy server che installando un componente su ogni web server stabilito. Gli utenti non autorizzati che tentano di accedere a una risorsa, vengono deviati verso un servizio di autenticazione e ritornano solo dopo aver effettuato con successo un single sign-on. I Cookies sono usati molto spesso per tracciare lo stato di autenticazione dell'utente; l'infrastruttura Web-SSO estrae le informazioni dell'identificazione dell'utente dagli stessi cookies, passandole in ogni risorsa web. 6. Kerberos è un meccanismo conosciuto alle applicazioni e serve per estrarre interamente le autenticazioni. Gli utenti si registrano sul server Kerberos, il quale rilascia un "biglietto da visita", che il loro client software presenterà ai server a cui loro tenteranno di accedere. Kerberos è disponibile per Unix, per Windows e per piattaforme di elaborazione dati, ma richiede ampie modifiche al codice dell'applicazione client/server, e questo lo rende poco adatto alle "legacy application". 7. Federation è un nuovo approccio, anche per applicazioni web, che usa un protocollo, basato su degli standard tra i quali SAML e WS-Federation, che permette a una applicazione di accertare una sola volta l'identità di un utente di servizi diversi, evitando così il bisogno di autenticazioni ridondanti. 8. Light-Weight Identity e Open ID, sotto la protezione di YADIS, offrono SSO ripartiti e decentralizzati, dove l'identità è legata a una URL eseguita facilmente, che può essere verificata da qualsiasi server che usi uno dei protocolli condivisi. 9. JOSSO o Java Open Single Sign-On è un'infrastruttura SSO open source basata su J2EE, il cui scopo è trovare una soluzione per piattaforme centralizzate di autenticazione dell'utente neutrale. JOSSO usa i servizi web per identificare l'utente, permettendo l'integrazione di applicazioni non-Java (ad Sergnese Nicola 566/2002 Pagina 38 di 228 esempio PHP, Microsoft ASP) al Servizio Single Sign-On usando il protocollo SOAP sopra il protocollo HTTP. 10.Shibboleth System è un sistema sviluppato da Internet2 che consiste in un pacchetto software opensource, basato su standard, per il SSO tra organizzazioni o all'interno di un'organizzazione. 11.OpenSSO è un singolo prodotto che ha le funzionalità di diversi prodotti SUN, nello specifico System Access Manager, System Federation Manager e System SAMLv2 Plug-in per i servizi di federazione. 4.5 SSO utilitazzato sul portale OpenSSO OpenSSO è un unico prodotto che racchiude le funzionalità di diversi prodotti SUN, che sono System Access Manager, System Federation Manager e System SAMLv2 Plug-in per i servizi di federazione. OpenSSO fornisce funzioni di access management attraverso l'implementazione di servizi di autenticazione, di autorizzazione fondati su policy, di federazione e servizi di sicurezza di web services. OpenSSO ha una struttura di tipo Client/Server composta da un Client SDK, denominato Agent, utilizzato dall'applicazione da proteggere per accedere e comunicare con OpenSSO, un framework di servizi che implementa la logica di business di OpenSSO, e di interfacce di service provider (SPI) utilizzate per estendere le funzionalità di OpenSSO e per estrarre le informazioni presenti nei datastore. OpenSSO fornisce diverse funzionalità: 1. Controllo Accesso: OpenSSO gestisce l'accesso a servizi e a risorse di rete implementando servizi di autenticazione e di autorizzazioni. OpenSSO assicura che l'accesso alle risorse protette sia ristretto ai soli utenti autorizzati. Sergnese Nicola 566/2002 Pagina 39 di 228 2. Gestione della federazione: Con l'introduzione dei protocolli di federazione, le informazioni di identità ed i diritti di un utente possono essere comunicati tra domini diversi. Tramite la configurazione di un circolo di fiducia, e la definizione di applicazioni e servizi come provider del circolo, gli utenti possono associare o collegare le identità locali ai provider; le identità locali sono federate e consentono ad un utente di effettuare il login su un identity provider ed utilizzare un service provider federato senza dover effettuare di nuovo l'operazione di autenticazione. 3. Sicurezza dei web services: Un web service è un servizio o un'applicazione che espone una funzionalità di business o di infrastruttura attraverso un'interfaccia di rete neutra rispetto al linguaggio ed indipendente dalla piattaforma. Il web service definisce la sua interfaccia attraverso il Web Service Description Language (WSDL) e comunica usando il protocollo SOAP e messaggi XML. È necessario un intermediario, tipicamente un firewall o un load balancer, che permetta la comunicazione tra il client web services (WSC) e il web service provider (WSP). Assicurare l'integrità, la confidenzialità e la sicurezza dei web services è critico sia per i fornitori del servizio che per gli utilizzatori. Il modello di sicurezza adottato da OpenSSO identifica l'utente e ne preserva l'identità attraverso interazioni multiple, mantenendo l'integrità e la riservatezza dei dati utilizzando tecnologie esistenti. Identity web services: Con l'attuale release di OpenSSO il sistema espone alcune funzioni come semplici identity web services consentendo agli sviluppatori di invocarli nello sviluppo dei propri applicativi attraverso l'IDE utilizzato. Gli identity web services sono disponibibili usando SOAP e WSDL oppure REST (Representational State Transfer). I web services non richiedono il deploy di un agent o di un proxy ed includono funzionalità come l'autenticazione per validare le credenziali utente, l'autorizzazione per consentire l'accesso alla risorsa protetta, il provisioning per la gestione degli attributi utente e l'auto registrazione, e il log delle Sergnese Nicola 566/2002 Pagina 40 di 228 operazioni. 4.6 Oltre SSO: Identity Management Un sistema IAM è una soluzione tecnologica alle problematiche di gestione del ciclo di vita delle identità digitali e degli accessi di utenti su più sistemi informatici. I sistemi informatici solitamente sono indipendenti tra loro ed ognuno di essi ha un proprio database utenti e delle proprie politiche di gestione delle identità digitali. In queste condizioni gli utenti si trovano ad avere più identità digitali, ognuna associata ad un sistema. Senza un sistema IAM bisognerebbe gestire gli utenti e le politiche di accesso per ogni singolo sistema; ciò comporterebbe perdita di tempo da parte degli amministratori che si ritroverebbero ad eseguire le stesse operazioni su tutti i sistemi. Ad esempio, un semplice cambio di indirizzo email di un utente dovrebbe essere eseguito su tutte le identità, con conseguente perdita di tempo e difficoltà di gestione. Un sistema IAM mette a disposizione un unico punto di gestione per amministrare gli accessi e gli utenti rendendo queste operazioni rapide e sicure. Il sistema, inoltre, implementa la funzionalità di Single Sign On (SSO), che permette di autenticarsi ad altri sistemi, senza dover ripetere la procedura di riconoscimento di ogni singola risorsa. 4.7 Pagine di login dei remote web management Nel seguente paragrafo sono riportate le pagine di login delle web management con il codice sorgente solo della pagina principale, solo in appendice sarà riportato l'intero codice delle pagine con le relative pagine di javascript e di stile. Sergnese Nicola 566/2002 Pagina 41 di 228 4.7.1 CMC-TC (controllo rack) codice <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> Sergnese Nicola 566/2002 Pagina 42 di 228 <title>CMC-TC/PU2 [172.16.10.43]</title> <meta http-equiv="refresh" content="60; URL=cmclogin.cgi?0010101000000000000"> <link rel="stylesheet" type="text/css" href="cmc-tc.css"> </head> <body style="margin: 0px; padding: 0px; background-color:#b2b6c2; background-image: url(images/rmbck3.jpg); background-repeat: no-repeat; background-attachment: fixed;"> <center> <form action="cmclogin.cgi?0210101000000000000" method=post> <table border="0" width="800px"> <tr height="120px"> <td width="100px" align="center"><a href="http://www.rittal.com" target="_blank"><img src="images/rittal_logo.gif" title="Rittal Homepage" border="0" style="margin-top:5px;margin-left:2px"></td> <td> <table border="0"> <tr height="10px"> <td width="50px"></td> <td width="380px"></td> <td width="270px" rowspan=4 align="right"><a href="http://www.rimatrix5.com" target="_blank"><img src="images/rima_logo.gif" title="Rimatrix5 Homepage" border="0" style="margin-top:15px;margin-right:20px"></a></td> </tr> <tr height="45px"> <td></td> <td id=bb20c>CMC-TC / Login Page</td> <td></td> </tr> <tr height="25px"> <td></td> <td id=bb14c style="color:#0769b2">172.16.10.43</td> <td></td> </tr> <tr height="5px"> <td colspan=3></td> </tr> </table> </td> </tr> <tr height="250px"> <td width="320px"></td> <td> <table border="0" width="480"> <colgroup> <col width="200px"> <col width="280px"> </colgroup> <tr height="40px"> Sergnese Nicola 566/2002 Pagina 43 di 228 <td colspan=2></td> </tr> <tr height="25px"> <td id=bn12r>Username </td> <td id=bn12l><input type=text name="p0404" value="" size=20 maxlength=20></TD> </tr> <tr height="25px"> <td id=bn12r>Password </td> <td id=bn12l><input type=password name="p0405" value="" size=20 maxlength=20></td> </tr> <tr height="25px"> <td id=bn12r></td> <td id=bb12l> </td> </tr> <tr height="40px"> <td></td> <td><input type=submit name="ok" value=" Login "> <input type=reset name="reset" value=" Clear "></td> </tr> <tr height="40px"> <td colspan=2></td> </tr> <tr height="50px"> <td colspan=2><h2>© RITTAL GmbH, 2008</h2></td> </tr> </table> </td> </tr> </table> </form> </center> </body> </html> Sergnese Nicola 566/2002 Pagina 44 di 228 4.7.2 SW3COM ( SWITCHES ) codice <html><head> <title>Web user login</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <link href="/libs/login.css" rel="stylesheet" type="text/css"> Sergnese Nicola 566/2002 Pagina 45 di 228 <script language=javascript src="/js/MulPlatAPI.js"></script> <script language=javascript src="/libs/util.js"></script> <script language=javascript> function onBodyLoad() { var vCookie = GetCookie("lang"); if(null != vCookie) { document.getElementById("lang").value = vCookie; } if ( !top.IsSupportedBrowser() ) { document.getElementById("msg").style.display = ""; } document.forms[0].user_name.focus(); } function trim( str ) { str = str.replace(/^\s*/, ""); str = str.replace(/\s*$/, ""); return str; } function mySubmit(oForm) { SetCookie("lang",document.getElementById("lang").value); var sUserName = trim(oForm.user_name.value); if ( sUserName=="" ) { alert("Input user name, please."); return false; } oForm.user_name.value = sUserName; oForm.password.value = trim(oForm.password.value); return true; } </script> </head> <body style="background-color: #E1E9F5;" onload="onBodyLoad()"> <div id=msg style="display:none"><font color=red> <div><b> <script language="javascript"> Sergnese Nicola 566/2002 Pagina 46 di 228 document.write(top.getNavigatorString()+" "+top.VER_NUMBER); </script></b></div> You are using an unsupported or obsolete broswer which may cause errors or disabled functions after login.</font> <br><br>Supported browsers are: <li>IE 5.5, IE6.0 <li>Netscape 7.1 <li>Mozilla 1.4 </div> <form action="/Web" method=post onsubmit="return mySubmit(this);"> <center> <TABLE width="350" class="input" border="0"> <TR><th colspan="2" class="TITLE">Web user login</th> <TR><TD height="10" colspan=2> </TD></TR> <TD align=right width=100>User Name</TD> <TD><input name="user_name" style="width:160;" type="text" maxlength=80></TD> <TR> <TD align=right>Password</TD> <TD><input name="password" style="width:160;" type="password"></TD> <TR> <TD align=right>Language</TD> <TD><SELECT name="lang" id="lang" style="width:160;"> <OPTION value="0">English</OPTION> <OPTION value="1">Chinese</OPTION> </SELECT> </TABLE> <br><br> <input class="buttonX" type="submit" value=" Login "> </form> </body> </html> Sergnese Nicola 566/2002 Pagina 47 di 228 4.7.3 IMPI( Service Nodes) Codice <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> Sergnese Nicola 566/2002 Pagina 48 di 228 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Authentication</title> <link href="/style.asp" type="text/css" rel="STYLESHEET"> <script type="text/javascript"> <!-if (top.frames.length!=0) top.location=self.document.location; // --> </script> <link rel="SHORTCUT ICON" href="favicon.ico"> </head> <body class="auth"> <form action="auth.asp" method="POST"> <input type="hidden" name="nickname" value=""> <table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"> <tr><td colspan="2"> </td></tr> <tr class="authLogo"> <td colspan="2" align="center"> <img src="/logo.gif" alt="LOGO"> </td> </tr <tr> <td colspan="2" align="center"><br><span class="rsp_message"> </span><!-- response_code_begin ERIC_RESPONSE_OK response_code_end response_msg_begin response_msg_end --><br></td></tr> <tr> <td colspan="2" align="center" valign="top"> <table class="authInner" border="0" cellpadding="0" cellspacing="0"> <tr> <td><img src="corner_lt.gif" width="45" height="45" alt=""></td> <td class="authHeading" align="center">Authenticate with Login and Password! </td> <td><img src="corner_rt.gif" width="45" height="45" alt=""></td> </tr> <tr> <td> </td> <td> <table class="authInner" border="0" cellpadding="10" cellspacing="0"> <tr> <td align="right"><div class="bold">Username</div></td> <td align="left"><input type="text" name="login" value="" maxlength="32" size="32"></td> </tr> <tr> <td align="right"><div class="bold">Password</div></td> <td align="left"><input type="password" name="password" value="" Sergnese Nicola 566/2002 Pagina 49 di 228 maxlength="32" size="32"></td> </tr> </table> </td> <td> </td> </tr> <tr> <td><img src="corner_lb.gif" width="45" height="45" alt=""></td> <td align="center"><input type="image" src="button_login.en.gif" name="action_login" value="Login" align="middle" style="vertical-align:middle"> </td> <td><img src="corner_rb.gif" width="45" height="45" alt=""></td> </tr> </table> </table> </form> </body> </html> Sergnese Nicola 566/2002 Pagina 50 di 228 4.7.4 E4 ( storage Elements) Codice <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!-- (c) Copyrighted Materials, 2006. --> <html> <head> <script language="JavaScript" src="js_utility_JW420P63_____________.js"></script> Sergnese Nicola 566/2002 Pagina 51 di 228 <script language="JavaScript" src="js_table_JW420P63_____________.js"></script> <script language="JavaScript" src="js_chaplin_JW420P63_____________.js"></script> <script language="JavaScript" src="js_user_config_JW420P63_____________.js"></script> <script language="JavaScript" src="js_menu_list_JW420P63_____________.js"></script> <script language="JavaScript" src="js_create_menu_JW420P63_____________.js"></script> <script language="JavaScript" src="js_top_include_JW420P63_____________.js"></script> <title>E4 Computer Engin. RAIDar</title> </head> <script language="JavaScript"> var timeCount = 0; var contentFileName = ""; var pageHasAutoRefresh = 0; var g_controlRunningCount = 0; // Incremented by g_control every 10 seconds var g_controlRunningCountLast = 0; // Saved and checked by g_watchdog every 60 seconds if ( isServedByRc() ) var refreshSystemPanelCounter = 41; else var refreshSystemPanelCounter = 0; var refreshArrayPanelCounter = 0; var refreshRsdSumCounter = 0; var refreshRsdArrayCounter = 0; var refreshRsdArrayDrvsCounter = 0; var refreshRsdPortCounter = 0; var refreshRsdDisDevsCounter = 0; var refreshRsdDrvArrangeCounter = 0; var refreshDmStatusCounter = 0; var refreshRsdModStatusCounter = 0; var refreshRsdEnvTempCounter = 0; var refreshRsdEnvFanCounter = 0; var refreshRsdEnvPowerCounter = 0; var refreshRsdNetCounter = 0; var refreshRsdGenConfigCounter = 0; var refreshCreateArrayCounter = 0; var refreshDfuCounter = 0; var refreshLnCounter = 0; var refreshEnclCounter = 0; var refreshSchedulerCounter = 0; var refreshSchedulerNotificationDisplayed = false; var taskLinkContext = null; var scheduleLinkContext = null; var startIndex = 0; var processingRequestWindowUp = 0; var processingRequestWindow = 0; // If Window is up - this is window var var lastLoginChoice = 0; // 0 = monitor, 1 = manage Sergnese Nicola 566/2002 Pagina 52 di 228 var debugFrames = 0; var contentPanelPageName; var loginTopLevelVisitCount = 0; // When log in, increments var whatTask = "none"; var raidLevel = 0; var arrayName = ""; var subState = 0; var subCount = 0; var numSubarrays = 0; var numDrivesPerSubarray = 0; var selectSpares = 0; var barPageRefreshed = 0; var devYear = 0; var devMonth = 0; var devDay = 0; var devHour = 0; var devMinute= 0; var devSecond= 0; var custForceRefreshCount = 0; // When moving from page that requires refresh, increments var demoContentPageName = "rsd_summary.html"; var partitionIoRate = 0; var partitionBandwidth = 0; var partitionNumReads = 0; var partitionNumWrites = 0; var partitionNumSectorsRead = 0; var partitionNumSectorsWritten = 0; var partitionQueueDepth = new Array(0, 0, 0, 0); var partitionIoSize = new Array(0, 0, 0, 0); var totalIoRate = new Array(0, 0); var totalBandwidth = new Array(0, 0); var totalNumReads = new Array(0, 0); var totalNumWrites = new Array(0, 0); var totalNumSectorsRead = new Array(0, 0); var totalNumSectorsWritten = new Array(0, 0); var totalQueueDepth = new Array(new Array(0, 0, 0, 0 ), new Array(0, 0, 0, 0) ); var gUserName = ""; var gUserType = "0"; var gUserLevel = "0"; var gUserCapability = ""; var gIsGcontrolAwake = false; if ( (new String("2011")).charAt(0) != '[' ) contentPanelPageName = "/rsd_summary.html"; else contentPanelPageName = demoContentPageName; var timeDateStr = getTimeString(); var fetchName = makePageName( contentPanelPageName, timeDateStr ); if (debugFrames) Sergnese Nicola 566/2002 Pagina 53 di 228 { // Debug version has visible control frame document.write('<frameset cols="300,*">'); document.write('<frame name="control" src="g_control_frame.html">'); document.write('<frame name="content" src="' + fetchName + '">'); document.write('</frameset>'); } else { // Production version has non-visible control frame document.write('<frameset cols="1,*" border="0" framespacing="0" frameborder="NO">'); // Add onUnload="determineUserLevel()" to get Log Out document.write('<frame name="control" src="g_control_frame.html" noresize>'); // Add "noresize" to turn off ability to move frameset document.write('<frame name="content" src="' + fetchName + '">'); // Add "noresize" to turn off ability to move frameset document.write('</frameset>'); } </script> <noframes> <body style="margin:0; padding:0";> <center> <b>I am sorry, but your browser does not support frames.</b> <br><br> To view this web browser based application correctly, please use the latest version of either Mozilla Firefox or Microsoft Internet Explorer, and verify your browser has its "cookies" and "Cascading Style Sheets" enabled. </center> </body> </noframes> </html> Sergnese Nicola 566/2002 Pagina 54 di 228 4.7.5 ASUS ( storage elements) Codice <html><head> <script> Sergnese Nicola 566/2002 Pagina 55 di 228 readCk = function(name) { var nameEQ = name + "="; var ca = top.document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } var lang = readCk('lang'); top.gLangSettingSet = false; if(lang) top.gLangSetting = lang; else top.gLangSetting = "EN"; top.gLangSettingSet=true; </script> <link href="../style/login.css" rel="stylesheet" type="text/css"> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script src="../lib/ui.js"></script> <script src="../lib/eLang.js"></script> <script> document.write("<script language = \"Javascript\", src = \"../str/" + top.gLangSetting + "/global_str.js\"><\/script>"); document.write("<script language = \"Javascript\", src = \"../str/" + top.gLangSetting + "/login_str.js\"><\/script>"); </script> <script src="../impl/login_imp.js"></script> <script> onload = function() { if (top.gLangSettingSet == true) { doInit(); } } </script> </head><body> <table style="margin: 0px; padding: 0px;" border="0" cellpadding="0" cellspacing="0" width="100%"> Sergnese Nicola 566/2002 Pagina 56 di 228 <tbody><tr> <td id="headerleft" width="412"><img src="../res/banner_left.png" alt="" height="63" width="412"></td> <td id="headermiddle"> <img src="../res/banner_background.png" alt="" border="0" height="63" width="100%"></td> <td id="headerright" width="407"><img src="../res/banner_right.png" alt="" height="63" width="407"></td> </tr> </tbody></table> <p> </p> <div align="center"> <div class="shadow"> <h3> <script>document.writeln(eLang.getString("login", "STR_LOGIN_PLS_LOGIN"));</script> </h3> <div class="loginBox"> <div class="lbFields"> <form action="javascript://"> <p id="msglbl"> <script>document.writeln(eLang.getString("login", "STR_LOGIN_PLS_LOGIN"));</script> </p> <label style="width:85px; text-align:left;"> <script>document.writeln(eLang.getString("login", "STR_LOGIN_USERNAME"));</script> </label><input id="login_username" name="T1" size="20" style="width:146px;" tabindex="1" type="text"><br><br> <label style="width:85px; text-align:left;"> <script>document.writeln(eLang.getString("login", "STR_LOGIN_PASSWORD"));</script> </label><input id="login_password" name="T2" size="20" style="width:146px;" tabindex="2" type="password"><br><br> <input value="Login" class="button" name="Login" onclick="DoLogin();" type="submit"> </form> </div> </div> </div> </div> </body></html> Sergnese Nicola 566/2002 Pagina 57 di 228 4.7.6 Drac (worker nodes solo dell) codice Sergnese Nicola 566/2002 Pagina 58 di 228 HTML><HEAD> <META http-equiv="Content-Type" CONTENT="text/html; charset=utf-8"> <style type="text/css"> <!-BODY { background-color: #FFFFFF; topmargin: "20"; leftmargin:"15"; link: "#000000"; vlink: "#000000"; alink: "#000000"; } BODY.masthead { background-color: #00339A; } BODY.component-tree { background-color: #D8EBFC } BODY.server-name { background-color: #FFFFCE } BODY.snb { background-color: #00339A } TD { font-weight: normal; font-size: 10pt; color:black; font-family: Arial; } TD.server-name { font-weight: bold; font-family: Arial; font-size: 14pt; color: black; background-color: #FFFFCE; } TD.border { Sergnese Nicola 566/2002 Pagina 59 di 228 background-color: #9A9B9F; } A { font-size:10pt; font-family:Arial; font-weight:normal; color:black; text-decoration: none; } IMG { border-top:medium none; border-bottom:medium none; border-left:medium none; border-right:medium none; } SPAN.data-area-prompt-text { FONT-WEIGHT: normal; FONT-SIZE: 11 pt; COLOR: black; FONT-FAMILY: Arial } .login-header { font-family: Arial; color: #0033CC; font-size: 14pt; font-weight: normal; } .subbar-text-select { font-size: 8pt; color: #0033CC; font-family: Arial; font-weight: normal; } .subbar-text-unselect { font-size: 8pt; color: #000000; font-family: Arial; font-weight: normal; } Sergnese Nicola 566/2002 Pagina 60 di 228 .prompt-text { font-size: 10pt; color: #000000; font-family: Arial; font-weight: bold; } .login-text { font-size: 10pt; color: #000000; font-family: monospace; font-weight: bold; } .subheading-text { font-size: 10pt; color: #000000; font-family: Arial; font-weight: bold; } .field-text { font-size: 9pt; color: #000000; font-family: Arial; font-weight: normal; } .button-text { font-size: 8pt; color: #000000; font-family: Arial; font-weight: normal; cursor: hand; } .gray-button-text { font-size: 8pt; color: #ffffff; font-family: Arial; Sergnese Nicola 566/2002 Pagina 61 di 228 font-weight: normal; } .gray-link-text { font-size: 10pt; color: #ffffff; font-family: Arial; font-weight: normal; } .system-type-text { font-size: 8pt; color: #ffffff; font-family: Arial; font-weight: normal; } .page-title-text { font-size: 14pt; color: #0066cc; font-family: Arial; font-weight: normal; } .tab-select-text { font-size: 8pt; color: #000000; font-family: Arial; font-weight: bold; } .tab-unselect-text { font-size: 8pt; color: #00339a; font-family: Arial; font-weight: bold; } .navbar-text { font-size: 8pt; color: #ffffff; font-family: Arial; font-weight: bold; } .tree-root-text Sergnese Nicola 566/2002 Pagina 62 di 228 { font-size: 10pt; color: #0066cc; font-family: Arial; font-weight: bold; } .data-text { font-size: 10pt; color: #000000; font-family: Arial; font-weight: normal; } --> </style> <TITLE> Dell(TM) Remote Access Controller/Modular Chassis</TITLE> <script language="Javascript"> function display_login() { if(window !=top) window.open("login_index.htm","_top"); else { document.write('</head >'); document.write('<frameset rows="25,54,30,*" framespacing="0" BORDER="0" frameborder="0" >'); document.write('<frameset cols="50%,50%">'); document.write('<frame src="navbar.htm" scrolling="no" noresize >'); document.write('<frame src="log_navbar2.htm" scrolling="no" noresize>'); document.write('</frameset >'); document.write('<frame src="logo.htm" target="_self" scrolling="no" noresize marginwidth="0" marginheight="0">'); document.write('<frame src="activeobj.htm" scrolling="no" noresize marginwidth="0" marginheight="0">'); document.write('<frame src="login.htm" NAME="content" scrolling="auto" target="_self">'); document.write('</frameset ></html >'); } } display_login(); </script> <img src='images\tree\ctfork.gif' WIDTH=19 HEIGHT=16> Sergnese Nicola 566/2002 Pagina 63 di 228 <img src='images\tree\ctl.gif' WIDTH=19 HEIGHT=16> <img src='images\tree\ctline.gif' WIDTH=19 HEIGHT=16> <img src='images\tree\ctminus.gif' WIDTH=19 HEIGHT=16> <img src='images\tree\ctpfork.gif' WIDTH=19 HEIGHT=16> <img src='images\tree\ctplus.gif' WIDTH=19 HEIGHT=16> <img src='images\tree\no_line.gif' WIDTH=19 HEIGHT=16> 4.7.7 Centron ( monitoraggio e configurazione privata ) codice <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Centreon - IT & Network Monitoring</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> Sergnese Nicola 566/2002 Pagina 64 di 228 <meta name="Generator" content="Centreon - Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved." /> <meta name="robots" content="index, nofollow" /> <link href="./Themes/Centreon-2/login.css" rel="stylesheet" type="text/css"> <link rel="shortcut icon" href="./img/favicon.ico"> </head> <body OnLoad="document.login.useralias.focus();"> <form action="./index.php" method="post" name="login"> <div id='LoginInvit'> <table id="logintab1"> <tr> <td class="LoginInvitLogo" colspan="2"><img src="img/centreon.gif" alt="Centreon Logo" title="Centreon Logo" style="" /></td> </tr> <tr> <td class="LoginInvitVersion"><br /> 2.0.2 </td> <td class="LoginInvitDate"><br />10/01/2011</td> </tr> <tr> <td colspan="2"> <table id="logintab2"> <tr> <td><label for="useralias">Login:</label></td> <td><input type="text" name="useralias" value="" class="inputclassic" ></td> </tr> <tr> <td><label for="password">Password:</label></td> <td><input type="password" name="password" value="" class="inputclassicPass" ></td> </tr> <tr> <td colspan="2" id="sublogin"> <input type="Submit" name="submit" value="Login" > </td> </tr> </table> </td> </tr> <tr> <td id="LoginInvitcpy" colspan="2"> <br /> © 2005-2009 <a href="mailto:[email protected]">Centreon</a> </td> </tr> Sergnese Nicola 566/2002 Pagina 65 di 228 </table> </div> </form></body> </html> 5 Realizzazione ed Implementazione 5.1 Analisi Con questo progetto s'intende aggiungere le funzionalità del SSO a tutti i servizi che ne erano sprovvisti di seguito se ne formalizzano i requisiti. 5.1.1 Requisiti funzionali L'amministratore si deve poter loggare sul sistema. L'amministratore deve poter selezionare il servizi che permette di monitorare e gestire l'apparecchiatura. Selezionato il servizio l'user deve poter accedere al servizi non ri-autenticandosi sullo stesso. 5.1.2 Requisiti non funzionali Il login sul servizio selezionato deve essere automatico. 5.1.3 Di dominio Sergnese Nicola 566/2002 Pagina 66 di 228 Ogni apparecchio presenta un username e una password diverse. 5.2 Analisi dei rischi Sicurezza: L'amministratore deve essere consapevole dei rischi relativi alle tematiche di sicurezza e quindi deve applicare tutte le procedure per aumentare la sicurezza ovvero deve essere responsabile nello scegliere e gestire i dati di autenticazione. Risoluzione: • aumentare la complessità della password; • cambiare la password periodicamente. Aggiunta e rimozione dei servizi per mantenere la coerenza bisogna aggiornare elenco coerentemente ai servizi oppure considerare un aggiornamento dinamico degli stessi. Sergnese Nicola 566/2002 Pagina 67 di 228 5.3 Diagramma dei Casi d'uso. Figura 17: diagramma d'uso Sergnese Nicola 566/2002 Pagina 68 di 228 5.4 Tabelle di cockburn Il web quest effettua il login per autenticarsi come amministratore per monitorare la rete USE CASE Login Goal in contex L'utente si logga Scope & Level Precondictions Visualizza pagina e preme su login in welcome Success End Condition Utente loggato con successo Failed End condition Dati di autenticazione sbagliati Primary Actor Amministratore Trigger Description Click sul login in welcome step Amministratore 1 2 Sistema Visualizza pagina di login Si autentica e preme signon 3 Visualizza home page amministratore Tabella 1: cockburn login Sergnese Nicola 566/2002 Pagina 69 di 228 USE CASE Seleziona servizio di web management Goal in contex L'amministratore vuole visualizzare una pagina di web management Scope & Level Precondictions Utente loggato come amministratore Success End Condition Visualizzazione pagina web management Failed End condition Primary Actor Amministratore Trigger Visualizzata pagina principale de servizi SSO Description step Amministratore 1 trigger 2 3 Visualizza pagina principale de servizi SSO Seleziona categoria desiderata 4 5 Sistema Visualizza pagina della categoria selezionata Seleziona web management desiderato 6 Visualizza pagina della web management selezionata Option n°1 5a Seleziona lista 6a 7a Visualizza lista tutti i servizi principali Click su categoria 8a Continua con lo step 4 Option n°2 7b 8b Click su web management desiderato Continua con lo step 6 Tabella 2: cockburn seleziona web management Sergnese Nicola 566/2002 Pagina 70 di 228 5.5 Diagramma di navigazione Figura 18: navigazione I rombi rappresentano strade opzionali non condizionali. Sergnese Nicola 566/2002 Pagina 71 di 228 5.6 Progettazione & Implementazione Il sistema che si va realizzare è composto da una pagina principale che presenta all'amministratore le varie categorie dei servizi web management. Ogni categoria porta poi ad una pagina contenente l'elenco di tutti i servizi relativi a quella categoria. Quindi la struttura utilizzata e una struttura ad albero in cui abbiamo un nodo principale che rappresenta l'elenco delle categorie principali, poi abbiamo in nodi figli di primo livello che rappresentano l'elenco dei servizi della rispettiva categoria, e infine abbiamo le foglie che rappresentano la web management del rispettivo servizio. 5.6.1 Linguaggi utilizzati Poichè dobbiamo lavorare in ambiente web-based per sviluppare applicazioni clientserver, l'uso di un linguaggio che ci consenta di lavorare facilmente in tale ambiente è d'obbligo. Esistono tanti linguaggi con queste caratteristiche, come PHP, JAVA, ASP, ed ognuno consente un approccio molto semplice per lo sviluppo, nonostante siano molto diversi tra loro. Tra i linguaggi di programmazione abbiamo scelto PHP, che, oltre ad essere free ed open source, è orientato agli oggetti, ha un livello di astrazione molto alto e ci consente di sfruttare tecnologie ad-hoc. Per logica applicativa lato client useremo invece Java-script ( ecmascript ) e quando possibile tecnologia AJAX che ci consentono di realizzare in maniera semplice e veloce applicazione eseguibili sul browser. Per quanto riguarda la presentazione dei dati useremo il linguaggio di marcatura HTML, CSS, ecc. Date le nostre scelte utilizzare una serie di ambienti di sviluppo che ci consentono di realizzare le nostre applicazioni in maniera veloce e rispettando gli standard. Sergnese Nicola 566/2002 Pagina 72 di 228 In particolare liferay, come abbiamo già introdotto, dispone di tutte le funzionalità necessarie alla realizzazione di un portale web quali web publishing, content management, enterprise collaboration e social networking, il tutto costruito su una piattaforma open source completamente realizzata in accordo a standard aperti e allineata alle ultime tecnologie, permette di disporre di una gestione degli utenti, gruppi, ruoli e permessi ed è molto potente e flessibile che arriva fino alla gestione dei permessi di un singolo contenuto o di un singolo elemento del portale. Inoltre è integrato con diversi sistemi di gestione delle identità quali OpenID, OpenSSO, CAS ed abilita la fruizione in modalità single sign-on a sistemi eterogenei. 5.6.2 Sviluppo Per bypassare le pagine di login sono state testate diverse metodologie, di seguito sono riportate quelle funzionanti, per facilitare la lettura integrerò le spiegazioni con delle immagini. Sergnese Nicola 566/2002 Pagina 73 di 228 5.6.2.1 CMC-TC Per lo sviluppo del bypass di queste pagine di login è stato utilizzato l'iframe portlet messo a disposizione dal portale liferay. Figura 19: configurazione iframe portlet per cmc Nella Voce cerchiata in rosso bisogna metterci l'url dove inviare i dati di autenticazione , poi bisogna spuntare authenticate (cerchiato in blue), poi scegliere da tipo di autenticazione (cerchiato in arancione) from, poi da metodo di from scegliere, che è il metodo che si trova alla tag from del codice sorgente della pagina di login,(cerchiato in rosa) post. Adesso compilare i campi cerchiati in giallo con i dati di autenticazione, per field name di username e password, e per i valori i dati per autenticarsi ad esempio in value username nico e in value password nico. Per i nomi di username e password cercare nel codice sorgente della pagina di login il Sergnese Nicola 566/2002 Pagina 74 di 228 nome dei due relativi campi, in generale sono riconoscibili dalla tag input esempio codice cmc: Figura 20: nomi campi username password 5.6.2.2 IMPI Per lo sviluppo del bypass di queste pagine di login è stato implementato del codice javascript modificando il codice sorgente della pagina di login. Il codice implementato è il seguente: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <style type="text/css"> div#LoginInvit{position:absolute;left:-9999px} </style> <title>""</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="" rel="stylesheet" type="text/css"> </head> <body onload="document.login.action_login.click()"> <form action="http://ipmi-atlasse11.na.infn.it/auth.asp" method="post" name="login"> <input type="hidden" name="nickname" value=""> Sergnese Nicola 566/2002 Pagina 75 di 228 <div id='LoginInvit'> <table class="authInner" border="0" cellpadding="10" cellspacing="0"> <tr> <td align="right"><div class="bold">Username</div></td> <td align="left"><input type="text" name="login" value="dato di autenticazione" maxlength="32" size="32"></td> </tr> <tr> <td align="right"><div class="bold">Password</div></td> <td align="left"><input type="password" name="password" value="dato di autenticazione" maxlength="32" size="32"></td> </tr> <tr> <td><img src="http://ipmi-atlasse11.na.infn.it/corner_lb.gif" width="45" height="45" alt=""></td> <td align="center"><input type="Submit" src="http://ipmiatlasse11.na.infn.it/button_login.en.gif" name="action_login" value="Login" align="middle" style="vertical-align:middle"> </td> <td><img src="http://ipmi-atlasse11.na.infn.it/corner_rb.gif" width="45" height="45" alt=""></td> </tr> </table> </div> </form></body> </html> le istruzioni aggiunte o modificate sono le istruzioni in grassetto. Con l'istruzione <style type="text/css"> div#LoginInvit{position:absolute;left:-9999px} </style> si nasconde la pagina, con <body onload="document.login.action_login.click()"> funzione javascript che permette il autosubmit della form, cioè permette l'auto-invio dei dati di autenticazione, con <form action="http://ipmi-atlasse11.na.infn.it/auth.asp" method="post" name="login"> pagina a cui sono inviati i dati di autenticazione, <div id='LoginInvit'> per nascondere la pagina, dati di autenticazione non sono riportati per motivi di sicurezza. Una volta creata la pagina caricarla sul server e con un'iframe portlet e richiamarla, cioè impostare indirizzo e autenticazione from di tipo post. Sergnese Nicola 566/2002 Pagina 76 di 228 5.6.2.3 ASUS Per lo sviluppo del bypass di queste pagine di login è stato implementato del codice javascript e ajax oltre a riportare tutti gli script .js (javascript) modificando il codice sorgente della pagina di login similmente come per impi, ovviamente cambiando i dati di autenticazione diversi, il codice relativo siccome molte è riportato tutto in appendice. 5.6.2.4 E4 Per lo sviluppo del bypass di queste pagine di login come per asus è stato implementato del codice javascript e ajax oltre a riportare tutti gli script .js (javascript) modificando il codice sorgente della pagina di login, ovviamente cambiando i dati di autenticazione diversi, il codice relativo, come per asus, siccome molto è riportato tutto in appendice. 5.6.2.5 CENTRON Per lo sviluppo del bypass di queste pagine di login è stato implementato del codice javascript modificando il codice sorgente della pagina di login. Il codice implementato è il seguente: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <style type="text/css"> div#LoginInvit{position:absolute;left:-9999px} </style> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="Generator" content="Centreon - Copyright (C) 2005 - 2008 Open Source Sergnese Nicola 566/2002 Pagina 77 di 228 Matters. All rights reserved." /> <meta name="robots" content="index, nofollow" > <link href="" rel="stylesheet" type="text/css"> <link rel="shortcut icon" href=""> </head> <body onload="document.login.submit.click()"> <form action="http://tier2-nagios.na.infn.it/centreon/index.php" method="post" name="login"> <div id='LoginInvit'> <table id="logintab1"> <tr> <td class="LoginInvitLogo" colspan="2"><img src="" alt="" title="" style="" /></td> </tr> <tr> <td class="LoginInvitVersion"><br /> </td> <td class="LoginInvitDate"><br /> </td> </tr> <tr> <td colspan="2"> <table id="logintab2"> <tr> <td><label for="useralias"></label></td> <td><input type="hidden" type="text" name="useralias" value="inserire autenticzione" class="inputclassic" ></td> </tr> <tr> <td><label for="password"></label></td> <td><input type="hidden" type="password" name="password" value="inserire autenticzione" class="inputclassicPass" ></td> </tr> <tr> <td colspan="2" id="sublogin"> <input type="Submit" name="submit" value="" > </td> </tr> </table> </td> </tr> <tr> Sergnese Nicola 566/2002 Pagina 78 di 228 <td id="LoginInvitcpy" colspan="2"> <br /> </td> </tr> </table> </div> </form></body> </html> le istruzioni aggiunte o modificate sono le istruzioni in grassetto. Con l'istruzione <style type="text/css"> div#LoginInvit{position:absolute;left:-9999px} </style> si nasconde la pagina, con <body onload="document.login.action_login.click()"> funzione javascript che permette il autosubmit della form, cioè permette l'auto-invio dei dati di autenticazione, con <form action="http://tier2-nagios.na.infn.it/centreon/index.php" method="post" name="login"> pagina a cui sono inviati i dati di autenticazione, <div id='LoginInvit'> per nascondere la pagina, dati di autenticazione non sono riportati per motivi di sicurezza. Una volta creata la pagina caricarla sul server e con un'iframe portlet e richiamarla, cioè impostare indirizzo e autenticazione from di tipo post. 5.6.2.6 DRAC (solo dell) Per lo sviluppo del bypass di queste pagine di login è stato utilizzato l'iframe portlet messo a disposizione dal portale liferay.e va configurata cosi come è stata configurata la cmc ovviamente mettendo i dati relativi a questo servizio, l'indirizzo relativo è questo https://atlasdrac01.na.infn.it/Forms/f_login i campi username e password sono TEXT_USER_NAME e TEXT_PASSWORD. Dati di autenticazione non riportati per sicurezza. Sergnese Nicola 566/2002 Pagina 79 di 228 5.6.2.7 SW3COM Per lo sviluppo del bypass di queste pagine di login come per è stato implementato del codice javascript e ajax oltre a riportare tutti gli script .js (javascript) modificando il codice sorgente della pagina di login, di seguito si riporta il codice: <html><head> <title>Web user login</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <link href="/libs/login.css" rel="stylesheet" type="text/css"> <script language=javascript src="/js/MulPlatAPI.js"></script> <script language=javascript src="/libs/util.js"></script> <script language=javascript> function onBodyLoad() { var vCookie = GetCookie("lang"); if(null != vCookie) { document.getElementById("lang").value = vCookie; } if ( !top.IsSupportedBrowser() ) { document.getElementById("msg").style.display = ""; } document.forms[0].user_name.focus(); } function trim( str ) { str = str.replace(/^\s*/, ""); str = str.replace(/\s*$/, ""); return str; } function mySubmit(oForm) { SetCookie("lang",document.getElementById("lang").value); var sUserName = trim(oForm.user_name.value); if ( sUserName=="" ) { alert("Input user name, please."); return false; } Sergnese Nicola 566/2002 Pagina 80 di 228 oForm.user_name.value = sUserName; oForm.password.value = trim(oForm.password.value); return true; } </script> </head> <body style="background-color: #E1E9F5;" onload="onBodyLoad()"> <div id=msg style="display:none"><font color=red> <div><b> <script language="javascript"> document.write(top.getNavigatorString()+" "+top.VER_NUMBER); </script></b></div> You are using an unsupported or obsolete broswer which may cause errors or disabled functions after login.</font> <br><br>Supported browsers are: <li>IE 5.5, IE6.0 <li>Netscape 7.1 <li>Mozilla 1.4 </div> <form action="http://sw3com-atlas04.na.infn.it/Web" method=post onsubmit="return mySubmit(this);"> <center> <TABLE width="350" class="input" border="0"> <TR><th colspan="2" class="TITLE">Web user login</th> <TR><TD height="10" colspan=2> </TD></TR> <TD align=right width=100>User Name</TD> <TD><input name="user_name" style="width:160;" type="text" maxlength=80></TD> <TR> <TD align=right>Password</TD> <TD><input name="password" style="width:160;" type="password"></TD> <TR> <TD align=right>Language</TD> <TD><SELECT name="lang" id="lang" style="width:160;"> <OPTION value="0">English</OPTION> <OPTION value="1">Chinese</OPTION> </SELECT> </TABLE> <br><br> <input class="buttonX" type="submit" value=" Login "> </form> </body> </html>. Sergnese Nicola 566/2002 Pagina 81 di 228 5.6.2.8 Pagina SSO Login Di seguito viene riportato il codice che è stato scritto per creare la pagina principale del sistema SSO Login. <div align="center"> <h1>SSO Login</h1> </div> <table width="70%" height="70%" border="0" align="center"> <tbody> <tr> <td align="center"> <h1>L1: ATLAS Data Center</h1> </td> <td align="center"> <h1>L2: SCoPE Data Center</h1> </td> </tr> <tr> <td align="center"> <form action="pagina dei servici cmc atlas"> <h2> <p style="text-align: center;"><input type="submit" title="Controllo rank e Monitoraggio Ambientale" value="CMC" /></p> </h2> </form> </td> <td align="center"> <form action="pagina dei servici cmc scope"> <h2> <p style="text-align: center;"><input type="submit" title="Controllo rank e Monitoraggio Ambientale" value="CMC" /></p> </h2> </form> </td> </tr> <tr> <td align="center"> <form action="pagina worker nodes atlas"> <h2> <p style="text-align: center;"><input type="submit" title="" value="Worker Nodes" /></p> </h2> </form> </td> <td align="center"> Sergnese Nicola 566/2002 Pagina 82 di 228 <form action="pagina worker nodes scope"> <h2> <p style="text-align: center;"><input type="submit" title="" value=" Worker Nodes" /></p> </h2> </form> </td> </tr> <tr> <td align="center"> <form action="pagina Storage Elements atlas"> <h2> <p style="text-align: center;"><input type="submit" title="" value="Storage Elements" /></p> </h2> </form> </td> <td align="center"> <form action="pagina Storage Elements scope"> <h2> <p style="text-align: center;"><input type="submit" title="" value="Storage Elements" /></p> </h2> </form> </td> </tr> <tr> <td align="center"> <form action="pagina Switches atlas"> <h2> <p style="text-align: center;"><input type="submit" title="" value="Switches" /></p> </h2> </form> </td> <td align="center"> <form action="pagina Switches scope"> <h2> <p style="text-align: center;"><input type="submit" title="" value="Switches" /></p> </h2> </form> </td> </tr> <tr> <td align="center"> <form action="pagina service nodes atlas"> Sergnese Nicola 566/2002 Pagina 83 di 228 <h2> <p style="text-align: center;"><input type="submit" title="" value="Service Node" /></p> </h2> </form> </td> <td align="center"> <form action="pagina service nodes scope"> <h2> <p style="text-align: center;"><input type="submit" title="" value="Service Node" /></p> </h2> </form> </td> </tr> </tbody> </table> 5.6.2.9 Pagina di selezione servizio Ogni categoria selezionata porta ad una pagina divisa in due parti, la pagina e divisa in 30% spoiler 70% tabella servizi, a sinistra si trova un iframe portlet in cui c'è la lista di tutti servizi di web management, la quale è visualizzabile se lo si desidera, di seguito riportiamo la pagina che sarà caricata sul server. In ogni pagina si farà riferimento ad un file diverso, perché è stato deciso che la categoria già visibile non deve essere riportata nella lista. <html> <head> <title>Menu Dinamico a tendina</title> <link rel="stylesheet" type="text/css" href="menu.css"> <script language="javascript" src="menu.js"></script> </head> <body> <div style="top:0px; left:0px; width: 100%; height: 100%;" onMouseOver="setTimeout('chiudi()',9999999);"> </div> <div style="top:0px; left:0px; width:120;"> <table border="0" cellspacing="4"> <tr><td> L1: ATLAS Data Center </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/work-nodes-ata" onMouseOver="apri(1)" target="_blank">Worker Nodes</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/storage-elements1" Sergnese Nicola 566/2002 Pagina 84 di 228 onMouseOver="apri(2)" target="_blank">Storage Elements</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/Switches-atlas" onMouseOver="apri(3)" target="_blank">Switches</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/servicenodeatla" onMouseOver="apri(4)" target="_blank">Service Nodes</a> </td></tr> <tr><td>L2: SCoPE Data Center</td></tr> <tr><td> <a href="http://localhost:8080/web/guest/cmc" onMouseOver="apri(5)" target="_blank">CMC</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/worker-node" onMouseOver="apri(6)" target="_blank">Worker Nodes</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/storage-elements" onMouseOver="apri(7)" target="_blank">Storage Elements</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/switches" onMouseOver="apri(8)" target="_blank">Switches</a> </td></tr> <tr><td> <a href="javascript:void(0)" onMouseOver="apri(9)" target="_blank">Service Nodes</a> </td></tr> </table> </div> <!-- menu 1 :: worker nodes --> <div id="menu1" style="top: 4px;" class="menu" > <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmiatlaswn09.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmiatlaswn10.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmiatlaswn11.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmiatlaswn12.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmiatlaswn13.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmiatlaswn14.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmiatlaswn15.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmiatlaswn16.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmiatlaswn17.na.infn.it/</a><br> </div> <!-- menu 2 :: Storage Elements --> <div id="menu2" style="top: 25px;" class="menu" > <a href="#">http://atlasse02.na.infn.it/</a><br> <a href="#">http://atlasse03.na.infn.it/</a><br> <a href="#">http://atlasse04.na.infn.it/</a><br> <a href="#">http://atlasse05.na.infn.it/</a><br> Sergnese Nicola 566/2002 Pagina 85 di 228 <a href="#">http://atlasse06.na.infn.it/</a><br> <a href="#">http://atlasse07.na.infn.it/</a><br> </div> <!-- menu 3 :: Switches --> <div id="menu3" style="top: 46px;" class="menu" > <a href="#">http://sw3com-atlas01.na.infn.it/</a><br> <a href="#">http://sw3com-atlas02.na.infn.it/</a><br> <a href="#">http://sw3com-atlas03.na.infn.it/</a><br> <a href="#">http://swdell-scope01.na.infn.it/</a><br> </div> <!-- menu 4 :: Services Nodes --> <div id="menu4" style="top: 67px;" class="menu" > <a href="http://localhost:8080/web/guest/service-node-ata" target="_blank">http://ipmiatlasce01.na.infn.it</a><br> </div> <!-- menu 5 :: CMC --> <div id="menu5" style="top: 200px;" class="menu" > <a href="#">http://172.21.0.72/(cmc22)</a><br> <a href="#">http://172.21.0.73/(cmc23)</a><br> <a href="#">http://172.21.0.74/(cmc24)</a><br> <a href="#">http://172.21.0.75/(cmc25)</a><br> <a href="http://localhost:8080/web/guest/cmc26" target="_blank">http://172.21.0.76/ (cmc26)</a><br> <a href="http://localhost:8080/web/guest/altri" target="_blank">http://172.21.0.77/ (cmc27)</a><br> <a href="http://localhost:8080/web/guest/altro1" target="_blank">http://172.21.0.78/ (cmc28)</a><br> <a href="#">http://172.21.0.79/(cmc29)</a><br> <a href="#">http://172.21.0.80/(cmc30)</a><br> <a href="http://localhost:8080/web/guest/altr1" target="_blank">http://172.21.0.81/ (cmc31)</a><br> <a href="http://localhost:8080/web/guest/prov" target="_blank">http://172.21.0.82/ (cmc32)</a><br> <a href="http://localhost:8080/web/guest/2" target="_blank">http://172.21.0.83/ (cmc33)</a><br> </div> <!-- menu 6 :: Worker Nodes --> <div id="menu6" style="top: 0px;" class="menu" > <a href="#">http://ipmi-atlaswn01.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn02.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn03.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn04.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn05.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn06.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn07.na.infn.it/</a><br> Sergnese Nicola 566/2002 Pagina 86 di 228 <a href="#">http://ipmi-atlaswn08.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn18.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn19.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn20.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn21.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn22.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn23.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn24.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn25.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn26.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn27.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn28.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn29.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn30.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn31.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn32.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn33.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn34.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn35.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn36.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn37.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn38.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn39.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn40.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn41.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn42.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn43.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn44.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn45.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn46.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn47.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn48.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn49.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn50.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn51.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn52.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn53.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn54.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn55.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn56.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn57.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn58.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn59.na.infn.it/</a><br> </div> <!-- menu 7 :: Storage Elements --> <div id="menu7" style="top: 280px;" class="menu" > <a href="#">http://atlasse08.na.infn.it/</a><br> Sergnese Nicola 566/2002 Pagina 87 di 228 <a href="#">http://atlasse09.na.infn.it/</a><br> <a href="#">http://atlasse10.na.infn.it/</a><br> <a href="#">http://atlasse11.na.infn.it/</a><br> <a href="#">http://atlasse12.na.infn.it/</a><br> <a href="#">http://atlasse13.na.infn.it/</a><br> <a href="#">http://atlasse14.na.infn.it/</a><br> <a href="#">http://atlasse15.na.infn.it/</a><br> <a href="#">http://atlas-e4-03a.na.infn.it/</a><br> <a href="#">http://atlas-e4-03b.na.infn.it/</a><br> <a href="#">http://atlas-e4-04a.na.infn.it/</a><br> <a href="#">http://atlas-e4-04b.na.infn.it/</a><br> </div> <!-- menu 8 :: Switches --> <div id="menu8" style="top: 300px;" class="menu" > <a href="#">http://swdell-atlas01.na.infn.it/</a><br> <a href="#">http://swdell-atlas02.na.infn.it/</a><br> <a href="#">http://sw3com-atlas04.na.infn.it/</a><br> </div> <script type="text/javascript">inizializza(9);</script> </body> </html>. A destra ci sarà invece una web content display, con in alto il pulsante torna dietro e sotto la lista delle risorse della categoria selezionata Di seguito riportiamo il codice della pagina worker nodes atlas come esempio, fondamentalmente le altre sono uguali cambia solo i riferimenti alle pagine. <div> <form action="http://localhost:8080/web/guest/web-service" style="float: left;"> <input type="image" width="31" height="31" src="/image/image_gallery? uuid=1432d027-55ba-49c9-ae8dbbc3e87807d0&groupId=10721&t=1291280990367" alt="torna dietro" title="torna dietro" /><img alt="" /> </form> </div> <div align="center"> <h1>SSO Login</h1> <h1>Worker Nodes INFN</h1> </div> <table cellspacing="1" cellpadding="1" border="0" align="center" style="width: 100%; height: 100%;"> Sergnese Nicola 566/2002 Pagina 88 di 228 <tbody> <tr> <td align="center"> <div> <form> <h3><input type="submit" value="atlaswn09" title="http://ipmiatlaswn09.na.infn.it/" /></h3> </form> </div> </td> <td align="center"> <div> <form> <h3><input type="submit" value="atlaswn12" title="http://ipmiatlaswn12.na.infn.it/" /></h3> </form> </div> </td> <td align="center"> <div> <form> <h3><input type="submit" value="atlaswn15" title="http://ipmiatlaswn15.na.infn.it/" /></h3> </form> </div> </td> </tr> <tr> <td align="center"> <div> <form> <h3><input type="submit" value="atlaswn10" title="http://ipmiatlaswn10.na.infn.it/" /></h3> </form> </div> </td> <td align="center"> <div> <form> <h3><input type="submit" value="atlaswn13" title="http://ipmiatlaswn13.na.infn.it/" /></h3> </form> </div> </td> <td align="center"> <div> <form> Sergnese Nicola 566/2002 Pagina 89 di 228 <h3><input type="submit" value="atlaswn16" title="http://ipmiatlaswn16.na.infn.it/" /></h3> </form> </div> </td> </tr> <tr> <td align="center"> <div> <form> <h3><input type="submit" value="atlaswn11" title="http://ipmiatlaswn11.na.infn.it/" /></h3> </form> </div> </td> <td align="center"> <div> <form> <h3><input type="submit" value="atlaswn14" title="http://ipmiatlaswn14.na.infn.it/" /></h3> </form> </div> </td> <td align="center"> <div> <form> <h3><input type="submit" value="atlaswn17" title="http://ipmiatlaswn17.na.infn.it/" /></h3> </form> </div> </td> </tr> </tbody> </table> Questo pezzo di codice rappresenta il bottone per tornare dietro <form action="http://localhost:8080/web/guest/web-service" style="float: left;"> <input type="image" width="31" height="31" src="/image/image_gallery?uuid=1432d027-55ba49c9-ae8d-bbc3e87807d0&groupId=10721&t=1291280990367" alt="torna dietro" title="torna dietro" /><img alt="" /> </form> Questo (di seguito) invece rappresenta i singoli bottoni per accedere ai servizi di web management, basta mettere l'istruzione, nella tag from, action=”nome pagina servizio” (<from action=”nome pagina servizio”>) per farsi che rappresenti un bottone diverso. Sergnese Nicola 566/2002 Pagina 90 di 228 <div> <form> <h3><input type="submit" value="atlaswn09" title="http://ipmi-atlaswn09.na.infn.it/" /></h3> </form> </div> spiegare ogni riga sarebbe un pò pesante ed inutile. Comunque i tag: td, tr, tbody e table rappresentano come disporre gli oggetti, in questo caso i bottoni per approfondimenti vedere “bibliografia e sitografia” dove ci sono le varie guide seguite. 5.6.3 Integrazione Liferay Per integrare tutto il lavoro sul portale si sono dovuti caricare sul server tutti i file il codice fatto inoltre per asus ed e4 si sono dovuti caricare tutti i gli script js utilizzati dalle pagine, per le tabelle e bastato copiare il codice fatto in locale, ovviamente sostituendo gli indirizzi con gli indirizzi delle pagine create sul server. Sergnese Nicola 566/2002 Pagina 91 di 228 6 Conclusioni Il lavoro svolto va ad apportare tutte le modifiche fin qui descritte che permettono alla amministratore di monitorare gestire l'infrastruttura della rete tramite una comoda interfaccia che automatizza tutte le ripetitive e fastidiose operazioni di autenticazione. È ovvio che questo lavoro può essere esteso e quindi ulteriormente migliorato, generando dinamicamente l'elenco dei servizi disponibili. Tale evoluzione può essere applicabile attraverso un protocollo che permetta la scansione delle intera rete, quindi il rilevamento di tutti gli apparati della infrastruttura. Inoltre si potrebbe pensare per migliorare, il controllo di integrare un sistema di notifica che avvisi l'addetto se si sta verificando un errore critico. Sergnese Nicola 566/2002 Pagina 92 di 228 7 Appendici Oltre il normale codice qui è riportato tutto il codice di asus e di e4. 7.1 Glossario Dati RAW=dati allo stato grezzo Dataset = Un dataset (o data set), così come dice anche la traduzione, è un insieme di dati. ESD, AOD, TAG = formati di ricostruzione dei dataset Gli ESD prodotti con la ricostruzione primaria risiedono al Tier-0 e vengono esportati in 2 Tier-1 AOD Replicati completamente in ogni Tier-1. Replicati parzialmente nei Tier-2 (~1/3 – 1/4 in ciascun Tier-2) in modo da avere almeno un insieme completo fra i Tier-2 associati ad ogni Tier-1. Ogni Tier-2 specifica quali dataset sono più interessanti per la comunità di riferimento; il resto viene distribuito a seconda della capacità. TAG Repliche parziali dei database TAG nei Tier-2 (Root files). In ciascun Tier-2 risiedono almeno tutti i file Root dei TAG corrspondenti agli AOD ospitati nel sito Disk buffer = è una piccola quantità di memoria su un disco rigido chiamata anche buffer cache, quindi è la memoria incorporata in un disco rigido che funge da memoria tampone. DPD = (Derived Physics Data) : Sono un formato ridotto degli AOD, è il formato “privato” dei dati, utilizzato per l'uso esplicito nei centri di calcolo PROXY = Sistema che memorizza le pagine Web viste più frequentemente in modo da scaricare i documenti dal disco rigido piuttosto che dalla Rete, in modo da diminuire i tempi di attesa. Portale web= Un portale web, o portale internet, anche abbreviati in portale se chiaro il Sergnese Nicola 566/2002 Pagina 93 di 228 contesto informatico, è un sito web che costituisce un punto di partenza, una porta di ingresso, ad un gruppo consistente di risorse di Internet o di una intranet. Molti portali sono costruiti e mantenuti con componenti software chiamati portlets. I migliori portali consentono ai loro utenti di personalizzare alcune loro prestazioni. 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. Workflow = Viene detta "WorkFlow" (tradotto letteralmente "flusso di lavoro") la creazione di modelli e la gestione informatica dell'insieme dei compiti e i diversi attori coinvolti nella realizzazione di un processo lavorativo (detto anche processo operativo). Il termine di Workflow potrà quindi essere tradotto in italiano come Gestione elettronica dei processi lavorativi. Tagging = L'attività di tagging (dall’inglese “tag”, contrassegno; in italiano taggare) consiste nell'attribuzione di una o più parole chiave, dette tag, che individuano l'argomento di cui si sta trattando, a documenti o, più in generale, file su internet. Web publishing = è l'insieme di strumenti che compongono sia il sito che fai, sia quando lo carichi sul web Content management = (in italiano: gestione dei contenuti) si indica una serie di processi e tecnologie a supporto del ciclo di vita evolutivo dell'informazione digitale (content o digital content). Social network = è una rete sociale (in inglese social network) consiste di un qualsiasi gruppo di persone connesse tra loro da diversi legami sociali, che vanno dalla conoscenza casuale, ai rapporti di lavoro, ai vincoli familiari. Le reti sociali sono spesso usate come base di studi interculturali in sociologia e in antropologia. Out-of-the-box = significa pronta all'uso. Framework = è una struttura di supporto su cui un software può essere organizzato e Sergnese Nicola 566/2002 Pagina 94 di 228 progettato. one-time password = è una password che è valida solo per una singola sessione di accesso o una transazione. I cookie = sono frammenti di testo inviati da un server ad un Web client (di solito un browser) e poi rimandati indietro dal client al server - senza subire modifiche - ogni volta che il client accede allo stesso server. I cookie HTTP sono usati per eseguire autenticazioni e tracking di sessioni e memorizzare informazioni specifiche riguardanti gli utenti che accedono al server, come ad esempio i siti preferiti o, in caso di acquisti on-line, il contenuto dei loro "carrelli della spesa" (shopping cart). Il termine "cookie" - letteralmente "biscotto" - deriva da magic cookie, concetto ben noto in ambiente UNIX che ha ispirato sia l'idea che il nome dei cookie HTTP. Screen scraping = si parla di "screen scraping of legacy applications" per indicare delle procedure che permettono ad un applicativo che “gira” su di un PC di estrarre dati dalle schermate di programmi che girano su di un sistema remoto ma vengono visualizzate sul PC attraverso un emulatore di terminale IBM TN-3270 o TN-5250, o VT-200, VT-420 in caso di server Unix. Nel caso di Windows questo e’ ottenuto copiando ("scraping") i dati contenuti nei campi forniti dall’applicativo che gira sul server e visualizzati dentro ad un emulatore di terminale Windows, quale IntelliTerm. Utilizando questa tecnica di screen scraping e’ possibile integrare applicativi Windows con i dati di applicativi "legacy" provenienti da un server remoto anche quando l’applicativo non fornisce nessun accesso programmatico a questi campi. In sostanza, l’output di un applicativo che gira su di un IBM mainframe o su di un IBM AS/400 (cioe’ il contenuto dei campi visualizzati all’interno di IntelliTerm sul PC) puo’ essere usato come input di un altro applicativo che gira sul PC. Questo permette l’automatizzazione della collezione dei dati sul PC e la loro analisi sullo stesso, usufruendo della grandi capacita’ di raccolta e morizzazione dati del server / mainframe. Policy = è un repertorio di limiti che sono stabiliti attraverso un processo decisionale Sergnese Nicola 566/2002 Pagina 95 di 228 collettivo. I regolamenti sono l'ultimo livello della gerarchia delle fonti del diritto, legate al rispetto del dettato costituzionale e delle leggi vigenti. Provisioning = è un processo mediante il quale un amministratore di sistema assegna risorse e privilegi, non solo agli utenti di una rete ma anche a chi le utilizza da remot IDE = acronimo per Integrated Development Environment. Un ambiente di programmazione che e' stato concepito come una applicazione. In genere consiste di un editor di testo (per il codice), un compilatore, un debugger e una utilita' per la creazione di GUI. SOAP = Simple Object Access Protocol Protocollo sviluppato da Microsoft, DevelopMentor e Userland Software, basato su XML, che consente la comunicazione fra oggetti su Internet fra applicazioni basate su diverse piattaforme o sistemi operativi. WSDL = il Web Services Description Language (WSDL) è un linguaggio formale in formato XML utilizzato per la creazione di "documenti" per la descrizione di Web Service. REST = Representational state transfer (REST) è un tipo di architettura software per i sistemi di ipertesto distribuiti come il World Wide Web. Il termine "representational state transfer" e "REST" furono introdotti nel 2000 nella tesi di dottorato di Roy Fielding,[1] uno dei principali autori delle specifiche dell' Hypertext Transfer Protocol (HTTP), termine ampiamente usato nella comunità di Internet. REST si riferisce ad un insieme di principi di architetture di rete, i quali delineano come le risorse sono definite e indirizzate. Il termine è spesso usato nel senso di descrivere ogni semplice interfaccia che trasmette dati su HTTP senza un livello opzionale come SOAP o la gestione della sessione tramite i cookies. Questi due concetti possono andare in conflitto cosi come in sovrapposizione. È possibile progettare ogni sistema software complesso in accordo con l'architettura REST di Fielding senza usare HTTP e senza interagire con il World Wide Web. È anche possibile progettare una semplice Sergnese Nicola 566/2002 Pagina 96 di 228 interfaccia XML+HTTP che non sia conforme ai principi REST, e invece segua un modello di Remote Procedure Call. La differenza tra l'uso del termine "REST" quindi causa qualche confusione nei dibattiti. 7.2 Codice Codice tabella principale <div align="center"> <h1>SSO Login</h1> </div> <table width="70%" height="70%" border="0" align="center"> <tbody> <tr> <td align="center"> <h1>L1: ATLAS Data Center</h1> </td> <td align="center"> <h1>L2: SCoPE Data Center</h1> </td> </tr> <tr> <td align="center"> <form action="pagina dei servici cmc atlas"> <h2> <p style="text-align: center;"><input type="submit" title="Controllo rank e Monitoraggio Ambientale" value="CMC" /></p> </h2> </form> </td> <td align="center"> <form action="pagina dei servici cmc scope"> <h2> <p style="text-align: center;"><input type="submit" title="Controllo rank e Monitoraggio Ambientale" value="CMC" /></p> </h2> </form> </td> </tr> <tr> <td align="center"> <form action="pagina worker nodes atlas"> <h2> <p style="text-align: center;"><input type="submit" title="" value="Worker Nodes" /></p> </h2> </form> </td> <td align="center"> <form action="pagina worker nodes scope"> <h2> <p style="text-align: center;"><input type="submit" title="" value=" Worker Nodes" /></p> </h2> </form> Sergnese Nicola 566/2002 Pagina 97 di 228 </td> </tr> <tr> <td align="center"> <form action="pagina Storage Elements atlas"> <h2> <p style="text-align: center;"><input type="submit" title="" value="Storage Elements" /></p> </h2> </form> </td> <td align="center"> <form action="pagina Storage Elements scope"> <h2> <p style="text-align: center;"><input type="submit" title="" value="Storage Elements" /></p> </h2> </form> </td> </tr> <tr> <td align="center"> <form action="pagina Switches atlas"> <h2> <p style="text-align: center;"><input type="submit" title="" value="Switches" /></p> </h2> </form> </td> <td align="center"> <form action="pagina Switches scope"> <h2> <p style="text-align: center;"><input type="submit" title="" value="Switches" /></p> </h2> </form> </td> </tr> <tr> <td align="center"> <form action="pagina service nodes atlas"> <h2> <p style="text-align: center;"><input type="submit" title="" value="Service Node" /></p> </h2> </form> </td> <td align="center"> <form action="pagina service nodes scope"> <h2> <p style="text-align: center;"><input type="submit" title="" value="Service Node" /></p> </h2> </form> </td> </tr> </tbody> </table> codice css e js per gli spoiler Sergnese Nicola 566/2002 Pagina 98 di 228 css td {font: bold 12pt Verdana,Arial,Helvetica,sans serif; text-align:center;} a { text-decoration: none;} a:visited { text-decoration: none; } a:hover { text-decoration: underline;} div {font: 11pt Verdana,Arial,Helvetica,sans serif; position: absolute;} .menu {left:-800px; width: 250px; padding:10px; border: 1px dotted #000000; } .menu a {text-decoration: none; } .menu a:visited {text-decoration: none; } .menu a:hover {text-decoration: underline;} spoiler var mostra=new Array(); var corrente=0; var ie4 = document.all; var ns4 = document.layers; var ns6 = document.getElementById; function inizializza(num_menu) { for(i=1;i<=num_menu;i++){ if (ie4) eval("mostra["+i+"] = document.all.menu"+i+";"); if (ns4) eval("mostra["+i+"] = document.menu"+i+";"); if (ns6) eval("mostra["+i+"] = document.getElementById('menu"+i+"').style;"); } }function chiudi() { if (corrente!=0) { var oggetto; oggetto = eval("mostra["+corrente+"]"); oggetto.left = -800; corrente = 0; } }function apri(numero) { chiudi(); var oggetto; oggetto = eval("mostra["+numero+"]"); oggetto.left = 120; corrente = numero; } codice pagina servizi cmc atlas apertura spoiler <div class="spoiler" ><div class="spoilerheader" > <input type="button" class="spoilerbutton" value="Spoiler" onclick="n = this.parentNode.parentNode.lastChild;if(n.style.display == 'none') {n.style.display = 'block';} else {n.style.display = 'none';} return false;"/> (clicca per mostrare lista apparecchi completa)</div> <div class="spoilerbody" style="display: none"> <iframe src="menu.html" width="100%" height="100%" frameborder="0"> <iframe> </div></div> Sergnese Nicola 566/2002 Pagina 99 di 228 spoiler <html> <head> <title>Menu Dinamico a tendina</title> <link rel="stylesheet" type="text/css" href="menu.css"> <script language="javascript" src="menu.js"></script> </head> <body> <div style="top:0px; left:0px; width: 100%; height: 100%;" onMouseOver="setTimeout('chiudi()',9999999);"> </div> <div style="top:0px; left:0px; width:120;"> <table border="0" cellspacing="4"> <tr><td> L1: ATLAS Data Center </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/work-nodes-ata" onMouseOver="apri(1)" target="_blank">Worker Nodes</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/storage-elements1" onMouseOver="apri(2)" target="_blank">Storage Elements</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/Switches-atlas" onMouseOver="apri(3)" target="_blank">Switches</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/servicenodeatla" onMouseOver="apri(4)" target="_blank">Service Nodes</a> </td></tr> <tr><td>L2: SCoPE Data Center</td></tr> <tr><td> <a href="http://localhost:8080/web/guest/cmc" onMouseOver="apri(5)" target="_blank">CMC</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/worker-node" onMouseOver="apri(6)" target="_blank">Worker Nodes</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/storage-elements" onMouseOver="apri(7)" target="_blank">Storage Elements</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/switches" onMouseOver="apri(8)" target="_blank">Switches</a> </td></tr> <tr><td> <a href="javascript:void(0)" onMouseOver="apri(9)" target="_blank">Service Nodes</a> </td></tr> </table> </div> <!-- menu 1 :: worker nodes --> <div id="menu1" style="top: 4px;" class="menu" > <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn09.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn10.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn11.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn12.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn13.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn14.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn15.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn16.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn17.na.infn.it/</a><br> </div> <!-- menu 2 :: Storage Elements --> <div id="menu2" style="top: 25px;" class="menu" > <a href="#">http://atlasse02.na.infn.it/</a><br> <a href="#">http://atlasse03.na.infn.it/</a><br> <a href="#">http://atlasse04.na.infn.it/</a><br> <a href="#">http://atlasse05.na.infn.it/</a><br> <a href="#">http://atlasse06.na.infn.it/</a><br> <a href="#">http://atlasse07.na.infn.it/</a><br> Sergnese Nicola 566/2002 Pagina 100 di 228 </div> <!-- menu 3 :: Switches --> <div id="menu3" style="top: 46px;" class="menu" > <a href="#">http://sw3com-atlas01.na.infn.it/</a><br> <a href="#">http://sw3com-atlas02.na.infn.it/</a><br> <a href="#">http://sw3com-atlas03.na.infn.it/</a><br> <a href="#">http://swdell-scope01.na.infn.it/</a><br> </div> <!-- menu 4 :: Services Nodes --> <div id="menu4" style="top: 67px;" class="menu" > <a href="http://localhost:8080/web/guest/service-node-ata" target="_blank">http://ipmiatlasce01.na.infn.it</a><br> </div> <!-- menu 5 :: CMC --> <div id="menu5" style="top: 200px;" class="menu" > <a href="#">http://172.21.0.72/(cmc22)</a><br> <a href="#">http://172.21.0.73/(cmc23)</a><br> <a href="#">http://172.21.0.74/(cmc24)</a><br> <a href="#">http://172.21.0.75/(cmc25)</a><br> <a href="http://localhost:8080/web/guest/cmc26" target="_blank">http://172.21.0.76/(cmc26)</a><br> <a href="http://localhost:8080/web/guest/altri" target="_blank">http://172.21.0.77/(cmc27)</a><br> <a href="http://localhost:8080/web/guest/altro1" target="_blank">http://172.21.0.78/(cmc28)</a><br> <a href="#">http://172.21.0.79/(cmc29)</a><br> <a href="#">http://172.21.0.80/(cmc30)</a><br> <a href="http://localhost:8080/web/guest/altr1" target="_blank">http://172.21.0.81/(cmc31)</a><br> <a href="http://localhost:8080/web/guest/prov" target="_blank">http://172.21.0.82/(cmc32)</a><br> <a href="http://localhost:8080/web/guest/2" target="_blank">http://172.21.0.83/(cmc33)</a><br> </div> <!-- menu 6 :: Worker Nodes --> <div id="menu6" style="top: 0px;" class="menu" > <a href="#">http://ipmi-atlaswn01.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn02.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn03.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn04.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn05.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn06.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn07.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn08.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn18.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn19.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn20.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn21.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn22.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn23.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn24.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn25.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn26.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn27.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn28.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn29.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn30.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn31.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn32.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn33.na.infn.it/</a><br> Sergnese Nicola 566/2002 Pagina 101 di 228 <a href="#">http://ipmi-atlaswn34.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn35.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn36.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn37.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn38.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn39.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn40.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn41.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn42.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn43.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn44.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn45.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn46.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn47.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn48.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn49.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn50.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn51.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn52.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn53.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn54.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn55.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn56.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn57.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn58.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn59.na.infn.it/</a><br> </div> <!-- menu 7 :: Storage Elements --> <div id="menu7" style="top: 280px;" class="menu" > <a href="#">http://atlasse08.na.infn.it/</a><br> <a href="#">http://atlasse09.na.infn.it/</a><br> <a href="#">http://atlasse10.na.infn.it/</a><br> <a href="#">http://atlasse11.na.infn.it/</a><br> <a href="#">http://atlasse12.na.infn.it/</a><br> <a href="#">http://atlasse13.na.infn.it/</a><br> <a href="#">http://atlasse14.na.infn.it/</a><br> <a href="#">http://atlasse15.na.infn.it/</a><br> <a href="#">http://atlas-e4-03a.na.infn.it/</a><br> <a href="#">http://atlas-e4-03b.na.infn.it/</a><br> <a href="#">http://atlas-e4-04a.na.infn.it/</a><br> <a href="#">http://atlas-e4-04b.na.infn.it/</a><br> </div> <!-- menu 8 :: Switches --> <div id="menu8" style="top: 300px;" class="menu" > <a href="#">http://swdell-atlas01.na.infn.it/</a><br> <a href="#">http://swdell-atlas02.na.infn.it/</a><br> <a href="#">http://sw3com-atlas04.na.infn.it/</a><br> </div> <script type="text/javascript">inizializza(9);</script> </body> </html> codice pagina servizi cmc scope apertura spoiler stesso cmc atlas cambia solo la pagina di riferimento Sergnese Nicola 566/2002 Pagina 102 di 228 ….................................... <iframe src="menu_cmc_SC.html" width="100%" height="100%" frameborder="0"> ….................................... spoiler <html> <head> <title>Menu Dinamico a tendina</title> <link rel="stylesheet" type="text/css" href="menu.css"> <script language="javascript" src="menu.js"></script> </head> <body> <div style="top:0px; left:0px; width: 100%; height: 100%;" onMouseOver="setTimeout('chiudi()',9999999);"> </div> <div style="top:0px; left:0px; width:120;"> <table border="0" cellspacing="4"> <tr><td> L1: ATLAS Data Center </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/cmcatla" onMouseOver="apri(5)" target="_blank">CMC</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/work-nodes-ata" onMouseOver="apri(1)" target="_blank">Worker Nodes</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/storage-elements1" onMouseOver="apri(2)" target="_blank">Storage Elements</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/Switches-atlas" onMouseOver="apri(3)" target="_blank">Switches</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/servicenodeatla" onMouseOver="apri(4)" target="_blank">Service Nodes</a> </td></tr> <tr><td>L2: SCoPE Data Center</td></tr> <tr><td> <a href="http://localhost:8080/web/guest/worker-node" onMouseOver="apri(6)" target="_blank">Worker Nodes</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/storage-elements" onMouseOver="apri(7)" target="_blank">Storage Elements</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/switches" onMouseOver="apri(8)" target="_blank">Switches</a> </td></tr> <tr><td> <a href="javascript:void(0)" onMouseOver="apri(9)" target="_blank">Service Nodes</a> </td></tr> </table> </div> <!-- menu 5 :: CMC --> <div id="menu5" style="top: 0px;" class="menu" > <a href="#">http://cmc1atlas.na.infn.it/</a><br> <a href="#">http://cmc2atlas.na.infn.it/</a><br> <a href="#">http://cmc3atlas.na.infn.it/</a><br> <a href="#">http://cmc4atlas.na.infn.it/</a><br> <!-- menu 1 :: worker nodes --> </div> <div id="menu1" style="top: 4px;" class="menu" > <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn09.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn10.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn11.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn12.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn13.na.infn.it/</a><br> Sergnese Nicola 566/2002 Pagina 103 di 228 <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn14.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn15.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn16.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn17.na.infn.it/</a><br> </div> <!-- menu 2 :: Storage Elements --> <div id="menu2" style="top: 25px;" class="menu" > <a href="#">http://atlasse02.na.infn.it/</a><br> <a href="#">http://atlasse03.na.infn.it/</a><br> <a href="#">http://atlasse04.na.infn.it/</a><br> <a href="#">http://atlasse05.na.infn.it/</a><br> <a href="#">http://atlasse06.na.infn.it/</a><br> <a href="#">http://atlasse07.na.infn.it/</a><br> </div> <!-- menu 3 :: Switches --> <div id="menu3" style="top: 46px;" class="menu" > <a href="#">http://sw3com-atlas01.na.infn.it/</a><br> <a href="#">http://sw3com-atlas02.na.infn.it/</a><br> <a href="#">http://sw3com-atlas03.na.infn.it/</a><br> <a href="#">http://swdell-scope01.na.infn.it/</a><br> </div> <!-- menu 4 :: Services Nodes --> <div id="menu4" style="top: 67px;" class="menu" > <a href="http://localhost:8080/web/guest/service-node-ata" target="_blank">http://ipmiatlasce01.na.infn.it</a><br> </div> <!-- menu 6 :: Worker Nodes --> <div id="menu6" style="top: 0px;" class="menu" > <a href="#">http://ipmi-atlaswn01.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn02.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn03.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn04.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn05.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn06.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn07.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn08.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn18.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn19.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn20.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn21.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn22.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn23.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn24.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn25.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn26.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn27.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn28.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn29.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn30.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn31.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn32.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn33.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn34.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn35.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn36.na.infn.it/</a><br> Sergnese Nicola 566/2002 Pagina 104 di 228 <a href="#">http://ipmi-atlaswn37.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn38.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn39.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn40.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn41.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn42.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn43.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn44.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn45.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn46.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn47.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn48.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn49.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn50.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn51.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn52.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn53.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn54.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn55.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn56.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn57.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn58.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn59.na.infn.it/</a><br> </div> <!-- menu 7 :: Storage Elements --> <div id="menu7" style="top: 280px;" class="menu" > <a href="#">http://atlasse08.na.infn.it/</a><br> <a href="#">http://atlasse09.na.infn.it/</a><br> <a href="#">http://atlasse10.na.infn.it/</a><br> <a href="#">http://atlasse11.na.infn.it/</a><br> <a href="#">http://atlasse12.na.infn.it/</a><br> <a href="#">http://atlasse13.na.infn.it/</a><br> <a href="#">http://atlasse14.na.infn.it/</a><br> <a href="#">http://atlasse15.na.infn.it/</a><br> <a href="#">http://atlas-e4-03a.na.infn.it/</a><br> <a href="#">http://atlas-e4-03b.na.infn.it/</a><br> <a href="#">http://atlas-e4-04a.na.infn.it/</a><br> <a href="#">http://atlas-e4-04b.na.infn.it/</a><br> </div> <!-- menu 8 :: Switches --> <div id="menu8" style="top: 300px;" class="menu" > <a href="#">http://swdell-atlas01.na.infn.it/</a><br> <a href="#">http://swdell-atlas02.na.infn.it/</a><br> <a href="#">http://sw3com-atlas04.na.infn.it/</a><br> </div> <script type="text/javascript">inizializza(9);</script> </body> </html> codice pagina servizi worker nodes atlas apertura spoiler cmc atlas cambia solo la pagina di riferimento ….................................... <iframe src="menu_wn_atla.html" width="100%" height="100%" frameborder="0"> Sergnese Nicola 566/2002 Pagina 105 di 228 ….................................... spoiler <html> <head> <title>Menu Dinamico a tendina</title> <link rel="stylesheet" type="text/css" href="menu.css"> <script language="javascript" src="menu.js"></script> </head> <body> <div style="top:0px; left:0px; width: 100%; height: 100%;" onMouseOver="setTimeout('chiudi()',9999999);"> </div> <div style="top:0px; left:0px; width:120;"> <table border="0" cellspacing="4"> <tr><td> L1: ATLAS Data Center </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/cmcatla" onMouseOver="apri(1)" target="_blank">CMC</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/storage-elements1" onMouseOver="apri(2)" target="_blank">Storage Elements</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/Switches-atlas" onMouseOver="apri(3)" target="_blank">Switches</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/servicenodeatla" onMouseOver="apri(4)" target="_blank">Service Nodes</a> </td></tr> <tr><td>L2: SCoPE Data Center</td></tr> <tr><td> <a href="http://localhost:8080/web/guest/cmc" onMouseOver="apri(5)" target="_blank">CMC</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/worker-node" onMouseOver="apri(6)" target="_blank">Worker Nodes</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/storage-elements" onMouseOver="apri(7)" target="_blank">Storage Elements</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/switches" onMouseOver="apri(8)" target="_blank">Switches</a> </td></tr> <tr><td> <a href="javascript:void(0)" onMouseOver="apri(9)" target="_blank">Service Nodes</a> </td></tr> </table> </div> <!-- menu 1 :: cmc --> <div id="menu1" style="top: 4px;" class="menu" > <a href="#">http://cmc1atlas.na.infn.it/</a><br> <a href="#">http://cmc2atlas.na.infn.it/</a><br> <a href="#">http://cmc3atlas.na.infn.it/</a><br> <a href="#">http://cmc4atlas.na.infn.it/</a><br> </div> <!-- menu 2 :: Storage Elements --> <div id="menu2" style="top: 25px;" class="menu" > <a href="#">http://atlasse02.na.infn.it/</a><br> <a href="#">http://atlasse03.na.infn.it/</a><br> <a href="#">http://atlasse04.na.infn.it/</a><br> <a href="#">http://atlasse05.na.infn.it/</a><br> <a href="#">http://atlasse06.na.infn.it/</a><br> <a href="#">http://atlasse07.na.infn.it/</a><br> </div> <!-- menu 3 :: Switches --> <div id="menu3" style="top: 46px;" class="menu" > <a href="#">http://sw3com-atlas01.na.infn.it/</a><br> Sergnese Nicola 566/2002 Pagina 106 di 228 <a href="#">http://sw3com-atlas02.na.infn.it/</a><br> <a href="#">http://sw3com-atlas03.na.infn.it/</a><br> <a href="#">http://swdell-scope01.na.infn.it/</a><br> </div> <!-- menu 4 :: Services Nodes --> <div id="menu4" style="top: 67px;" class="menu" > <a href="http://localhost:8080/web/guest/service-node-ata" target="_blank">http://ipmiatlasce01.na.infn.it</a><br> </div> <!-- menu 5 :: CMC --> <div id="menu5" style="top: 200px;" class="menu" > <a href="#">http://172.21.0.72/(cmc22)</a><br> <a href="#">http://172.21.0.73/(cmc23)</a><br> <a href="#">http://172.21.0.74/(cmc24)</a><br> <a href="#">http://172.21.0.75/(cmc25)</a><br> <a href="http://localhost:8080/web/guest/cmc26" target="_blank">http://172.21.0.76/(cmc26)</a><br> <a href="http://localhost:8080/web/guest/altri" target="_blank">http://172.21.0.77/(cmc27)</a><br> <a href="http://localhost:8080/web/guest/altro1" target="_blank">http://172.21.0.78/(cmc28)</a><br> <a href="#">http://172.21.0.79/(cmc29)</a><br> <a href="#">http://172.21.0.80/(cmc30)</a><br> <a href="http://localhost:8080/web/guest/altr1" target="_blank">http://172.21.0.81/(cmc31)</a><br> <a href="http://localhost:8080/web/guest/prov" target="_blank">http://172.21.0.82/(cmc32)</a><br> <a href="http://localhost:8080/web/guest/2" target="_blank">http://172.21.0.83/(cmc33)</a><br> </div> <!-- menu 6 :: Worker Nodes --> <div id="menu6" style="top: 0px;" class="menu" > <a href="#">http://ipmi-atlaswn01.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn02.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn03.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn04.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn05.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn06.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn07.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn08.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn18.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn19.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn20.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn21.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn22.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn23.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn24.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn25.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn26.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn27.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn28.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn29.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn30.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn31.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn32.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn33.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn34.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn35.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn36.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn37.na.infn.it/</a><br> Sergnese Nicola 566/2002 Pagina 107 di 228 <a href="#">http://ipmi-atlaswn38.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn39.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn40.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn41.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn42.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn43.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn44.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn45.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn46.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn47.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn48.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn49.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn50.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn51.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn52.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn53.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn54.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn55.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn56.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn57.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn58.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn59.na.infn.it/</a><br> </div> <!-- menu 7 :: Storage Elements --> <div id="menu7" style="top: 280px;" class="menu" > <a href="#">http://atlasse08.na.infn.it/</a><br> <a href="#">http://atlasse09.na.infn.it/</a><br> <a href="#">http://atlasse10.na.infn.it/</a><br> <a href="#">http://atlasse11.na.infn.it/</a><br> <a href="#">http://atlasse12.na.infn.it/</a><br> <a href="#">http://atlasse13.na.infn.it/</a><br> <a href="#">http://atlasse14.na.infn.it/</a><br> <a href="#">http://atlasse15.na.infn.it/</a><br> <a href="#">http://atlas-e4-03a.na.infn.it/</a><br> <a href="#">http://atlas-e4-03b.na.infn.it/</a><br> <a href="#">http://atlas-e4-04a.na.infn.it/</a><br> <a href="#">http://atlas-e4-04b.na.infn.it/</a><br> </div> <!-- menu 8 :: Switches --> <div id="menu8" style="top: 300px;" class="menu" > <a href="#">http://swdell-atlas01.na.infn.it/</a><br> <a href="#">http://swdell-atlas02.na.infn.it/</a><br> <a href="#">http://sw3com-atlas04.na.infn.it/</a><br> </div> <script type="text/javascript">inizializza(9);</script> </body> </html> codice pagina servizi worker nodes scope apertura spoiler cmc atlas cambia solo la pagina di riferimento ….................................... <iframe src="menu_wn_SC.html" width="100%" height="100%" frameborder="0"> ….................................... spoiler Sergnese Nicola 566/2002 Pagina 108 di 228 <html> <head> <title>Menu Dinamico a tendina</title> <link rel="stylesheet" type="text/css" href="menu.css"> <script language="javascript" src="menu.js"></script> </head> <body> <div style="top:0px; left:0px; width: 100%; height: 100%;" onMouseOver="setTimeout('chiudi()',9999999);"> </div> <div style="top:0px; left:0px; width:120;"> <table border="0" cellspacing="4"> <tr><td> L1: ATLAS Data Center </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/cmcatla" onMouseOver="apri(1)" target="_blank">CMC</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/worker-node-ata" onMouseOver="apri(6)" target="_blank">Worker Nodes</a> <tr><td> <a href="http://localhost:8080/web/guest/storage-elements1" onMouseOver="apri(2)" target="_blank">Storage Elements</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/Switches-atlas" onMouseOver="apri(3)" target="_blank">Switches</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/servicenodeatla" onMouseOver="apri(4)" target="_blank">Service Nodes</a> </td></tr> <tr><td>L2: SCoPE Data Center</td></tr> <tr><td> <a href="http://localhost:8080/web/guest/cmc" onMouseOver="apri(5)" target="_blank">CMC</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/storage-elements" onMouseOver="apri(7)" target="_blank">Storage Elements</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/switches" onMouseOver="apri(8)" target="_blank">Switches</a> </td></tr> <tr><td> <a href="javascript:void(0)" onMouseOver="apri(9)" target="_blank">Service Nodes</a> </td></tr> </table> </div> <!-- menu 1 :: cmc --> <div id="menu1" style="top: 4px;" class="menu" > <a href="#">http://cmc1atlas.na.infn.it/</a><br> <a href="#">http://cmc2atlas.na.infn.it/</a><br> <a href="#">http://cmc3atlas.na.infn.it/</a><br> <a href="#">http://cmc4atlas.na.infn.it/</a><br> </div> <!-- menu 2 :: Storage Elements --> <div id="menu2" style="top: 46px;" class="menu" > <a href="#">http://atlasse02.na.infn.it/</a><br> <a href="#">http://atlasse03.na.infn.it/</a><br> <a href="#">http://atlasse04.na.infn.it/</a><br> <a href="#">http://atlasse05.na.infn.it/</a><br> <a href="#">http://atlasse06.na.infn.it/</a><br> <a href="#">http://atlasse07.na.infn.it/</a><br> </div> <!-- menu 3 :: Switches --> <div id="menu3" style="top: 67px;" class="menu" > <a href="#">http://sw3com-atlas01.na.infn.it/</a><br> <a href="#">http://sw3com-atlas02.na.infn.it/</a><br> Sergnese Nicola 566/2002 Pagina 109 di 228 <a href="#">http://sw3com-atlas03.na.infn.it/</a><br> <a href="#">http://swdell-scope01.na.infn.it/</a><br> </div> <!-- menu 4 :: Services Nodes --> <div id="menu4" style="top: 86px;" class="menu" > <a href="http://localhost:8080/web/guest/service-node-ata" target="_blank">http://ipmiatlasce01.na.infn.it</a><br> </div> <!-- menu 5 :: CMC --> <div id="menu5" style="top: 200px;" class="menu" > <a href="#">http://172.21.0.72/(cmc22)</a><br> <a href="#">http://172.21.0.73/(cmc23)</a><br> <a href="#">http://172.21.0.74/(cmc24)</a><br> <a href="#">http://172.21.0.75/(cmc25)</a><br> <a href="http://localhost:8080/web/guest/cmc26" target="_blank">http://172.21.0.76/(cmc26)</a><br> <a href="http://localhost:8080/web/guest/altri" target="_blank">http://172.21.0.77/(cmc27)</a><br> <a href="http://localhost:8080/web/guest/altro1" target="_blank">http://172.21.0.78/(cmc28)</a><br> <a href="#">http://172.21.0.79/(cmc29)</a><br> <a href="#">http://172.21.0.80/(cmc30)</a><br> <a href="http://localhost:8080/web/guest/altr1" target="_blank">http://172.21.0.81/(cmc31)</a><br> <a href="http://localhost:8080/web/guest/prov" target="_blank">http://172.21.0.82/(cmc32)</a><br> <a href="http://localhost:8080/web/guest/2" target="_blank">http://172.21.0.83/(cmc33)</a><br> </div> <!-- menu 6 :: Worker Nodes --> <div id="menu6" style="top: 25px;" class="menu" > <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn09.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn10.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn11.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn12.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn13.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn14.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn15.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn16.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn17.na.infn.it/</a><br> </div> <!-- menu 7 :: Storage Elements --> <div id="menu7" style="top: 280px;" class="menu" > <a href="#">http://atlasse08.na.infn.it/</a><br> <a href="#">http://atlasse09.na.infn.it/</a><br> <a href="#">http://atlasse10.na.infn.it/</a><br> <a href="#">http://atlasse11.na.infn.it/</a><br> <a href="#">http://atlasse12.na.infn.it/</a><br> <a href="#">http://atlasse13.na.infn.it/</a><br> <a href="#">http://atlasse14.na.infn.it/</a><br> <a href="#">http://atlasse15.na.infn.it/</a><br> <a href="#">http://atlas-e4-03a.na.infn.it/</a><br> <a href="#">http://atlas-e4-03b.na.infn.it/</a><br> <a href="#">http://atlas-e4-04a.na.infn.it/</a><br> <a href="#">http://atlas-e4-04b.na.infn.it/</a><br> </div> <!-- menu 8 :: Switches --> <div id="menu8" style="top: 300px;" class="menu" > <a href="#">http://swdell-atlas01.na.infn.it/</a><br> <a href="#">http://swdell-atlas02.na.infn.it/</a><br> Sergnese Nicola 566/2002 Pagina 110 di 228 <a href="#">http://sw3com-atlas04.na.infn.it/</a><br> </div> <script type="text/javascript">inizializza(9);</script> </body> </html> codice pagina servizi switches atlas apertura spoiler cmc atlas cambia solo la pagina di riferimento ….................................... <iframe src="menu_sw_atla.html" width="100%" height="100%" frameborder="0"> <iframe> ….................................... spoiler <html> <head> <title>Menu Dinamico a tendina</title> <link rel="stylesheet" type="text/css" href="menu.css"> <script language="javascript" src="menu.js"></script> </head> <body> <div style="top:0px; left:0px; width: 100%; height: 100%;" onMouseOver="setTimeout('chiudi()',9999999);"> </div> <div style="top:0px; left:0px; width:120;"> <table border="0" cellspacing="4"> <tr><td> L1: ATLAS Data Center </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/cmcatla" onMouseOver="apri(1)" target="_blank">CMC</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/work-nodes-ata" onMouseOver="apri(2)" target="_blank">Worker Nodes</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/storage-elements1" onMouseOver="apri(3)" target="_blank">Storage Elements</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/servicenodeatla" onMouseOver="apri(4)" target="_blank">Service Nodes</a> </td></tr> <tr><td>L2: SCoPE Data Center</td></tr> <tr><td> <a href="http://localhost:8080/web/guest/cmc" onMouseOver="apri(5)" target="_blank">CMC</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/worker-node" onMouseOver="apri(6)" target="_blank">Worker Nodes</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/storage-elements" onMouseOver="apri(7)" target="_blank">Storage Elements</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/switches" onMouseOver="apri(8)" target="_blank">Switches</a> </td></tr> <tr><td> <a href="javascript:void(0)" onMouseOver="apri(9)" target="_blank">Service Nodes</a> </td></tr> </table> </div> <!-- menu 1 :: cmc --> <div id="menu1" style="top: 4px;" class="menu" > <a href="#">http://cmc1atlas.na.infn.it/</a><br> Sergnese Nicola 566/2002 Pagina 111 di 228 <a href="#">http://cmc2atlas.na.infn.it/</a><br> <a href="#">http://cmc3atlas.na.infn.it/</a><br> <a href="#">http://cmc4atlas.na.infn.it/</a><br> </div> <!-- menu 2 :: worker nodes --> <div id="menu2" style="top: 4px;" class="menu" > <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn09.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn10.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn11.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn12.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn13.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn14.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn15.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn16.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn17.na.infn.it/</a><br> </div> <!-- menu 3 :: Storage Elements --> <div id="menu3" style="top: 25px;" class="menu" > <a href="#">http://atlasse02.na.infn.it/</a><br> <a href="#">http://atlasse03.na.infn.it/</a><br> <a href="#">http://atlasse04.na.infn.it/</a><br> <a href="#">http://atlasse05.na.infn.it/</a><br> <a href="#">http://atlasse06.na.infn.it/</a><br> <a href="#">http://atlasse07.na.infn.it/</a><br> </div> <!-- menu 4 :: Services Nodes --> <div id="menu4" style="top: 150px;" class="menu" > <a href="http://localhost:8080/web/guest/service-node-ata" target="_blank">http://ipmiatlasce01.na.infn.it</a><br> </div> <!-- menu 5 :: CMC --> <div id="menu5" style="top: 200px;" class="menu" > <a href="#">http://172.21.0.72/(cmc22)</a><br> <a href="#">http://172.21.0.73/(cmc23)</a><br> <a href="#">http://172.21.0.74/(cmc24)</a><br> <a href="#">http://172.21.0.75/(cmc25)</a><br> <a href="http://localhost:8080/web/guest/cmc26" target="_blank">http://172.21.0.76/(cmc26)</a><br> <a href="http://localhost:8080/web/guest/altri" target="_blank">http://172.21.0.77/(cmc27)</a><br> <a href="http://localhost:8080/web/guest/altro1" target="_blank">http://172.21.0.78/(cmc28)</a><br> <a href="#">http://172.21.0.79/(cmc29)</a><br> <a href="#">http://172.21.0.80/(cmc30)</a><br> <a href="http://localhost:8080/web/guest/altr1" target="_blank">http://172.21.0.81/(cmc31)</a><br> <a href="http://localhost:8080/web/guest/prov" target="_blank">http://172.21.0.82/(cmc32)</a><br> <a href="http://localhost:8080/web/guest/2" target="_blank">http://172.21.0.83/(cmc33)</a><br> </div> <!-- menu 6 :: Worker Nodes --> <div id="menu6" style="top: 0px;" class="menu" > <a href="#">http://ipmi-atlaswn01.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn02.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn03.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn04.na.infn.it/</a><br> Sergnese Nicola 566/2002 Pagina 112 di 228 <a href="#">http://ipmi-atlaswn05.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn06.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn07.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn08.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn18.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn19.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn20.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn21.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn22.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn23.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn24.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn25.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn26.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn27.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn28.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn29.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn30.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn31.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn32.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn33.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn34.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn35.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn36.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn37.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn38.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn39.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn40.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn41.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn42.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn43.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn44.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn45.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn46.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn47.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn48.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn49.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn50.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn51.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn52.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn53.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn54.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn55.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn56.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn57.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn58.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn59.na.infn.it/</a><br> </div> <!-- menu 7 :: Storage Elements --> <div id="menu7" style="top: 280px;" class="menu" > <a href="#">http://atlasse08.na.infn.it/</a><br> <a href="#">http://atlasse09.na.infn.it/</a><br> <a href="#">http://atlasse10.na.infn.it/</a><br> <a href="#">http://atlasse11.na.infn.it/</a><br> <a href="#">http://atlasse12.na.infn.it/</a><br> <a href="#">http://atlasse13.na.infn.it/</a><br> <a href="#">http://atlasse14.na.infn.it/</a><br> Sergnese Nicola 566/2002 Pagina 113 di 228 <a href="#">http://atlasse15.na.infn.it/</a><br> <a href="#">http://atlas-e4-03a.na.infn.it/</a><br> <a href="#">http://atlas-e4-03b.na.infn.it/</a><br> <a href="#">http://atlas-e4-04a.na.infn.it/</a><br> <a href="#">http://atlas-e4-04b.na.infn.it/</a><br> </div> <!-- menu 8 :: Switches --> <div id="menu8" style="top: 300px;" class="menu" > <a href="#">http://swdell-atlas01.na.infn.it/</a><br> <a href="#">http://swdell-atlas02.na.infn.it/</a><br> <a href="#">http://sw3com-atlas04.na.infn.it/</a><br> </div> <script type="text/javascript">inizializza(9);</script> </body> </html> codice pagina servizi switches scope apertura spoiler cmc atlas cambia solo la pagina di riferimento ….................................... <iframe src="menu_sw_SC.html" width="100%" height="100%" frameborder="0"> ….................................... spoiler <html> <head> <title>Menu Dinamico a tendina</title> <link rel="stylesheet" type="text/css" href="menu.css"> <script language="javascript" src="menu.js"></script> </head> <body> <div style="top:0px; left:0px; width: 100%; height: 100%;" onMouseOver="setTimeout('chiudi()',9999999);"> </div> <div style="top:0px; left:0px; width:120;"> <table border="0" cellspacing="4"> <tr><td> L1: ATLAS Data Center </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/cmcatla" onMouseOver="apri(1)" target="_blank">CMC</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/work-nodes-ata" onMouseOver="apri(2)" target="_blank">Worker Nodes</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/storage-elements1" onMouseOver="apri(3)" target="_blank">Storage Elements</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/Switches-atlas" onMouseOver="apri(4)" target="_blank">Switches</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/servicenodeatla" onMouseOver="apri(5)" target="_blank">Service Nodes</a> </td></tr> <tr><td>L2: SCoPE Data Center</td></tr> <tr><td> <a href="http://localhost:8080/web/guest/cmc" onMouseOver="apri(6)" target="_blank">CMC</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/worker-node" onMouseOver="apri(7)" target="_blank">Worker Nodes</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/storage-elements" onMouseOver="apri(8)" target="_blank">Storage Elements</a> </td></tr> <tr><td> <a href="javascript:void(0)" onMouseOver="apri(9)" target="_blank">Service Nodes</a> Sergnese Nicola 566/2002 Pagina 114 di 228 </td></tr> </table> </div> <!-- menu 1 :: cmc --> <div id="menu1" style="top: 4px;" class="menu" > <a href="#">http://cmc1atlas.na.infn.it/</a><br> <a href="#">http://cmc2atlas.na.infn.it/</a><br> <a href="#">http://cmc3atlas.na.infn.it/</a><br> <a href="#">http://cmc4atlas.na.infn.it/</a><br> </div> <!-- menu 2 :: worker nodes --> <div id="menu2" style="top: 4px;" class="menu" > <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn09.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn10.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn11.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn12.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn13.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn14.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn15.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn16.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn17.na.infn.it/</a><br> </div> <!-- menu 3 :: Storage Elements --> <div id="menu3" style="top: 25px;" class="menu" > <a href="#">http://atlasse02.na.infn.it/</a><br> <a href="#">http://atlasse03.na.infn.it/</a><br> <a href="#">http://atlasse04.na.infn.it/</a><br> <a href="#">http://atlasse05.na.infn.it/</a><br> <a href="#">http://atlasse06.na.infn.it/</a><br> <a href="#">http://atlasse07.na.infn.it/</a><br> </div> <!-- menu 4 :: Switches --> <div id="menu4" style="top: 46px;" class="menu" > <a href="#">http://sw3com-atlas01.na.infn.it/</a><br> <a href="#">http://sw3com-atlas02.na.infn.it/</a><br> <a href="#">http://sw3com-atlas03.na.infn.it/</a><br> <a href="#">http://swdell-scope01.na.infn.it/</a><br> </div> <!-- menu 5 :: Services Nodes --> <div id="menu5" style="top: 67px;" class="menu" > <a href="http://localhost:8080/web/guest/service-node-ata" target="_blank">http://ipmiatlasce01.na.infn.it</a><br> </div> <!-- menu 6 :: CMC --> <div id="menu6" style="top: 200px;" class="menu" > <a href="#">http://172.21.0.72/(cmc22)</a><br> <a href="#">http://172.21.0.73/(cmc23)</a><br> <a href="#">http://172.21.0.74/(cmc24)</a><br> <a href="#">http://172.21.0.75/(cmc25)</a><br> <a href="http://localhost:8080/web/guest/cmc26" target="_blank">http://172.21.0.76/(cmc26)</a><br> <a href="http://localhost:8080/web/guest/altri" target="_blank">http://172.21.0.77/(cmc27)</a><br> <a href="http://localhost:8080/web/guest/altro1" target="_blank">http://172.21.0.78/(cmc28)</a><br> Sergnese Nicola 566/2002 Pagina 115 di 228 <a href="#">http://172.21.0.79/(cmc29)</a><br> <a href="#">http://172.21.0.80/(cmc30)</a><br> <a href="http://localhost:8080/web/guest/altr1" target="_blank">http://172.21.0.81/(cmc31)</a><br> <a href="http://localhost:8080/web/guest/prov" target="_blank">http://172.21.0.82/(cmc32)</a><br> <a href="http://localhost:8080/web/guest/2" target="_blank">http://172.21.0.83/(cmc33)</a><br> </div> <!-- menu 7 :: Worker Nodes --> <div id="menu7" style="top: 0px;" class="menu" > <a href="#">http://ipmi-atlaswn01.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn02.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn03.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn04.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn05.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn06.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn07.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn08.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn18.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn19.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn20.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn21.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn22.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn23.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn24.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn25.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn26.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn27.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn28.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn29.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn30.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn31.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn32.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn33.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn34.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn35.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn36.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn37.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn38.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn39.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn40.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn41.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn42.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn43.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn44.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn45.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn46.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn47.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn48.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn49.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn50.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn51.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn52.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn53.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn54.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn55.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn56.na.infn.it/</a><br> Sergnese Nicola 566/2002 Pagina 116 di 228 <a href="#">http://ipmi-atlaswn57.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn58.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn59.na.infn.it/</a><br> </div> <!-- menu 8 :: Storage Elements --> <div id="menu8" style="top: 250px;" class="menu" > <a href="#">http://atlasse08.na.infn.it/</a><br> <a href="#">http://atlasse09.na.infn.it/</a><br> <a href="#">http://atlasse10.na.infn.it/</a><br> <a href="#">http://atlasse11.na.infn.it/</a><br> <a href="#">http://atlasse12.na.infn.it/</a><br> <a href="#">http://atlasse13.na.infn.it/</a><br> <a href="#">http://atlasse14.na.infn.it/</a><br> <a href="#">http://atlasse15.na.infn.it/</a><br> <a href="#">http://atlas-e4-03a.na.infn.it/</a><br> <a href="#">http://atlas-e4-03b.na.infn.it/</a><br> <a href="#">http://atlas-e4-04a.na.infn.it/</a><br> <a href="#">http://atlas-e4-04b.na.infn.it/</a><br> </div> <script type="text/javascript">inizializza(9);</script> </body> </html> codice pagina servizi elements storage atlas apertura spoiler cmc atlas cambia solo la pagina di riferimento ….................................... <iframe src="menu_se_SC.html" width="100%" height="100%" frameborder="0"> ….................................... spoiler <html> <head> <title>Menu Dinamico a tendina</title> <link rel="stylesheet" type="text/css" href="menu.css"> <script language="javascript" src="menu.js"></script> </head> <body> <div style="top:0px; left:0px; width: 100%; height: 100%;" onMouseOver="setTimeout('chiudi()',9999999);"> </div> <div style="top:0px; left:0px; width:120;"> <table border="0" cellspacing="4"> <tr><td> L1: ATLAS Data Center </td></tr> <tr><td><a href="http://localhost:8080/web/guest/cmcatla" onMouseOver="apri(1)" target="_blank">CMC</a></td></tr> <tr><td><a href="http://localhost:8080/web/guest/work-nodes-ata" onMouseOver="apri(2)" target="_blank">Worker Nodes</a></td></tr> <tr><td><a href="http://localhost:8080/web/guest/Switches-atlas" onMouseOver="apri(3)" target="_blank">Switches</a></td></tr> <tr><td><a href="http://localhost:8080/web/guest/servicenodeatla" onMouseOver="apri(4)" target="_blank">Service Nodes</a> </td></tr> <tr><td>L2: SCoPE Data Center</td></tr> <tr><td> <a href="http://localhost:8080/web/guest/cmc" onMouseOver="apri(5)" target="_blank">CMC</a> </td></tr> Sergnese Nicola 566/2002 Pagina 117 di 228 <tr><td> <a href="http://localhost:8080/web/guest/worker-node" onMouseOver="apri(6)" target="_blank">Worker Nodes</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/storage-elements" onMouseOver="apri(7)" target="_blank">Storage Elements</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/switches" onMouseOver="apri(8)" target="_blank">Switches</a> </td></tr> <tr><td> <a href="javascript:void(0)" onMouseOver="apri(9)" target="_blank">Service Nodes</a> </td></tr> </table> </div> <!-- menu 1 :: cmc --> <div id="menu1" style="top: 4px;" class="menu" > <a href="#">http://cmc1atlas.na.infn.it/</a><br> <a href="#">http://cmc2atlas.na.infn.it/</a><br> <a href="#">http://cmc3atlas.na.infn.it/</a><br> <a href="#">http://cmc4atlas.na.infn.it/</a><br> </div> <!-- menu 2 :: worker nodes --> <div id="menu2" style="top: 4px;" class="menu" > <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn09.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn10.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn11.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn12.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn13.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn14.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn15.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn16.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn17.na.infn.it/</a><br> </div> <!-- menu 3 :: Switches --> <div id="menu3" style="top: 46px;" class="menu" > <a href="#">http://sw3com-atlas01.na.infn.it/</a><br> <a href="#">http://sw3com-atlas02.na.infn.it/</a><br> <a href="#">http://sw3com-atlas03.na.infn.it/</a><br> <a href="#">http://swdell-scope01.na.infn.it/</a><br> </div> <!-- menu 4 :: Services Nodes --> <div id="menu4" style="top: 67px;" class="menu" > <a href="http://localhost:8080/web/guest/service-node-ata" target="_blank">http://ipmiatlasce01.na.infn.it</a><br> </div> <!-- menu 5 :: CMC --> <div id="menu5" style="top: 200px;" class="menu" > <a href="#">http://172.21.0.72/(cmc22)</a><br> <a href="#">http://172.21.0.73/(cmc23)</a><br> <a href="#">http://172.21.0.74/(cmc24)</a><br> <a href="#">http://172.21.0.75/(cmc25)</a><br> <a href="http://localhost:8080/web/guest/cmc26" target="_blank">http://172.21.0.76/(cmc26)</a><br> <a href="http://localhost:8080/web/guest/altri" target="_blank">http://172.21.0.77/(cmc27)</a><br> <a href="http://localhost:8080/web/guest/altro1" target="_blank">http://172.21.0.78/(cmc28)</a><br> <a href="#">http://172.21.0.79/(cmc29)</a><br> <a href="#">http://172.21.0.80/(cmc30)</a><br> <a href="http://localhost:8080/web/guest/altr1" target="_blank">http://172.21.0.81/(cmc31)</a><br> Sergnese Nicola 566/2002 Pagina 118 di 228 <a href="http://localhost:8080/web/guest/prov" target="_blank">http://172.21.0.82/(cmc32)</a><br> <a href="http://localhost:8080/web/guest/2" target="_blank">http://172.21.0.83/(cmc33)</a><br> </div> <!-- menu 6 :: Worker Nodes --> <div id="menu6" style="top: 0px;" class="menu" > <a href="#">http://ipmi-atlaswn01.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn02.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn03.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn04.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn05.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn06.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn07.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn08.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn18.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn19.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn20.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn21.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn22.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn23.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn24.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn25.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn26.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn27.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn28.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn29.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn30.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn31.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn32.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn33.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn34.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn35.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn36.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn37.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn38.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn39.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn40.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn41.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn42.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn43.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn44.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn45.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn46.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn47.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn48.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn49.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn50.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn51.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn52.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn53.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn54.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn55.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn56.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn57.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn58.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn59.na.infn.it/</a><br> Sergnese Nicola 566/2002 Pagina 119 di 228 </div> <!-- menu 7 :: Storage Elements --> <div id="menu7" style="top: 280px;" class="menu" > <a href="#">http://atlasse08.na.infn.it/</a><br> <a href="#">http://atlasse09.na.infn.it/</a><br> <a href="#">http://atlasse10.na.infn.it/</a><br> <a href="#">http://atlasse11.na.infn.it/</a><br> <a href="#">http://atlasse12.na.infn.it/</a><br> <a href="#">http://atlasse13.na.infn.it/</a><br> <a href="#">http://atlasse14.na.infn.it/</a><br> <a href="#">http://atlasse15.na.infn.it/</a><br> <a href="#">http://atlas-e4-03a.na.infn.it/</a><br> <a href="#">http://atlas-e4-03b.na.infn.it/</a><br> <a href="#">http://atlas-e4-04a.na.infn.it/</a><br> <a href="#">http://atlas-e4-04b.na.infn.it/</a><br> </div> <!-- menu 8 :: Switches --> <div id="menu8" style="top: 300px;" class="menu" > <a href="#">http://swdell-atlas01.na.infn.it/</a><br> <a href="#">http://swdell-atlas02.na.infn.it/</a><br> <a href="#">http://sw3com-atlas04.na.infn.it/</a><br> </div> <script type="text/javascript">inizializza(9);</script> </body> </html> codice pagina servizi elements storage scope apertura spoiler cmc atlas cambia solo la pagina di riferimento ….................................... <iframe src="menu_se_SC.html" width="100%" height="100%" frameborder="0"> ….................................... spoiler <html> <head> <title>Menu Dinamico a tendina</title> <link rel="stylesheet" type="text/css" href="menu.css"> <script language="javascript" src="menu.js"></script> </head> <body> <div style="top:0px; left:0px; width: 100%; height: 100%;" onMouseOver="setTimeout('chiudi()',9999999);"> </div> <div style="top:0px; left:0px; width:120;"> <table border="0" cellspacing="4"> <tr><td> L1: ATLAS Data Center </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/cmcatla" onMouseOver="apri(1)" target="_blank">CMC</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/work-nodes-ata" onMouseOver="apri(2)" target="_blank">Worker Nodes</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/storage-elements1" onMouseOver="apri(3)" target="_blank">Storage Elements</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/Switches-atlas" onMouseOver="apri(4)" target="_blank">Switches</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/servicenodeatla" onMouseOver="apri(5)" target="_blank">Service Nodes</a> </td></tr> Sergnese Nicola 566/2002 Pagina 120 di 228 <tr><td>L2: SCoPE Data Center</td></tr> <tr><td> <a href="http://localhost:8080/web/guest/cmc" onMouseOver="apri(6)" target="_blank">CMC</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/worker-node" onMouseOver="apri(7)" target="_blank">Worker Nodes</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/switches" onMouseOver="apri(8)" target="_blank">Switches</a> </td></tr> <tr><td> <a href="javascript:void(0)" onMouseOver="apri(9)" target="_blank">Service Nodes</a> </td></tr> </table> </div> <!-- menu 1 :: cmc --> <div id="menu1" style="top: 4px;" class="menu" > <a href="#">http://cmc1atlas.na.infn.it/</a><br> <a href="#">http://cmc2atlas.na.infn.it/</a><br> <a href="#">http://cmc3atlas.na.infn.it/</a><br> <a href="#">http://cmc4atlas.na.infn.it/</a><br> </div> <!-- menu 2 :: worker nodes --> <div id="menu2" style="top: 4px;" class="menu" > <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn09.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn10.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn11.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn12.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn13.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn14.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn15.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn16.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn17.na.infn.it/</a><br> </div> <!-- menu 3 :: Storage Elements --> <div id="menu3" style="top: 25px;" class="menu" > <a href="#">http://atlasse02.na.infn.it/</a><br> <a href="#">http://atlasse03.na.infn.it/</a><br> <a href="#">http://atlasse04.na.infn.it/</a><br> <a href="#">http://atlasse05.na.infn.it/</a><br> <a href="#">http://atlasse06.na.infn.it/</a><br> <a href="#">http://atlasse07.na.infn.it/</a><br> </div> <!-- menu 4 :: Switches --> <div id="menu4" style="top: 46px;" class="menu" > <a href="#">http://sw3com-atlas01.na.infn.it/</a><br> <a href="#">http://sw3com-atlas02.na.infn.it/</a><br> <a href="#">http://sw3com-atlas03.na.infn.it/</a><br> <a href="#">http://swdell-scope01.na.infn.it/</a><br> </div> <!-- menu 5 :: Services Nodes --> <div id="menu5" style="top: 67px;" class="menu" > <a href="http://localhost:8080/web/guest/service-node-ata" target="_blank">http://ipmiatlasce01.na.infn.it</a><br> </div> <!-- menu 6 :: CMC --> Sergnese Nicola 566/2002 Pagina 121 di 228 <div id="menu6" style="top: 200px;" class="menu" > <a href="#">http://172.21.0.72/(cmc22)</a><br> <a href="#">http://172.21.0.73/(cmc23)</a><br> <a href="#">http://172.21.0.74/(cmc24)</a><br> <a href="#">http://172.21.0.75/(cmc25)</a><br> <a href="http://localhost:8080/web/guest/cmc26" target="_blank">http://172.21.0.76/(cmc26)</a><br> <a href="http://localhost:8080/web/guest/altri" target="_blank">http://172.21.0.77/(cmc27)</a><br> <a href="http://localhost:8080/web/guest/altro1" target="_blank">http://172.21.0.78/(cmc28)</a><br> <a href="#">http://172.21.0.79/(cmc29)</a><br> <a href="#">http://172.21.0.80/(cmc30)</a><br> <a href="http://localhost:8080/web/guest/altr1" target="_blank">http://172.21.0.81/(cmc31)</a><br> <a href="http://localhost:8080/web/guest/prov" target="_blank">http://172.21.0.82/(cmc32)</a><br> <a href="http://localhost:8080/web/guest/2" target="_blank">http://172.21.0.83/(cmc33)</a><br> </div> <!-- menu 7 :: Worker Nodes --> <div id="menu7" style="top: 0px;" class="menu" > <a href="#">http://ipmi-atlaswn01.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn02.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn03.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn04.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn05.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn06.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn07.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn08.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn18.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn19.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn20.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn21.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn22.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn23.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn24.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn25.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn26.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn27.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn28.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn29.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn30.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn31.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn32.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn33.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn34.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn35.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn36.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn37.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn38.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn39.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn40.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn41.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn42.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn43.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn44.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn45.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn46.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn47.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn48.na.infn.it/</a><br> Sergnese Nicola 566/2002 Pagina 122 di 228 <a href="#">http://ipmi-atlaswn49.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn50.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn51.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn52.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn53.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn54.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn55.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn56.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn57.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn58.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn59.na.infn.it/</a><br> </div> <!-- menu 8 :: Switches --> <div id="menu8" style="top: 300px;" class="menu" > <a href="#">http://swdell-atlas01.na.infn.it/</a><br> <a href="#">http://swdell-atlas02.na.infn.it/</a><br> <a href="#">http://sw3com-atlas04.na.infn.it/</a><br> </div> <script type="text/javascript">inizializza(9);</script> </body> </html> codice pagina servizi service nodes atlas apertura spoiler cmc atlas cambia solo la pagina di riferimento ….................................... <iframe src="menu_ce_sn_atla.html" width="100%" height="100%" frameborder="0"> ….................................... spoiler <html> <head> <title>Menu Dinamico a tendina</title> <link rel="stylesheet" type="text/css" href="menu.css"> <script language="javascript" src="menu.js"></script> </head> <body> <div style="top:0px; left:0px; width: 100%; height: 100%;" onMouseOver="setTimeout('chiudi()',9999999);"> </div> <div style="top:0px; left:0px; width:120;"> <table border="0" cellspacing="4"> <tr><td> L1: ATLAS Data Center </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/cmcatla" onMouseOver="apri(1)" target="_blank">CMC</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/work-nodes-ata" onMouseOver="apri(2)" target="_blank">Worker Nodes</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/storage-elements1" onMouseOver="apri(3)" target="_blank">Storage Elements</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/Switches-atlas" onMouseOver="apri(4)" target="_blank">Switches</a> </td></tr> <tr><td>L2: SCoPE Data Center</td></tr> <tr><td> <a href="http://localhost:8080/web/guest/cmc" onMouseOver="apri(5)" target="_blank">CMC</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/worker-node" onMouseOver="apri(6)" Sergnese Nicola 566/2002 Pagina 123 di 228 target="_blank">Worker Nodes</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/storage-elements" onMouseOver="apri(7)" target="_blank">Storage Elements</a> </td></tr> <tr><td> <a href="http://localhost:8080/web/guest/Switches" onMouseOver="apri(8)" target="_blank">Switches</a> </td></tr> <tr><td> <a href="javascript:void(0)" onMouseOver="apri(9)" target="_blank">Service Nodes</a> </td></tr> </table> </div> <!-- menu 1 :: cmc --> <div id="menu1" style="top: 4px;" class="menu" > <a href="#">http://cmc1atlas.na.infn.it/</a><br> <a href="#">http://cmc2atlas.na.infn.it/</a><br> <a href="#">http://cmc3atlas.na.infn.it/</a><br> <a href="#">http://cmc4atlas.na.infn.it/</a><br> </div> <!-- menu 2 :: worker nodes --> <div id="menu2" style="top: 4px;" class="menu" > <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn09.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn10.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn11.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn12.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn13.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn14.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn15.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn16.na.infn.it/</a><br> <a href="http://localhost:8080/web/guest/ipmi" target="_blank">http://ipmi-atlaswn17.na.infn.it/</a><br> </div> <!-- menu 3 :: Storage Elements --> <div id="menu3" style="top: 25px;" class="menu" > <a href="#">http://atlasse02.na.infn.it/</a><br> <a href="#">http://atlasse03.na.infn.it/</a><br> <a href="#">http://atlasse04.na.infn.it/</a><br> <a href="#">http://atlasse05.na.infn.it/</a><br> <a href="#">http://atlasse06.na.infn.it/</a><br> <a href="#">http://atlasse07.na.infn.it/</a><br> </div> <!-- menu 4 :: Switches --> <div id="menu4" style="top: 46px;" class="menu" > <a href="#">http://sw3com-atlas01.na.infn.it/</a><br> <a href="#">http://sw3com-atlas02.na.infn.it/</a><br> <a href="#">http://sw3com-atlas03.na.infn.it/</a><br> <a href="#">http://swdell-scope01.na.infn.it/</a><br> </div> <!-- menu 5 :: CMC --> <div id="menu5" style="top: 200px;" class="menu" > <a href="#">http://172.21.0.72/(cmc22)</a><br> <a href="#">http://172.21.0.73/(cmc23)</a><br> <a href="#">http://172.21.0.74/(cmc24)</a><br> <a href="#">http://172.21.0.75/(cmc25)</a><br> <a href="http://localhost:8080/web/guest/cmc26" target="_blank">http://172.21.0.76/(cmc26)</a><br> <a href="http://localhost:8080/web/guest/altri" target="_blank">http://172.21.0.77/(cmc27)</a><br> <a href="http://localhost:8080/web/guest/altro1" target="_blank">http://172.21.0.78/(cmc28)</a><br> Sergnese Nicola 566/2002 Pagina 124 di 228 <a href="#">http://172.21.0.79/(cmc29)</a><br> <a href="#">http://172.21.0.80/(cmc30)</a><br> <a href="http://localhost:8080/web/guest/altr1" target="_blank">http://172.21.0.81/(cmc31)</a><br> <a href="http://localhost:8080/web/guest/prov" target="_blank">http://172.21.0.82/(cmc32)</a><br> <a href="http://localhost:8080/web/guest/2" target="_blank">http://172.21.0.83/(cmc33)</a><br> </div> <!-- menu 6 :: Worker Nodes --> <div id="menu6" style="top: 0px;" class="menu" > <a href="#">http://ipmi-atlaswn01.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn02.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn03.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn04.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn05.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn06.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn07.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn08.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn18.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn19.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn20.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn21.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn22.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn23.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn24.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn25.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn26.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn27.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn28.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn29.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn30.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn31.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn32.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn33.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn34.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn35.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn36.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn37.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn38.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn39.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn40.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn41.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn42.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn43.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn44.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn45.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn46.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn47.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn48.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn49.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn50.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn51.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn52.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn53.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn54.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn55.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn56.na.infn.it/</a><br> Sergnese Nicola 566/2002 Pagina 125 di 228 <a href="#">http://ipmi-atlaswn57.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn58.na.infn.it/</a><br> <a href="#">http://ipmi-atlaswn59.na.infn.it/</a><br> </div> <!-- menu7 :: Storage Elements --> <div id="menu7" style="top: 280px;" class="menu" > <a href="#">http://atlasse08.na.infn.it/</a><br> <a href="#">http://atlasse09.na.infn.it/</a><br> <a href="#">http://atlasse10.na.infn.it/</a><br> <a href="#">http://atlasse11.na.infn.it/</a><br> <a href="#">http://atlasse12.na.infn.it/</a><br> <a href="#">http://atlasse13.na.infn.it/</a><br> <a href="#">http://atlasse14.na.infn.it/</a><br> <a href="#">http://atlasse15.na.infn.it/</a><br> <a href="#">http://atlas-e4-03a.na.infn.it/</a><br> <a href="#">http://atlas-e4-03b.na.infn.it/</a><br> <a href="#">http://atlas-e4-04a.na.infn.it/</a><br> <a href="#">http://atlas-e4-04b.na.infn.it/</a><br> </div> <!-- menu 8 :: Switches --> <div id="menu8" style="top: 300px;" class="menu" > <a href="#">http://swdell-atlas01.na.infn.it/</a><br> <a href="#">http://swdell-atlas02.na.infn.it/</a><br> <a href="#">http://sw3com-atlas04.na.infn.it/</a><br> </div> <script type="text/javascript">inizializza(9);</script> </body> </html> codice pagina servizi service nodes scope non presente perché non ci sono service nodes al momento su scope 7.3 codice pagina asus <html><head> <script> readCk = function(name) { var nameEQ = name + "="; var ca = top.document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } var lang = readCk('lang'); top.gLangSettingSet = false; if(lang) Sergnese Nicola 566/2002 Pagina 126 di 228 top.gLangSetting = lang; else top.gLangSetting = "EN"; top.gLangSettingSet=true; </script> <link href="login_files/login.css" rel="stylesheet" type="text/css"> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script src="login_files/ui.js"></script><script type="text/javascript" src="login_files/xmit.js"></script> <script type="text/javascript" src="login_files/eLang.js"></script> <script type="text/javascript" src="login_files/eExt.js"></script> <script src="login_files/eLang.js"></script> <script> document.write("<script language = \"Javascript\", src = \"../str/" + top.gLangSetting + "/global_str.js\"><\/script>"); document.write("<script language = \"Javascript\", src = \"../str/" + top.gLangSetting + "/login_str.js\"><\/script>"); </script><script language="Javascript" ,="" src="login_files/global_str.js"></script><script language="Javascript" ,="" src="login_files/common_str.js"></script><script language="Javascript" ,="" src="login_files/bios_post_event_str.js"></script><script language="Javascript" ,="" src="login_files/chassistype_str.js"></script><script language="Javascript" ,="" src="login_files/err_str.js"></script><script language="Javascript" ,="" src="login_files/noreading_str.js"></script><script language="Javascript" ,="" src="login_files/sensor_specific_event_str.js"></script><script language="Javascript" ,="" src="login_files/sensortype_str.js"></script><script language="Javascript" ,="" src="login_files/sys_str.js"></script><script language="Javascript" ,="" src="login_files/threshstate_str.js"></script><script language="Javascript" ,="" src="login_files/tz_str.js"></script><script language="Javascript" ,="" src="login_files/unittype_str.js"></script><script language="Javascript" ,="" src="login_files/event_str.js"></script><script language="Javascript" ,="" src="login_files/login_str.js"></script> <script src="login_files/login_imp.js"></script> <script> onload = function() { if (top.gLangSettingSet == true) { doInit(); } } </script> </head><body> <table style="margin: 0px; padding: 0px;" border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody><tr> <td id="headerleft" width="412"><img src="login_files/banner_left.asc" alt="" height="63" width="412"></td> <td id="headermiddle"> <img src="login_files/banner_background.asc" alt="" border="0" height="63" width="100%"></td> <td id="headerright" width="407"><img src="login_files/banner_right.asc" alt="" height="63" width="407"></td> </tr> </tbody></table> Sergnese Nicola 566/2002 Pagina 127 di 228 <p> </p> <div align="center"> <div class="shadow"> <h3> <script>document.writeln(eLang.getString("login", "STR_LOGIN_PLS_LOGIN"));</script>Please Login </h3> <div class="loginBox"> <div class="lbFields"> <form action="javascript://"> <p id="msglbl">Please log in to access the device.</p> <label style="width: 85px; text-align: left;"> <script>document.writeln(eLang.getString("login", "STR_LOGIN_USERNAME"));</script>Username </label><input id="login_username" name="T1" size="20" style="width: 146px;" tabindex="1" type="text"><br><br> <label style="width: 85px; text-align: left;"> <script>document.writeln(eLang.getString("login", "STR_LOGIN_PASSWORD"));</script>Password </label><input id="login_password" name="T2" size="20" style="width: 146px;" tabindex="2" type="password"><br><br> <input value="Login" class="button" name="Login" onclick="DoLogin();" type="submit"> </form> </div> </div> </div> </div> </body></html> script bios_post_event_str.js /*********************************BIOS POST EVENT STRINGS***********************************/ eLang.bios_post_event_strings = new Array(); eLang.bios_post_event_strings[0] = new Array(); eLang.bios_post_event_strings[1] = new Array(); eLang.bios_post_event_strings[2] = eLang.bios_post_event_strings[1]; eLang.bios_post_event_strings[0][0] = "Unspecified." eLang.bios_post_event_strings[0][1] = "No system memory is physically installed in the system." eLang.bios_post_event_strings[0][2] = "No usable system memory, all installed memory has experienced an unrecoverable failure." eLang.bios_post_event_strings[0][3] = "Unrecoverable hard-disk/ATAPI/IDE device failure." eLang.bios_post_event_strings[0][4] = "Unrecoverable system-board failure." eLang.bios_post_event_strings[0][5] = "Unrecoverable diskette subsystem failure." eLang.bios_post_event_strings[0][6] = "Unrecoverable hard-disk controller failure." eLang.bios_post_event_strings[0][7] = "Unrecoverable PS/2 or USB keyboard failure." eLang.bios_post_event_strings[0][8] = "Removable boot media not found." eLang.bios_post_event_strings[0][9] = "Unrecoverable video controller failure." eLang.bios_post_event_strings[0][10] = "No video device detected." eLang.bios_post_event_strings[0][11] = "Firmware (BIOS) ROM corruption detected." eLang.bios_post_event_strings[0][12] = "CPU voltage mismatch (processors that share same supply have mismatched voltage requirements)." eLang.bios_post_event_strings[0][13] = "CPU speed matching failure." Sergnese Nicola 566/2002 Pagina 128 di 228 eLang.bios_post_event_strings[1][1] = "Unspecified." eLang.bios_post_event_strings[1][2] = "Memory initialization." eLang.bios_post_event_strings[1][3] = "Hard-disk initialization." eLang.bios_post_event_strings[1][4] = "Secondary processor(s) initialization." eLang.bios_post_event_strings[1][5] = "User authentication." eLang.bios_post_event_strings[1][6] = "User-initiated system setup." eLang.bios_post_event_strings[1][7] = "USB resource configuration." eLang.bios_post_event_strings[1][8] = "PCI resource configuration." eLang.bios_post_event_strings[1][9] = "Option ROM initialization." eLang.bios_post_event_strings[1][10] = "Video initialization." eLang.bios_post_event_strings[1][11] = "Cache initialization." eLang.bios_post_event_strings[1][12] = "SM Bus initialization." eLang.bios_post_event_strings[1][13] = "Keyboard controller initialization." eLang.bios_post_event_strings[1][14] = "Embedded controller/management controller initialization." eLang.bios_post_event_strings[1][15] = "Docking station attachment." eLang.bios_post_event_strings[1][16] = "Enabling docking station." eLang.bios_post_event_strings[1][17] = "Docking station ejection." eLang.bios_post_event_strings[1][18] = "Disabling docking station." eLang.bios_post_event_strings[1][19] = "Calling operating system wake-up vector." eLang.bios_post_event_strings[1][20] = "Starting operating system boot process." eLang.bios_post_event_strings[1][21] = "Baseboard or motherboard initialization." eLang.bios_post_event_strings[1][22] = "reserved." eLang.bios_post_event_strings[1][23] = "Floppy initialization." eLang.bios_post_event_strings[1][24] = "Keyboard test." eLang.bios_post_event_strings[1][25] = "Pointing device test." eLang.bios_post_event_strings[1][26] = "Primary processor initialization." / ****************************************************************************************** */ codice chassistype_str.js eLang.chassistype_strings={}; /* Chassis Type strings */ eLang.chassistype_strings[0] = "Unknown"; eLang.chassistype_strings[1] = "Other"; eLang.chassistype_strings[2] = "Unknown"; eLang.chassistype_strings[3] = "Desktop"; eLang.chassistype_strings[4] = "Low Profile Desktop"; eLang.chassistype_strings[5] = "Pizza Box"; eLang.chassistype_strings[6] = "Mini Tower"; eLang.chassistype_strings[7] = "Tower"; eLang.chassistype_strings[8] = "Portable"; eLang.chassistype_strings[9] = "LapTop"; eLang.chassistype_strings[10] = "Notebook"; eLang.chassistype_strings[11] = "Hand Held"; eLang.chassistype_strings[12] = "Docking Station"; eLang.chassistype_strings[13] = "All in One"; eLang.chassistype_strings[14] = "Sub Notebook"; eLang.chassistype_strings[15] = "Space-saving"; eLang.chassistype_strings[16] = "Lunch Box"; eLang.chassistype_strings[17] = "Main Server Chassis"; eLang.chassistype_strings[18] = "Expansion Chassis"; eLang.chassistype_strings[19] = "SubChassis"; eLang.chassistype_strings[20] = "Bus Expansion Chassis"; eLang.chassistype_strings[21] = "Peripheral Chassis"; eLang.chassistype_strings[22] = "RAID Chassis"; Sergnese Nicola 566/2002 Pagina 129 di 228 eLang.chassistype_strings[23] = "Rack Mount Chassis"; codice common_str.js eLang.common_strings = {}; eLang.common_strings["STR_APP_STR_100"] ="You need to have administrator privileges to modify LDAP settings."; eLang.common_strings["STR_APP_STR_101"] ="Error retreiving information : "; eLang.common_strings["STR_APP_STR_102"] ="Could not get LDAP settings"; eLang.common_strings["STR_APP_STR_103"] ="The requested LDAP configuration has been successfully set."; eLang.common_strings["STR_APP_STR_104"] ="Invalid Port Number"; eLang.common_strings["STR_APP_STR_105"] ="Invalid IP Address"; eLang.common_strings["STR_APP_STR_106"] ="Password should be atleast 4 characters"; eLang.common_strings["STR_APP_STR_107"] ="Password length can not exceed 32 characters"; eLang.common_strings["STR_APP_STR_108"] ="Invalid Bind DN field"; eLang.common_strings["STR_APP_STR_109"] ="Invalid Search base"; eLang.common_strings["STR_APP_STR_110"] ="You need to have administrator privileges to configure alerts."; eLang.common_strings["STR_APP_STR_111"] ="Disable All"; eLang.common_strings["STR_APP_STR_112"] ="Information and Above"; eLang.common_strings["STR_APP_STR_113"] ="Warning and Above"; eLang.common_strings["STR_APP_STR_114"] ="Critical And Above"; eLang.common_strings["STR_APP_STR_115"] ="Non-recoverable and above"; eLang.common_strings["STR_APP_STR_116"] ="Unknown level"; eLang.common_strings["STR_APP_STR_117"] ="Not Configured"; eLang.common_strings["STR_APP_STR_118"] ="Alert Table: "; eLang.common_strings["STR_APP_STR_119"] =" entries"; eLang.common_strings["STR_APP_STR_120"] ="<b>Alert #</b>"; eLang.common_strings["STR_APP_STR_121"] ="<b>Alert Level</b>"; eLang.common_strings["STR_APP_STR_122"] ="<b>Destination Address</b>"; eLang.common_strings["STR_APP_STR_123"] ="A test alert has been sent to the destination. Please check to see if you received the alert"; eLang.common_strings["STR_APP_STR_124"] ="Please select an entry to which you want to send a test alert"; eLang.common_strings["STR_APP_STR_125"] ="Please select an entry"; eLang.common_strings["STR_APP_STR_125_ALERT"] ="Are you sure to delete this entry?"; eLang.common_strings["STR_APP_STR_125_DELETED"] = "Entry deleted successfully"; eLang.common_strings["STR_APP_STR_125_WARN"] = "Selected slot is not configured"; eLang.common_strings["STR_APP_STR_126"] ="Alert entry has been modified successfully."; eLang.common_strings["STR_APP_STR_127"] ="Please enter a valid destination address."; eLang.common_strings["STR_APP_STR_128"] ="Please enter a valid Email address."; eLang.common_strings["STR_APP_STR_129"] ="Disable All"; eLang.common_strings["STR_APP_STR_130"] ="Informational"; eLang.common_strings["STR_APP_STR_131"] ="Warning"; eLang.common_strings["STR_APP_STR_132"] ="Critical"; eLang.common_strings["STR_APP_STR_133"] ="Non-recoverable"; eLang.common_strings["STR_APP_STR_134"] ="SNMP Trap"; eLang.common_strings["STR_APP_STR_135"] ="Email"; eLang.common_strings["STR_APP_STR_136"] ="Closes this window"; eLang.common_strings["STR_APP_STR_137"] ="You need to have administrator privileges to modify network configuration."; eLang.common_strings["STR_APP_STR_138"] ="Could not get network settings"; eLang.common_strings["STR_APP_STR_139"] ="The requested Network configuration parameters have been successfully set."; Sergnese Nicola 566/2002 Pagina 130 di 228 eLang.common_strings["STR_APP_STR_140"] ="Unable to set the supplied network parameters "; eLang.common_strings["STR_APP_STR_141"] ="Please check the following field(s) for wrong entry."; eLang.common_strings["STR_APP_STR_142"] ="This function may change the IP address of the device, and you may lose connectivity in this browser session. Please reconnect using a new browser session after applying the changes. Do you want to proceed?"; eLang.common_strings["STR_APP_STR_143"] ="IP Address"; eLang.common_strings["STR_APP_STR_144"] ="Subnet Mask"; eLang.common_strings["STR_APP_STR_145"] ="Gateway"; eLang.common_strings["STR_APP_STR_146"] ="<b>Chassis Information:</b>"; eLang.common_strings["STR_APP_STR_147"] ="Type"; eLang.common_strings["STR_APP_STR_148"] ="Part Number"; eLang.common_strings["STR_APP_STR_149"] ="Serial Number"; eLang.common_strings["STR_APP_STR_150"] ="<b>Board Information:</b>"; eLang.common_strings["STR_APP_STR_151"] ="Manufacturer"; eLang.common_strings["STR_APP_STR_152"] ="Product Name"; eLang.common_strings["STR_APP_STR_153"] ="Serial Number"; eLang.common_strings["STR_APP_STR_154"] ="Part Number"; eLang.common_strings["STR_APP_STR_155"] ="FRU File ID"; eLang.common_strings["STR_APP_STR_156"] ="<b>Product Information:</b>"; eLang.common_strings["STR_APP_STR_157"] ="Manufacturer Name"; eLang.common_strings["STR_APP_STR_158"] ="Product Name"; eLang.common_strings["STR_APP_STR_159"] ="Serial Number"; eLang.common_strings["STR_APP_STR_160"] ="Version"; eLang.common_strings["STR_APP_STR_161"] ="Part Number"; eLang.common_strings["STR_APP_STR_162"] ="FRU File ID"; eLang.common_strings["STR_APP_STR_163"] ="Asset Tag"; eLang.common_strings["STR_APP_STR_164"] ="Error modifying LDAP cfg:"; eLang.common_strings["STR_APP_STR_164_nw"] ="Error modifying network cfg:"; eLang.common_strings["STR_APP_STR_165"] ="Hide Thresholds"; eLang.common_strings["STR_APP_STR_166"] ="Show Thresholds"; eLang.common_strings["STR_APP_STR_167"] ="Not Available"; eLang.common_strings["STR_APP_STR_168"] ="Sensor Readings: "; eLang.common_strings["STR_APP_STR_169"] =" sensors"; eLang.common_strings["STR_APP_STR_170"] ="The BMC seems to be taking too long to respond. Please check cables and configuration"; eLang.common_strings["STR_APP_STR_171"] ="<b>Name</b>"; eLang.common_strings["STR_APP_STR_172"] ="<b>Status</b>"; eLang.common_strings["STR_APP_STR_173"] ="<b>Reading</b>"; eLang.common_strings["STR_APP_STR_174"] ="<b>Low NR</b>"; eLang.common_strings["STR_APP_STR_175"] ="<b>Low CT</b>"; eLang.common_strings["STR_APP_STR_176"] ="<b>Low NC</b>"; eLang.common_strings["STR_APP_STR_177"] ="<b>High NC</b>"; eLang.common_strings["STR_APP_STR_178"] ="<b>High CT</b>"; eLang.common_strings["STR_APP_STR_179"] ="<b>High NR</b>"; eLang.common_strings["STR_APP_STR_180"] ="All Sensors"; eLang.common_strings["STR_APP_STR_181"] ="Temperature Sensors"; eLang.common_strings["STR_APP_STR_CURR"] ="Current Sensors"; eLang.common_strings["STR_APP_STR_182"] ="Voltage Sensors"; eLang.common_strings["STR_APP_STR_183"] ="Fan Sensors"; eLang.common_strings["STR_APP_PSY_SEC"] ="Physical Security"; eLang.common_strings["STR_APP_STR_184"] ="You need to have administrator privileges to clear the system event log."; eLang.common_strings["STR_APP_STR_185"] ="Unknown"; eLang.common_strings["STR_APP_STR_186"] ="Asserted"; eLang.common_strings["STR_APP_STR_187"] ="Deasserted"; eLang.common_strings["STR_APP_STR_188"] ="Event Log: "; Sergnese Nicola 566/2002 Pagina 131 di 228 eLang.common_strings["STR_APP_STR_189"] =" event entries"; eLang.common_strings["STR_APP_STR_190"] ="<b>Event ID</b>"; eLang.common_strings["STR_APP_STR_191"] ="<b>Time Stamp</b>"; eLang.common_strings["STR_APP_STR_192"] ="<b>Sensor Name</b>"; eLang.common_strings["STR_APP_STR_193"] ="<b>Sensor Type</b>"; eLang.common_strings["STR_APP_STR_194"] ="<b>Description</b>"; eLang.common_strings["STR_APP_STR_195"] ="Sensor-Specific Events"; eLang.common_strings["STR_APP_STR_196"] ="BIOS Generated Events"; eLang.common_strings["STR_APP_STR_197"] ="System Management Software Events"; eLang.common_strings["STR_APP_STR_198"] ="Sensor Event Log has been cleared"; eLang.common_strings["STR_APP_STR_199"] ="This will clear all the events in the log. Are you sure to proceed?"; eLang.common_strings["STR_APP_STR_200"] ="Error receiving curent status of host"; eLang.common_strings["STR_APP_STR_201"] ="Retrying...please wait. Retries Left : "; eLang.common_strings["STR_APP_STR_202"] ="Performing soft power off failed. This may be because the host OS is taking an unusually long time to gracefully shut down. If you think this is not the case please check "; eLang.common_strings["STR_APP_STR_203"] ="Performing power action failed. Please check "; eLang.common_strings["STR_APP_STR_204"] ="Host is currently off"; eLang.common_strings["STR_APP_STR_205"] ="Host is currently on"; eLang.common_strings["STR_APP_STR_206"] ="Error receiving response for power action"; eLang.common_strings["STR_APP_STR_207"] ="Performing Power Action..Please Wait"; eLang.common_strings["STR_APP_STR_208"] ="You need to have administrator privileges to perform power control operations."; eLang.common_strings["STR_APP_STR_209"] ="Are you sure to change the slave address of the external BMC?"; eLang.common_strings["STR_APP_STR_210"] ="Are you sure to upload new PMCP files to the device? PMCP files already seem to exist on the device."; eLang.common_strings["STR_APP_STR_211"] ="Are you sure to directly monitor sensors on the I2C bus? Note that you will be required to upload new PMCP files. You will be guided through this process"; eLang.common_strings["STR_APP_STR_212"] ="Are you sure the SP to monitor sensors by communicating to an external BMC? Note that an external BMC must be connected to the via the IPMB bus."; eLang.common_strings["STR_APP_STR_213"] ="Current Mode is - Direct Monitoring on I2C bus."; eLang.common_strings["STR_APP_STR_214"] ="Upload PMCP Files"; eLang.common_strings["STR_APP_STR_215"] ="Current Mode is - External BMC monitoring."; eLang.common_strings["STR_APP_STR_216"] ="You need to have administrator privileges to modify monitoring modes"; eLang.common_strings["STR_APP_STR_217"] ="You need to have administrator privileges to modify SMTP settings."; eLang.common_strings["STR_APP_STR_218"] ="SMTP Server configuration has been modified."; eLang.common_strings["STR_APP_STR_219"] ="Please enter a valid IP Address"; eLang.common_strings["STR_APP_STR_220"] ="Error retreiving Firmware build date and time : "; eLang.common_strings["STR_APP_STR_221"] ="Firmware Revision : "; eLang.common_strings["STR_APP_STR_222"] ="IPMI Version : "; eLang.common_strings["STR_APP_STR_223"] =" Build Time : "; eLang.common_strings["STR_APP_STR_224"] ="Are you sure to enter update mode? You will not be able to perform any other tasks until firmware upgrade is complete and the device is rebooted."; eLang.common_strings["STR_APP_STR_225"] ="You need to be an administrator to perform firmware upgrade:"; eLang.common_strings["STR_APP_STR_226"] ="You need to have administrator privileges to upgrade the firmware."; eLang.common_strings["STR_APP_STR_227"] ="Please enter a valid image file"; eLang.common_strings["STR_APP_STR_228"] ="Uploading image...Please wait. This may take a while!"; eLang.common_strings["STR_APP_STR_229"] ="Are you sure to abort the firmware upgrade process? The device will have to be reset in order to go back to normal operating mode"; eLang.common_strings["STR_APP_STR_230"] ="Firmware Upgrade has been completed.<br><br><br>The Sergnese Nicola 566/2002 Pagina 132 di 228 device has been reset.<br><br>Please wait 1 minute after updating firmware, and then reboot system.<br> Please close and reconnect to the device using a new browser session.<br>"; eLang.common_strings["STR_APP_STR_231"] ="<b>Firmware</b>"; eLang.common_strings["STR_APP_STR_232"] ="<b>Action</b>"; eLang.common_strings["STR_APP_STR_233"] ="<b>Progress</b>"; eLang.common_strings["STR_APP_STR_234"] ="<b>ModuleName</b>"; eLang.common_strings["STR_APP_STR_235"] ="<b>Existing Version</b>"; eLang.common_strings["STR_APP_STR_236"] ="<b>New Version</b>"; eLang.common_strings["STR_APP_STR_237"] ="The device will have to be reset to go back to normal operating mode, if you cancel at this stage. Are you sure to cancel upgrade?"; eLang.common_strings["STR_APP_STR_238"] ="Image Verification did not succeed. Please check if you uploaded the correct Image. In order to try upgrading again you need to reset the device. Press OK to reset the device now."; eLang.common_strings["STR_APP_STR_239"] ="The firmware image has been verified. The uploaded image is a differnt version of the existing device firmware."; eLang.common_strings["STR_APP_STR_240"] ="The firmware image has been verified. The uploaded image size is different from the existing device firmware."; eLang.common_strings["STR_APP_STR_241"] ="The firmware image has been verified. The uploaded image appears to be the same as the existing device firmware."; eLang.common_strings["STR_APP_STR_242"] ="New firmware image size is different from the existing firmware image size. 'Configuration' can not be preserved in this situation. Do you want to continue?"; eLang.common_strings["STR_APP_STR_243"] ="Clicking on the OK Button, will start the actual upgrade operation, where, the storage is written with the new firmware image. It is essential that the upgrade operation is not interrupted once it starts. Proceed?"; eLang.common_strings["STR_APP_STR_244"] ="You need to have administrator privileges to modify mouse mode."; eLang.common_strings["STR_APP_STR_245"] ="Error in finding the current status of host"; eLang.common_strings["STR_APP_STR_246"] ="Current Mouse Mode is ABSOLUTE."; eLang.common_strings["STR_APP_STR_247"] ="Current Mouse Mode is RELATIVE."; eLang.common_strings["STR_APP_STR_248"] ="Unknown Mouse Mode"; eLang.common_strings["STR_APP_STR_249"] ="Are you sure to change the mouse mode? You will have to close any currently open redirection console and reopen to see the change effect."; eLang.common_strings["STR_APP_STR_250"] ="Error in setting Mouse Mode"; eLang.common_strings["STR_APP_STR_251"] ="You need to have administrator privileges to start redirection."; eLang.common_strings["STR_APP_STR_252"] ="Please choose the viewer you want to use. Java is recommended. You can use the ActiveX viewer only on a Windows platform if you are using Internet Explorer."; eLang.common_strings["STR_APP_STR_253"] ="RemoteConsole"; eLang.common_strings["STR_APP_STR_254"] ="Error retreiving serial port information : "; eLang.common_strings["STR_APP_STR_255"] ="Could not get serial port settings"; eLang.common_strings["STR_APP_STR_256"] ="Error setting serial port information : "; eLang.common_strings["STR_APP_STR_257"] ="Serial port information successfully set"; eLang.common_strings["STR_APP_STR_258"] ="15 minutes"; eLang.common_strings["STR_APP_STR_259"] ="30 minutes"; eLang.common_strings["STR_APP_STR_260"] ="1 hour"; eLang.common_strings["STR_APP_STR_261"] ="3 hours"; eLang.common_strings["STR_APP_STR_262"] ="Your session inactivity timeout has been set to "; eLang.common_strings["STR_APP_STR_263"] ="An IPMI error 0x"; eLang.common_strings["STR_APP_STR_264"] =" has occurred: "; eLang.common_strings["STR_APP_STR_265"] ="Error establishing IPMI Session : "; eLang.common_strings["STR_APP_STR_266"] ="Your session has been timed out due to inactivity. You may have to close all browser sessions and relogin again"; eLang.common_strings["STR_APP_STR_267"] ="You need to have administrator privileges to upload SSL certificates."; eLang.common_strings["STR_APP_STR_268"] ="New Private Key"; eLang.common_strings["STR_APP_STR_269"] ="New SSL Certificate"; Sergnese Nicola 566/2002 Pagina 133 di 228 eLang.common_strings["STR_APP_STR_270"] ="Default Certificate"; eLang.common_strings["STR_APP_STR_271"] ="Not Available"; eLang.common_strings["STR_APP_STR_272"] ="Default private key"; //ELang.common_strings["STR_APP_STR_273"] ="Not Available"; eLang.common_strings["STR_APP_STR_274"] ="Please select a valid soft processor configuration file."; eLang.common_strings["STR_APP_STR_275"] ="In order to use the new PMCP files and monitor sensors the device will have to be reset. Are you sure to do this?"; eLang.common_strings["STR_APP_STR_276"] ="The SDR data file you uploaded does not seem to be valid. Please upload a different file"; eLang.common_strings["STR_APP_STR_277"] ="Direct Monitoring Configuration. <br> Step 1 of 3 - Upload Soft Processor Config file"; eLang.common_strings["STR_APP_STR_278"] ="You will need to upload the Soft Processor Configuration file for your server platform. This file usually has an extension of .bin and contains configuration that will help the understand how to access sensors on the I2C bus.Click browse to look for the file and then click Upload"; eLang.common_strings["STR_APP_STR_279"] ="Direct Monitoring Configuration. <br> Step 2 of 3 - Upload SDR data file"; eLang.common_strings["STR_APP_STR_280"] ="You will need to upload the SDR data file for your server platform.It usually has an extension of .dat and contains a repository of sensor information that will help the understand which sensors to monitor on the I2C bus.Click browse to look for the file and then click Upload"; eLang.common_strings["STR_APP_STR_281"] ="Direct Monitoring Configuration. <br> Step 3 of 3 - Finalise Configuration"; eLang.common_strings["STR_APP_STR_282"] ="You have successfully uploaded the neccessary information.Click finalize to use this configuration.When you click finalise the device will be reset for the new monitoring options to take effect."; eLang.common_strings["STR_APP_STR_283"] ="Administrator"; eLang.common_strings["STR_APP_STR_284"] ="Operator"; eLang.common_strings["STR_APP_STR_285"] ="No Access"; eLang.common_strings["STR_APP_STR_286"] ="User was added succesfully!"; eLang.common_strings["STR_APP_STR_287"] ="You need to have administrator privileges to modify users."; eLang.common_strings["STR_APP_STR_288"] ="Modified user succesfully"; eLang.common_strings["STR_APP_STR_289"] ="You need to have administrator privileges to add/modify/delete users."; eLang.common_strings["STR_APP_STR_290"] ="Please select a user to modify"; eLang.common_strings["STR_APP_STR_291"] ="This slot is currently empty. Would you like to add a new user?"; eLang.common_strings["STR_APP_STR_292"] ="Please select an empty user slot in which to add an user"; eLang.common_strings["STR_APP_STR_293"] ="This slot has already been configured with an user. Would you like to modify that user instead?"; eLang.common_strings["STR_APP_STR_294"] ="Please select a user to delete"; eLang.common_strings["STR_APP_STR_295"] ="This user is a fixed user and cannot be deleted. You can modify permissions or change the password for this user"; eLang.common_strings["STR_APP_STR_296"] ="There is no user configured at the slot you selected. Please select a different user"; eLang.common_strings["STR_APP_STR_297"] ="Are you sure to delete this user?"; eLang.common_strings["STR_APP_STR_298"] ="User has been deleted"; eLang.common_strings["STR_APP_STR_299"] ="Please enter a Private key file"; eLang.common_strings["STR_APP_STR_300"] ="Private key file name should end with .pem"; eLang.common_strings["STR_APP_STR_301"] ="SSL Certificate is encrypted. Please upload unencrypted certificate."; eLang.common_strings["STR_APP_STR_302"] ="The Certificate and Key were uploaded successfully. The device needs to be reset for the new certificate to be effective. Click 'OK' if you want to reset the device now. If you Click 'OK', you will have to reconnect to the device with a new browser session. Click 'Cancel' if you want to reset the device later."; eLang.common_strings["STR_APP_STR_303"] ="SSL certificate validation failed.Please try to upload the certificate and key again."; eLang.common_strings["STR_APP_STR_304"] ="SSL certificate validation failed.Please try to upload the Sergnese Nicola 566/2002 Pagina 134 di 228 certificate and key again."; eLang.common_strings["STR_APP_STR_305"] ="Please select a SSL Certificate file"; eLang.common_strings["STR_APP_STR_306"] ="Certificate file should end with .pem"; eLang.common_strings["STR_APP_STR_307"] ="A SSL Certificate already exists. Loading a new SSL certificate will replace the existing certificate.\nDo you want to continue?"; eLang.common_strings["STR_APP_STR_308"] ="User supplied SSL Certificate"; eLang.common_strings["STR_APP_STR_309"] ="User supplied private key"; eLang.common_strings["STR_APP_STR_310"] ="Selected user can not be deleted at this time"; eLang.common_strings["STR_APP_STR_311"] ="The changes were applied successfully."; eLang.common_strings["STR_APP_STR_312"] ="Are you sure to apply these changes?"; eLang.common_strings["STR_APP_STR_400"] ="This function may change the IP address of the device, and you may lose connectivity in this browser session.\nPlease reconnect using a new browser session after applying the changes.\nDo you want to proceed?"; eLang.common_strings["STR_APP_STR_401"] ="There are valid PMCP files already present on the device. If you want to upload new PMCP files click on the Upload PMCP Files button.If you want to change the mode instead to monitor via external BMC, click the Change Mode button"; eLang.common_strings["STR_APP_STR_311"] ="You will need to upload PMCP files for this monitoring option to work effectively.Please click on the Upload PMCP Files button.If you want to change the mode instead to monitor via external BMC, click the Change Mode button"; eLang.common_strings["STR_APP_STR_312"] ="hidden"; eLang.common_strings["STR_APP_STR_313"] ="Current Mode is - External BMC monitoring."; eLang.common_strings["STR_APP_STR_314"] ="The feature connector cables."; eLang.common_strings["STR_APP_STR_315"] ="You need to have administrator privileges to perform this Action"; eLang.common_strings["STR_CONFIG_USER_GETINFO"] ="Get user information failed"; eLang.common_strings["STR_CONFIG_USER_DELINFO"] ="Delete user failed"; eLang.common_strings["STR_IPMI_ERROR"] ="IPMI command failed : "; eLang.common_strings["STR_APP_STR_316"] ="<b>Sensor Number</b>"; eLang.common_strings["STR_APP_STR_321"] ="Please select a slot in the Role Group list"; eLang.common_strings["STR_APP_STR_322"] ="You need to have administrator privileges to add/modify/delete role groups."; eLang.common_strings["STR_APP_STR_323"] ="This slot has already been configured with a role group. Would you like to modify that role group instead?"; eLang.common_strings["STR_APP_STR_324"] ="This slot is currently empty. Would you like to add a new role group?"; eLang.common_strings["STR_APP_STR_325"] ="There is no role group configured in the slot you selected. Please select a different role group"; eLang.common_strings["STR_APP_STR_326"] ="Are you sure to delete this Role group?"; eLang.common_strings["STR_APP_STR_327"] ="Role Group has been deleted"; eLang.common_strings["STR_APP_STR_328"] ="Role Group was added succesfully!"; eLang.common_strings["STR_APP_STR_328a"] ="Role Group Name already exists with this Role Group Domain"; eLang.common_strings["STR_APP_STR_329"] ="Modified Role Group succesfully!"; eLang.common_strings["STR_APP_STR_330"] ="You need to have administrator privileges to modify Active Directory settings."; eLang.common_strings["STR_APP_STR_331"] ="Active Directory configuration has been successfully set"; eLang.common_strings["STR_APP_STR_332"] ="Invalid User Domain Name!"; eLang.common_strings["STR_APP_STR_333"] ="Invalid Time Out!"; eLang.common_strings["STR_APP_STR_334"] ="Invalid Domain Controller Server Address1"; eLang.common_strings["STR_APP_STR_335"] ="Invalid Domain Controller Server Address2"; eLang.common_strings["STR_APP_STR_336"] ="Invalid Domain Controller Server Address3"; Sergnese Nicola 566/2002 Pagina 135 di 228 eLang.common_strings["STR_APP_STR_337"] ="Enter atleast one Domain controller server address"; eLang.common_strings["STR_APP_STR_338"] ="Default Active Directory Certificate"; eLang.common_strings["STR_APP_STR_339"] ="Current Active Directory Certificate"; eLang.common_strings["STR_APP_STR_340"] ="An Active Directory Certificate already exists. Loading a new Active Directory certificate will replace the existing certificate.\nDo you want to continue?"; eLang.common_strings["STR_APP_STR_HELP"] =" Refer Help for more Information."; eLang.common_strings["STR_APP_NW_SETTING"] ="Couldnt not get network settings"; eLang.common_strings["STR_APP_IP_ADDR"] ="IPAddrSource"; eLang.common_strings["STR_APP_IP"] ="IP"; eLang.common_strings["STR_APP_MASK"] ="Mask"; eLang.common_strings["STR_APP_STR_HOUR"] ="Hour must be number type"; eLang.common_strings["STR_APP_STR_MIN"] ="Minutes must be number type"; eLang.common_strings["STR_APP_STR_SEC"] ="Seconds must be number type"; eLang.common_strings["STR_APP_STR_PAGE"] ="Page not found"; eLang.common_strings["STR_APP_STR_CHANGE"] ="The Changes were applied succesfully"; eLang.common_strings["STR_APP_APPY_CHANGE"] ="Are you sure you want to apply these changes?"; eLang.common_strings["STR_APP_PWR_CTRL"] ="Your external BMC configuration for power control"; eLang.common_strings["STR_APP_SDR_FLE"] ="Please select a valid SDR data file."; eLang.common_strings["STR_APP_SOFT_PROS"] ="The softprocessor configuration file you uploaded does not seem to be valid. Please upload a different file"; eLang.common_strings["STR_APP_STR_409"] ="The SDR data file you uploaded does not seem to be valid. Please upload a different file"; eLang.common_strings["STR_APP_STR_410"] ="User supplied SSL Certificate"; eLang.common_strings["STR_APP_STR_411"] ="User supplied private key"; eLang.common_strings["STR_APP_PWD_CON"] ="Password must be atleast 8 character long"; eLang.common_strings["STR_APP_STR_REBOOTMESSAGE"] = "In order to apply changes, the device needs to be rebooted. Reboot now?"; //--------------------------------------------------//--------------------------------------------------eLang.common_strings['STR_UPLD_SPF_STEP1'] = "Step 1 of 3 - Upload Soft Processor Config file"; eLang.common_strings['STR_UPLD_SPF_STEP2'] = "Step 2 of 3 - Upload SDR data file"; eLang.common_strings['STR_UPLD_SPF_STEP3'] = "Step 3 of 3 - Finalise Configuration"; eLang.common_strings['STR_UPLD_SPF_STEP1VAL'] = "You will need to upload the Soft Processor Configuration file for your server platform. This file usually has an extension of .so and contains configuration that will help the understand how to access sensors on the I2C bus.Click browse to look for the file and then click Upload"; eLang.common_strings['STR_UPLD_SPF_STEP2VAL'] = "You will need to upload the SDR data file for your server platform.It usually has an extension of .dat and contains a repository of sensor information that will help the understand which sensors to monitor on the I2C bus.Click browse to look for the file and then click Upload"; eLang.common_strings['STR_UPLD_SPF_STEP3VAL'] = "You have successfully uploaded the neccessary information.Click finalize to use this configuration.When you click finalise the device will be reset for the new monitoring options to take effect."; eLang.common_strings["STR_FW_VER_MDLNAM"] = "<b>ModuleName</b>"; eLang.common_strings["STR_FW_VER_EXT_VER"] = "<b>Existing Version</b>"; eLang.common_strings["STR_FW_VER_NEW_VER"] = "<b>New Version</b>"; eLang.common_strings["STR_FLSH_STAT_FW"] = "<b>Firmware</b>"; eLang.common_strings["STR_FLSH_STAT_ACT"] = "<b>Action</b>"; eLang.common_strings["STR_FLSH_STAT_PROG"] = "<b>Progress</b>"; Sergnese Nicola 566/2002 Pagina 136 di 228 eLang.common_strings["STR_ALERT_MOD_ERRIP"] = "Invalid IP Address format"; eLang.common_strings["STR_ALERT_MOD_ERRENG"] = "Are you sure to skip Engine ID?"; eLang.common_strings["STR_ALERT_MOD_ERREMAIL"] = "Invalid Email address format"; eLang.common_strings["STR_ALERT_MOD_DISABLE"] = "Disable All"; eLang.common_strings["STR_ALERT_MOD_INFO"] = "Informational"; eLang.common_strings["STR_ALERT_MOD_WARN"] = "Warning"; eLang.common_strings["STR_ALERT_MOD_CRITICAL"] = "Critical"; eLang.common_strings["STR_ALERT_MOD_NONRECV"] = "Non-recoverable"; eLang.common_strings["STR_CONF_PTITLE"] = "Configuration"; eLang.common_strings["STR_CONF_PDESC"] = "Use these pages to configure various settings, such as alerts, users, or network."; eLang.common_strings["STR_ALERT_MOD_SNMPTRAP"] = "Snmp Trap"; eLang.common_strings["STR_ALERT_MOD_EMAIL"] = "Email"; eLang.common_strings["STR_ALERT_MOD_ALERTMODSUCCESS"] = "Alert has been modified successfully."; eLang.common_strings["STR_CONF_ALERT_HEAD1"] = "<b>Alert #</b>"; eLang.common_strings["STR_CONF_ALERT_HEAD2"] = "<b>Alert Level</b>"; eLang.common_strings["STR_CONF_ALERT_HEAD3"] = "<b>Destination Address</b>"; eLang.common_strings["STR_CONF_ALERT_HEAD4"] = "<b>Alert Type</b>"; eLang.common_strings["eLanguage_Strings4"] = "<b>UserID</b>"; eLang.common_strings["eLanguage_Strings5"] = "<b>User Name</b>"; eLang.common_strings["eLanguage_Strings6"] = "<b>Network Privilege</b>"; eLang.common_strings["eLanguage_Strings7"] = "<b>Serial Privilege</b>"; eLang.common_strings["STR_COMM_NAME"] = "<b>Community Name</b>"; eLang.common_strings["STR_COMM_TYPE"] = "<b>Community Type</b>"; eLang.common_strings["AD_Strings1"] = "<b>Role Group ID</b>"; eLang.common_strings["AD_Strings2"] = "<b>Group Name</b>"; eLang.common_strings["AD_Strings3"] = "<b>Group Domain</b>"; eLang.common_strings["AD_Strings4"] = "<b>Group Privilege</b>"; eLang.common_strings["STR_CONFIG_ADENABLE_DESC"] = "To Configure Active Directory Server Settings. Click Advanced Settings"; eLang.common_strings["STR_CONFIG_ADDISABLE_DESC"] = "Active Directory is currently disabled. To Enable the Active Directory and configure its settings. Click <strong><a href=\'\/page\/configure_active_dir_advanced.html'>here</a></strong>"; eLang.common_strings["STR_ROLE_GROUP_CNT"] = "Number of configured Role groups: "; eLang.common_strings["eLanguage_Strings_Temperature0"] = "Temperature"; // lblHeader [LABEL] eLang.common_strings["eLanguage_Strings_Temperature1"] = "Refresh..."; // Refresh [BUTTON] eLang.common_strings["NO_SEL_STRING"] = "There are no event log entries present at this time."; eLang.common_strings["NO_FRU_STRING"] = "There are no FRU devices present in the system."; eLang.common_strings["NO_SENSOR_STRING"] = "There are no sensors present in the system."; eLang.common_strings["NO_ALERTENTRY_STRING"] = "There are no alert table entries present in the system."; eLang.common_strings["NO_PEFENTRY_STRING"] = "There are no event filter table entries present in the system."; Sergnese Nicola 566/2002 Pagina 137 di 228 eLang.common_strings["NO_LANALERTDESTS_STRING"] = "There are no LAN Alert destinations configured in the system."; eLang.common_strings["INVALID_OFFSET"]= "<b>Invalid Offset for this SensorType</b>" eLang.common_strings["STR_CERT_UPLOADED"]="The Certificate and Key were uploaded successfully. Web server has to be restarted in order to use the new SSL certificate. Do you want to restart the web server now?"; //--------------------------------------------------//--------------------------------------------------eLang.common_strings["STR_APP_STR_VNOSEC"] ="Please enter a valid number of seconds."; eLang.common_strings["STR_APP_STR_LT10SEC"] ="Session time cannot be less than 10 seconds."; eLang.common_strings["STR_APP_STR_MODSXS"] ="Session timeout settings has been modified successfully."; eLang.common_strings["STR_BLANK"] = " "; // Empty string //--------------------------------------------------//--------------------------------------------------- //-------------------------------------// // Session //-------------------------------------// eLang.common_strings["STR_SESSION_INIT_ERROR"]="The Session has not been initialized. You may need to enable Session-only cookies in your browser."; eLang.common_strings["STR_SESSION_TIMEOUT_ERROR"]="Your session has timed out. You will need to open a new session"; //-------------------------------------// // General - Words and Acronyms //-------------------------------------// eLang.common_strings["STR_HEADER_USERNAME"] = "Username"; eLang.common_strings["STR_HEADER_USER"] = "User"; eLang.common_strings["STR_HEADER_SERVER"] = "Server"; eLang.common_strings["STR_HEADER_PRIVILEGE"] = "Privilege"; eLang.common_strings["STR_ALL"] = "All"; eLang.common_strings["STR_LOGIN_NAME"]="User Name"; eLang.common_strings["STR_LOGIN_PWD"]="Password"; eLang.common_strings["STR_SIDEBAR_OPTIONS"] = "Options"; eLang.common_strings["STR_HELP_TITLE"]="Help System"; eLang.common_strings["STR_HELP_BUTTONCAPTION"]="HELP"; eLang.common_strings["STR_HELP_LINKCAPTION"]="Help"; eLang.common_strings["STR_PROTOCOL_MANUAL"]="Manual"; eLang.common_strings["STR_PROTOCOL_AUTO"]="Manual"; eLang.common_strings["STR_PROTOCOL_RMCP"]="RMCP"; eLang.common_strings["STR_PROTOCOL_UPNP"]="UPnP"; eLang.common_strings["STR_TYPE_IPMI"]="IPMI"; eLang.common_strings["STR_TYPE_UPNPDEV"]="uPnP Device"; eLang.common_strings["STR_RECORD"] = "Record"; eLang.common_strings["STR_PAGE"] = "Page"; eLang.common_strings["STR_PREVIEW_MODE"] = "Preview Mode"; eLang.common_strings["STR_CLOSE_PREVIEW"] ="Close Preview"; Sergnese Nicola 566/2002 Pagina 138 di 228 eLang.common_strings["STR_VERSIONTITLE"] = "Version Information"; eLang.common_strings["STR_PRODNAME"] = "Product Name"; eLang.common_strings["STR_HOSTNAME"] = "Host Name"; eLang.common_strings["STR_PRODVERSION"] = "Product Version"; eLang.common_strings["STR_WEBUIVERSION"] = "Web UI Framework Version"; eLang.common_strings["STR_WEBUIDATE"] = "Web UI Framework Build Date"; eLang.common_strings["STR_APPNAME"] = "Application Name"; eLang.common_strings["STR_APPUIVERSION"] = "Application UI Version"; eLang.common_strings["STR_SUPPORT"] = "Support"; eLang.common_strings["STR_HELP"] = "Help"; eLang.common_strings["STR_ABOUT"] = "About"; eLang.common_strings["STR_LOGOUT"] = "Log out"; eLang.common_strings["STR_LOGIN"] = "Log in"; eLang.common_strings["STR_PRINT"] = "Print"; eLang.common_strings["STR_EMAIL"] = "Email"; eLang.common_strings["STR_GENERAL_REFRESH"] = "Refresh"; eLang.common_strings["STR_GENERAL_REFRESHPAGE"] = "Refresh Page"; eLang.common_strings["STR_ON"] = "On"; eLang.common_strings["STR_OFF"] = "Off"; eLang.common_strings["STR_YES"] = "Yes"; eLang.common_strings["STR_NO"] = "No"; eLang.common_strings["STR_CONNECTED"] = "Connected"; eLang.common_strings["STR_DISCONNECTED"] = "Disconnected"; eLang.common_strings["STR_ATTRIBUTE"] = "Attribute"; eLang.common_strings["STR_VALUE"] = "Value"; eLang.common_strings["STR_ADMINISTRATOR"] = "Administrator"; eLang.common_strings["STR_OPERATOR"] = "Operator"; eLang.common_strings["STR_USER"] = "User"; eLang.common_strings["STR_NONE"] = "None"; eLang.common_strings["STR_POWERUSER"] = "Power User"; eLang.common_strings["STR_GUESTUSER"] = "Guest User"; eLang.common_strings["STR_GUEST"] = "Guest"; eLang.common_strings["STR_CUSTOM"] = "Custom"; eLang.common_strings["STR_ANONYMOUS"] = "Anonymous"; eLang.common_strings["STR_OPTION"] = "Option"; eLang.common_strings["STR_NEXT"] = "Next"; eLang.common_strings["STR_NEXTSTEP"] = "Next Step"; eLang.common_strings["STR_9600"] ="9600 bps"; eLang.common_strings["STR_19200"] ="19.2 kbps"; eLang.common_strings["STR_28800"] ="28.8 kbps"; eLang.common_strings["STR_38400"] ="38.4 kbps"; eLang.common_strings["STR_57600"] ="57.6 kbps"; eLang.common_strings["STR_115200"] ="115.2 kbps"; eLang.common_strings["STR_DATE"] ="Date"; eLang.common_strings["STR_TIME"] ="Time"; eLang.common_strings["STR_DATETIME"] ="Date/Time"; eLang.common_strings["STR_SOURCE"] ="Source"; eLang.common_strings["STR_COMPONENT"] ="Component"; eLang.common_strings["STR_DESCRIPTION"] ="Description"; Sergnese Nicola 566/2002 Pagina 139 di 228 eLang.common_strings["STR_CLEARLOG"] ="Clear Log"; eLang.common_strings["STR_SAVEAS"] ="Save As"; eLang.common_strings["STR_GENERATE"] ="Generate"; eLang.common_strings["STR_SUBMIT"] ="Submit"; eLang.common_strings["STR_UPDATE"] ="Update"; eLang.common_strings["STR_DOWNLOAD"] ="Download"; eLang.common_strings["STR_PROPERTIES"] ="Properties"; eLang.common_strings["STR_SUMMARY"] ="Summary"; eLang.common_strings["STR_FAN"] ="Fan"; eLang.common_strings["STR_FANS"] ="Fans"; eLang.common_strings["STR_VOLTAGE"] ="Voltage"; eLang.common_strings["STR_VOLTAGES"] ="Voltages"; eLang.common_strings["STR_TEMP"] ="Temp"; eLang.common_strings["STR_TEMPS"] ="Temps"; eLang.common_strings["STR_TEMPERATURE"] ="Temperature"; eLang.common_strings["STR_TEMPERATURES"] ="Temperatures"; eLang.common_strings["STR_WATTS"] ="Watt(s)"; eLang.common_strings["STR_LANGCLIENT_BROWSER"] ="(Client Browser)"; eLang.common_strings["STR_GROUP"] ="Group"; eLang.common_strings["STR_NAME"] ="Name"; eLang.common_strings["STR_DOMAIN"] ="Domain"; eLang.common_strings["STR_PRIVILEGE"] ="Privilege"; eLang.common_strings["STR_CLIENT"] ="Client"; eLang.common_strings["STR_SERVER"] ="Server"; eLang.common_strings["STR_LANGUAGES_1"] = "The application must be reloaded for the language to be set. Reload now?"; eLang.common_strings["STR_USER_NAME"] = "<b>Username</b>"; eLang.common_strings["STR_PRIV_TYPE"] = "<b>Privacy Type</b>"; eLang.common_strings["STR_ACCESS_TYPE"] = "<b>Access Type</b>"; //-------------------------------------// // Blank page entries //-------------------------------------// eLang.common_strings["STR_TEMPLATE_PTITLE"] = "Blank Page Title"; eLang.common_strings["STR_TEMPLATE_PDESC"] = "Blank Page Title Description"; eLang.common_strings["STR_TEMPLATE_CTITLE"] = "Blank Page Content Title"; eLang.common_strings["STR_TEMPLATE_CDESC"] = "Blank Page Content Title Description"; eLang.common_strings["STR_SI_SYSTEM_INFO_PTITLE"] = "System Information"; eLang.common_strings["STR_SI_SYSTEM_INFO_PDESC"] = "This section contains general information about the system."; eLang.common_strings["STR_GI_FRU_PTITLE"] = "System Information"; eLang.common_strings["STR_GI_FRU_PDESC"] = "Here you can view system, session information and FRU information."; eLang.common_strings["STR_GI_FRU_PTITLE"] = "System Information"; eLang.common_strings["STR_GI_FRU_PDESC"] = "This section contains general information about the system"; Sergnese Nicola 566/2002 Pagina 140 di 228 eLang.common_strings["STR_SRVR_HLTH_PTITLE"] = "Server Health"; eLang.common_strings["STR_SRVR_HLTH_PDESC"] = "This section shows you data related to the server's health, such as sensor readings and the event log."; eLang.common_strings["STR_SH_SENSOR_READING_PTITLE"] = "Server Health"; eLang.common_strings["STR_SH_SENSOR_READING_PDESC"] = "This section shows you data related to the server's health, such as sensor readings and the event log."; eLang.common_strings["STR_SH_EVENT_LOG_PTITLE"] = "Server Health"; eLang.common_strings["STR_SH_EVENT_LOG_PDESC"] = "This section shows you data related to the server's health, such as sensor readings and the event log."; eLang.common_strings["STR_SH_MONITOR_MODE_PTITLE"] = "Monitoring Mode"; eLang.common_strings["STR_SH_MONITOR_MODE_PDESC"] = "Select Monitoring Mode - The device can perform sensor monitoring either by talking to a external BMC connected on the IPMB bus or by monitoring sensors directly attached to its I2C bus"; eLang.common_strings["STR_CONF_PTITLE"] = "Configuration"; eLang.common_strings["STR_CONF_PDESC"] = "Use these pages to configure various settings, such as alerts, users, or network."; eLang.common_strings["STR_CFG_CONF_NW_PTITLE"] = "Configuration"; eLang.common_strings["STR_CFG_CONF_USER_PTITLE"] = "Configuration"; eLang.common_strings["STR_CFG_CONF_ALERT_PTITLE"] = "Configuration"; eLang.common_strings["STR_CFG_CONF_MOUSEMODE_PTITLE"] = "Configuration"; eLang.common_strings["STR_CFG_UPLOAD_SSL_PTITLE"] = "Configuration"; eLang.common_strings["STR_CFG_CONF_SMTP_PTITLE"] = "Configuration"; eLang.common_strings["STR_CFG_CONF_SELECT_BMC_PTITLE"] = "Configuration"; eLang.common_strings["STR_CFG_CONF_DATETIME_PTITLE"] = "Configuration"; eLang.common_strings["STR_CFG_CONF_NW_PDESC"] = "This pages allows you to access various configuration settings."; eLang.common_strings["STR_CFG_CONF_USER_PDESC"] = "This pages allows you to access various configuration settings."; eLang.common_strings["STR_CFG_CONF_ALERT_PDESC"] = "This pages allows you to access various configuration settings."; eLang.common_strings["STR_CFG_CONF_MOUSEMODE_PDESC"] = "This pages allows you to access various configuration settings."; eLang.common_strings["STR_CFG_CONF_SMTP_PDESC"] = "This pages allows you to access various configuration settings."; eLang.common_strings["STR_CFG_CONF_SELECT_BMC_PDESC"] = "This pages allows you to access various configuration settings."; eLang.common_strings["STR_CFG_CONF_DATETIME_PDESC"] = "This pages allows you to access various configuration settings."; eLang.common_strings["STR_RMCNTRL_REDIRECT_PTITLE"] = "Remote Control"; eLang.common_strings["STR_RMCNTRL_REDIRECT_PDESC"] = "This section allows you to perform various remote operations on the server, such as launching the remote console."; eLang.common_strings["STR_RMCNTRL_POWER_CNTRL_PTITLE"] = "Remote Control"; eLang.common_strings["STR_RMCNTRL_POWER_CNTRL_PDESC"] = "This page allows you to manage the remote console and power status of the server."; eLang.common_strings["STR_RMCNTRL_CHASSIS_IDENTIFY_PTITLE"] = "Remote Control"; eLang.common_strings["STR_RMCNTRL_CHASSIS_IDENTIFY_PDESC"] = "This page allows you to perform the chassis identify command of the server."; eLang.common_strings["STR_CNFG_DATE_TIME_PTITLE"] = "Configuration"; eLang.common_strings["STR_CNFG_DATE_TIME_PDESC"] = "This page allows you to access various Sergnese Nicola 566/2002 Pagina 141 di 228 configuration settings."; eLang.common_strings["STR_MAINT_PTITLE"] = "Maintenance"; eLang.common_strings["STR_MAINT_PDESC"] = "This section allows you to perform maintenance tasks on the device."; eLang.common_strings["STR_LANG_PTITLE"] = "Language Setting"; eLang.common_strings["STR_LANG_PDESC"] = "Here you can select the language for the web application."; //-------------------------------------// // General - Success messages //-------------------------------------// eLang.common_strings["STR_UPLOAD_OK"] = "File uploaded successfully!"; eLang.common_strings["STR_OP_OK"] = "Operation was successful!"; eLang.common_strings["STR_OP_COMPLETE"] = "Operation complete!"; eLang.common_strings["STR_SAVE_COMPLETE"] = "Save completed!"; eLang.common_strings["STR_OBJECT_DELETED"] = "Object deleted!"; eLang.common_strings["STR_USR_MGMT_CNT"] = "Number of configured users: "; eLang.common_strings["STR_USR_MGMT_SFX"] = " "; //-------------------------------------// // General - Error messages //-------------------------------------// eLang.common_strings["STR_ERROROCCURRED_GENERAL"] = "The following error occurred : "; eLang.common_strings["STR_FUNCNAME_INVALID"] = "Invalid function name, please try again. "+ "Type the name of the function with parentheses (even if there are no parameters), "+ "and without 'javascript:'."; eLang.common_strings["STR_INVALID_GRAPHICFILE"] = "Invalid graphic filename. Please choose a GIF, JPG, or PNG file."; eLang.common_strings["STR_UPLOAD_ERROR"] = "An upload error occurred!"; eLang.common_strings["STR_ERROR"] = "An error occurred!"; eLang.common_strings["STR_INVALID_PAGENUM"] = "Invalid page number, please try again"; eLang.common_strings["STR_INVALID_IP"]="Invalid IP address...please try again"; eLang.common_strings["STR_LOGIN_FAILED"]="Login failed ... please try again!"; eLang.common_strings["STR_UNKNOWN_USER"]="Unknown user name ... please try again!"; eLang.common_strings["STR_INCORRECT_PW"]="Incorrect password ... please try again!"; eLang.common_strings["STR_INVALID_PW"]="Invalid password format...please try again!"; eLang.common_strings["STR_INVALID_PWLEN"]="Invalid password length...please try again!"; eLang.common_strings["STR_INVALID_UNAME"]="Invalid user name...please try again!"; eLang.common_strings["STR_INVALID_UNAMELEN"]="Invalid user name length...please try again!"; eLang.common_strings["STR_INVALID_ENTRY"]="Invalid entry...please try again!"; eLang.common_strings["STR_GENERAL_SESSIONTIMEOUT"]="Your session has timed out, please log in again."; eLang.common_strings["STR_GENERAL_TIMEDOUTGENERAL"]= "The operation timed out when attempting to communicate with the server."; Sergnese Nicola 566/2002 Pagina 142 di 228 eLang.common_strings["STR_FILEIOERR_WRITE"]= "An error occurred during the file write operation!"; eLang.common_strings["STR_FILEIOERR_READ"]= "An error occurred during the file read operation!"; eLang.common_strings["STR_OP_FAILED"] = "Operation failed!"; eLang.common_strings["STR_ERR_USEREXIST"] = "User already exists"; //-------------------------------------// // General - Status messages //-------------------------------------// eLang.common_strings["STR_RECORD_DEFINED"] = "This record is already defined"; eLang.common_strings["STR_NONE_SELECTED"] = "None selected"; eLang.common_strings["STR_SORTING"] = "Sorting...please wait"; eLang.common_strings["STR_SORTINGNOWAIT"] = "Sorting"; eLang.common_strings["STR_CONNECTING"]="Connecting...please wait"; eLang.common_strings["STR_CONNECTINGNOWAIT"]="Connecting"; eLang.common_strings["STR_GENERAL_COMMAND_CANCELED"] = "Command canceled!"; eLang.common_strings["STR_GENERAL_LOGOUTMUSTDISCONNECTWARNING"] = "You must disconnect in order to log out!"; eLang.common_strings["STR_GENERAL_NOTCONNECTED"] = "(not connected)"; eLang.common_strings["STR_GENERAL_NOTLOGGEDIN"] = "(not logged in)"; eLang.common_strings["STR_GENERAL_NODESC"] = "No description"; eLang.common_strings["STR_GENERAL_LOGOUTSUCCESS"] = "You have been successfully logged out."; eLang.common_strings["STR_OP_ABORTED"] = "Operation aborted!"; //-------------------------------------// // Wait messages. Add any new ones // here. The eLang.sys_strings object is // depracated. //-------------------------------------// eLang.common_strings["STR_LOADING"]="Loading...please wait"; eLang.common_strings["STR_LOGGINGIN_PLSWAIT"]="Logging in...please wait"; eLang.common_strings["STR_RETRIEVINGDATA"]="Retrieving data...please wait"; eLang.common_strings["STR_UPLOADINGWAIT"] = "Uploading...please wait"; eLang.common_strings["STR_PROCESSINGWAIT"] = "Processing...please wait"; eLang.common_strings["STR_WORKINGWAIT"] = "Working...please wait"; eLang.common_strings["STR_SORTINGWAIT"] = "Sorting...please wait"; eLang.common_strings["STR_CHECKINGWAIT"] = "Checking...please wait"; eLang.common_strings["STR_VERIFYINGWAIT"] = "Verifying...please wait"; eLang.common_strings["STR_PARSINGWAIT"] = "Parsing...please wait"; eLang.common_strings["STR_FLASHINGWAIT"] = "Flashing...please wait"; //-------------------------------------// // General - Confirmation messages //-------------------------------------// eLang.common_strings["STR_CONFIRM_DELETE"]="Are you sure to delete this entry?"; eLang.common_strings["STR_GENERAL_COMMAND_CONFIRM"] = "Are you sure to execute this command"; eLang.common_strings["STR_GENERAL_LOGOUT"] = "Are you sure to log out"; eLang.common_strings["STR_GENERAL_DISCONNECT"] = "Are you sure to disconnect from this server"; eLang.common_strings["STR_GENERAL_LOGOUTDISCONNECTWARNING"] = "You are still connected. Logging out will automatically terminate your connection and proceed with the logout. Do you wish to proceed"; Sergnese Nicola 566/2002 Pagina 143 di 228 //-------------------------------------// // General - Commands //-------------------------------------// eLang.common_strings["STR_GO"] = "Go!"; eLang.common_strings["STR_LOGIN_BUTTON"]="Log In"; eLang.common_strings["STR_LOGIN_NOSPACE"]="Login"; eLang.common_strings["STR_LOGIN_PLEASE"]="Please Login"; eLang.common_strings["STR_SIDEBAR_LOGOUT"] = "Log out"; eLang.common_strings["STR_SIDEBAR_DISCONNECT"] = "Disconnect"; eLang.common_strings["STR_APPLYCHANGES"] = "Apply Changes"; eLang.common_strings["STR_ENABLE"] = "Enable"; eLang.common_strings["STR_DISABLE"] = "Disable"; eLang.common_strings["STR_CONNECT"] = "Connect"; eLang.common_strings["STR_DISCONNECT"] = "Disconnect"; eLang.common_strings["STR_UPLOAD"] = "Upload"; eLang.common_strings["STR_LOGINWELCOME"]="Please type your user name and password"; eLang.common_strings["STR_LOGINFAILED"]="Login failed. Please try again"; //-------------------------------------// // GLOBAL ERROR strings //-------------------------------------// // // This section is for error codes for various types of problems, such as // file io, user management, etc Error codes MUST be encoded into the string // name. Typically, the code will correspond to the HAPI_STATUS value. // // Use this general string to precede the actual error eLang.common_strings["STR_GENERALERRORMESSAGE"]= "The following error occurred during the last operation"; //-------------------------------------// // FILEIO CODES //-------------------------------------// eLang.common_strings["STR_FILEIOERR_NUM_1"]= "The target file already exists."; eLang.common_strings["STR_FILEIOERR_NUM_2"]= "The source file path does not exist."; eLang.common_strings["STR_FILEIOERR_NUM_3"]= "The destination file file path does not exist."; eLang.common_strings["STR_FILEIOERR_NUM_4"]= "An error occurred during a write operation."; eLang.common_strings["STR_FILEIOERR_NUM_5"]= "An error occurred during a delete operation."; eLang.common_strings["STR_FILEIOERR_NUM_6"]= "Could not allocate memory."; eLang.common_strings["STR_FILEIOERR_NUM_7"]= "No files were found."; eLang.common_strings["STR_FILEIOERR_NUM_8"]= "Could not file webUI path."; eLang.common_strings["STR_FILEIOERR_NUM_9"]= "An error occurred during a read operation."; eLang.common_strings["STR_FILEIOERR_NUM_10"]= "Could not get product info."; eLang.common_strings["STR_FILEIOERR_NUM_11"]= "The source directory is in use."; eLang.common_strings["STR_FILEIOERR_NUM_12"]= "The directory already exists."; eLang.common_strings["STR_FILEIOERR_NUM_13"]= "There are no files in the source directory."; eLang.common_strings["STR_FILEIOERR_NUM_14"]= "Could not create directory."; //-------------------------------------// // USERMANAGEMENT CODES //-------------------------------------// eLang.common_strings["STR_USERMANAGEMENTERR_NUM_0"]= "Operation successful!"; Sergnese Nicola 566/2002 Pagina 144 di 228 eLang.common_strings["STR_USERMANAGEMENTERR_NUM_1"]= "An unknown failure"; eLang.common_strings["STR_USERMANAGEMENTERR_NUM_2"]= "Submission contains invalid parameters"; eLang.common_strings["STR_USERMANAGEMENTERR_NUM_3"]= "The user already exists"; eLang.common_strings["STR_USERMANAGEMENTERR_NUM_4"]= "The password is too short"; eLang.common_strings["STR_USERMANAGEMENTERR_NUM_5"]= "No such user was found"; eLang.common_strings["STR_USERMANAGEMENTERR_NUM_6"]= "No such group exists"; eLang.common_strings["STR_USERMANAGEMENTERR_NUM_7"]= "This user is not a member"; eLang.common_strings["STR_USERMANAGEMENTERR_NUM_8"]= "Could not set the password"; eLang.common_strings["STR_USERMANAGEMENTERR_NUM_9"]= "Authentication failed"; //-------------------------------------// // LOGIN CODES //-------------------------------------// eLang.common_strings["STR_LOGINERRORCODE_1"]="Invalid session. Please try logging in again"; eLang.common_strings["STR_LOGINERRORCODE_2"]="Session timed out. Please log in again."; eLang.common_strings["STR_LOGINERRORCODE_3"]="Maximum number of sessions already in use."; eLang.common_strings["STR_LOGINERRORCODE_4"]="Invalid session. Please try logging in again"; eLang.common_strings["STR_LOGINERRORCODE_5"]="Invalid session. Please try logging in again"; eLang.common_strings["STR_LOGINERRORCODE_6"]="Invalid session. Please try logging in again"; eLang.common_strings["STR_LOGINERRORCODE_7"]="Login failed. Please try again."; eLang.common_strings["STR_LOGINERRORCODE_8"]="Logged out. Please log in again to access the device."; //logged out properly and cookie is set to logged out"; eLang.common_strings["STR_LOGINERRORCODE_9"]="Please log in to access the device."; //-------------------------------------// // BMC SENSOR MODE CODES //-------------------------------------// eLang.common_strings["STR_BMC_SENSOR_MODE_001"] ="The requested BMC Sensor Mode parameters have been successfully set."; eLang.common_strings["STR_BMC_SENSOR_MODE_002"] ="Error modifying BMC Sensor Mode:"; eLang.common_strings["STR_BMC_SENSOR_MODE_003"] ="BMC I2C Address"; //-------------------------------------// // PEF //-------------------------------------// eLang.common_strings["STR_APP_STR_320"] ="PEF Table: "; eLang.common_strings["NO_PEF_STRING"] = "There are no PEF configured in the system."; eLang.common_strings["STR_PEF_MOD_PEFMODSUCCESS"] = "PEF has been modified successfully."; eLang.common_strings["STR_CONF_PEF_HEAD1"] = "<b>PEF #</b>"; eLang.common_strings["STR_CONF_PEF_HEAD2"] = "<b>Filter Config</b>"; eLang.common_strings["STR_CONF_PEF_HEAD3"] = "<b>Event Filter Action</b>"; eLang.common_strings["STR_CONF_PEF_HEAD4"] = "<b>Alert Policy Num</b>"; eLang.common_strings["STR_CONF_PEF_HEAD5"] = "<b>Event Severity</b>"; eLang.common_strings["STR_CONF_PEF_HEAD6"] = "<b>Sensor Type</b>"; eLang.common_strings["STR_CONF_PEF_HEAD7"] = "<b>Sensor Num</b>"; eLang.common_strings["STR_CONF_PEF_HEAD8"] = "<b>Event Trigger</b>"; eLang.common_strings["STR_CONF_PEF_HEAD9"] = "<b>Event Data 1Offset Mask</b>"; eLang.common_strings["STR_CONF_PEF_HEAD10"] = "<b>Event Data1 AND Mask</b>"; eLang.common_strings["STR_CONF_PEF_HEAD11"] = "<b>Event Data1 Cmp1</b>"; eLang.common_strings["STR_CONF_PEF_HEAD12"] = "<b>Event Data1 Cmp2</b>"; eLang.common_strings["STR_CONF_PEF_HEAD13"] = "<b>Event Data2 AND Mask</b>"; eLang.common_strings["STR_CONF_PEF_HEAD14"] = "<b>Event Data2 Cmp1</b>"; Sergnese Nicola 566/2002 Pagina 145 di 228 eLang.common_strings["STR_CONF_PEF_HEAD15"] = "<b>Event Data2 Cmp2</b>"; eLang.common_strings["STR_CONF_PEF_HEAD16"] = "<b>Event Data3 AND Mask</b>"; eLang.common_strings["STR_CONF_PEF_HEAD17"] = "<b>Event Data3 Cmp1</b>"; eLang.common_strings["STR_CONF_PEF_HEAD18"] = "<b>Event Data3 Cmp2</b>"; //-------------------------------------// // END GLOBAL ERROR strings //-------------------------------------// eLang.common_strings["STR_CONFIG_AD_GETINFO"] = " There was a problem while getting Active Directory information"; eLang.common_strings["STR_CONFIG_AD_SETINFO"] = " There was a problem while setting Active Directory information"; eLang.common_strings["STR_CONFIG_ROLEGROUP_ADDINFO"] = "There was a problem while adding role group information"; eLang.common_strings["STR_CONFIG_ROLEGROUP_MODINFO"] = "There was a problem while modifying role group information"; eLang.common_strings["STR_CONFIG_ROLEGROUP_DELINFO"] = "There was a problem while deleting role group information"; //-------------------------------------------------//-------------------------------------------------codice eExt.js //;*****************************************************************; // =================================================================== ========== // Bookmark Jump Tag Table - Use the tags to search for bookmarks in the code // =================================================================== ========== // Jump Tags - Description // ----------------------------------------------------------------------------// 1158783913 - PROC - "eExt.getHTTPHeaderProps()" // //;*****************************************************************; //;** **; //;** (C) COPYRIGHT American Megatrends Inc. 2003-2004 **; //;** ALL RIGHTS RESERVED **; //;** **; //;** This computer software, including display screens and **; //;** all related materials, are confidential and the **; //;** exclusive property of American Megatrends, Inc. They **; //;** are available for limited use, but only pursuant to **; //;** a written license agreement distributed with this **; //;** computer software. This computer software, including **; //;** display screens and all related materials, shall not be **; //;** copied, reproduced, published or distributed, in whole **; //;** or in part, in any medium, by any means, for any **; //;** purpose without the express written consent of American **; //;** Megatrends, Inc. **; //;** **; //;** **; //;** American Megatrends, Inc. **; Sergnese Nicola 566/2002 Pagina 146 di 228 //;** 6145-F, Northbelt Parkway, Norcross, **; //;** Georgia - 30071, USA. Phone-(770)-246-8600. **; //;** **; //;*****************************************************************; //;*****************************************************************; //----------------------------------------------------------------------------// // Extension Module // (c) American Megatrends Inc. 2003 // // Depends on: Nothing // // Author: Brandon Burrell //----------------------------------------------------------------------------// var eExt = {}; // Create object //______________________________________________________________________________ //================================================================== ============ // eExt.loadModule //-----------------------------------------------------------------------------// Load a module // // Input: name = name of module // // Output: none //______________________________________________________________________________ //================================================================== ============ eExt.loadModule=function(name) { // Cannot precede paths with a / if using Mozilla offline for development. subdir="/Scripts/"; // load the script document.writeln('<script type="text\/javascript" src="'+subdir+name+'.js"><\/script>'); }; //______________________________________________________________________________ //================================================================== ============ // eExt.parseURLVars //-----------------------------------------------------------------------------// Searches the URL for a given token variable and returns its value (if // present). // // Input: searchtoken = token name to search URL for // // Output: token's value, or null (constant, not string) if not found //______________________________________________________________________________ //================================================================== ============ eExt.parseURLvars=function(searchtoken) { // NOTE: Changed [BrandonB] 12/18/2006 to decodeURIComponent // so that UTF8 data passed in the URL as tokens will properly be Sergnese Nicola 566/2002 Pagina 147 di 228 // decoded back to UTF8. Firefox was converting the hex bytes to the // default code page when using unescape. // var URLVariables=unescape(location.search); // Convert esc code back to & var URLVariables=decodeURIComponent(location.search); // Convert esc code back to & URLVariables=URLVariables.substring(1); // Clear off ? from query return (parsetokens(URLVariables,searchtoken,/\s*&\s*/)); } //______________________________________________________________________________ //================================================================== ============ // eExt.insertURLvar //-----------------------------------------------------------------------------// Searches the URL for a given token variable and returns its value (if // present). // // Input: searchtoken = token name to search URL for // // Output: token's value, or null (constant, not string) if not found //______________________________________________________________________________ //================================================================== ============ eExt.insertURLvar=function(link, tokentoadd, tokenvalue) { var curlink=new String(link); var newlink=new String(); // These functions are deprecated, use encodeURIComponent instead // [BrandonB] 12/18/2006 // tokentoadd=escape(tokentoadd); // tokenvalue=escape(tokenvalue); tokentoadd=encodeURIComponent(tokentoadd); tokenvalue=encodeURIComponent(tokenvalue); // Does current link already have some search tokens? if (curlink.indexOf('?')==-1) { newlink=curlink+'?'+tokentoadd+'='+tokenvalue; } else { newlink=curlink+'&'+tokentoadd+'='+tokenvalue; } return (newlink); } //______________________________________________________________________________ //================================================================== ============ // eExt.parseCookies //-----------------------------------------------------------------------------// Parses the list of cookies for the document. // Sergnese Nicola 566/2002 Pagina 148 di 228 // Input: searchtoken - the cookie you are looking for // // Output: string - the value of the cookie, or null if not found // // [BrandonB] 7/3/2003 //______________________________________________________________________________ //================================================================== ============ eExt.parseCookies=function(searchtoken, boolDebug) { return(parsetokens(document.cookie,searchtoken,/\s*;\s*/, boolDebug)); } //______________________________________________________________________________ //================================================================== ============ // parsetokens //-----------------------------------------------------------------------------// Generic function for parsing strings of the form aaa=bbbb?ccc=ddd where ? is // some delimiter character // // Input // ----// tokenlist - the string containing the token pair list // // searchtoken - the token you are looking for // // delimiter - the character used to separate token pairs // // Output // -----// string - the value of the token, or null if not present // //______________________________________________________________________________ //================================================================== ============ function parsetokens(tokenlist,searchtoken, delimiter, boolDebug) { // Take apart each 'token=value' and put them into an array var tokenpairs=tokenlist.split(delimiter); // Now we have an array of var tokenvals= new Array(); var tokenpieces= new Array(); // token pairs // Create array object for // Create array object for // further splitting // This loop will split each token set (token=value) into // token[x*2] and value[x*2+1] for (var i=0;i<tokenpairs.length;i++) { tokenpieces=tokenpairs[i].split("="); tokenvals[i*2]=tokenpieces[0]; tokenvals[i*2+1]=tokenpieces[1]; Sergnese Nicola 566/2002 // split each set at '=' // Assign token to new array // Assign value to adjacent pos Pagina 149 di 228 } // Done with token name and value extraction. Now just // parse the array to find the one we want. var finaltokenvalue=null; // Default to null for (i=0;i<(tokenvals.length/2);i++) { if (tokenvals[i*2]==searchtoken) { finaltokenvalue=tokenvals[i*2+1]; } // Display all token names and values if (boolDebug) { document.write("[searchtoken:"+searchtoken+"][tokenName:"+tokenvals[i*2]+"] [tokenValue:"+tokenvals[i*2+1]+"]"+(tokenvals[i*2]==searchtoken)+"<BR>"); } } return(finaltokenvalue); } //______________________________________________________________________________ //================================================================== ============ // eExt.showBody //-----------------------------------------------------------------------------// Debugging function to popup a window with the rendered BODY code // // Input: none // // Output: none // // [BrandonB] 7/3/2003 //______________________________________________________________________________ //================================================================== ============ eExt.showBody=function(framename) { if (framename==null) { var src=document.body.innerHTML; var h = document.getElementsByTagName("HEAD"); } else { var src=parent.frames[framename].document.body.innerHTML; var h = parent.frames[framename].document.getElementsByTagName("HEAD"); } var hsrc=h[0].innerHTML; hsrc=hsrc.replace(/</ig,"<"); hsrc=hsrc.replace(/>/ig,">"); Sergnese Nicola 566/2002 Pagina 150 di 228 hsrc=hsrc.replace(/\x09/ig," "); hsrc=hsrc.replace(/\x0d\x0a/ig,"<br>"); hsrc=hsrc.replace(/></ig,"><br><"); hsrc="<pre>"+hsrc+"<\/pre>"; hsrc="<b><HEAD></b>"+hsrc+"<"+"b></HEAD>"+"<"+"/b>"; src=src.replace(/</ig,"<"); src=src.replace(/>/ig,">"); src=src.replace(/\x09/ig," "); src=src.replace(/\x0d\x0a/ig,"<br>"); src=src.replace(/></ig,"><br><"); src="<pre>"+src+"<\/pre>"; src=hsrc+"<br>"+"<b><BODY></b>"+src+"<"+"b></BODY>"+"<"+"/b>"; eExt.showdebugWindow("<html><h1>Rendered DHTML <body> Source<\/h1><p>"+src+"<\/html>",600,600); } // Must generate a unique window name for each window instance, because otherwise // IE will only open ONE window when this is called from inside a modal dialog. // I wonder if this is an IE bug, because it opens a new window each time // when called from code NOT inside a modal dialog. var debugwindowuniquename=0; eExt.showdebugWindow=function(dwcontent,w,h) { // Open new window, ensuring a unique name each time so multiple windows // can be opened when called from code inside a modal dialog. var windowpointerle=window.open("","dbwin"+debugwindowuniquename+ +,"height="+h+",width="+w+",resizable,scrollbars"); if (windowpointerle) { windowpointerle.document.open(); windowpointerle.document.write(dwcontent); windowpointerle.document.close(); windowpointerle.focus(); } else { alert("Cannot create debug window"); } } eExt.showdebugWindowURL=function(url,w,h) { // Open new window, ensuring a unique name each time so multiple windows // can be opened when called from code inside a modal dialog. var windowpointerle=window.open(url,"dbwin"+debugwindowuniquename+ +,"height="+h+",width="+w+",resizable,scrollbars"); Sergnese Nicola 566/2002 Pagina 151 di 228 if (!windowpointerle) { alert("Cannot create url debug window"); } } var gDebugStack=""; var dbgwinstackhd="<html><body style='font: small Tahoma'><H2>Castor UI Debug Call Stack </H2>"; var dbgwinstack=""; var dbgwinstackft="<hr><button onclick='javascript:window.opener.parent.gDebugStack=\"\";window.opener.parent.eExt.showdebugWindowRun ning(\"\")'>Clear</button></body></html>"; var winpnterle=null; eExt.showdebugWindowRunning=function(dwcontent) { var w=800;h=400; // var isdebugwindowopen= windowpointerle==null?false:!windowpointerle.closed; var winpnterle=window.open("","dbguidbwin0","height="+h+",width="+w+",resizable,scrollbars"); if (winpnterle) { winpnterle.document.open(); if (parent.gDebugStack==undefined) { parent.gDebugStack=dwcontent; } else { parent.gDebugStack+=dwcontent; } winpnterle.document.write(dbgwinstackhd+parent.gDebugStack+dbgwinstackft); winpnterle.document.close(); winpnterle.scrollTo(0,999999999); winpnterle.focus(); // This will pull the debug window to the front // windowpointerle.opener.focus(); // Put focus back to opening window to keep debug win from stealing input focus } else { alert("Cannot create debug window"); } } eExt.debugCP=function(checkpointtxt, isEnabled) { if ((parent.gUIDebug)&&(isEnabled)) { eExt.showdebugWindowRunning(checkpointtxt+"<br>"); } } Sergnese Nicola 566/2002 Pagina 152 di 228 //______________________________________________________________________________ //================================================================== ============ // eExt.createDOMAPIElm //-----------------------------------------------------------------------------// Function to call DOMAPI createElm from an object argument, so that // parameters can be compiled from eLang.getObjProps. // // Input: parent, x, y, w, h, bgcolor, color, type(HTML tag) // // Output: reference to new object // // [BrandonB] 10/2/2003 //______________________________________________________________________________ //================================================================== ============ eExt.createDOMAPIElm = function(arg) { return(core.createElm( arg.parent, arg.x, arg.y, arg.w, arg.h, arg.bgcolor, arg.color, arg.type)); } eExt.waitopenload=function() { document.write("<body bgcolor=buttonface>"+ "<table id='waittable' width='100%' height='100%' style='background-color:buttonface;top:0;left:0;'>"+ "<tbody>"+ "<tr>"+ "<td style='font-family:Arial Black;fontsize:20px;text-align:center;vertical-align:center;color:black'>"+ "<img src='/Graphics/Icons/ani_clock.gif'><span style='position:relative;top=-5px;'> "+ parent.eLang.getSysString("STR_WAIT") +"<span>"+ "</td>"+ "</tr>"+ "</tbody>"+ "</table></body>"); } eExt.waitopen=function() { Sergnese Nicola 566/2002 Pagina 153 di 228 // wt=document.createElement('div'); // wt.overflow='visible'; // wt.style.backgroundColor='red'; // wt.style.position='absolute'; // // wt.innerHTML="<table id='waittable' width='100%' height='100%' style='border:4px solid;backgroundcolor:buttonface;top:0;left:0;'>"+ // "<tbody>"+ // "<tr>"+ // "<td style='font-family:Arial Black;font-size:20px;text-align:center;verticalalign:center;color:black'>"+ // "<img src='/Graphics/Icons/ani_clock.gif'><span style='position:relative;top=5px;'> "+ // eLang.getSysString("STR_WAIT")+"<span>"+ // "</td>"+ // "</tr>"+ // "</tbody>"+ // "</table>"; // document.body.appendChild(wt); // wt=document.createElement('table'); wt.id='waittable'; wt.style.position="absolute"; wt.width="100%"; wt.height="100%"; wt.style.backgroundColor="buttonface"; wt.style.top=0; wt.style.left=0; wtb=document.createElement('tbody'); wtr=document.createElement('tr'); wtd=document.createElement('td'); wtd.style.fontFamily="Arial Black"; wtd.style.fontSize="20px"; wtd.style.textAlign="center"; wtd.style.verticalAlign="middle"; wtd.style.color="black"; wtd.innerHTML="<img src='/Graphics/Icons/ani_clock.gif'><span style='position:relative;top=5px;'> "+ parent.eLang.getSysString("STR_WAIT") +"<span>"; wtr.appendChild(wtd); wtb.appendChild(wtr); wt.appendChild(wtb); document.body.appendChild(wt); } //-------------------------------------// //-------------------------------------// //-------------------------------------// Sergnese Nicola 566/2002 Pagina 154 di 228 //-------------------------------------// eExt.waitclose=function() { var wtid=document.getElementById('waittable'); if (wtid!=undefined) { document.body.removeChild(wtid); } } //-------------------------------------// //-------------------------------------// // Development routine to overlay a // hashed grid in varying resolutions // for object placement/layout //-------------------------------------// //-------------------------------------// eExt.showScreenSize=function(sizeOfScreen) { scrdiv=document.createElement("DIV"); var resstr=""; with (scrdiv.style) { zIndex=-999; position='absolute'; top=0; left=0; textAlign='right'; fontFamily='Arial Black'; } switch (sizeOfScreen) { case 1: // 1024x768 with (scrdiv.style) { width=1024; height=768; border='2px dashed yellow'; color='yellow'; } resstr='1024x768'; break; case 2: // 1280x1024 with (scrdiv.style) { width=1280; height=1024; border='2px dashed red'; color='red'; } resstr='1280x1024'; Sergnese Nicola 566/2002 Pagina 155 di 228 case 0: default: break; // 800x600 with (scrdiv.style) { width=800; height=600; border='2px dashed white'; color='white'; } resstr='800x600'; break; } // Allocate a 'danger' area of 145 pixels at the bottom to account for user's // address bar, buttons, title bar, link bar etc. var greyzoneheight=190; var greyzonescrollwidth=30; scrdivdanger=document.createElement("DIV"); with(scrdivdanger.style) { position='absolute'; top=parseInt(scrdiv.style.height)-greyzoneheight; left=0; height=greyzoneheight-5; width=parseInt(scrdiv.style.width)-5; backgroundColor='gray'; textAlign='center'; fontFamily='Arial Black'; } // // // // scrdivdangerrt=document.createElement("DIV"); with(scrdivdangerrt.style) { position='absolute'; top=15; left=parseInt(scrdiv.style.width)-greyzonescrollwidth-5; height=parseInt(scrdiv.style.height)-20; width=greyzonescrollwidth; backgroundColor='gray'; textAlign='center'; fontFamily='Arial Black'; } scrdivdanger.innerHTML="This zone represents the user's link bar, icons, "+ "address bar, etc. which takes up approximately 145 pixels from the "+ "usable desktop space. UI items should ideally be placed above this zone "+ "to prevent the user from having to scroll the screen."; scrdiv.appendChild(scrdivdangerrt); scrdiv.appendChild(scrdivdanger); resstrs=document.createElement("SPAN"); resstrs.innerHTML=resstr; scrdiv.appendChild(resstrs); Sergnese Nicola 566/2002 Pagina 156 di 228 document.body.appendChild(scrdiv); } //-------------------------------------// // These conversion utils use toFixed to // round to the nearest decimal place // for GB, or 0 places for MB, ie // // 1.999(1) -> 2.0 //-------------------------------------// eExt.converttoGB=function(numberink,boolnumberonly) { var newnum=new Number(numberink); newnum=newnum/1048576; if (boolnumberonly) { return(newnum.toFixed(1)); } else { return(newnum.toFixed(1)+parent.eLang.getSysString("STR_UNITS_GB")); } } eExt.converttoMB=function(numberink,boolnumberonly) { var newnum=new Number(numberink); newnum=newnum/1024; if (boolnumberonly) { return(newnum.toFixed(0)); } else { return(newnum.toFixed(0)+parent.eLang.getSysString("STR_UNITS_MB")); } } eExt.converttoMBorGBString=function(numberinKB) { if (numberinKB>=1048576) { return(eExt.converttoGB(numberinKB)); } else { return(eExt.converttoMB(numberinKB)); } } //-------------------------------------// // The truncated versions do not round, // they truncate any decimal places // after the number specified. This // is used in space calculations so Sergnese Nicola 566/2002 Pagina 157 di 228 // user does not see more space than is // really available, for example if there // is 95.56GB free you don't want to // show 95.6 and use that in calculations. // These use new function prototyped to // the Number object, defined at the // bottom of this file. // [BrandonB] 6/22/2004 // // 1.999(1) -> 1.9 //-------------------------------------// eExt.converttoMBTruncated=function(numberink,boolnumberonly) { var newnum=new Number(numberink); newnum=newnum/1024; if (boolnumberonly) { return(newnum.toTruncated(0)); } else { return(newnum.toTruncated(0)+parent.eLang.getSysString("STR_UNITS_MB")); } } eExt.converttoGBTruncated=function(numberink,boolnumberonly) { var newnum=new Number(numberink); newnum=newnum/1048576; if (boolnumberonly) { return(newnum.toTruncated(1)); } else { return(newnum.toTruncated(1)+parent.eLang.getSysString("STR_UNITS_GB")); } } eExt.converttoMBorGBStringTruncated=function(numberinKB) { if (numberinKB>=1048576) { return(eExt.converttoGBTruncated(numberinKB)); } else { return(eExt.converttoMBTruncated(numberinKB)); } } // Generic function, input = kHz whereas 1kHz=1000 Hz eExt.converttoGHz=function(numberink,boolnumberonly) { Sergnese Nicola 566/2002 Pagina 158 di 228 var newnum=new Number(numberink); newnum=newnum/1000000; if (boolnumberonly) { return(newnum.toFixed(1)); } else { return(newnum.toFixed(1)+parent.eLang.getSysString("STR_UNITS_GHZ")); } } // Debugging function to expose all properties and methods of a given // object eExt.debugExposeProperties=function(object) { var x; var str=""; for (x in object) { str+="<b>["+x+"]</b> - "; if (typeof(object[x])=="function") { str+="FUNC - "; } else { if (typeof(object[x])==null) { str+="NULL - "; } else { str+="PROP - "; } } str+=object[x]+"<br>"; } eExt.showdebugWindow(str,500,600); } eExt.enableControl=function(ctrl,boolEnable) { ctrl.disabled=!boolEnable; // HTML // See if DOMAPI --- "enabled" is a DOMAPI object property. if (ctrl.enabled!=undefined) { // DOMAPI ctrl.enabled=boolEnable; Sergnese Nicola 566/2002 Pagina 159 di 228 ctrl.reDraw(); } // Handle IE quirks if (ctrl.type!=undefined) { //Style text boxes to lightgray if IE if ((ctrl.type=='text')||(ctrl.type=='password')) { ctrl.style.backgroundColor=(boolEnable?"":'lightgrey'); } } // Handle Firefox quirks if (!document.all) { if (ctrl.tagName=='LABEL') { ctrl.style.color=(boolEnable?"":'#a0a0a0'); } } } // A new function to add to the Number object to truncate a fractional portion // after the decimal WITHOUT ROUNDING. For example, 2.99999 with a numdigits // value of 2 would return 2.99, whereas the builtin toFixed rounds it and // returns 3.00. // [BrandonB] 6/16/2004 Number.prototype.toTruncated=function(numdigits) { var decimalmover=Math.pow(10,numdigits); return ( (Math.floor(this*decimalmover))/decimalmover ); } //______________________________________________________________________________ //================================================================== ============ // cleanupTextArea //-----------------------------------------------------------------------------// Escapes any quotes from text areas and removes any new lines // // Input // ----// string // // Output // -----// // //____________________________________________________________________Author:BMB //================================================================== ============ Sergnese Nicola 566/2002 Pagina 160 di 228 eExt.cleanupTextArea=function (string) { // remove newlines string=string.replace(/[\r\n]/g, " "); // escape quotes string=string.replace(/'/g, "\'"); string=string.replace(/"/g, "\""); return (string); } //______________________________________________________________________________ //================================================================== ============ // eExt.showMeThisObject //-----------------------------------------------------------------------------// Small routine to take an object and write its contents to a popup window. // Extremely useful for debugging object manipulation in Studio! // // Input // ----// obj // // Output // -----// // // Author:BMB //______________________________________________________________________________ //================================================================== ============ // Jump Tag 1153944906 [ PROC - "eExt.showMeThisObject()" ] eExt.showMeThisObject=function (obj) { var str=(displayJSONStructure(obj, "", 1, 1, 1)); eExt.showdebugWindow(str,500,600); } //______________________________________________________________________________ //================================================================== ============ // eExt.getHTTPHeaderProps //-----------------------------------------------------------------------------// Scans and resolves some parameters from an HTTP GET header // // Input // ----// text - string of the entire HTTP header // // Output // -----// object - returns and object with the following parameters: Sergnese Nicola 566/2002 Pagina 161 di 228 // languagestring : the string of the Accept-Language field // langs : an array of user-preferred languages, resolved to two letter, // upper case // useragent: the User-Agent field // // // Author:BMB //______________________________________________________________________________ //================================================================== ============ //Jump Tag 1158783913 [ PROC - "eExt.getHTTPHeaderProps()" ] eExt.getHTTPHeaderProps=function(text) { var mainobj={}; mainobj.languagestring=""; mainobj.langs=[]; // Accept-Language var myregexp = /Accept-Language:(.*)/; var match = myregexp.exec(text); if (match != null && match.length > 1) { mainobj.languagestring=match[1]; } else { mainobj.languagestring=""; } // Now process lang codes mainobj.langs=mainobj.languagestring.split(","); for (var i=0;i<mainobj.langs.length;i++) { mainobj.langs[i]=(/[a-z]+[,$]*/.exec(mainobj.langs[i])[0]).toUpperCase(); } // User-Agent var myregexp = /User-Agent:(.*)/; match = myregexp.exec(text); if (match != null && match.length > 1) { mainobj.useragent=match[1]; } else { mainobj.useragent=""; } // Host var myregexp = /Host:(.*)/; match = myregexp.exec(text); if (match != null && match.length > 1) { mainobj.host=match[1]; } else Sergnese Nicola 566/2002 Pagina 162 di 228 { mainobj.host=""; } return mainobj; } //______________________________________________________________________________ //================================================================== ============ // setOrgs //-----------------------------------------------------------------------------// Takes the values of the controls defined in the source array and sets them // to their current values. Typically called when all data has been loaded // on the page for the first time (to set initial values) and in the response // handler of any write function. // // Input // ----// arOrgs - array containing control data references. The data is stored // as pairs, with the first value a string to eval to get the // data. The second value is the placeholder for the value // when doing a set operation with this function. // // Example: // var orgsIPrange=[ // "chkIPEnabled.checked", 0, // "txtRangeAddr.value", "", // "txtRangeSubnetMask.value", "" // ]; // // Output // -----// None // Author:BMB //______________________________________________________________________________ //================================================================== ============ eExt.setOrgs=function(arOrgs) { for (var i=0;i<arOrgs.length/2;i++) { arOrgs[i*2+1]=eval(arOrgs[i*2]); } } //______________________________________________________________________________ //================================================================== ============ // checkOrgs //-----------------------------------------------------------------------------// Checks the values of the controls defined in the source array to see // if they have changed. // Sergnese Nicola 566/2002 Pagina 163 di 228 // Input // ----// arOrgs - array containing control data references // // Output // -----// boolean - true=changed, false=unchanged // // Author:BMB //______________________________________________________________________________ //================================================================== ============ eExt.checkOrgs=function(arOrgs) { var isChanged=false; var temp; for (var i=0;i<arOrgs.length/2;i++) { if (arOrgs[i*2+1]!=eval(arOrgs[i*2])) { isChanged=true; break; } } return isChanged; } codice eLang.js //----------------------------------------------------------------// // eLang language support library //----------------------------------------------------------------// var eLang = {}; // declare empty object //----------------------------------------------------------------// // getString // optBit - added by [email protected] // purpose - For multidimensional declaration of strings. eLang.getString = function(widget, token) { var optBit = arguments[2]; if (token=="") return " "; else if (widget=="") return "DEVERROR: String class not specified"; // Cascade to try and find the string, which could be included either in the // frame/page that has loaded this copy of eLang, or it may be in the topmost // frameset. // [BrandonB] 7/2/2007 // First look for string group if (eLang[widget+"_strings"]!=undefined) { Sergnese Nicola 566/2002 Pagina 164 di 228 //Optional bit check if(optBit!=undefined && eLang[widget+"_strings"][token][optBit]!=undefined) { return eLang[widget+"_strings"][token][optBit]; } if (eLang[widget+"_strings"][token]!=undefined) { return eLang[widget+"_strings"][token]; } } else { if (top.eLang[widget+"_strings"]!=undefined) { //Optional bit check if(optBit!=undefined && top.eLang[widget+"_strings"][token][optBit]!=undefined) return top.eLang[widget+"_strings"][token][optBit]; if (top.eLang[widget+"_strings"][token]!=undefined) return top.eLang[widget+"_strings"][token]; } else { if (eLang.global_strings!=undefined) { //Optional bit check if(optBit!=undefined && eLang.global_strings[token][optBit]!=undefined) return eLang.global_strings[token][optBit]; if (eLang.global_strings[token]!=undefined) return eLang.global_strings[token]; } } } return "DEVERROR: Cannot locate string eLang."+widget+"_strings["+token+"]"+(optBit! =undefined)?"["+optBit+"]":""; } codice err_str.js eLang.err_strings = {}; eLang.err_strings[0x01] = "Invalid User Name"; eLang.err_strings[0x02] = "Password and confirmation password do not match"; eLang.err_strings[0x03] = "Invalid Password"; eLang.err_strings[0x04] = "Invalid Access"; eLang.err_strings[0x05] = "Invalid Role Group Name!"; eLang.err_strings[0x06] = "Invalid Role Group Domain Name!"; codice event_str.js /*************************************** Event / Reading type codes *******************************************/ //eLang.event_strings[EVENT / READING TYPE CODE][GENERIC OFFSET] = "DESCRIPTION"; / ****************************************************************************************** Sergnese Nicola 566/2002 Pagina 165 di 228 ***************************/ eLang.event_strings = new Array(); /******* Threshold Event Type Codes *********/ eLang.event_strings[1] = new Array(); eLang.event_strings[1][0] = "Lower Non-Critical - Going Low"; eLang.event_strings[1][1] = "Lower Non-Critical - Going High"; eLang.event_strings[1][2] = "Lower Critical - Going Low"; eLang.event_strings[1][3] = "Lower Critical - Going High"; eLang.event_strings[1][4] = "Lower Non-Recoverable - Going Low"; eLang.event_strings[1][5] = "Lower Non-Recoverable - Going High"; eLang.event_strings[1][6] = "Upper Non-Critical - Going Low"; eLang.event_strings[1][7] = "Upper Non-Critical - Going High"; eLang.event_strings[1][8] = "Upper Critical - Going Low"; eLang.event_strings[1][9] = "Upper Critical - Going High"; eLang.event_strings[1][10] = "Upper Non-Recoverable - Going Low"; eLang.event_strings[1][11] = "Upper Non-Recoverable - Going High"; /******* Generic Discrete Event Type Codes *********/ eLang.event_strings[2] = new Array(); eLang.event_strings[2][0] = "Transition to Idle"; eLang.event_strings[2][1] = "Transition to Active"; eLang.event_strings[2][2] = "Transition to Busy"; /******* Digital Discrete Event Type Codes *********/ eLang.event_strings[3] = new Array(); eLang.event_strings[3][0] = "State Deasserted"; eLang.event_strings[3][1] = "State Asserted"; eLang.event_strings[4] = new Array(); eLang.event_strings[4][0] = "Predictive Failure Deasserted"; eLang.event_strings[4][1] = "Predictive Failure Asserted"; eLang.event_strings[5] = new Array(); eLang.event_strings[5][0] = "Limit Not Exceeded"; eLang.event_strings[5][1] = "Limit Exceeded"; eLang.event_strings[6] = new Array(); eLang.event_strings[6][0] = "Performance Met"; eLang.event_strings[6][1] = "Performance Lags"; eLang.event_strings[7] = new Array(); eLang.event_strings[7][0] = "Transition to OK"; eLang.event_strings[7][1] = "Transition to Non-Critical from OK"; eLang.event_strings[7][2] = "Transition to Critical from less severe"; eLang.event_strings[7][3] = "Transition to Non-Recoverable from less severe"; eLang.event_strings[7][4] = "Transition to Non-Critical from more severe"; eLang.event_strings[7][5] = "Transition to Critical from Non-Recoverable"; eLang.event_strings[7][6] = "Transition to Non-Recoverable"; eLang.event_strings[7][7] = "Monitor"; eLang.event_strings[7][8] = "Informational"; eLang.event_strings[8] = new Array(); eLang.event_strings[8][0] = "Device Removed / Device Absent"; eLang.event_strings[8][1] = "Device Inserted / Device Present"; eLang.event_strings[9] = new Array(); Sergnese Nicola 566/2002 Pagina 166 di 228 eLang.event_strings[9][0] = eLang.event_strings[9][1] = "Device Disabled"; "Device Enabled"; eLang.event_strings[10] = new Array(); eLang.event_strings[10][0] = "Transition to Running"; eLang.event_strings[10][1] = "Transition to In Test"; eLang.event_strings[10][2] = "Transition to Power Off"; eLang.event_strings[10][3] = "Transition to On Line"; eLang.event_strings[10][4] = "Transition to Off Line"; eLang.event_strings[10][5] = "Transition to Off Duty"; eLang.event_strings[10][6] = "Transition to Degraded"; eLang.event_strings[10][7] = "Transition to Power Save"; eLang.event_strings[10][8] = "Install Error"; eLang.event_strings[11] = new Array(); eLang.event_strings[11][0] = "Fully Redundant (Redundancy Regained)"; eLang.event_strings[11][1] = "Redundancy Lost"; eLang.event_strings[11][2] = "Redundancy Degraded"; eLang.event_strings[11][3] = "Non-redundant: Sufficient Resources from Redundant"; eLang.event_strings[11][4] = "Non-redundant: Sufficient Resources from Insufficient Resources"; eLang.event_strings[11][5] = "Non-redundant: Insufficient Resources"; eLang.event_strings[11][6] = "Redundancy Degraded From Fully Redundant"; eLang.event_strings[11][7] = "Redundancy Degraded From Non-redundant"; eLang.event_strings[12] = new Array(); eLang.event_strings[12][0] = "D0 Power State"; eLang.event_strings[12][1] = "D1 Power State"; eLang.event_strings[12][2] = "D2 Power State"; eLang.event_strings[12][3] = "D3 Power State"; codice global_str.js document.write("<script language = \"Javascript\", src = \"../str/" + top.gLangSetting + "/common_str.js\"><\/script>"); document.write("<script language = \"Javascript\", src = \"../str/" + top.gLangSetting + "/bios_post_event_str.js\"><\/script>"); document.write("<script language = \"Javascript\", src = \"../str/" + top.gLangSetting + "/chassistype_str.js\"><\/script>"); document.write("<script language = \"Javascript\", src = \"../str/" + top.gLangSetting + "/err_str.js\"><\/script>"); document.write("<script language = \"Javascript\", src = \"../str/" + top.gLangSetting + "/noreading_str.js\"><\/script>"); document.write("<script language = \"Javascript\", src = \"../str/" + top.gLangSetting + "/sensor_specific_event_str.js\"><\/script>"); document.write("<script language = \"Javascript\", src = \"../str/" + top.gLangSetting + "/sensortype_str.js\"><\/script>"); document.write("<script language = \"Javascript\", src = \"../str/" + top.gLangSetting + "/sys_str.js\"><\/script>"); document.write("<script language = \"Javascript\", src = \"../str/" + top.gLangSetting + "/threshstate_str.js\"><\/script>"); document.write("<script language = \"Javascript\", src = \"../str/" + top.gLangSetting + "/tz_str.js\"><\/script>"); document.write("<script language = \"Javascript\", src = \"../str/" + top.gLangSetting + "/unittype_str.js\"><\/script>"); document.write("<script language = \"Javascript\", src = \"../str/" + top.gLangSetting + Sergnese Nicola 566/2002 Pagina 167 di 228 "/event_str.js\"><\/script>"); eLang.global_string = {}; codice login_imp.js function doInit() { // TODO: add page initialization code //first check what the reason is for us to be in the login page var validate_prevlogin = xmit.get({url:"/rpc/WEBSES/validate.asp",onrcv:validate_prevlogin_resp, status:''}); document.getElementById('login_username').focus(); //clear previous lastpage cookies fnCookie.erase('lastNav'); fnCookie.erase('lastPage'); fnCookie.erase('lItem'); fnCookie.erase('lastHiLit'); } var errorcodes = new Array(); errorcodes[9] = eLang.getString('common','STR_LOGINERRORCODE_9'); //fresh browser window errorcodes[8] = eLang.getString('common','STR_LOGINERRORCODE_8'); //logged out properly and cookie is set to logged out errorcodes[7] = eLang.getString('common','STR_LOGINERRORCODE_7'); errorcodes[6] = errorcodes[5] = errorcodes[4] = eLang.getString('common','STR_LOGINERRORCODE_4'); errorcodes[3] = eLang.getString('common','STR_LOGINERRORCODE_3'); errorcodes[2] = eLang.getString('common','STR_LOGINERRORCODE_2'); errorcodes[1] = eLang.getString('common','STR_LOGINERRORCODE_1'); var DoLogin = function() { //note that we have to give the full path for the RPC page here since we are still not initialized fully if(document.getElementById('login_username').value == "root"){ document.getElementById('msglbl').innerHTML = eLang.getString('common','STR_LOGINERRORCODE_7'); document.getElementById('login_password').value = ""; document.getElementById('login_password').focus(); return false; } var login_rpc = xmit.getset({url:"/rpc/WEBSES/create.asp",onrcv:login_resp, status:'',timeout:60}); login_rpc.add("WEBVAR_USERNAME",document.getElementById('login_username').value); login_rpc.add("WEBVAR_PASSWORD",document.getElementById('login_password').value); login_rpc.send(); return false; } var login_resp = function() { login_retval = WEBVAR_JSONVAR_WEB_SESSION.HAPI_STATUS; Sergnese Nicola 566/2002 Pagina 168 di 228 if(login_retval != 0) { document.getElementById('msglbl').innerHTML = eLang.getString('common','STR_LOGINERRORCODE_7'); //document.getElementById('login_username').value = ""; document.getElementById('login_password').value = ""; document.getElementById('login_password').focus(); return; } login_cookie = WEBVAR_JSONVAR_WEB_SESSION.WEBVAR_STRUCTNAME_WEB_SESSION[0].SESSION_COOKIE; document.cookie = "SessionCookie="+login_cookie+";path=/"; document.cookie = "Username=" + document.getElementById('login_username').value + ";path=/"; document.location = "/index.html"; } var validate_prevlogin_resp = function() { errcod = WEBVAR_JSONVAR_WEB_SESSION_VALIDATE.HAPI_STATUS; if(errcod != 0 || errorcodes[errcod] != undefined) { //alert(errcod + " " + errorcodes[errcod]); document.getElementById('msglbl').innerHTML = errorcodes[errcod]; } } document.onkeypress = function(e) { if(!e) e = window.event; if(e.keyCode==13) { DoLogin(); } } codice login_str.js //------------------------------------------------------------// // login page string table //------------------------------------------------------------// eLang.login_strings = {}; eLang.login_strings["STR_LOGIN_USERNAME"] = "Username"; eLang.login_strings["STR_LOGIN_PASSWORD"] = "Password"; eLang.login_strings["STR_LOGIN_PLS_LOGIN"] = "Please Login"; codice noreading_str.js eLang.noreading_strings = []; eLang.noreading_strings[0]= "(No status)"; eLang.noreading_strings[5]= "No intrusion"; codice sensor_specific_event_str.js Sergnese Nicola 566/2002 // Default for unknown sensor type with no reading // Chassis intrusion Pagina 169 di 228 /*************************************** Sensor specific event codes ******************************************/ //eLang.sensor_specific_event_strings[SENSOR TYPE CODE][SENSOR-SPECIFIC OFFSET] = "EVENT DESCRIPTION"; /***************************************************************************************** ****************************/ eLang.sensor_specific_event_strings = new Array(); eLang.sensor_specific_event_strings[0] = "reserved"; eLang.sensor_specific_event_strings[1] = "Temperature"; eLang.sensor_specific_event_strings[2] = "Voltage"; eLang.sensor_specific_event_strings[3] = "Current"; eLang.sensor_specific_event_strings[4] = "Fan"; eLang.sensor_specific_event_strings[5] = new Array(); eLang.sensor_specific_event_strings[5][0] = "General Chassis Intrusion"; eLang.sensor_specific_event_strings[5][1] = "Drive Bay Intrusion"; eLang.sensor_specific_event_strings[5][2] = "I/O Card Area Intrusion"; eLang.sensor_specific_event_strings[5][3] = "Processor Area Intrusion"; eLang.sensor_specific_event_strings[5][4] = "LAN Leash Lost (System unplugged from LAN)"; eLang.sensor_specific_event_strings[5][5] = "Unauthorized Dock/Undock"; eLang.sensor_specific_event_strings[5][6] = "Fan Area Intrusion"; eLang.sensor_specific_event_strings[6] = new Array(); eLang.sensor_specific_event_strings[6][0] = "Secure Mode Violation Attempt"; eLang.sensor_specific_event_strings[6][1] = "Pre-boot Password Violation - user password"; eLang.sensor_specific_event_strings[6][2] = "Pre-boot Password Violation Attempt - setup password"; eLang.sensor_specific_event_strings[6][3] = "Pre-boot Password Violation - network boot password"; eLang.sensor_specific_event_strings[6][4] = "Other Pre-boot Password Violation"; eLang.sensor_specific_event_strings[6][5] = "Out-of-Band Access Password Violation"; eLang.sensor_specific_event_strings[7] = new Array(); eLang.sensor_specific_event_strings[7][0] = "IERR"; eLang.sensor_specific_event_strings[7][1] = "Therman Trip"; eLang.sensor_specific_event_strings[7][2] = "FRB1/BIST Failure"; eLang.sensor_specific_event_strings[7][3] = "FRB2/Hang in POST Faliure"; eLang.sensor_specific_event_strings[7][4] = "FRB3/Processor Startup/Initialization Failure"; eLang.sensor_specific_event_strings[7][5] = "Configuration Error (DMI)"; eLang.sensor_specific_event_strings[7][6] = "SM BIOS 'Uncorrectable CPU-complex Error"; eLang.sensor_specific_event_strings[7][7] = "Processor Presence Detected"; eLang.sensor_specific_event_strings[7][8] = "Processor Disabled"; eLang.sensor_specific_event_strings[7][9] = "Terminator Presence Detected"; eLang.sensor_specific_event_strings[7][10] = "Processor Automatically Throttled"; eLang.sensor_specific_event_strings[8] = new Array(); eLang.sensor_specific_event_strings[8][0] = "Presence Detected"; eLang.sensor_specific_event_strings[8][1] = "Power Supply Failure Detected"; eLang.sensor_specific_event_strings[8][2] = "Predictive Failure Asserted"; eLang.sensor_specific_event_strings[8][3] = "Power Supply Input Lost (AC/DC)"; eLang.sensor_specific_event_strings[8][4] = "Power Supply Input Lost or Out of Range"; eLang.sensor_specific_event_strings[8][5] = "Power Supply Input Out of Range, but Present"; eLang.sensor_specific_event_strings[8][6] = "Configuration Error"; eLang.sensor_specific_event_strings[9] = new Array(); eLang.sensor_specific_event_strings[9][0] = "Power Off / Power Down"; eLang.sensor_specific_event_strings[9][1] = "Power Cycle"; Sergnese Nicola 566/2002 Pagina 170 di 228 eLang.sensor_specific_event_strings[9][2] = eLang.sensor_specific_event_strings[9][3] = eLang.sensor_specific_event_strings[9][4] = eLang.sensor_specific_event_strings[9][5] = eLang.sensor_specific_event_strings[9][6] = eLang.sensor_specific_event_strings[9][7] = "240VA Power Down"; "Interlock Power Down"; "AC Lost"; "Soft Power Control Failure"; "Power Unit Failure Detected"; "Predictive Failure"; eLang.sensor_specific_event_strings[12] = new Array(); eLang.sensor_specific_event_strings[12][0] = "Correctable ECC"; eLang.sensor_specific_event_strings[12][1] = "Uncorrectable ECC"; eLang.sensor_specific_event_strings[12][2] = "Parity"; eLang.sensor_specific_event_strings[12][3] = "Memory Scrub Failure"; eLang.sensor_specific_event_strings[12][4] = "Memory Device Disabled"; eLang.sensor_specific_event_strings[12][5] = "Correctable ECC Logging Limit Reached"; eLang.sensor_specific_event_strings[12][6] = "Presence Detected"; eLang.sensor_specific_event_strings[12][7] = "Configuration Error"; eLang.sensor_specific_event_strings[12][8] = "Spare"; eLang.sensor_specific_event_strings[13] = new Array(); eLang.sensor_specific_event_strings[13][0] = "Drive Presence"; eLang.sensor_specific_event_strings[13][1] = "Drive Fault"; eLang.sensor_specific_event_strings[13][2] = "Predictive Failure"; eLang.sensor_specific_event_strings[13][3] = "Hot Spare"; eLang.sensor_specific_event_strings[13][4] = "Consistency Check/Parity Check in Progress"; eLang.sensor_specific_event_strings[13][5] = "In Critical Array"; eLang.sensor_specific_event_strings[13][6] = "In failed Array"; eLang.sensor_specific_event_strings[13][7] = "Rebuild/Remap in progress"; eLang.sensor_specific_event_strings[13][8] = "Rebuild/Remap Aborted"; eLang.sensor_specific_event_strings[15] = new Array(); eLang.sensor_specific_event_strings[15][0] = "Error"; eLang.sensor_specific_event_strings[15][1] = "Hang"; eLang.sensor_specific_event_strings[15][2] = "Progress"; eLang.sensor_specific_event_strings[16] = new Array(); eLang.sensor_specific_event_strings[16][0] = "Correctable Memory Error Logging Disabled"; eLang.sensor_specific_event_strings[16][1] = "Event 'Type' Logging Disabled"; eLang.sensor_specific_event_strings[16][2] = "Log Area Reset/Cleared"; eLang.sensor_specific_event_strings[16][3] = "All Event Logging Disabled"; eLang.sensor_specific_event_strings[16][4] = "SEL Full"; eLang.sensor_specific_event_strings[16][5] = "SEL Almost Full"; eLang.sensor_specific_event_strings[17] = new Array(); eLang.sensor_specific_event_strings[17][0] = "BIOS Watchdog Reset"; eLang.sensor_specific_event_strings[17][1] = "OS Watchdog Reset"; eLang.sensor_specific_event_strings[17][2] = "OS Watchdog Shutdown"; eLang.sensor_specific_event_strings[17][3] = "OS Watchdog Power Down"; eLang.sensor_specific_event_strings[17][4] = "OS Watchdog Power Cycle"; eLang.sensor_specific_event_strings[17][5] = "OS Watchdog NMI"; eLang.sensor_specific_event_strings[17][6] = "OS Watchdog Expired"; eLang.sensor_specific_event_strings[17][7] = "OS Watchdog Pre-timeout Interrupt, non-NMI"; eLang.sensor_specific_event_strings[18] = new Array(); eLang.sensor_specific_event_strings[18][0] = "System Reconfigured"; Sergnese Nicola 566/2002 Pagina 171 di 228 eLang.sensor_specific_event_strings[18][1] = eLang.sensor_specific_event_strings[18][2] = eLang.sensor_specific_event_strings[18][3] = eLang.sensor_specific_event_strings[18][4] = "OEM System Boot Event"; "Undetermined System Hardware Failure"; "Entry Added to Auxiliary Log"; "PEF Action"; eLang.sensor_specific_event_strings[19] = new Array(); eLang.sensor_specific_event_strings[19][0] = "Front Panel NMI"; eLang.sensor_specific_event_strings[19][1] = "Bus Timeout"; eLang.sensor_specific_event_strings[19][2] = "I/O Channel Check NMI"; eLang.sensor_specific_event_strings[19][3] = "Software NMI"; eLang.sensor_specific_event_strings[19][4] = "PCI PERR"; eLang.sensor_specific_event_strings[19][5] = "PCI SERR"; eLang.sensor_specific_event_strings[19][6] = "EISA Fail Safe Timeout"; eLang.sensor_specific_event_strings[19][7] = "Bus Correctable Error"; eLang.sensor_specific_event_strings[19][8] = "Bus Uncorrectable Error"; eLang.sensor_specific_event_strings[19][9] = "Fatal NMI"; eLang.sensor_specific_event_strings[19][10] = "Bus Fatal Error"; eLang.sensor_specific_event_strings[20] = new Array(); eLang.sensor_specific_event_strings[20][0] = "Power Button Pressed"; eLang.sensor_specific_event_strings[20][1] = "Sleep Button Pressed"; eLang.sensor_specific_event_strings[20][2] = "Reset Button Pressed"; eLang.sensor_specific_event_strings[20][3] = "FRU Latch Open"; eLang.sensor_specific_event_strings[20][4] = "FRU Service Request Button"; eLang.sensor_specific_event_strings[25] = new Array(); eLang.sensor_specific_event_strings[25][0] = "Soft Power Control Failure"; eLang.sensor_specific_event_strings[29] = new Array(); eLang.sensor_specific_event_strings[29][0] = "Initiated By Power Up"; eLang.sensor_specific_event_strings[29][1] = "Initiated By Hard Reset"; eLang.sensor_specific_event_strings[29][2] = "Initiated By Warm Reset"; eLang.sensor_specific_event_strings[29][3] = "User Requested PXE Boot"; eLang.sensor_specific_event_strings[29][4] = "Automatic Boot to Diagnostic"; eLang.sensor_specific_event_strings[30] = new Array(); eLang.sensor_specific_event_strings[30][0] = "No Bootable Media"; eLang.sensor_specific_event_strings[30][1] = "Non-Bootable Diskette Left in Drive"; eLang.sensor_specific_event_strings[30][2] = "PXE Server Not Found"; eLang.sensor_specific_event_strings[30][3] = "Invalid Boot Sector"; eLang.sensor_specific_event_strings[30][4] = "Timeout Waiting For User Selection of Boot Source"; eLang.sensor_specific_event_strings[31] = new Array(); eLang.sensor_specific_event_strings[31][0] = "A: Boot Completed"; eLang.sensor_specific_event_strings[31][1] = "C: Boot Completed"; eLang.sensor_specific_event_strings[31][2] = "PXE Boot Completed"; eLang.sensor_specific_event_strings[31][3] = "Diagnostic Boot Completed"; eLang.sensor_specific_event_strings[31][4] = "CD-ROM Boot Completed"; eLang.sensor_specific_event_strings[31][5] = "ROM Boot Completed"; eLang.sensor_specific_event_strings[31][6] = "Boot Completed - Boot Device Not Specified"; eLang.sensor_specific_event_strings[32] = new Array(); eLang.sensor_specific_event_strings[32][0] = "Stop During OS Load / Initialization"; eLang.sensor_specific_event_strings[32][1] = "Run-Time Stop"; Sergnese Nicola 566/2002 Pagina 172 di 228 eLang.sensor_specific_event_strings[33] = new Array(); eLang.sensor_specific_event_strings[33][0] = "Fault Status Asserted"; eLang.sensor_specific_event_strings[33][1] = "Identify Status Asserted"; eLang.sensor_specific_event_strings[33][2] = "Slot/Connector Device Installed/Attached"; eLang.sensor_specific_event_strings[33][3] = "Slot/Connector Ready For Device Installation"; eLang.sensor_specific_event_strings[33][4] = "Slot/Connector Ready For Device Removal"; eLang.sensor_specific_event_strings[33][5] = "Slot Power is Off"; eLang.sensor_specific_event_strings[33][6] = "Slot/Connector Device Removal Request"; eLang.sensor_specific_event_strings[33][7] = "Interlock Asserted"; eLang.sensor_specific_event_strings[33][8] = "Slot is Disabled"; eLang.sensor_specific_event_strings[33][9] = "Slot Holds Spare Device"; eLang.sensor_specific_event_strings[34] = new Array(); eLang.sensor_specific_event_strings[34][0] = "S0/G0 'Working"; eLang.sensor_specific_event_strings[34][1] = "S1 'Sleeping With System HW & Processor Context Maintained'"; eLang.sensor_specific_event_strings[34][2] = "S2 'Sleeping, Processor Context Lost'"; eLang.sensor_specific_event_strings[34][3] = "S3 'Sleeping, Processor & HW Context Lost, Memory Retained'"; eLang.sensor_specific_event_strings[34][4] = "S4 'Non-Volatile Sleep/Suspend To Disk'"; eLang.sensor_specific_event_strings[34][5] = "S5/G2 'Soft Off'"; eLang.sensor_specific_event_strings[34][6] = "S4/S5 Soft Off, Particular S4/S5 State Cannot Be Determined"; eLang.sensor_specific_event_strings[34][7] = "G3 / Mechanical Off"; eLang.sensor_specific_event_strings[34][8] = "Sleeping in S1, S2, or S3"; eLang.sensor_specific_event_strings[34][9] = "G1 Sleeping"; eLang.sensor_specific_event_strings[34][10] = "S5 Entered By Override"; eLang.sensor_specific_event_strings[34][11] = "Legacy ON State"; eLang.sensor_specific_event_strings[34][12] = "Legacy OFF State"; eLang.sensor_specific_event_strings[34][13] = "Unknown"; eLang.sensor_specific_event_strings[35] = new Array(); eLang.sensor_specific_event_strings[35][0] = "Timer Expired"; eLang.sensor_specific_event_strings[35][1] = "Hard Reset"; eLang.sensor_specific_event_strings[35][2] = "Power Down"; eLang.sensor_specific_event_strings[35][3] = "Power Cycle"; eLang.sensor_specific_event_strings[35][4] = "Reserved"; eLang.sensor_specific_event_strings[35][5] = "Reserved"; eLang.sensor_specific_event_strings[35][6] = "Reserved"; eLang.sensor_specific_event_strings[35][7] = "Reserved"; eLang.sensor_specific_event_strings[35][8] = "Timer Interrupt"; eLang.sensor_specific_event_strings[36] = new Array(); eLang.sensor_specific_event_strings[36][0] = "Platform Generated Page"; eLang.sensor_specific_event_strings[36][1] = "Platform Generated LAN Alert"; eLang.sensor_specific_event_strings[36][2] = "Platform Event Trap Generated"; eLang.sensor_specific_event_strings[36][3] = "Platform Generated SNMP Trap, OEM Format"; eLang.sensor_specific_event_strings[37] = new Array(); eLang.sensor_specific_event_strings[37][0] = "Entity Present"; eLang.sensor_specific_event_strings[37][1] = "Entity Absent"; eLang.sensor_specific_event_strings[37][2] = "Entity Disabled"; eLang.sensor_specific_event_strings[39] = new Array(); eLang.sensor_specific_event_strings[39][0] = "LAN Heartbeat Lost"; eLang.sensor_specific_event_strings[39][1] = "LAN Heartbeat"; Sergnese Nicola 566/2002 Pagina 173 di 228 eLang.sensor_specific_event_strings[40] = new Array(); eLang.sensor_specific_event_strings[40][0] = "Sensor Access Degraded or Unavailable"; eLang.sensor_specific_event_strings[40][1] = "Controller Access Degraded or Unavailable"; eLang.sensor_specific_event_strings[40][2] = "Management Controller Offline"; eLang.sensor_specific_event_strings[40][3] = "Management Controller Unavailable"; eLang.sensor_specific_event_strings[41] = new Array(); eLang.sensor_specific_event_strings[41][0] = "Battery Low"; eLang.sensor_specific_event_strings[41][1] = "Battery Failed"; eLang.sensor_specific_event_strings[41][2] = "Battery Presence Detected"; eLang.sensor_specific_event_strings[42] = new Array(); eLang.sensor_specific_event_strings[42][0] = "Session Activated"; eLang.sensor_specific_event_strings[42][1] = "Session Deactivated"; eLang.sensor_specific_event_strings[43] = new Array(); eLang.sensor_specific_event_strings[43][0] = "Hardware Change Detected"; eLang.sensor_specific_event_strings[43][1] = "Firmware / Software Change Detected"; eLang.sensor_specific_event_strings[43][2] = "Hardware Incompatibility Detected"; eLang.sensor_specific_event_strings[43][3] = "Firmware / Software Incompatibility Detected"; eLang.sensor_specific_event_strings[43][4] = "Invalid or Unsupported Hardware Version"; eLang.sensor_specific_event_strings[43][5] = "Invalid or Unsupported Firmware / Software Version"; eLang.sensor_specific_event_strings[43][6] = "Hardware Change Detected was successful"; eLang.sensor_specific_event_strings[43][7] = "Firmware / Software Change Detected was successful"; eLang.sensor_specific_event_strings[44] = new Array(); eLang.sensor_specific_event_strings[44][0] = "FRU Not Installed"; eLang.sensor_specific_event_strings[44][1] = "FRU Inactive"; eLang.sensor_specific_event_strings[44][2] = "FRU Activation Requested"; eLang.sensor_specific_event_strings[44][3] = "FRU Activation In Progress"; eLang.sensor_specific_event_strings[44][4] = "FRU Active"; eLang.sensor_specific_event_strings[44][5] = "FRU Deactivation Requested"; eLang.sensor_specific_event_strings[44][6] = "FRU Deactivation In Progress"; eLang.sensor_specific_event_strings[44][7] = "FRU Communication Lost"; eLang.sensor_specific_event_strings[193] = new Array(); eLang.sensor_specific_event_strings[193][0] = "Read ECC Error"; eLang.sensor_specific_event_strings[193][1] = "ECC Error occurred on a scrub"; eLang.sensor_specific_event_strings[193][2] = "Write Parity Error"; eLang.sensor_specific_event_strings[193][3] = "Error in Redundant memory"; eLang.sensor_specific_event_strings[193][4] = "Sparing Error"; eLang.sensor_specific_event_strings[193][5] = "Memory access out of Range"; eLang.sensor_specific_event_strings[193][6] = "Address Parity Error"; eLang.sensor_specific_event_strings[193][7] = "Byte Enable Parity Error"; eLang.sensor_specific_event_strings[193][8] = "OK"; codice sensortype_str.js /****************************** Sensor type codes ********************************/ //eLang.sensortype_strings[SENSOR TYPE CODE] = "SENSOR TYPE"; /**************************************************************************************/ eLang.sensortype_strings = new Array(); eLang.sensortype_strings[0] = "reserved"; eLang.sensortype_strings[1] = "Temperature"; eLang.sensortype_strings[2] = "Voltage"; eLang.sensortype_strings[3] = "Current"; eLang.sensortype_strings[4] = "Fan"; Sergnese Nicola 566/2002 Pagina 174 di 228 eLang.sensortype_strings[5] = "Physical Security (Chassis Intrusion)"; eLang.sensortype_strings[6] = "Platform Security Violation Attempt"; eLang.sensortype_strings[7] = "Processor"; eLang.sensortype_strings[8] = "Power Supply"; eLang.sensortype_strings[9] = "Power Unit"; eLang.sensortype_strings[10] = "Cooling Device"; eLang.sensortype_strings[11] = "Other Units-based sensor"; eLang.sensortype_strings[12] = "Memory"; eLang.sensortype_strings[13] = "Drive Slot (Bay)"; eLang.sensortype_strings[14] = "POST Memory Resize"; eLang.sensortype_strings[15] = "BIOS POST Progress"; eLang.sensortype_strings[16] = "Event Logging disabled"; eLang.sensortype_strings[17] = "Watchdog 1"; eLang.sensortype_strings[18] = "System Event"; eLang.sensortype_strings[19] = "Critical Interrupt"; eLang.sensortype_strings[20] = "Button / Switch"; eLang.sensortype_strings[21] = "Module / Board"; eLang.sensortype_strings[22] = "Microcontroller / Coprocessor"; eLang.sensortype_strings[23] = "Add-in Card"; eLang.sensortype_strings[24] = "Chassis"; eLang.sensortype_strings[25] = "Chip Set"; eLang.sensortype_strings[26] = "Other FRU"; eLang.sensortype_strings[27] = "Cable / Interconnect"; eLang.sensortype_strings[28] = "Terminator"; eLang.sensortype_strings[29] = "System Boot Initiated"; eLang.sensortype_strings[30] = "Boot Error"; eLang.sensortype_strings[31] = "OS Boot"; eLang.sensortype_strings[32] = "OS Critical Stop"; eLang.sensortype_strings[33] = "Slot / Connector"; eLang.sensortype_strings[34] = "System ACPI Power State"; eLang.sensortype_strings[35] = "Watchdog 2"; eLang.sensortype_strings[36] = "Platform Alert"; eLang.sensortype_strings[37] = "Entity Presence"; eLang.sensortype_strings[38] = "Monitor ASIC / IC"; eLang.sensortype_strings[39] = "LAN"; eLang.sensortype_strings[40] = "Management Subsystem Health"; eLang.sensortype_strings[41] = "Battery"; eLang.sensortype_strings[42] = "Session Audit"; eLang.sensortype_strings[43] = "Version Change"; eLang.sensortype_strings[44] = "FRU State"; eLang.sensortype_strings[193] = "OEM Memory";//20090614 Andy codice sys_str.js // NOTE -------// Do not add any more sys_strings, this object is being depracated but the strings must be left here for compatilibilty. eLang.sys_strings = {}; eLang.sys_strings["STR_OK"] = "OK"; eLang.sys_strings["STR_APPLY"] = "Apply"; eLang.sys_strings["STR_RESTORE"] = "Restore"; eLang.sys_strings["STR_FULLACCESS"] = "Full access"; eLang.sys_strings["STR_READONLY"] = "Read Only"; eLang.sys_strings["STR_DENIED"] = "Denied"; eLang.sys_strings["STR_UNDEFINED"] = "Undefined"; eLang.sys_strings["STR_ENABLED"] = "Enabled"; eLang.sys_strings["STR_DISABLED"] = "Disabled"; eLang.sys_strings["STR_SAVE"] = "Save"; Sergnese Nicola 566/2002 Pagina 175 di 228 eLang.sys_strings["STR_CLOSE"] = "Close"; eLang.sys_strings["STR_CANCEL"] = "Cancel"; eLang.sys_strings["STR_WAIT"] = "Loading...please wait"; eLang.sys_strings["STR_LOADING"] = "Loading"; eLang.sys_strings["STR_WAIT2"] = "Loading, please wait"; eLang.sys_strings["STR_INPUT_ERROR"]= "An input error was detected. Please correct the marked fields!"; eLang.sys_strings["STR_INPUTREQUIRED_ERROR"]= "A required input was not found. Please correct the marked fields!"; eLang.sys_strings["STR_UNITS_KB"] = "KB" eLang.sys_strings["STR_UNITS_MB"] = "MB" eLang.sys_strings["STR_UNITS_GB"] = "GB" eLang.sys_strings["STR_MONTH0"] = "January"; eLang.sys_strings["STR_MONTH1"] = "February"; eLang.sys_strings["STR_MONTH2"] = "March"; eLang.sys_strings["STR_MONTH3"] = "April"; eLang.sys_strings["STR_MONTH4"] = "May"; eLang.sys_strings["STR_MONTH5"] = "June"; eLang.sys_strings["STR_MONTH6"] = "July"; eLang.sys_strings["STR_MONTH7"] = "August"; eLang.sys_strings["STR_MONTH8"] = "September"; eLang.sys_strings["STR_MONTH9"] = "October"; eLang.sys_strings["STR_MONTH10"] = "November"; eLang.sys_strings["STR_MONTH11"] = "December"; eLang.sys_strings["STR_OFF"] = "Off"; eLang.sys_strings["STR_ON"] = "On"; eLang.sys_strings["STR_PROCESSING"] = "Processing..."; eLang.sys_strings["STR_PARSING"] = "Parsing..."; eLang.sys_strings["STR_CHECKING"] = "Checking..."; eLang.sys_strings["STR_SORTING"] = "Sorting..."; // Units eLang.sys_strings["STR_MINUTES"] = "Minute(s)"; eLang.sys_strings["STR_SECONDS"] = "Second(s)"; eLang.sys_strings["STR_HOURS"] = "Hour(s)"; // Here I duplicate all the sys strings to be in the normal strings array. // This is so I don't have to figure out what array a string is in. eLang.common_strings["STR_OK"] = eLang.sys_strings["STR_OK"] eLang.common_strings["STR_APPLY"] = eLang.sys_strings["STR_APPLY"] eLang.common_strings["STR_RESTORE"] = eLang.sys_strings["STR_RESTORE"] eLang.common_strings["STR_FULLACCESS"] = eLang.sys_strings["STR_FULLACCESS"] eLang.common_strings["STR_READONLY"] = eLang.sys_strings["STR_READONLY"] eLang.common_strings["STR_DENIED"] = eLang.sys_strings["STR_DENIED"] eLang.common_strings["STR_UNDEFINED"] = eLang.sys_strings["STR_UNDEFINED"] eLang.common_strings["STR_ENABLED"] = eLang.sys_strings["STR_ENABLED"] eLang.common_strings["STR_DISABLED"] = eLang.sys_strings["STR_DISABLED"] eLang.common_strings["STR_SAVE"] = eLang.sys_strings["STR_SAVE"] eLang.common_strings["STR_CLOSE"] = eLang.sys_strings["STR_CLOSE"] eLang.common_strings["STR_CANCEL"] = eLang.sys_strings["STR_CANCEL"] eLang.common_strings["STR_WAIT"] = eLang.sys_strings["STR_WAIT"] eLang.common_strings["STR_LOADING"] = eLang.sys_strings["STR_LOADING"] eLang.common_strings["STR_WAIT2"] = eLang.sys_strings["STR_WAIT2"] Sergnese Nicola 566/2002 Pagina 176 di 228 eLang.common_strings["STR_INPUT_ERROR"] = eLang.sys_strings["STR_INPUT_ERROR"] eLang.common_strings["STR_INPUTREQUIRED_ERROR"]= eLang.sys_strings["STR_INPUTREQUIRED_ERROR"] eLang.common_strings["STR_UNITS_KB"] = eLang.sys_strings["STR_UNITS_KB"] eLang.common_strings["STR_UNITS_MB"] = eLang.sys_strings["STR_UNITS_MB"] eLang.common_strings["STR_UNITS_GB"] = eLang.sys_strings["STR_UNITS_GB"] eLang.common_strings["STR_MONTH0"] = eLang.sys_strings["STR_MONTH0"] eLang.common_strings["STR_MONTH1"] = eLang.sys_strings["STR_MONTH1"] eLang.common_strings["STR_MONTH2"] = eLang.sys_strings["STR_MONTH2"] eLang.common_strings["STR_MONTH3"] = eLang.sys_strings["STR_MONTH3"] eLang.common_strings["STR_MONTH4"] = eLang.sys_strings["STR_MONTH4"] eLang.common_strings["STR_MONTH5"] = eLang.sys_strings["STR_MONTH5"] eLang.common_strings["STR_MONTH6"] = eLang.sys_strings["STR_MONTH6"] eLang.common_strings["STR_MONTH7"] = eLang.sys_strings["STR_MONTH7"] eLang.common_strings["STR_MONTH8"] = eLang.sys_strings["STR_MONTH8"] eLang.common_strings["STR_MONTH9"] = eLang.sys_strings["STR_MONTH9"] eLang.common_strings["STR_MONTH10"] = eLang.sys_strings["STR_MONTH10"] eLang.common_strings["STR_MONTH11"] = eLang.sys_strings["STR_MONTH11"] eLang.common_strings["STR_OFF"] = eLang.sys_strings["STR_OFF"] eLang.common_strings["STR_ON"] = eLang.sys_strings["STR_ON"] eLang.common_strings["STR_PROCESSING"] = eLang.sys_strings["STR_PROCESSING"] eLang.common_strings["STR_PARSING"] = eLang.sys_strings["STR_PARSING"] eLang.common_strings["STR_CHECKING"] = eLang.sys_strings["STR_CHECKING"] eLang.common_strings["STR_SORTING"] = eLang.sys_strings["STR_SORTING"] eLang.common_strings["STR_MINUTES"] = eLang.sys_strings["STR_MINUTES"] eLang.common_strings["STR_SECONDS"] = eLang.sys_strings["STR_SECONDS"] eLang.common_strings["STR_HOURS"] = eLang.sys_strings["STR_HOURS"] codice threshstate_str.js eLang.threshstate_strings=[]; /* IPMI threshold state definitions for monitoring */ eLang.threshstate_strings[0x00] = "Uninitialized"; eLang.threshstate_strings[0x01] = "Normal"; eLang.threshstate_strings[0x02] = "Upper Non-Critical"; eLang.threshstate_strings[0x04] = "Upper Critical"; eLang.threshstate_strings[0x08] = "Lower Non-Critical"; eLang.threshstate_strings[0x10] = "Lower Critical"; eLang.threshstate_strings[0x20] = "Access Failed"; eLang.threshstate_strings[0x40] = "Upper Non-Recoverable"; eLang.threshstate_strings[0x80] = "Lower Non-Recoverable"; codice tz_str.js //-------------------------------------// // Time zone strings //-------------------------------------// eLang.tz_strings = {}; eLang.tz_strings["STR_TZ0"] eLang.tz_strings["STR_TZ1"] eLang.tz_strings["STR_TZ2"] eLang.tz_strings["STR_TZ3"] eLang.tz_strings["STR_TZ4"] eLang.tz_strings["STR_TZ5"] eLang.tz_strings["STR_TZ6"] eLang.tz_strings["STR_TZ7"] eLang.tz_strings["STR_TZ8"] eLang.tz_strings["STR_TZ9"] Sergnese Nicola 566/2002 = "(GMT-12:00)Eniwetok,Kwajalein"; = "(GMT-11:00)Midway Island, Samoa"; = "(GMT-10:00)Hawaii"; = "(GMT-09:00)Alaska"; = "(GMT-08:00)Pacific Time (US & Canada); Tijuana"; = "(GMT-07:00)Arizona"; = "(GMT-07:00)Mountain Time (US & Canada)"; = "(GMT-06:00)Central America"; = "(GMT-06:00)Central Time (US & Canada)"; = "(GMT-06:00)Mexico City"; Pagina 177 di 228 eLang.tz_strings["STR_TZ10"] eLang.tz_strings["STR_TZ11"] eLang.tz_strings["STR_TZ12"] eLang.tz_strings["STR_TZ13"] eLang.tz_strings["STR_TZ14"] eLang.tz_strings["STR_TZ15"] eLang.tz_strings["STR_TZ16"] eLang.tz_strings["STR_TZ17"] eLang.tz_strings["STR_TZ18"] eLang.tz_strings["STR_TZ19"] eLang.tz_strings["STR_TZ20"] eLang.tz_strings["STR_TZ21"] eLang.tz_strings["STR_TZ22"] eLang.tz_strings["STR_TZ23"] eLang.tz_strings["STR_TZ24"] eLang.tz_strings["STR_TZ25"] eLang.tz_strings["STR_TZ26"] eLang.tz_strings["STR_TZ27"] eLang.tz_strings["STR_TZ28"] eLang.tz_strings["STR_TZ29"] eLang.tz_strings["STR_TZ30"] eLang.tz_strings["STR_TZ31"] eLang.tz_strings["STR_TZ32"] eLang.tz_strings["STR_TZ33"] eLang.tz_strings["STR_TZ34"] eLang.tz_strings["STR_TZ35"] eLang.tz_strings["STR_TZ36"] eLang.tz_strings["STR_TZ37"] eLang.tz_strings["STR_TZ38"] eLang.tz_strings["STR_TZ39"] eLang.tz_strings["STR_TZ40"] eLang.tz_strings["STR_TZ41"] eLang.tz_strings["STR_TZ42"] eLang.tz_strings["STR_TZ43"] eLang.tz_strings["STR_TZ44"] eLang.tz_strings["STR_TZ45"] eLang.tz_strings["STR_TZ46"] eLang.tz_strings["STR_TZ47"] eLang.tz_strings["STR_TZ48"] eLang.tz_strings["STR_TZ49"] eLang.tz_strings["STR_TZ50"] eLang.tz_strings["STR_TZ51"] eLang.tz_strings["STR_TZ52"] eLang.tz_strings["STR_TZ53"] eLang.tz_strings["STR_TZ54"] eLang.tz_strings["STR_TZ55"] eLang.tz_strings["STR_TZ56"] eLang.tz_strings["STR_TZ57"] eLang.tz_strings["STR_TZ58"] eLang.tz_strings["STR_TZ59"] eLang.tz_strings["STR_TZ60"] eLang.tz_strings["STR_TZ61"] eLang.tz_strings["STR_TZ62"] eLang.tz_strings["STR_TZ63"] eLang.tz_strings["STR_TZ64"] eLang.tz_strings["STR_TZ65"] Sergnese Nicola 566/2002 = "(GMT-06:00)Saskatchewan"; = "(GMT-05:00)Bogota, Lima, Quito"; = "(GMT-05:00)Eastern Time (US & Canada)"; = "(GMT-05:00)Indiana (East)"; = "(GMT-04:00)Altantic Time (Canada)"; = "(GMT-04:00)Caracas, La Paz"; = "(GMT-04:00)Santiago"; = "(GMT-03:30)Newfoundland"; = "(GMT-03:00)Brasilia"; = "(GMT-03:00)Buenos Aires, Georgetown"; = "(GMT-03:00)Greenland"; = "(GMT-01:00)Azores"; = "(GMT-01:00)Cape Verde Is."; = "(GMT)Casablanca, Monrovia"; = "(GMT)Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London"; = "(GMT+01:00)Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna"; = "(GMT+01:00)Belgrade, Bratislava, Budapest, Ljubljana, Prague"; = "(GMT+01:00)Brussels, Copenhagen, Madrid, Paris"; = "(GMT+01:00)Sarajevo, Skopje, Sofija, Vilnius, Warsaw, Zagrep"; = "(GMT+01:00)West Central Africa"; = "(GMT+02:00)Athens, Istanbul, Minsk"; = "(GMT+02:00)Bucharest"; = "(GMT+02:00)Cairo"; = "(GMT+02:00)Harare, Pretoria"; = "(GMT+02:00)Helsinki, Riga, Tallinn"; = "(GMT+02:00)Jerusalem"; = "(GMT+03:00)Baghdad"; = "(GMT+03:00)Kuwait, Riyadh"; = "(GMT+03:00)Moscow, St. Petersburg, Volgograd"; = "(GMT+03:00)Nairobi"; = "(GMT+03:30)Tehran"; = "(GMT+04:00)Abu Dhabi, Muscat"; = "(GMT+04:00)Baku, Tbilisi, Yerevan"; = "(GMT+04:30)Kabul"; = "(GMT+05:00)Ekaterinburg"; = "(GMT+05:00)Islamabad, Karachi, Tashkent"; = "(GMT+05:30)Calcutta, Chennai, Mumbai, New Delhi"; = "(GMT+05:45)Kathmandu"; = "(GMT+06:00)Almaty, Novosibirsk"; = "(GMT+06:00)Astana, Dhaka"; = "(GMT+06:00)Sri Jayawardenepura"; = "(GMT+06:30)Rangoon"; = "(GMT+07:00)Bangkok, Hanoi, Jakarta"; = "(GMT+07:00)Krasnoyarsk"; = "(GMT+08:00)Beijing, Chongqing, Hong Kong, Urumqi"; = "(GMT+08:00)Irkutsk, Ulaan Bataar"; = "(GMT+08:00)Kuala Lumpur, Singapore"; = "(GMT+08:00)Perth"; = "(GMT+08:00)Taipei"; = "(GMT+09:00)Osaka, Sapporo, Tokyo"; = "(GMT+09:00)Seoul"; = "(GMT+09:00)Yakutsk"; = "(GMT+09:30)Adelaide"; = "(GMT+09:30)Darwin"; = "(GMT+10:00)Brisbane"; = "(GMT+10:00)Canberra, Melbourne, Sydney"; Pagina 178 di 228 eLang.tz_strings["STR_TZ66"] = "(GMT+10:00)Guam, Port Moresby"; eLang.tz_strings["STR_TZ67"] = "(GMT+10:00)Hobart"; eLang.tz_strings["STR_TZ68"] = "(GMT+10:00)Vladivostok"; eLang.tz_strings["STR_TZ69"] = "(GMT+11:00)Magadan, Solomon Is., New Caledonia"; eLang.tz_strings["STR_TZ70"] = "(GMT+12:00)Auckland, Wellington"; eLang.tz_strings["STR_TZ71"] = "(GMT+12:00)Fiji, Kamchatka, Marshall Is."; //----------------------------------------------------------------------------// //----------------------------------------------------------------------------// codice ui.js //----------------------------------------------------------------------------// // UI.JS include file //----------------------------------------------------------------------------// // // // document.writeln("<script type='text\/javascript' src='../lib/eLang.js'><\/script>"); // document.writeln("<script type='text\/javascript' src='../lib/eExt.js'><\/script>"); // document.writeln("<script type='text\/javascript' src='../lib/sysfn.js'><\/script>"); // document.writeln("<script type='text\/javascript' src='../lib/eGUI.js'><\/script>"); // document.writeln("<script type='text\/javascript' src='../lib/security.js'><\/script>"); document.writeln("<script type='text\/javascript' src='../lib/xmit.js'><\/script>"); // // document.writeln("<script type='text\/javascript' src='../lib/domapi/src/domapi.js'><\/script>"); // // // Load global CSS // document.writeln("<link type='text\/css' rel='stylesheet' href='../style/main.css'><\/script>"); gDebugShowElms=false; gCXPDebug=false; // =================================================================== ========== // Bookmark Jump Tag Table - Use the tags to search for bookmarks in the code // =================================================================== ========== // Jump Tags - Description // ----------------------------------------------------------------------------// 1176233654 - PROC - "addTableRow()" // 1176238636 - PROC - "copyProps()" // 1176238671 - PROC - "updateTreeSelection()" // 1176305779 - PROC - "clearTable()" // //----------------------------------------------------------------------------// // UI.JS include file //----------------------------------------------------------------------------// // NOTE: IE will give a script error about an invalid character if you // attempt to include a script file that does not exist. // Paths are included relative to the page loading them, typically in the // \pages path. document.writeln("<script type='text\/javascript' src='../lib/eLang.js'><\/script>"); document.writeln("<script type='text\/javascript' src='../lib/eExt.js'><\/script>"); Sergnese Nicola 566/2002 Pagina 179 di 228 // document.writeln("<script type='text\/javascript' src='../lib/sysfn.js'><\/script>"); // document.writeln("<script type='text\/javascript' src='../lib/eGUI.js'><\/script>"); // document.writeln("<script type='text\/javascript' src='../lib/security.js'><\/script>"); // document.writeln("<script type='text\/javascript' src='../lib/xmit.js'><\/script>"); // I removed the link to load DOMAPI, and moved it to the frameTree.html file since // that is the only frame that uses it. There is no point in taking the load // performance hit here if we don't need it, but I'll leave the link just in case. // [BrandonB] 4/10/2007 // document.writeln("<script type='text\/javascript' src='../lib/domapi/src/domapi.js?theme=IBM'><\/script>"); // // // Load global CSS //document.writeln("<link type='text\/css' rel='stylesheet' href='../style/main.css'><\/script>"); // Little function to take an array of IDs and expose them // in the global DOM. IDs should have a leading underscore, // and they will be exposed without it, for example an ID of // _txtStatus will be exposed globally as txtStatus function exposeElms(array) { validateSession(); if(array.length){ for (var i=0;i<array.length;i++) { var actualElm=array[i].substr(1); eval(actualElm+"=document.getElementById('"+array[i]+"');"); if (gDebugShowElms) { eval(actualElm+".style.backgroundColor='#ffdf00';"); // Color the elms with yellow to show where they are eval(actualElm+".style.border='1px dashed purple';"); // Color the elms with yellow to show where they are eval(actualElm+".title='"+actualElm+"';"); // Show the elms ID on hover } } } updateHelpSection(); chkSidebar(); //addResizeListener(); } this.document.onkeydown = function(e) { if(!e) e = window.event; Sergnese Nicola 566/2002 Pagina 180 di 228 if(e.keyCode==116) //F5 Key = 116 { top.g_userpressedF5 = true; } } function chkSidebar() { if(top.frames["sidebar"].optioncontainer && top.frames["header"].hiliteSub) { top.frames["header"].hiliteSub(); } else { setTimeout('chkSidebar()', 50); } } /* function addResizeListener() { if(top.mainFrame) { top.mainFrame.onresize = function() { var divs = top.mainFrame.document.getElementsByTagName('div'); var listgrid = null; for(i=0;i<divs.length;i++) { if(divs[i].id.indexOf('GUID_')!=-1) { listgrid = divs[i]; break; } } if(listgrid){ //listgrid.style.width = top.mainFrame.document.body.offsetWidth - 30; listgrid.parentNode.removeChild(listgrid); top.mainFrame.doInit(); } } }else { setTimeout('addResizeListener()', 100); } } */ function updateHelpSection() { if(top.frames["header"].gHelpOpen) { top.frames["header"].openHelp(); Sergnese Nicola 566/2002 Pagina 181 di 228 } } function validateSession() { if(window.location.href.indexOf('http')!=-1) { xmit.get({url:"/rpc/WEBSES/validate.asp",onrcv:validateSessResp, status:''}); } } var validateSessResp = function() { errcod = WEBVAR_JSONVAR_WEB_SESSION_VALIDATE.HAPI_STATUS; if(errcod != 0) { top.glogout = 1; top.location.href = "/sessionexpired.asp"; } } //______________________________________________________________________________ //================================================================== ============ // addTableRow //-----------------------------------------------------------------------------// Given a reference to a table, and an array of cells to write, this function // will create a new TR element and fill it with the same number of // TD elements as the array length. arg is an object whose properties I may // need to expand upon as time goes by... // // // Input // ----// rTable - reference to a table // // arCells - array of strings to go into the cells // // oRowProps - object with properties to be applied to TR // Ex: {align:'center'} // // arCellProps - array of objects with properties to be applied to each TD // Ex1: to add a row that spans 4 columns, you only need one cell entry // with a colspan // [{colspan:4, style:{ textAlign:'left', fontWeight:'bold'}}] // Ex2: to add centering and bold to each cell of a 3 column table // [ {style:{ textAlign:'left', fontWeight:'bold'}}, // {style:{ textAlign:'left', fontWeight:'bold'}}, // {style:{ textAlign:'left', fontWeight:'bold'}} ] // Output // -----// // Author:BMB Sergnese Nicola 566/2002 Pagina 182 di 228 //______________________________________________________________________________ //================================================================== ============ // Jump Tag 1176233654 [ PROC - "addTableRow()" ] function addTableRow(rTable, arCells, arCellProps, oRowProps) { // First get ref to parent for appending rows - this could be the TABLE // or TBODY var p=rTable; // parent container is TABLE var tb=rTable.getElementsByTagName("TBODY"); if (tb.length) { p=tb[0]; // parent container is TBODY, not TABLE } var xx=document.createElement("TR"); if (oRowProps!=undefined) { copyProps(xx,oRowProps); } for (var i=0;i<arCells.length;i++) { var yy=document.createElement("TD"); yy.noWrap=true; var val=(arCells[i]==""?" ":arCells[i]); if (arCellProps!=undefined) { if (arCellProps[i]!=undefined) { copyProps(yy, arCellProps[i]); } } yy.innerHTML=val; xx.appendChild(yy); } p.appendChild(xx); } //______________________________________________________________________________ //================================================================== ============ // clearTable //-----------------------------------------------------------------------------// Clears a table of all rows. Used for redrawing the table after a sort // or filter operation // // Input // ----// rTable - reference to table // // offset0Based - first row to start deleting. All rows below this one will Sergnese Nicola 566/2002 Pagina 183 di 228 // be clobbered. Used to preserve table header rows. Defaults // to 1 because typically this function will only be called for // dynamically updated tables, which will probably have a header row. // Pass 0 to kill all table rows. // // Output // -----// // // Author:BMB //______________________________________________________________________________ //================================================================== ============ // Jump Tag 1176305779 [ PROC - "clearTable()" ] function clearTable(rTable, offset0Based) { var firstrow=(offset0Based==undefined?1:offset0Based); // First get ref to parent for appending rows - this could be the TABLE // or TBODY var p=rTable; // parent container is TABLE var tb=rTable.getElementsByTagName("TBODY"); if (tb.length) { p=tb[0]; // parent container is TBODY, not TABLE } // Get all the TRs (rows) var aRows=p.getElementsByTagName("TR"); var numrows=aRows.length-firstrow; for (var i=0;i<numrows;i++) { // When children are removed, they move down in the array so we keep // removing from the same index p.removeChild(aRows[firstrow]); } } //______________________________________________________________________________ //================================================================== ============ // copyProps //-----------------------------------------------------------------------------// // Copies all props of an object to another object. Only recurses into // other objects. Mainly used for copying DOM based styles to other objects // // Input // ----// target - target obj/property // // src - source object // // Output // ------ Sergnese Nicola 566/2002 Pagina 184 di 228 // // // Author:BMB //______________________________________________________________________________ //================================================================== ============ // Jump Tag 1176238636 [ PROC - "copyProps()" ] function copyProps(target, src) { for (var i in src) { if (typeof src[i] =='object' ) { copyProps(target[i],src[i]); } else { target[i]=src[i]; } } } //______________________________________________________________________________ //================================================================== ============ // updateTreeSelection //-----------------------------------------------------------------------------// Selects a tree node // // Input // ----// node - name of the tree node, as specified by the reference var the node // was assigned to when instantiated. // // quiet - if true then don't click the node, just select it // // Output // -----// // // Author:BMB //______________________________________________________________________________ //================================================================== ============ // Jump Tag 1176238671 [ PROC - "updateTreeSelection()" ] function updateTreeSelection(node, quiet) { var count=20; checkTree(); function checkTree() { Sergnese Nicola 566/2002 Pagina 185 di 228 if (count) { if (top.gFrameTreeLoaded==true) { top.frames.frameTree.selectTreeNode(node, quiet); } else { count--; setTimeout(checkTree,200); } } else { alert("DEVERROR: Could not wait for tree frame to load"); } } } //______________________________________________________________________________ //================================================================== ============ // showWait //-----------------------------------------------------------------------------// // // Input // ----// enable // // text // // Output // -----// // //______________________________________________________________________________ //================================================================== ============ // Jump Tag 1119840669 [ Procedure Definition: showWait ] function showWait(enable, text) { if ((text==undefined)||(text=="") ) { text= eLang.getString('common',"STR_WAIT") } document.getElementById("wait").innerHTML=enable?text+" <img height=10 style='position:relative;top:1px' src='/res/wait.gif'>":""; // wd=parent.headerFrame.document.getElementById("wait"); // wd.visibility=enable?'visible':'hidden'; // document.getElementById("wait").innerHTML=+" <img src=/Applications/"+parent.gApplicationName+"/Graphics/wait.gif>":""; } Sergnese Nicola 566/2002 Pagina 186 di 228 //______________________________________________________________________________ //================================================================== ============ // $ //-----------------------------------------------------------------------------// // // Input // ----// HTMLElement ID // // Output // -----// HTMLElement // //______________________________________________________________________________ //================================================================== ============ function $(id) { return document.getElementById(id); } //======================================= if(debugWnd==undefined && gCXPDebug){ var debugWnd = window.open('','debugger','width=640, height=480, scrollbars=yes'); } function _debug(str) { if(debugWnd == undefined || !gCXPDebug) return; debugWnd.document.writeln("<br>============================================= ==============<br>"); debugWnd.document.writeln("<br>-----------------------------------------------------------<br>"); debugWnd.document.writeln("<br><b style='color:#009900'>Called from : "+window.location.href+"</b><br>"); debugWnd.document.writeln("<i style='color:#0000CC'>Function Name: "+arguments.caller.name+' <br><br> '+arguments.caller.toString()+"</i>"); debugWnd.document.writeln("<br>************************************************************< br>"); debugWnd.document.writeln("<br>============================================= ==============<br>"); debugWnd.document.writeln(nl2br(str)); debugWnd.document.writeln("<br>============================================= ==============<br>"); } function nl2br(str) { Sergnese Nicola 566/2002 Pagina 187 di 228 return str.replace(/\n/g,"<br>").replace(/\s/g," "); } var fnCookie = { read: function(name) { var nameEQ = name + "="; var ca = top.document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; }, create: function(name, value) { top.document.cookie = name+"="+value+"; path=/"; }, erase: function(name) { //set old to delete it top.document.cookie = name+"=; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/"; } }; codice unittype_str.js /****************************** Unit type codes ********************************/ //eLang.unittype_strings[UNIT TYPE CODE] = "UNIT TYPE"; /**************************************************************************************/ eLang.unittype_strings = new Array(); eLang.unittype_strings[0] = " "; eLang.unittype_strings[1] = "degrees C"; eLang.unittype_strings[2] = "degrees F"; eLang.unittype_strings[3] = "degrees K"; eLang.unittype_strings[4] = "Volts"; eLang.unittype_strings[5] = "Amps"; eLang.unittype_strings[6] = "Watts"; eLang.unittype_strings[7] = "Joules"; eLang.unittype_strings[8] = "Coulombs"; eLang.unittype_strings[9] = "VA"; eLang.unittype_strings[10] = "Nits"; eLang.unittype_strings[11] = "lumen"; eLang.unittype_strings[12] = "lux"; eLang.unittype_strings[13] = "Candela"; eLang.unittype_strings[14] = "kPa"; eLang.unittype_strings[15] = "PSI"; eLang.unittype_strings[16] = "Newton"; eLang.unittype_strings[17] = "CFM"; eLang.unittype_strings[18] = "RPM"; eLang.unittype_strings[19] = "Hz"; eLang.unittype_strings[20] = "microsecond"; eLang.unittype_strings[21] = "millisecond"; eLang.unittype_strings[22] = "second"; eLang.unittype_strings[23] = "minute"; eLang.unittype_strings[24] = "hour"; eLang.unittype_strings[25] = "day"; Sergnese Nicola 566/2002 Pagina 188 di 228 eLang.unittype_strings[26] = "week"; eLang.unittype_strings[27] = "mil"; eLang.unittype_strings[28] = "inches"; eLang.unittype_strings[29] = "feet"; eLang.unittype_strings[30] = "cu in"; eLang.unittype_strings[31] = "cu feet"; eLang.unittype_strings[32] = "mm"; eLang.unittype_strings[33] = "cm"; eLang.unittype_strings[34] = "m"; eLang.unittype_strings[35] = "cu cm"; eLang.unittype_strings[36] = "cu m"; eLang.unittype_strings[37] = "liters"; eLang.unittype_strings[38] = "fluid ounce"; eLang.unittype_strings[39] = "radians"; eLang.unittype_strings[40] = "steradians"; eLang.unittype_strings[41] = "revolutions"; eLang.unittype_strings[42] = "cycles"; eLang.unittype_strings[43] = "gravities"; eLang.unittype_strings[44] = "ounce"; eLang.unittype_strings[45] = "pound"; eLang.unittype_strings[46] = "ft-lb"; eLang.unittype_strings[47] = "oz-in"; eLang.unittype_strings[48] = "gauss"; eLang.unittype_strings[49] = "gilberts"; eLang.unittype_strings[50] = "henry"; eLang.unittype_strings[51] = "millihenry"; eLang.unittype_strings[52] = "farad"; eLang.unittype_strings[53] = "microfarad"; eLang.unittype_strings[54] = "ohms"; eLang.unittype_strings[55] = "siemens"; eLang.unittype_strings[56] = "mole"; eLang.unittype_strings[57] = "becquerel"; eLang.unittype_strings[58] = "PPM (parts/million)"; eLang.unittype_strings[59] = " "; eLang.unittype_strings[60] = "Decibels"; eLang.unittype_strings[61] = "DbA"; eLang.unittype_strings[62] = "DbC"; eLang.unittype_strings[63] = "gray"; eLang.unittype_strings[64] = "sievert"; eLang.unittype_strings[65] = "color temp deg K"; eLang.unittype_strings[66] = "bit"; eLang.unittype_strings[67] = "kilobit"; eLang.unittype_strings[68] = "megabit"; eLang.unittype_strings[69] = "gigabit"; eLang.unittype_strings[70] = "byte"; eLang.unittype_strings[71] = "kilobyte"; eLang.unittype_strings[72] = "megabyte"; eLang.unittype_strings[73] = "gigabyte"; eLang.unittype_strings[74] = "word (data)"; eLang.unittype_strings[75] = "dword"; eLang.unittype_strings[76] = "qword"; eLang.unittype_strings[77] = "line"; eLang.unittype_strings[78] = "hit"; eLang.unittype_strings[79] = "miss"; eLang.unittype_strings[80] = "retry"; eLang.unittype_strings[81] = "reset"; Sergnese Nicola 566/2002 Pagina 189 di 228 eLang.unittype_strings[82] = "overrun/overflow"; eLang.unittype_strings[83] = "underrun"; eLang.unittype_strings[84] = "collision"; eLang.unittype_strings[85] = "packets"; eLang.unittype_strings[86] = "messages"; eLang.unittype_strings[87] = "characters"; eLang.unittype_strings[88] = "error"; eLang.unittype_strings[89] = "correctable error"; eLang.unittype_strings[90] = "uncorrectable error"; codice xmit.js // =================================================================== ========== // Bookmark Jump Tag Table - Use the tags to search for bookmarks in the code // =================================================================== ========== // Jump Tags - Description // ----------------------------------------------------------------------------// 1130445634 - PROC - "xmit.goajax()" // 1130445659 - PROC - "xmit.getset()" // 1130446077 - PROC - "xmit.showdebugWindow()" // 1130446081 - PROC - "xmit.returnpath()" // 1130446115 - PROC - "xmit.striptags()" // 1130446124 - PROC - "xmit.encodespecial()" // 1144877290 - PROC - "xmit.dumpHex()" // 1150915376 - PROC - "xmit.get()" // 1155222794 - PROC - "xmit.checkJSON()" // 1168986635 - PROC - "xmit.debugOut()" // //----------------------------------------------------------------------------// // DATA TRANSMISSION MODULE - XMIT.JS //----------------------------------------------------------------------------// // This file contains all routines used in client-server data transmission, // including AJAX file requests and POST data methods for sending large amounts // of data to a HAPI function. // It is the collection of routines from sysfn and eExt modules, put in one // place to help organize things.// // // Depends on: eExt.js - for debugging routine // eLang.js - for error message // // // ERROR CODES: There are some error codes returned by the xmit module in the // HAPI_STATUS field to indicate processing problems. // // 9998 - eval error // 9997 - file not found // // // [Brandon Burrell] //----------------------------------------------------------------------------// // HISTORY E-engine, D-debugger // E2.0.0 // D2.0.0 - 011207 Made significant visual enhancements; added style sheet. // Added ability to show hex for any response call. Sergnese Nicola 566/2002 Pagina 190 di 228 // Added new numbering system Request X.Y where X is the // total number of ajax calls (from upper frameset down // to current page for example) and Y is the number of calls // from the current page (ie when the xmit module was loaded) // E2.0.1 - 011607 - Made some changes to help eliminate memory leaks // D2.0.1 - 011607 - Improved hex dump, added routines to dump debug data outside // of the ajax handler (to clean it up) // D2.0.2 - 030807 - Made small addition to data block to allow spaces in between // tokens so they have a place to break across lines (visual // change only in debug window) // E2.0.2 - 031307 - Added ability to parse negative HAPI_STATUS // E2.0.3 - 031407 - Added new global gAJAXAlertMissingASP to alert the user // when a request is made for a missing ASP file. This only // applies to ASPs... //----------------------------------------------------------------------------// var AJAXDEBUGGERVER="D2.0.2" var AJAXENGINEVER="E2.0.2" var xmit={}; ajaxdatareqcount=0; // Global counter that simply increments to give unique IDs // to ajax objects //______________________________________________________________________________ //================================================================== ============ // xmit.goajax //-----------------------------------------------------------------------------// AJAX OBJECT CONSTRUCTOR // // DO NOT CALL THIS FUNCTION DIRECTLY, USE GET OR GETSET, which will ensure // that a NEW operator is used when creating sequential calls. This is to make // sure they don't collide. // // // Input // ----// .url = url of requested file // .optarg = optional argument for use in the onrec handler // .onrcv = reference to receive handler function, will be called when data has returned // // onrcv is called with the following parameters: // timeout = true/false to indicate the operation timed out. You can also still // use a separate function but this is easier. // url = url of the requested file // xmitid = a unique id assigned to each data transaction. Just used for // identifying objects. // optarg = optional argument for error display purposes // // .timeout = value in seconds to wait for timeout Sergnese Nicola 566/2002 Pagina 191 di 228 // .async = type of call to use, true=use asynch, false=sync. I don't recommende // using this input, but I added support for it anyway. // // // .username = username (optional) // .password = password (optional) // // // *** NOTE *** // *** NOTE *** // *** NOTE *** // // If you specify a path at all in the url, this function will take the exact // path you specify. Otherwise, it will construct a path to the application's // RPC directory, and then based on gRPCpath. // // Examples: // If arg.url = // "getusers.asp" then the proper app path+rpc path will be constructed, // ie /Applications/<appname>/RPC/getusers.asp // "/getusers.asp" then it will look in the webroot for the file // // Essentially, if there is a slash ANYWHERE in the url, it will use that // path explicitely // //-------------------------------------// // There are two ways to make successive goajax calls : // 1) make each call in the response handler of the previous call (ie chain them) // 2) Make sure you put NEW when you declare an xmit.ajax object so a new // instance is created. Otherwise they will collide! // // Methods // ------// .add(name, value) = add a name and value hidden input control to url/form // .send() = triggers send function of XMLHttpRequest object // // // // Output // -----// // //____________________________________________________________________Author:BMB //================================================================== ============ // Jump Tag 1130445634 [ PROC - "xmit.goajax()" ] xmit.goajax = function(arg) { var datapath=xmit.returnpath(arg.url); this.url = datapath; // Fully qualified url with data this.data=""; // Keeps running data for GET/POST this.urlorg = arg.url; // Keep copy of file path requested this.onrcv = arg.onrcv; this.timeoutvaluems=arg.timeout==undefined?60000:arg.timeout*1000; // converted to milliseconds this.ontimeout = arg.ontimeout==undefined?arg.onrcv:arg.ontimeout; Sergnese Nicola 566/2002 Pagina 192 di 228 this.optarg=(arg.optarg==undefined?"":arg.optarg); // User argument to pass to receive handler this.async=arg.async==undefined?true:arg.async; // true=async, false=sync this.errState=0; this.method="GET"; this.username=arg.username==undefined?"":arg.username; this.password=arg.password==undefined?"":arg.password; this.postdata=arg.postdata==undefined?null:arg.postdata; this.get=""; // Debugging string // var dt=new Date(); // this.idnum=dt.getUTCMilliseconds()+ajaxdatareqcount++; // just a unique id numer this.idnum=ajaxdatareqcount++; if (top.gDebugwindowReqID==undefined) { top.gDebugwindowReqID=0; } this.totidnum=top.gDebugwindowReqID++; this.evalit=arg.evalit==undefined?true:arg.evalit; //-------------------------------------// // xmit.add() //-------------------------------------// this.add = function(name, val) { if (/^false$/.test(val)) { alert(name+" is \"false\" instead of 0") } if (/^true$/.test(val)) { alert(name+" is \"true\" instead of 1") } if (parent.gAJAXDebug==true) { if (typeof(val)=='string') { var valshow=xmit.striptags(val); } else { Sergnese Nicola 566/2002 Pagina 193 di 228 valshow=val; } // Dont add szContent keys for file writes unless gAJAXDebugShowPOST is defined if (parent.gAJAXDebugShowPOST==true) { this.get+="<b>"+name+"</b> ="+valshow+"<br>"; } else { // Don't want to show actual data, but do want to snag any other data vars if (/szContent/.exec(name)==null) { this.get+="<b>"+name+"</b> = "+valshow+"<br>"; } } } // Keep running string of all data, regardless of GET or POST this.data=(this.data==""? (name+"="+xmit.encodespecial(val)):this.data+"&"+name+"="+xmit.encodespecial(val)); } //-------------------------------------// // xmit.send() //-------------------------------------// this.send = function() { // Check for data length OR any non-alphanums in the data. If so use POST. if ( ((this.url+this.data).length>512) ||(/[^_a-zA-Z0-9]/.exec(this.data)!=null)) { // Use POST method this.method="POST"; this.postdata=this.data; if (parent.gAJAXDebugShowPOST==false) { this.get+="<br><i>Input data may be too large to show for POST method, set \"gAJAXDebugShowPOST=true\" to override</i>"; } } else { // GET method, put data in URL this.method="GET"; this.data=(this.data); this.url=(this.data==""?this.url:this.url+"?"+this.data); this.postdata=null; } //-------------------------------------// xmit.debugOut(this, "SEND"); // Third arg : true=async, false=sync this.xmldoc.open(this.method, this.url, this.async, this.username, this.password); if (this.method=='POST') Sergnese Nicola 566/2002 Pagina 194 di 228 { this.xmldoc.setRequestHeader("Content-type", "application/x-www-formurlencoded"); this.xmldoc.setRequestHeader("Content-length", this.postdata.length); this.xmldoc.setRequestHeader("Connection", "close"); } // If posting data, it is a string of name/value pairs, as in "myvar1=123&myvar2=345" this.xmldoc.send(this.postdata); } //----------------------------------------------------------------------------// // This function is called from event and timeout handlers (ie 'THIS' will // not be correct, so parent object reference must be given via the // datao parameter. [BrandonB] 8/18/2005 //----------------------------------------------------------------------------// this.ajaxhandler=function(datao) { var hapivalerrmsg=""; if ( (datao.xmldoc.readyState==4)&&(datao.errState!=99)) { //-------------------------------------// // Operation is complete, process the data //-------------------------------------// clearTimeout(datao.timeout); var docerror=false; // These vars represent the actual text received... // datatxt is the raw response, and datatxtafter is the processed // data (if needed). var datatxt=datao.xmldoc.responseText; //[email protected] // action : check for session timeout purpose //Status get HTML page due to serverside redirection of page to sessionexpired.asp //That causes the expecting json record to be shown as script error also there is no action from client side after that. //So we check if it is valid here if not we move it to login page // caution : If the return record is not of json format then its moved to login page if(datatxt.match('<html>') && (datatxt.match('expired') || datatxt.match('Access Denied'))) { //we don't want to call session expired again if it is logout page. if(datao.url.indexOf('logout.asp')==-1) { top.glogout=1; top.location.href = "/sessionexpired.asp"; } } var datatxtafter=xmit.checkJSON(datatxt); Sergnese Nicola 566/2002 Pagina 195 di 228 var hapismatch=/(HAPI_STATUS[ \t"]*:[ \t]*([\-0-9]+))/.exec(datatxtafter); var hapival=null; if (hapismatch!=null) { hapival=hapismatch[2]/1; } else { try{ if (datao.xmldoc.status!=200) { docerror=true; var bIsASPfile=/\.asp/.test(datao.url); // Process possible error situations here, and set codes if (datao.xmldoc.status==404) { hapival=9997; hapivalerrmsg="File ["+datapath+"] was not found <br>AJAX Status:("+datao.xmldoc.status+":"+datao.xmldoc.statusText+")"; } if (parent.gAJAXAlertMissingASP==true) { alert("DEVELOPER ERROR: ASP File ["+datapath+"] was not found"); } } }catch(e) { //do nothing //this try statement was introduced for unknown exception thrown //by mozilla when datao.xmldoc has no return html status } } xmit.debugOut(this, "REC", datatxt, hapival, hapivalerrmsg); // If I get a hapival of 7001-7009, then something is wrong with the session. // Go ahead and throw an exception to handle it. if ( (hapival>=7000)&&(hapival<=7009)) { // Handler for session errors thrown by HAPI codes 7001-7009 xmit.alertError(hapival); if (parent.application_sessionTimedOut!=undefined) { parent.application_sessionTimedOut(hapival); // Call timeout handler // For mem leak issues, mark for garbage collection // [BrandonB] 1/16/2007 datao.xmldoc=null; datao.onrcv=function(){}; return; } } Sergnese Nicola 566/2002 Pagina 196 di 228 // This will eval the response text and place it into the DOM. // If the response contains variables with no VAR definition, it will be placed // in the global scope (for example, HAPI ASP files, or string files). // If the response contains any code, it will execute HERE, in this // function's scope. Likewise any function definitions will exist only // within this function's scope. // So, if you want to use ajax to load a file with function definitions, // use the readFromFile function, and in the response handler // eval(RPC_FILEREAD.szContent) to place its contents into the DOM // at THAT scope. if ( (datao.evalit==true)&&(docerror==false)) { try { eval(datatxtafter); xmit.debugOut(this, "EVALOK"); } catch(err) { NOTE: The code within this catch is only executed under debug conditions to prevent errors being thrown when the user navigates away from a page that is loading a large RPC data payload. In this case, the JSON structure may be incomplete and malformed, but since we are navigating away we don't care. The disadvantage to this is that we won't know the structure is invalid if it is malformed due to errors with the server macro code. xmit.debugOut(this, "EVALOK", datatxtafter); // // // // // // // // // if (parent.gAJAXJSONEvalDebug) { alert("An error occurred when trying to interpret data from the server! \nURL:"+datao.url+" --- \nERR:"+err); // Go ahead and call response handler datatxtafter=""; hapival=9998; // Eval error datao.onrcv({timeout:false, url:datao.url, id:datao.idnum, optarg:datao.optarg, data:"", dataraw:"", status:datao.xmldoc.status, statustext:datao.xmldoc.statusText, HAPI_STATUS:9998}) } Sergnese Nicola 566/2002 Pagina 197 di 228 // Do this inside of catch... // For mem leak issues, mark for garbage collection // [BrandonB] 1/16/2007 datao.onrcv=function(){}; datao.xmldoc=null; } } datao.onrcv({timeout:false, url:datao.url, id:datao.idnum, optarg:datao.optarg, data:datatxtafter, dataraw:datatxt, HAPI_STATUS:hapival, status:datao.xmldoc.status, statustext:datao.xmldoc.statusText }) // For mem leak issues, mark for garbage collection // [BrandonB] 1/16/2007 datao.xmldoc=null; datao.onrcv=function(){}; } else { if (datao.errState==99) { // Here, I must check the readystate first to see if it has // already completed (state=4) If not, abort the ajax request. // Note that doing so will cause the handler to fire again with // readystate=4, which is why I must check it...otherwise I // get stuck in a loop. [BrandonB] 1/27/2006 if (datao.xmldoc.readyState!=4) { datao.xmldoc.abort(); } else { xmit.debugOut(this, "TIMEOUT"); datao.onrcv({timeout:true, url:datao.url, id:datao.idnum, optarg:datao.optarg, data:null, dataraw:datatxt, HAPI_STATUS:9999, status:datao.xmldoc.status, statustext:datao.xmldoc.statusText }); } Sergnese Nicola 566/2002 Pagina 198 di 228 // For mem leak issues, mark for garbage collection // [BrandonB] 1/16/2007 datao.xmldoc=null; datao.onrcv=function(){}; } } } //-------------------------------------// // Init //-------------------------------------// if (window.XMLHttpRequest) { this.xmldoc= new XMLHttpRequest(); // branch for IE/Windows ActiveX version } else { if (window.ActiveXObject) { this.xmldoc= new ActiveXObject("Microsoft.XMLHTTP"); } } if (this.xmldoc) { // create some references to the parent object so 'this' pointer // will be correct inside handlers var t=this; this.xmldoc.onreadystatechange = function() { t.ajaxhandler(t); } this.timeout=setTimeout(function() { t.errState=99; t.ajaxhandler(t); },this.timeoutvaluems); } if (parent.gSessionCheck==true) { if (!parent.application_checkSessionValid())// Call app.js function to check valid session { parent.gSessionCheck=false; // Let login page reload! this.send=parent.application_sessionTimedOut; } } return this; } //______________________________________________________________________________ //================================================================== ============ // xmit.debugOut Sergnese Nicola 566/2002 Pagina 199 di 228 //-----------------------------------------------------------------------------// Single entry point for output to debug window. Just makes the // actual ajax handler a bit cleaner. // // Input // ----// dataob // // phase // // datatxt // // hapival // // hapimsg // // Output // -----// // // Author:BMB //______________________________________________________________________________ //================================================================== ============ // Jump Tag 1168986635 [ PROC - "xmit.debugOut()" ] xmit.debugOut=function(dataob, phase, datatxt, hapival, hapimsg) { if (parent.gAJAXDebug==true) { // Show all response data regardless of file type (string files, help files, etc) var bAJAXDebugShowAllResponseData = (parent.gAJAXDebugShowAllResponseData==undefined)?false:parent.gAJAXDebugShowAllResponseData; // Just show data from .asp files var bAJAXDebugShowOnlyASPResponseData = (parent.gAJAXDebugShowOnlyASPResponseData==undefined)? false:parent.gAJAXDebugShowOnlyASPResponseData; var output=""; switch (phase) { //-------------------------------------// case "SEND": var data=dataob.get==""?"None":dataob.get; var databg=dataob.data==""?"":"sendBlockData"; output="<div class='sendBlock' ><div class='sendBlockTitle'>Request #"+ (dataob.totidnum+1)+"."+(dataob.idnum+1)+ ") --- From: "+window.name+" ["+location.pathname+"] METHOD:"+dataob.method+"</div>"+ "<div class='sendBlockDataInputs'><b><u>File</u></b><br>"+ "<b>Original URL :</b> "+dataob.urlorg+ "<br>"+ "<b>Converted URL :</b> "+dataob.url+ "<p><b><u>Data</u></b><br><div class='"+databg+"'>"+ dataob.data.replace(/&/g," & ")+ // give data tokens a place to break Sergnese Nicola 566/2002 Pagina 200 di 228 "</div></div></div>"; break; //-------------------------------------// case "REC": var rettextsnippet=datatxt; var bIsASPfile=/\.asp/.test(dataob.url); if ( (bAJAXDebugShowAllResponseData==false) || ( (bAJAXDebugShowAllResponseData==true)&&(bAJAXDebugShowOnlyASPResponseData==true)&&(! bIsASPfile)) ) { if (datatxt.length>150) { rettextsnippet=datatxt.substr(0,150)+"......... (truncated, set gAJAXDebugShowAllResponseData=true to override)"; } } if (!(/[^\n\r\s]/g.test(rettextsnippet))) { rettextsnippet="(File has no text)"; } else { rettextsnippet=xmit.striptags(rettextsnippet); } //-------------------------------------// // Set up hapi status //-------------------------------------// var hapistatusmsg="<p><div class='hapinone'>*** (NO HAPI STATUS) ***</div>"; if (hapival!=null) { var hvstyle="hapiok"; if (hapival!=0) { hvstyle="hapierror"; } hapistatusmsg="<p><div class='"+hvstyle+"'>"+ "HAPI_STATUS = "+hapival+ "<span class='hapierrordesc'>"+ (hapimsg==""?"":"<br>"+hapimsg)+ "</span>"+ "</div>"; } hapistatusstr="<p><table width='99%' border='0'><tbody><tr>"+ "<td width='40%'> </td>"+ "<td align='right'>"+ hapistatusmsg+ "</td></tr></tbody></table>"; //-------------------------------------// // Show rec debug window //-------------------------------------// var bgASP=bIsASPfile?"recBlockDataASP":"recBlockDataNonASP"; var hexbutton=""; var dhex=""; Sergnese Nicola 566/2002 Pagina 201 di 228 if (parent.gAJAXDebugShowHex) { dhex="<div class='recBlockHexDump' id='hexdiv"+ (dataob.totidnum+1)+"_"+(dataob.idnum+1)+"' >"+ xmit.dumpHex(datatxt)+"</div>"; hexbutton="<input type=button onclick=javascript:document.getElementById('hexdiv"+ (dataob.totidnum+1)+"_"+(dataob.idnum+1)+ "').style.display='block' value='Show hex' />"; } output="<div class='recBlock'><div class='recBlockTitle'>Request #"+ (dataob.totidnum+1)+"."+(dataob.idnum+1)+ ") --- <span class='recBlockTitleRecMsg'>Received (<span style='color:black;font-weight:normal'>"+ dataob.url+ "</span>) <br>From: "+ window.name+ " ["+ location.pathname+"]</span></div>"+ "<br><br><div class='"+bgASP+"'>"+rettextsnippet+ "</div>"+ hexbutton+ dhex+ hapistatusstr+ "</div>"; break; //-------------------------------------// case "EVALOK": output="<div class='recBlockEvalSuccess'><div class='recBlockEvalSuccesstitle'>Request #"+ (dataob.totidnum+1)+"."+(dataob.idnum+1)+ ") --- <span class='recBlockEvalSuccesstitleMsg'>Eval Succeeded On File: "+ "<span style='color:black;font-weight:normal'>"+ dataob.url+ "</span>"+ "<br>From: "+window.name+" ["+location.pathname+"]</span></div></div>"; break; //-------------------------------------// case "EVALFAIL": var hex=""; if (parent.gAJAXDebugShowHex==true) { // Show hex dump of data hex="<p><h2>Data Dump:</h2><div class='recBlockEvalFileHexDump'><pre>"+xmit.dumpHex(datatxt)+"</pre></div>"; } output="<div class='recBlockEvalFail'><div class='recBlockEvalFailtitle'>Request #"+ (dataob.totidnum+1)+"."+(dataob.idnum+1)+ ") --- <span class='recBlockEvalFailtitleMsg'>EVAL FAILED On File: "+ "<span style='color:yellow;font-weight:normal'>"+ dataob.url+ Sergnese Nicola 566/2002 Pagina 202 di 228 "</span>"+ "<br>From: "+window.name+" ["+location.pathname+"]</span></div>"+hex+"</div>"; break; //-------------------------------------// case "TIMEOUT": output="<div class='recBlockTimeout'>Request #"+ (dataob.totidnum+1)+"."+(dataob.idnum+1)+ ") --- TIMED OUT "+ "<div class='recBlockTimeouttitle'> for File: "+ dataob.url+ "<br>From: "+window.name+" ["+location.pathname+"]"+ "<br>Timer Setting: "+(dataob.timeoutvaluems/1000)+"seconds"+ "</div></div>"; break; default: break; } xmit.showdebugWindow(output); } } xmit.gwgetsetFlash=function(functionname, varname, onrechandler) { xmit.gwgetset(functionname, "libifc_flasher.so.1.0", varname, onrechandler); } xmit.gwgetsetLDAP=function(functionname, varname, onrechandler) { xmit.gwgetset(functionname, "libifc_ldap", varname, onrechandler); } xmit.gwgetsetIPMI=function(functionname, varname, onrechandler) { xmit.gwgetset(functionname, "libifc_ipmi", varname, onrechandler); } xmit.gwgetsetUser=function(functionname, varname, onrechandler) { xmit.gwgetset(functionname, "libifc_userm", varname, onrechandler); } xmit.gwgetset=function (functionname, library, varname, onrechandler) { var arg={url:"/RPC/ajaxgw.asp", onrcv:onrechandler, varname:varname}; var tempdata=new xmit.goajax(arg); tempdata.add("FUNCTION",functionname); tempdata.add("LIB",library); tempdata.add("FUNCTION",functionname); tempdata.send(); Sergnese Nicola 566/2002 Pagina 203 di 228 } //______________________________________________________________________________ //================================================================== ============ // xmit.get //-----------------------------------------------------------------------------// // Simple abstracted function that just gets a file. Only difference is that // there is no data, and I do the send() here instead of requiring the UI code // to do it. // // Input // ----// arg - args that would be passed to goajax // // Output // -----// // //____________________________________________________________________Author:BMB //================================================================== ============ // Jump Tag 1150915376 [ PROC - "xmit.get()" ] xmit.get= function(arg) { var tempdata=new xmit.goajax(arg); tempdata.send(); delete tempdata; } //______________________________________________________________________________ //================================================================== ============ // xmit.getset //-----------------------------------------------------------------------------// Generic routine to get data that needs to have some parameters set first. // // Input // ----// arg - args that would be passed to goajax // // Output // -----// // //____________________________________________________________________Author:BMB //================================================================== ============ // Jump Tag 1130445659 [ PROC - "xmit.getset()" ] xmit.getset= function(arg) { var tempdata=new xmit.goajax(arg); return tempdata; Sergnese Nicola 566/2002 Pagina 204 di 228 } //______________________________________________________________________________ //================================================================== ============ // xmit.returnpath //-----------------------------------------------------------------------------// Translates the given url to the appropriate path based on state of settings.js // NOTE: This is only done for .asp files...all other extensions pass through // unaltered. // // Input // ----// url // // Output // -----// // //____________________________________________________________________Author:BMB //================================================================== ============ // Jump Tag 1130446081 [ PROC - "xmit.returnpath()" ] xmit.returnpath=function(url) { var exclusionlist= [ "fileread.asp", "filecopy.asp", "filedelete.asp", "filewrite.asp", "fileio_copydirectory.asp", "fileio_createdirectory.asp", "fileio_deletedirectory.asp", "FILEIO_LISTDIRCONTENT.asp", "fileio_listsubdirectories.asp", "filewritepart.asp" ] var datapath=url; // This regex will break apart the url into path, filename and extension. // [BrandonB] 10/31/2006 var res=/([\/\\]*?[\w\/\\]*?[\\\/]*?)([\w]*\.([\w]{1,4}))/i.exec(datapath); if (res==null) { alert("ERROR [xmit.returnpath] - cannot process path for data req"); return; } // Now, res[1] is the path (if any) // res[2] is the filename // res[3] is the extension var path=res[1]; var fname=res[2]; Sergnese Nicola 566/2002 Pagina 205 di 228 var extn=res[3]; var offln=""; if (parent.gRPCOffline!=undefined) { offln=(parent.gRPCOffline?"offline/":""); } // Check exclusion list. We can't fake file reads, for example, with // offline data. for (var i=0;i<exclusionlist.length;i++) { if (fname.toLowerCase()==exclusionlist[i].toLowerCase()) { return datapath; } } //-------------------------------------// // First check for .asp files, if not // then just return //-------------------------------------// if (extn!="asp") { return datapath; } else { // Now, see if there is a leading slash, which indicates a hardcoded // path (such as root RPC). if ( (/^[\/\\]/.test(path))||(parent.gAppPath==undefined)) { // There is a leading slash, or there is no app path datapath= path+ offln+ fname; } else { // There is no leading slash, so base whatever is given on the // application's RPC path datapath= parent.gAppPath+ '/RPC/'+ path+ offln+ fname; } } return datapath; } //______________________________________________________________________________ Sergnese Nicola 566/2002 Pagina 206 di 228 //================================================================== ============ // xmit.showdebugWindow //-----------------------------------------------------------------------------// // // Input // ----// dwcontent - content to display // // Output // -----// // //____________________________________________________________________Author:BMB //================================================================== ============ // Jump Tag 1130446077 [ PROC - "xmit.showdebugWindow()" ] var debugwindowstackhd="<html><head><title>AJAX Debugging Window</title>"+ "<style>pre{font-size:12px}</style>"+ "<link href='/GUISE/xmit.css' rel='stylesheet' type='text/css'></head>"+ "<body><H2>AJAX Debug Window</H2><h3>Debugger Version:"+AJAXDEBUGGERVER+", Engine Version: "+AJAXENGINEVER+"<br>BrandonB</h3>"; var debugwindowstack=""; var debugwindowstackft="<hr><center>"+ "<button onclick='javascript:window.opener.parent.gDebugwindowstack=\"\";"+ "window.opener.parent.gDebugwindowReqID=0;window.opener.parent.xmit.showdebugWindo w(\"\")'>Clear Debugger History</button>"+ "</center></body></html>"; var windowpointerle=null; // var gDebugwindowstack=""; // Changes this to clear debugger stack with every page load // because it makes the window faster. [BrandonB] 1/11/2007 xmit.showdebugWindow=function(dwcontent) { var w=600;h=800; // var isdebugwindowopen= windowpointerle==null?false:!windowpointerle.closed; windowpointerle=window.open("","ajaxdbwin0","height="+h+",width="+w+",resizable,scrollbars"); if (windowpointerle) { windowpointerle.document.open(); // Just use local global instead of trying to create one in the parent so // stack gets cleared whenever xmit is loaded. [BrandonB] 1/11/2007 if (top.gDebugwindowstack==undefined) { top.gDebugwindowstack=dwcontent; } else { top.gDebugwindowstack+=dwcontent; } Sergnese Nicola 566/2002 Pagina 207 di 228 // top.gDebugwindowstack+=dwcontent; // var runningstack=top.gDebugwindowstack; var runningstack=gDebugwindowstack; windowpointerle.document.write(debugwindowstackhd+runningstack+debugwindowstackft); windowpointerle.document.close(); windowpointerle.scrollTo(0,999999999); windowpointerle.focus(); // This will pull the debug window to the front // windowpointerle.opener.focus(); // Put focus back to opening window to keep debug win from stealing input focus } else { alert("Cannot create debug window"); } } //______________________________________________________________________________ //================================================================== ============ // xmit.striptags //-----------------------------------------------------------------------------// Converts tags from any file read to HTML displayable form (ie so I can // see the tags instead of having them interpreted). // // // Input // ----// text // // Output // -----// // //____________________________________________________________________Author:BMB //================================================================== ============ // Jump Tag 1130446115 [ PROC - "xmit.striptags()" ] xmit.striptags=function(text) { text=text.replace(/</g,"<").replace(/>/g,">"); text=text.replace(/\xd|\xa/g,"<br>"); // replace any newline (\n) sequences with <br> so text file streams // will have a place to break text=text.replace(/\\n/g,"<br>"); return text; } Sergnese Nicola 566/2002 Pagina 208 di 228 //______________________________________________________________________________ //================================================================== ============ // xmit.encodespecial //-----------------------------------------------------------------------------// Have to specially encode potentially troublesome characters in the value // field for the name/value pairs when sending data to the server. // These include ; / ? : @ & = + $ , # // // // Input // ----// value // // Output // -----// // //____________________________________________________________________Author:BMB //================================================================== ============ // Jump Tag 1130446124 [ PROC - "xmit.encodespecial()" ] xmit.encodespecial=function(value) { if (typeof(value)=='string') { // MUST encode percent first, since that is the character used to encode // everything else! I could include this in the one liner below but // I want to do it explicely here for clarity. This will screw up // source code badly if not done correctly. [BrandonB] 10/19/2005 value=value.replace(/%/g,"%25"); // Now just encode all other characters value=value.replace(/\+/g,"%2B").replace(/&/g,"%26").replace(/#/g,"%23"); } return value; } //----------------------------------------------------------------------------// // File upload helpers //----------------------------------------------------------------------------// // xmit.prepareUpload=function() // { // // var felm=document.getElementById('secretuploadframe'); // if (felm==null) // { Sergnese Nicola 566/2002 Pagina 209 di 228 // var z=document.createElement('IFRAME'); // z.id='secretuploadframe'; // z.name=z.id; // if (0) // 1 to debug iframe // { // z.style.position='absolute'; // z.style.border=1; // z.style.zIndex=999; // z.height=220; // z.width=220; // } // else // { // z.style.border=0; // z.height=0; // z.width=0; // } // document.body.appendChild(z); // } // } // // Called from the upload response ASP file. Passes the return var as robj. xmit.uploadResponse=function(robj) { if (robj.HAPI_STATUS!=0) { alert(eLang.getString("STR_UPLOAD_ERROR")+" : "+robj.HAPI_STATUS); } else { alert(eLang.getString("STR_UPLOAD_OK")); } } //----------------------------------------------------------------------------// //______________________________________________________________________________ //================================================================== ============ // xmit.dumpHex //-----------------------------------------------------------------------------// Takes a string and returns a hex-dump formatted string // // Input // ----// inputstr // // Output // -----// // //______________________________________________________________________________ //================================================================== ============ Sergnese Nicola 566/2002 Pagina 210 di 228 // Jump Tag 1144877290 [ PROC - "xmit.dumpHex()" ] xmit.dumpHex=function(inputstr) { var slen=inputstr.length; var dumpstr=""; var digitsvalue, digitsstr; var leftside="", rightside=""; for (var i=0;i<slen/16;i++) { leftside="";rightside=""; for (var x=0;x<16;x++) { digitstr=inputstr.substr(i*16+x,1); if (digitstr=="") { digitsvalue=".."; } else { digitsvalue=digitstr.charCodeAt(0).toString(16); if (digitsvalue.length==1) { digitsvalue="0"+digitsvalue; } switch (digitsvalue) { case "0d": case "0a": case "09": digitstr="."; break; case "3c": digitstr="<"; break; case "3e": digitstr=">"; break; default: break; } } leftside+=digitsvalue+" "; rightside+=digitstr + ""; } dumpstr+=leftside+" ---- "+rightside+"<br>"; } return dumpstr; } Sergnese Nicola 566/2002 Pagina 211 di 228 xmit.alertError=function(errnum) { // Error numbers for login are 7000+err index errnum=parseInt(errnum)-7000; var strerrcod="STR_LOGINERRORCODE_"+errnum; if (eLang.strings[strerrcod]!= undefined) { alert(eLang.strings[strerrcod]); } else { if (erStr[errnum]!=undefined) { alert(erStr[errnum]); } else { alert("Unknown XMIT Session Error :"+errnum+7000); } } } //______________________________________________________________________________ //================================================================== ============ // xmit.checkJSON //-----------------------------------------------------------------------------// Function to do any parsing of the returned data (specifically JSON structures). // // Here, I attempt to search for and strip out any extraneous empty objects inside // arrays that might be returned by older versions of the web server. The blank // objects do NOT need to be there and will throw off the array item count. // Invalid structures: // // Case 1: // VAR={ // MYVAR:[ // {} // ],HAPI_STATUS:0} // // Case 2: // VAR={ // MYVAR:[ // {somedata:1, somemoredata:2}, // {} // ],HAPI_STATUS:0} // // In case 1, // FROM -> {}],HAPI_STATUS // TO -> ], HAPI_STATUS // // In case 2, Sergnese Nicola 566/2002 Pagina 212 di 228 // FROM -> ,{}],HAPI_STATUS // TO -> ], HAPI_STATUS // // In a nutshell, I am globally replacing any pattern of ,{}] or {}] with ] // // [BrandonB] 8/10/2006 // // Input // ----// jsonstruc // // Output // -----// // // Author:BMB //______________________________________________________________________________ //================================================================== ============ // Jump Tag 1155222794 [ PROC - "xmit.checkJSON()" ] xmit.checkJSON=function(jsonstruc) { // Check for rogue commas for example: // {prop:1, // prop2:2, <-// } // or // [ elm1, // elm2, <-// ] if (/,[\r\n\s]*[\]}]/.test(jsonstruc)) { alert("WARNING: XMIT AJAX module detected an extra comma after the last "+ "element in an array or object property list...please check and correct."); } return jsonstruc.replace(/(,[\r\n\s]*)?\{[\r\n\s]*\}[\r\n\s]*\][\r\n\s]*/g, "]"); } // Strings to use when xmit module is being used outside of Castor... var erStr=[]; erStr[1]="Invalid session. Please try logging in again."; erStr[2]="Session timed out. Please log in again."; erStr[3]="Maximum number of sessions already in use."; erStr[4]="Invalid session. Please try logging in again."; erStr[5]="Invalid session. Please try logging in again."; erStr[6]="Invalid session. Please try logging in again."; erStr[7]="Login failed. Plase try again."; erStr[8]="Logged out. Please log in again to access the device."; //logged out properly and cookie is set to logged out"; erStr[9]="Please log in to access the device."; codice login.css Sergnese Nicola 566/2002 Pagina 213 di 228 body{ background: url(../res/background.gif) #deded3; margin:0px; padding:0px; } .shadow{ width:400px; height:150px; text-align:left; } .shadow h3{ font-family:Arial; font-size:1.1em; } .loginBox{ height:147px; border:1px solid #888888; color:#000000; font-family:Arial; font-size:12px; background:#DEDED3; padding:10px; text-align:center; } .loginBox form{ margin:0px; padding:0px; } label{ font-weight:bold; padding-right:5px; font-size:1.2em; width:85px; text-align:right; } #msglbl{ font-family:Tahoma; font-size:11px; } .credits{ display:block; float:right; width:155px; } /*.button{ border:1px solid #343454; Sergnese Nicola 566/2002 Pagina 214 di 228 background:#c0c0c9; }*/ 7.4 codice pagina e4 Codice pagina principale e4 Codice js_top_include_JW420P63_____________.js INDREF_RSD_SUMMARY = 0; INDREF_ARRAY_PANEL = 1; INDREF_DM_STATUS = 2; INDREF_RSD_MOD_STATUS = 3; INDREF_RSD_ARRAY = 4; INDREF_RSD_ARRAY_DRIVES = 5; INDREF_RSD_PORT = 6; INDREF_RSD_DISPLAY_DRIVES= 7; INDREF_RSD_DRIVE_ARRANGE = 8; INDREF_RSD_ENV_TEMP = 9; INDREF_RSD_ENV_FANS = 10; INDREF_RSD_ENV_POWER = 11; INDREF_RSD_GEN_CONFIG = 12; INDREF_NOTIFY = 13; INDREF_DFU = 14; INDREF_SYSTEM_PANEL = 15; INDREF_NETVIEW = 16; INDREF_ENCLOSURES = 17; INDREF_SCHEDULER = 18; function checkForRefreshNeeded(pageAutoRefreshStatus, refreshCountersArray, paramAccessLevel, refreshRate, deviceProgressStage) { var fr = top.frames[1]; // Content frame var doc = top.remove_ZTime(fr.document.URL) ; // page URL in content frame var fileName = getFileName(doc); if ( fileName != top.contentFileName ) { top.timeCount = 0; } top.contentFileName = fileName; // Save away so we can compare next time var environRefresh; var statsRefresh; switch( refreshRate ) { case 0: statsRefresh = 30; environRefresh = 45; break; case 1: statsRefresh = 45; environRefresh = 60; break; case 2: statsRefresh = 60; environRefresh = 90; break; Sergnese Nicola 566/2002 Pagina 215 di 228 } var conditionalRefresh = 0; // No var hardRefreshSeconds = 0; // Not used var strFileName = new String(fileName); var locPageName = strFileName; if ( strFileName.indexOf("rsd_") != -1 ) { // Monitor pages - apply refresh rules for each page if ( fileName != "rsd_view_eventlog.html" ) { if ( fileName == "rsd_summary.html" ) { if ( top.refreshRsdSumCounter != refreshCountersArray[INDREF_RSD_SUMMARY] ) { top.refreshRsdSumCounter = refreshCountersArray[INDREF_RSD_SUMMARY]; conditionalRefresh = 1; } else if ( top.refreshArrayPanelCounter != refreshCountersArray[INDREF_ARRAY_PANEL] ) { top.refreshArrayPanelCounter = refreshCountersArray[INDREF_ARRAY_PANEL]; conditionalRefresh = 1; } else if (top.refreshDmStatusCounter != refreshCountersArray[INDREF_DM_STATUS]) { top.refreshDmStatusCounter = refreshCountersArray[INDREF_DM_STATUS]; conditionalRefresh = 1; } } else if ( fileName == "rsd_chassis_view.html" ) { if ( top.refreshRsdModStatusCounter != refreshCountersArray[INDREF_RSD_MOD_STATUS]) { top.refreshRsdModStatusCounter = refreshCountersArray[INDREF_RSD_MOD_STATUS]; conditionalRefresh = 1; } else if (top.refreshDmStatusCounter != refreshCountersArray[INDREF_DM_STATUS]) { top.refreshDmStatusCounter = refreshCountersArray[INDREF_DM_STATUS]; conditionalRefresh = 1; } } else if ( fileName == "rsd_array.html" ) { if ( top.refreshArrayPanelCounter != refreshCountersArray[INDREF_ARRAY_PANEL] ) { top.refreshArrayPanelCounter = refreshCountersArray[INDREF_ARRAY_PANEL]; conditionalRefresh = 1; } //document.write("top.refreshRsdArrayCounter="+top.refreshRsdArrayCounter+"u_refreshRsdArrayCounter=" + refreshCountersArray[INDREF_RSD_ARRAY]); if ( top.refreshRsdArrayCounter != refreshCountersArray[INDREF_RSD_ARRAY] ) { top.refreshRsdArrayCounter = refreshCountersArray[INDREF_RSD_ARRAY]; conditionalRefresh = 1; } if ( top.refreshRsdArrayDrvsCounter != refreshCountersArray[INDREF_RSD_ARRAY_DRIVES] ) { Sergnese Nicola 566/2002 Pagina 216 di 228 top.refreshRsdArrayDrvsCounter = refreshCountersArray[INDREF_RSD_ARRAY_DRIVES]; conditionalRefresh = 1; } } else if ( fileName == "rsd_port.html" ) { if (top.refreshRsdPortCounter != refreshCountersArray[INDREF_RSD_PORT]) { top.refreshRsdPortCounter = refreshCountersArray[INDREF_RSD_PORT]; conditionalRefresh = 1; } } else if ( fileName == "rsd_display_devices.html" ) { if (top.refreshRsdDisDevsCounter != refreshCountersArray[INDREF_RSD_DISPLAY_DRIVES] ) { top.refreshRsdDisDevsCounter = refreshCountersArray[INDREF_RSD_DISPLAY_DRIVES]; conditionalRefresh = 1; } } else if ( fileName == "rsd_enclosure.html" ) { if (top.refreshRsdDisDevsCounter != refreshCountersArray[INDREF_RSD_DISPLAY_DRIVES] ) { top.refreshRsdDisDevsCounter = refreshCountersArray[INDREF_RSD_DISPLAY_DRIVES]; conditionalRefresh = 1; } else if (top.refreshRsdModStatusCounter != refreshCountersArray[INDREF_RSD_MOD_STATUS]) { top.refreshRsdModStatusCounter = refreshCountersArray[INDREF_RSD_MOD_STATUS]; conditionalRefresh = 1; } else if (top.refreshEnclCounter != refreshCountersArray[INDREF_ENCLOSURES]) { top.refreshEnclCounter = refreshCountersArray[INDREF_ENCLOSURES]; conditionalRefresh = 1; } } else if ( fileName == "rsd_enclosure_view.html" ) { if (top.refreshRsdDisDevsCounter != refreshCountersArray[INDREF_RSD_DISPLAY_DRIVES] ) { top.refreshRsdDisDevsCounter = refreshCountersArray[INDREF_RSD_DISPLAY_DRIVES]; conditionalRefresh = 1; } else if (top.refreshRsdModStatusCounter != refreshCountersArray[INDREF_RSD_MOD_STATUS]) { top.refreshRsdModStatusCounter = refreshCountersArray[INDREF_RSD_MOD_STATUS]; conditionalRefresh = 1; } } else if ( fileName == "rsd_drive_arrange.html" ) { if (top.refreshDmStatusCounter != refreshCountersArray[INDREF_DM_STATUS]) { top.refreshDmStatusCounter = refreshCountersArray[INDREF_DM_STATUS]; Sergnese Nicola 566/2002 Pagina 217 di 228 conditionalRefresh = 1; } else if (top.refreshRsdDrvArrangeCounter != refreshCountersArray[INDREF_RSD_DRIVE_ARRANGE]) { top.refreshRsdDrvArrangeCounter = refreshCountersArray[INDREF_RSD_DRIVE_ARRANGE]; conditionalRefresh = 1; } } else if ( fileName == "rsd_module_status.html" ) { if (top.refreshDmStatusCounter != refreshCountersArray[INDREF_DM_STATUS]) { top.refreshDmStatusCounter = refreshCountersArray[INDREF_DM_STATUS]; conditionalRefresh = 1; } else if (top.refreshRsdModStatusCounter != refreshCountersArray[INDREF_RSD_MOD_STATUS]) { top.refreshRsdModStatusCounter = refreshCountersArray[INDREF_RSD_MOD_STATUS]; conditionalRefresh = 1; } else if (top.refreshEnclCounter != refreshCountersArray[INDREF_ENCLOSURES]) { top.refreshEnclCounter = refreshCountersArray[INDREF_ENCLOSURES]; conditionalRefresh = 1; } } else if ( fileName == "rsd_dm_revision.html" ) { if (top.refreshDmStatusCounter != refreshCountersArray[INDREF_DM_STATUS]) { top.refreshDmStatusCounter = refreshCountersArray[INDREF_DM_STATUS]; conditionalRefresh = 1; } } else if ( fileName == "rsd_environ_temp.html" ) { if (top.refreshRsdEnvTempCounter != refreshCountersArray[INDREF_RSD_ENV_TEMP]) { top.refreshRsdEnvTempCounter = refreshCountersArray[INDREF_RSD_ENV_TEMP]; conditionalRefresh = 1; hardRefreshSeconds = environRefresh; } } else if ( fileName == "rsd_environ_fan.html" ) { if (top.refreshRsdEnvFanCounter != refreshCountersArray[INDREF_RSD_ENV_FANS]) { top.refreshRsdEnvFanCounter = refreshCountersArray[INDREF_RSD_ENV_FANS]; conditionalRefresh = 1; hardRefreshSeconds = environRefresh; } } else if ( fileName == "rsd_environ_power.html") { if (top.refreshRsdEnvPowerCounter != refreshCountersArray[INDREF_RSD_ENV_POWER]) { Sergnese Nicola 566/2002 Pagina 218 di 228 top.refreshRsdEnvPowerCounter = refreshCountersArray[INDREF_RSD_ENV_POWER]; conditionalRefresh = 1; hardRefreshSeconds = environRefresh; } } else if ( fileName == "rsd_network.html" ) { if (top.refreshDmStatusCounter != refreshCountersArray[INDREF_DM_STATUS]) { top.refreshDmStatusCounter = refreshCountersArray[INDREF_DM_STATUS]; conditionalRefresh = 1; } } else if ( fileName == "rsd_gen_config.html" ) { if (top.refreshDmStatusCounter != refreshCountersArray[INDREF_DM_STATUS]) { top.refreshDmStatusCounter = refreshCountersArray[INDREF_DM_STATUS]; conditionalRefresh = 1; } else if (top.refreshRsdGenConfigCounter != refreshCountersArray[INDREF_RSD_GEN_CONFIG]) { top.refreshRsdGenConfigCounter = refreshCountersArray[INDREF_RSD_GEN_CONFIG]; conditionalRefresh = 1; } } else if ( fileName == "rsd_local_notification.html" ) { if (top.refreshLnCounter != refreshCountersArray[INDREF_NOTIFY]) { top.refreshLnCounter = refreshCountersArray[INDREF_NOTIFY]; conditionalRefresh = 1; } } pageRefresh(hardRefreshSeconds, doc, conditionalRefresh, locPageName, refreshCountersArray[INDREF_SYSTEM_PANEL], paramAccessLevel); } } else if ( strFileName.indexOf("rstat_") != -1 ) // All statistics pages { if ( pageAutoRefreshStatus == "1" ) { // stats reset not refreshed because it has auto-refresh = no if (strFileName.indexOf("realtime") == -1 ) { // Not realtime page - refresh pageRefresh(statsRefresh, doc, conditionalRefresh, locPageName, refreshCountersArray[INDREF_SYSTEM_PANEL], paramAccessLevel); } } } else if ( strFileName.indexOf("rarray_") != -1 ) { // Is an array page // +" " + refreshCountersArray[INDREF_RSD_DISPLAY_DRIVES] + " " + top.refreshRsdDisDevsCounter ); if ( pageAutoRefreshStatus == "1" ) { // Is an array page we want to refresh if ( ( fileName == "rarray_drive_status.html" ) ||( fileName == "rarray_status.html" ) Sergnese Nicola 566/2002 Pagina 219 di 228 ||( fileName == "rarray_expand.html" ) ||( fileName == "rarray_add_spare.html" ) ||( fileName == "rarray_delete_spare.html" ) ||( fileName == "rarray_pool_spare.html" ) ||( fileName == "rarray_add_pool_spare.html" ) ||( fileName == "rarray_delete_pool_spare.html" ) ) { // Look for array and drive changes if (top.refreshArrayPanelCounter != refreshCountersArray[INDREF_ARRAY_PANEL]) { top.refreshArrayPanelCounter = refreshCountersArray[INDREF_ARRAY_PANEL]; conditionalRefresh = 1; } else if (top.refreshRsdDisDevsCounter != refreshCountersArray[INDREF_RSD_DISPLAY_DRIVES] ) { top.refreshRsdDisDevsCounter = refreshCountersArray[INDREF_RSD_DISPLAY_DRIVES]; conditionalRefresh = 1; } pageRefresh(0, doc, conditionalRefresh, locPageName, refreshCountersArray[INDREF_SYSTEM_PANEL], paramAccessLevel); } else { // Other pages look for just array changes if (top.refreshArrayPanelCounter != refreshCountersArray[INDREF_ARRAY_PANEL]) { top.refreshArrayPanelCounter = refreshCountersArray[INDREF_ARRAY_PANEL]; conditionalRefresh = 1; } pageRefresh(0, doc, conditionalRefresh, locPageName, refreshCountersArray[INDREF_SYSTEM_PANEL], paramAccessLevel); } } } else if ( strFileName.indexOf("rpart_") != -1 ) { // Is a partition page if ( pageAutoRefreshStatus == "1" ) { // Is an array page we want to refresh if ( fileName == "rpart_status.html" ) { // Look for array changes if (top.refreshArrayPanelCounter != refreshCountersArray[INDREF_ARRAY_PANEL]) { top.refreshArrayPanelCounter = refreshCountersArray[INDREF_ARRAY_PANEL]; conditionalRefresh = 1; } pageRefresh(0, doc, conditionalRefresh, locPageName, refreshCountersArray[INDREF_SYSTEM_PANEL], paramAccessLevel); } } } else if ( strFileName.indexOf("rutil_") != -1 ) { // Is a util page if ( fileName == "rutil_update_enc_4.html" || fileName == "rutil_update_drive_4.html" ) { if ( (deviceProgressStage != "1") && // no refresh on pause (deviceProgressStage != "4") ) // no refresh on unpause { Sergnese Nicola 566/2002 Pagina 220 di 228 if ( pageAutoRefreshStatus == "1" ) { // Is an utilities page we want to refresh (drive utilities) if (top.refreshRsdDisDevsCounter != refreshCountersArray[INDREF_RSD_DISPLAY_DRIVES] ) { top.refreshRsdDisDevsCounter = refreshCountersArray[INDREF_RSD_DISPLAY_DRIVES]; conditionalRefresh = 1; } if (top.refreshDfuCounter != refreshCountersArray[INDREF_DFU] ) { // OK to check this all the time because it will only change when doing DFU top.refreshDfuCounter = refreshCountersArray[INDREF_DFU]; conditionalRefresh = 1; } pageRefresh(0, doc, conditionalRefresh, locPageName, refreshCountersArray[INDREF_SYSTEM_PANEL], paramAccessLevel); } } } } else if ( strFileName.indexOf("rnet_") != -1 ) { if ( pageAutoRefreshStatus == "1" ) { // Is an array page we want to refresh if ( ( fileName == "rnet_icon_view.html" ) ||( fileName == "rnet_list_view.html" ) ) { // Look for array changes if (top.refreshNetviewCounter != refreshCountersArray[INDREF_NETVIEW]) { top.refreshNetviewCounter = refreshCountersArray[INDREF_NETVIEW]; conditionalRefresh = 1; } pageRefresh(0, doc, conditionalRefresh, locPageName, refreshCountersArray[INDREF_SYSTEM_PANEL], paramAccessLevel); } } } else if ( strFileName.indexOf("rsched_") != -1 ) { if ( pageAutoRefreshStatus == "1" ) { // Is an array page we want to refresh if (( fileName == "rsched_manage_scheduler.html" )) { // Look for array changes if (top.refreshSchedulerCounter != refreshCountersArray[INDREF_SCHEDULER]) { top.refreshSchedulerCounter = refreshCountersArray[INDREF_SCHEDULER]; conditionalRefresh = 1; if (fr.SchedulerRefreshEvent) { fr.SchedulerRefreshEvent(); } } //pageRefresh(0, doc, conditionalRefresh, locPageName, refreshCountersArray[INDREF_SYSTEM_PANEL], paramAccessLevel); } } } Sergnese Nicola 566/2002 Pagina 221 di 228 else { // No refresh } } function pageRefresh(seconds, docName, condRefresh, locPageName, devRefreshSystemPanelCounter, accessLevel) { var strFileName = new String(locPageName); // +" " + refreshCountersArray[INDREF_RSD_DISPLAY_DRIVES] + " " + accessLevel ); if (accessLevel == 0) { top.gIsGcontrolAwake = false; return; // Never want to refresh the login page } var doRefresh = condRefresh; // If conditional refresh for page = 1, do a refresh! if ( top.refreshSystemPanelCounter != devRefreshSystemPanelCounter ) { doRefresh = 1; top.refreshSystemPanelCounter = devRefreshSystemPanelCounter; } if ( (top.timeCount != 0) && ( (top.timeCount % seconds) == 0 ) ) doRefresh = 1; if (doRefresh) { var truncatedDateStr = top.getTimeString(); var uniquePageName = top.makePageName(docName, truncatedDateStr); top.frames[1].location.replace(uniquePageName); //top.frames[1].location.replace(docName); } } function getFileName( fullUrl ) { var s = new String( fullUrl ); var lastForwardSlashIndex = s.lastIndexOf("/"); var lastBackSlashIndex = s.lastIndexOf("\\"); var startIndex = 0; var endIndex = s.indexOf("?"); if ( lastForwardSlashIndex > lastBackSlashIndex ) startIndex = lastForwardSlashIndex + 1; else startIndex = lastBackSlashIndex + 1; if ( endIndex < 0 ) return s.substring(startIndex); else return s.substring(startIndex, endIndex); } function popUpAutoLoggedOutWindow(logOutReason, productBrand, interfaceName) { if (logOutReason == "0") alert("You have been logged out of " + productBrand + " " + interfaceName + " because your session was inactive.\n\nTo login, close this window and click on the login button"); else if (logOutReason == "1") alert("You have been logged out because you have just loaded new code.\n\nPlease wait 2 minutes to allow the " + productBrand + " to restart. Then close this window and click \"login\" to reconnect to " + interfaceName + "."); else Sergnese Nicola 566/2002 Pagina 222 di 228 alert("You have been logged out because the IP address you were connected to has been changed.\n\n" + "If your browser does not automatically connect to the new address, then wait 1 minute and manually " + " enter the new address in your browser window." ); } Codice js_user_config_JW420P63_____________.js /* defines to match server side user level defines in MC_user_defines.h */ var USERARRAY_USERNAME = 0; var USERARRAY_PASSWORD = 1; var USERARRAY_LAST_LOGIN = 2; var USERARRAY_ACCESS_LEVEL = 3; var USERARRAY_USER_ID = 4; var USERARRAY_ACCESS_WBI = 5; var USERARRAY_ACCESS_CLI = 6; var USERARRAY_ACCESS_FTP = 7; var USERARRAY_EXPERIENCE_LEVEL = 8; /* access level defines */ var GUEST_ACCESS_DEFINE = 0; var MONITOR_ACCESS_DEFINE = 1; var MANAGE_ACCESS_DEFINE = 5; var ADMIN_ACCESS_DEFINE = 100; /* user experience level defines */ var USER_EXPERIENCE_LEVEL_NONE = 0; var USER_EXPERIENCE_LEVEL_NOVICE = 1; var USER_EXPERIENCE_LEVEL_ADVANCED = 10; var USER_EXPERIENCE_LEVEL_DIAG = 20; var USER_EXPERIENCE_LEVEL_ENGR = 100; /* masks for UI's that can be logical and'ed */ var ACCESS_MASK_WBI = 0x1; var ACCESS_MASK_CLI = 0x2; var ACCESS_MASK_FTP = 0x4; var ACCESS_MASK_MUI = 0x8; /* ------------------------------------------------------------------------- */ function decodeAccessLevel( inLvl ) { var decodedString = "Unknown"; switch (inLvl) { case "0": decodedString = "Guest"; break; case "1": decodedString = "Monitor"; break; case "5": decodedString = "Manage"; break; case "10": case "100": decodedString = "Admin"; break; } return decodedString; } /* ------------------------------------------------------------------------- */ function decodeExperienceLevel( inLvl ) { Sergnese Nicola 566/2002 Pagina 223 di 228 var decodedString = "Unknown"; switch (inLvl) { case "0": decodedString = "None"; break; case "1": decodedString = "Standard"; break; case "10": decodedString = "Advanced"; break; case "20": decodedString = "Diagnostic"; break; case "100": decodedString = "Superuser"; break; } return decodedString; } /* -------------------------------------------------------------------------- */ function isDiagnosticUser( ) { if ( top.gUserType >= USER_EXPERIENCE_LEVEL_DIAG ) { return true; } else { return false; } } /* -------------------------------------------------------------------------- */ function isStandardUser( ) { if ( top.gUserType >= USER_EXPERIENCE_LEVEL_NOVICE ) { return true; } else { return false; } } /* -------------------------------------------------------------------------- */ function isAdvancedUser( ) { if ( top.gUserType >= USER_EXPERIENCE_LEVEL_ADVANCED ) { return true; } else { return false; } Sergnese Nicola 566/2002 Pagina 224 di 228 } /* ------------------------------------------------------------------------- */ function createAccessMark( inAccess ) { if (inAccess == "0") return ""; else if (inAccess == "1") return "*"; else return "N/A"; } /* ------------------------------------------------------------------------- */ function displayUserLine( aPwd ) { html=""; for (var i=0; i < aPwd.length; i++) { if ( (aPwd[ i ][ USERARRAY_USER_ID ] != "0") && (aPwd[ i ][ USERARRAY_USER_ID ] != "") ) { html+='<tr>'; html+='<td class="normal">' + aPwd[ i ][USERARRAY_USERNAME] + '</td>'; html+='<td class="normal">' + aPwd[ i ][USERARRAY_PASSWORD] + '</td>'; // html+='<td width="'+ sevenFive_width +'">' + aPwd[ i ][USERARRAY_LAST_LOGIN] + '</td>'; //dave_g: will add this later html+='<td width="'+ fiveOh_width +'" class="normal">' +decodeAccessLevel( aPwd[ i ] [USERARRAY_ACCESS_LEVEL] )+ '</td>'; html+='<td width="'+ fiveOh_width +'" class="normal">' +decodeExperienceLevel( aPwd[ i ] [ USERARRAY_EXPERIENCE_LEVEL ] )+ '</td>'; html+='<td width="'+ fiveOh_width +'" class="normal">' + createAccessMark( aPwd[ i ] [USERARRAY_ACCESS_WBI] ) + '</td>'; html+='<td width="'+ fiveOh_width +'" class="normal">' + createAccessMark( aPwd[ i ] [USERARRAY_ACCESS_CLI] ) + '</td>'; html+='<td width="'+ fiveOh_width +'" class="normal">' + createAccessMark( aPwd[ i ] [USERARRAY_ACCESS_FTP] ) + '</td>'; html+='</tr>'; } } return html; } Codice js_utility_JW420P63_____________.js js_utility_JW420P63_____________.js Codice g_control_frame.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <!--Copyright 2002 Chaparral Network Storage, All Rights Reserved ---> <script language="JavaScript"> document.write( "<title>Frame Control</title>" ); </script><title>Frame Control</title> <script language="JavaScript"> { // Non-visible control frame has two pieces document.write('<frameset rows="400,*,*" border="0" framespacing="0" frameborder="NO">'); document.write('<frame name="control" src="g_control.html" noresize>'); // Add "noresize" to turn off ability to move frameset Sergnese Nicola 566/2002 Pagina 225 di 228 document.write('<frame name="watchdog" src="g_watchdog.html" noresize>'); document.write('<frame name="stats" src="g_part_realtime_getdata.html" noresize>'); document.write('</frameset>'); } </script></head><frameset rows="400,*,*" border="0" framespacing="0" frameborder="NO"><frame name="control" src="g_control_frame_data/g_control.html" noresize="noresize"><frame name="watchdog" src="g_control_frame_data/g_watchdog.html" noresize="noresize"><frame name="stats" src="g_control_frame_data/g_part_realtime_getdata.html" noresize="noresize"></frameset> </html> Sergnese Nicola 566/2002 Pagina 226 di 228 8 Sitografia & Bibliografia Guide html, javascript, ajax, css, php, java html.it , www.webmasterpoint.org http://antirez.com/articoli/spaghettiajax.html , http://ajaxpages.sourceforge.net/doc/5_min_tutorial.html. Cas www.jasig.org/cas Liferay (www.liferay.com) autenticazioni WS-Federation (www-128.ibm.com/developerworks/library/specification/wsfed) Information Technology Support Center. University of Mariland. Best Practices: User Authentication Mechanisms www.itsc.state.md.us/ National Science Foundation Middleware Initiative (NMI www.nsf- middleware.org/default.aspx) Security Focus OnLine Library on Authentication [www.securityfocus.com/library/category/32 A-Select (www.a-select.org) definizione portale wikipedia. Glossario http://www.pc-facile.com/glossario/let/R/ Sergnese Nicola 566/2002 Pagina 227 di 228 Indice delle illustrazioni Figura 1: data center S.Co.P.E-Atlas internamente ....................................................................6 Figura 2: risorse necessarie Tier2 .............................................................................................12 Figura 3: web services...............................................................................................................15 Figura 4: pagina CMC S.Co.P.E con spoiler chiuso.................................................................16 Figura 5: pagina CMC S.Co.P.E con spoiler aperto..................................................................17 Figura 6: pagina CMC S.Co.P.E con spoiler selezione singolo servizio da spoiler..................18 Figura 7: esempio di web content display vuota.......................................................................27 Figura 8: esempio di iframe portlet vuota.................................................................................28 Figura 9: codice sorgente CMC-TC 26.....................................................................................29 Figura 10: Pagina di login CMC-TC.........................................................................................42 Figura 11: Pagina di login sw3com...........................................................................................45 Figura 12: pagina di login ce (service nodes)...........................................................................48 Figura 13: Pagina login E4 .....................................................................................................51 Figura 14: login asus.................................................................................................................55 Figura 15: Pagina di login per atlasdrac (worker nodes dell)...................................................58 Figura 16: Pagina login centron................................................................................................64 Figura 17: diagramma d'uso......................................................................................................68 Figura 18: navigazione..............................................................................................................71 Figura 19: configurazione iframe portlet per cmc....................................................................74 Figura 20: nomi campi username password..............................................................................75 Indice delle tabelle Tabella 1: cockburn login .........................................................................................................69 Tabella 2: cockburn seleziona web management.....................................................................70 Sergnese Nicola 566/2002 Pagina 228 di 228