Levysoft
  • Home
  • Portfolio
  • WordPress Plugin
  • Contattami

Dal 2004 il blog di Antonio Troise

RSS FeedTwitterFacebook
Lug 7 2008

Automatizzare le operazioni del cPanel da shell unix con i comandi wget, ftp e curl: download automatico del DB Mysql e monitorare la banda disponibile

Posted by Antonio Troise
Tweet

Il vantaggio di possedere un computer con Mac OS X è quello di avere sempre a disposizione, perché inclusa nativamente nel sistema operativo, una shell unix completa, per i più esperti, o Automator, per i meno esperti. Quest’ultimo strumento è una applicazione davvero potente perché consente di creare in maniera visuale, grazie ad un diagramma di flusso (workflow) e trascinando le azioni una dopo l’altra (drag & drop), programmi di automazione davvero complessi e articolati.

Ma dopo aver lavorato anni sui sistemi unix, avere sottomano una potente shell unix, è una tentazione di cui davvero non posso fare a meno. Infatti, con la semplice concatenazione di comandi (pipeline) come grep, sed e awk (altri comandi utili possono anche essere sort, uniq tail, head, cut e wc) in una sola riga, è possibile estrarre (scraping) informazioni da pagine web. Infatti, struttando il fatto che le pagine html sono, anche se in misura minora ad un più ordinato e formattato file xml, strutturate con i TAG, con pochi comandi è possibile fare del sano Web_scraping.

WGET

Il comando più potente da riga di comando per scaricare una pagina web o inviare richieste GET o POST, con o senza autenticazione è, come noto, WGET.
Per scaricare un file è possibile usare una sintassi tipo:

Ma la vera potenza di wget risiede nella possibilità di realizzare, con una sola riga di comando, un mirror ad un sito web.
Quindi per scaricare un intero sito in locale basta scrivere:

mentre, per scaricare solo una pagina con tutti i link interni:

Il problema è che sui sistemi MAC OS X, wget non è installato di default e, quindi, per chi non volesse passare per la fase di compilazione (anche se in giro esistono versioni già compilate per Tiger e Leopard) o, comunque, ha semplicemente la necessità di scaricare solo una file o una pagina web, allora è possibile usare una delle due alternative preinstallate su Mac OS X: ftp e curl.

FTP

Il comando FTP può essere usato anche per scaricare file HTTP.
La sintassi è molto semplice:

Come vedremo, in seguito, per i nostri scopi molto spesso il comando FTP è più che sufficiente per la maggior parte delle operazioni comuni.

CURL

CURL è un tool da riga di comando estremamente potente perché permette di scaricare in maniera molto flessibile ed automatizzata un qualsiasi numero di files da internet, secondo i protocolli HTTP o FTP, e di visualizzarli a schermo o di scriverli su disco.
La sintassi semplice, simile a quella dell’FTP, è:

In realtà la sintassi completa è:

Ma la vera flessibilità del comando nasce dalla possibilità di usare nella sintassi dell’URL le parentesi quadre per indicare una serie di URLs incrementali.
Per esempio una sintassi tipo:

creerà in modo automatico tutti gli URLs compresi nell’intervallo numerico specificato, e scaricherà in successione i file corrispondenti. Ai files sull’HD verrà assegnato il nome specificato dopo la flag -o, usando l’indice #1 per creare nomi univoci, incrementati allo stesso modo della sorgente.
In poche parole la singola riga di cui sopra equivarrà ad aver digitato in successione tutti i comandi:

Attenzione: il flag -O dell’ultimo esempio differisce dal flag con la o minuscola usato in precedenza, in quanto per nominare il file sul disco rigido usa lo stesso nome del file remoto.

La successione di URLs incrementali non deve essere necessariamente numerica, ma anche alfabetica, ad esempio [a-z]. Inoltre in uno stesso comando si possono combinare più indici incrementali (notate come nel nominare il file è possibile usare anche i due indici #1 e #2)

Monitorare la banda del proprio sito da riga di comando

Dati gli ultimi problemi di esaurimento della banda che hanno afflitto il mio sito, era evidente che una delle prime necessità che avevo era quello di monitorare costantemente la banda usata. Il problema è che, per farlo, dovevo ogni volta accedere al cPanel, il Pannello di Amministrazione del mio sito, dove, in un menu laterale, era possibile visualizzare la banda usata.

cPanel Bandwidth

Allora ho deciso di crearmi un semplice script che, scaricasse la pagina html del mio cPanel, andasse a selezionare, con il comando grep, la riga che conteneva la frase “Monthly Bandwidth Transfer” e attraverso due comandi awk (i file separator usati in Awk sono relativi alla mia pagina cPanel e potrebbero variare a seconda delle diverse versioni e configurazioni del pannello di controllo), estrarre la banda usata:

Come potete notare, per semplicità ho incluso, direttamente nella URL, lo username e la password per accedere al Pannello di Amministrazione. Questo è possibile solo perché il metodo di autenticazione del cPanel si basa su htpasswd ma ricordiamo che non è un metodo sicuro perché, oltre a lasciare memorizzati informazioni personali, nella barra degli indirizzi del proprio browser o nella history del terminale usato, si lasciano tracce anche nei vari proxy in cui si passa e nei log del webserver, oltre, come comunque avviene l’autenticazione classica se non passa per SSL, con un semplice sniffer.

Ci tengo a precisare che quello sopra illustrato è solo uno dei tanti modi per risolvere il problema: questo, in particolare, è il primo che mi è venuto a mente, forte delle decine di script shell realizzati negli anni. Ovviamente è possibile anche renderlo più complesso ed efficiente, parametrizzando username, password e url e, magari, notificando con una mail o con un messaggio a video (magari anche con Growl), quando la banda è prossima all’esaurimento. Il tutto ovviamente potrebbe anche essere inserito nel crontab di sistema in modo da girare ogni ora.

Per esempio, un metodo non ortodosso, sarebbe quello di visualizzare l’output non a video ma direttamente in TextEdit usando il comando open con le pipeline. Per farlo, ho riunito i tre comandi sopra elencati in un file bash di nome: monitora_banda.bash.
Quindi lanciando:

avremo questo risultato:

Output Textedit

Più in generale questo è il risultato del comando ‘open’ presente su Mac OS X.
Altri esempi, potrebbero essere:

Ma le possibilità, come vedete, sono infinite. Ma lo scopo di questo articolo era solo di illustrare alcuni metodi per automatizzare da riga di comando delle procedure. Il resto è lasciato all’inventiva di ciascuno di voi.

Download automatico del backup del DB Mysql

Il mio hosting non supporta il backup automatico del DB di Mysql perché non gestisce correttamente le schedulazioni di comandi da riga di comando. E’ per questo che ho realizzato un semplice script da inserire nel crontab, per scaricare quotidianamente il backup del proprio database.
Infatti, sempre nel cPanel, è presente una sezione “Backups” che permette di scaricare, manualmente e con un link statico, un full backup del sito, oppure un backup parziale del solo database Mysql o della sola home directory (il concetto esposto rimarrà comunque analogo per qualsiasi soluzione adottiate).
E’ evidente che, a questo punto, con un semplice comando, è possibile scaricare da terminale i backup:

Basterà quindi inserirlo (con il comando crontab -e) nel crontab (se non siete esperti potrete usare il Easy Crontab Creation Tool) in modo da fargli scaricare il backup del DB, per esempio, ogni giorno alle ore 11:30 del mattino:

Attenzione: come ogni comando da terminale, FTP (ma lo stesso vale se usate WGET o CURL) andrà ad operare nella directory corrente di lavoro, quindi se volete archiviare i file scaricati in una directory apposita, spostatevici preventivamente con il comando cd nome_directory.
Inoltre, dovete tenere presente che tutti i downloads andranno a scrivere lo stesso file e, quindi, ogni giorno ci si ritroverà con solo l’ultimo file scaricato. Se avete intenzione di tenere traccia di tutti i backup scaricati, dovrete rinominare il file, per esempio, aggiungendoci un suffisso come la data di download (realizzabile o con il comando curl o con uno script bash).

Tag:automator, awk, backup, banda, bandwidth, bash, cpanel, curl, database, download, ftp, grep, html, ksh, Mac os x, Mysql, password, sed, shell, unix, url, wget
CONTINUE READING >
5 comments
Mar 31 2008

Disattivare il completamento automatico dei moduli direttamente da codice HTML

Posted by Antonio Troise
Tweet

Nonostante il completamento automatico dei dati immessi nella aree di testo dei form su Internet Explorer o Firefox, sia molto utile per l’utente medio, c’è anche chi non lo vede di buon grado, perché lo vede come un rischio per la propria privacy. Infatti, la caratteristica di questa funzione è quella di memorizzare i dati immessi in precedenza sullo stesso form (o più specificatamente sui campi che hanno lo stesso nome) per poi suggerirne le corrispondenze, in base al testo digitato nel campo, in un elenco di voci in ordine alfabetico. E’ evidente che chiunque possa accedere fisicamente ad un pc, con un solo doppio click sul campo interessato, potrebbe in pochissimo tempo ottenere alcuni dati sensibili del precedente utilizzatore. Addirittura, dato che il completamento automatico memorizza i dati in base al nome che assume il campo nel form, siccome nel 90% dei casi un form di accesso ad una area protetta da password, avrà i campi con il nome, “username” e “password“, se si prova ad accedere ad un sito è molto probabile che è possibile imbattersi negli username di tutti gli altri siti che necessitano di autenticazione e che avranno lo stesso nome nel campo di immissione utente.

Disattivare il completamento automatico da Browser

Il problema, poi, si complica, se si memorizzano anche le password sul proprio browser, poiché chiunque potrebbe accedere (ovviamente solo se fisicamente presente) a tutti i siti.

Fortunatamente su qualsiasi browser esiste la possibilità di cancellare tutte le voci salvate in tutti i moduli o di disabilitarne definitivamente la funzionalità: se, però, questa soluzione vi risulta un po’ drastica è possibile anche rimuovere selettivamente una o più voci.

Disattivare il completamento automatico dei moduli da codice HTML

Ci sono però dei casi in cui si vorrebbe disabilitare la funzione nativamente e indipendentemente dalle scelte dell’utente che, spesso e volentieri, si dimentica di questi problemi di Privacy: è il caso per esempio dell’accesso ai servizi online bancari o ad altri siti con dati molto riservati per cui, sapere anche solo lo username, può costituire un grave pericolo.
Ma, più semplicemente, potrebbe essere anche l’esigenza di coloro che vogliano realizzare un completamento automatico via ajax dei moduli in grado di interrogare il server e di visualizzare sul client un elenco di informazioni filtrate in base al contenuto immesso nel campo della form.
Oppure, più banalmente, per un puro fattore estetico del webmaster che vorrebbe che la digitazione del testo nei campi sia pulita e ordinata.

Insomma, qualunque siano le vostre necessità, se volete disattivare l’autocompletamento nei vostri moduli direttamente da codice html, è sufficiente applicare agli elementi input di un form l’attributo autocomplete e impostarlo a OFF (visto che di default è settato l’attributo ad ON).

Se, invece, volete disattivare l’autocompletamento su tutti i campi del FORM (e non ad un solo campo del modulo) allora sarà sufficiente inserire l’attributo nell’elemento all’interno della dichiarazione del FORM:

Non conforme alle specifiche W3C

Dovete però sapere che attualmente il metodo AUTOCOMPLETE non è uno standard del W3C, perché è ancora solamente presente nella bozza per l’HTML 5, in particolare nella sezione dei Web Forms 2.0.
In realtà, però, sebbene non sia ancora stato incluso ufficialmente negli standard W3C, tutti i principali browsers (Internet Explorer, Firefox, Opera, Safari e Camino) già lo supportano da molti anni, per cui, se si intende utilizzarlo, si ha la ragionevole certezza che funzioni ovunque, ma le pagine che conterranno questo attributo non saranno validate come conformi alle specifiche del W3C.

Tag:autocomplete, form, html, privacy, w3c
CONTINUE READING >
2 comments
Gen 29 2008

Perché spesso le guide html non dicono che l’attributo TARGET per aprire nuove finestre non è HTML Strict? Tre soluzioni per avere lo stesso effetto senza invalidare il codice e avere un sito accessibile

Posted by Antonio Troise
Tweet

Quando ho iniziato a programmare, il tag A (per la definizione di link ipertestuali) supportava pienamente l’attributo TARGET per aprire in una nuova finestra un sito web magari esterno al proprio, con lo scopo (illusorio) di non perdere visitatori. Ricordo ancora, quando farcivo le mie pagine html con formule tipo:


Link esterno

e magicamente, a mo’ di popup, si apriva un’altra finestra del browser (all’epoca ancora non esisteva il concetto navigazione a schede o tab).

Da qualche anno, però, l’attributo TARGET del tag A è stato completamente abolito dalle specifiche Strict dell’HTML per la realizzazione di un sito accessibile. Il motivo è ben chiaro a tutti: solo l’utente dovrebbe decidere se aprire o no un link in una nuova finestra (ad esempio tenendo premuto Shift) e non dovrebbe essere obbligato a subire le scelte del webmaster di turno: il rischio, infatti, è quello di trovarsi lo schermo invaso da finestre flottanti o, se usate Firefox ben configurato, decine di tab aperte! Inoltre aprendo una nuova finestra si pregiudica l’utilizzo del tasto “Indietro” che è il tasto di navigazione più utilizzato.

Una informazione spesso omessa nelle guide html

Purtroppo non tutti lo sanno e in molti corsi html sparsi per la rete, questo fatto viene ancora ignorato o comunque non messo bene in evidenza (provate a cercare su google ‘corso html‘ e vedrete che i primi risultati portano a dei corsi che non accennano a questa nuova regola).

Addirittura, ho trovato un riferimento spensierato all’attributo TARGET sulla pagine delle FAQ del Centro assistenza clienti AdSense, quando spiega come creare un link ipertestuale:

Utilizza target=”_top”: questo codice dice al browser quale finestra utilizzare per il caricamento della pagina di destinazione dell’immagine cliccabile. Se non includi nel codice questo tag (il punto in cui inserirlo è descritto più avanti), il browser tenterà il caricamento della pagina di destinazione all’interno del formato degli annunci.

Non che il concetto di TARGET sia errato ma essendo oramai obsoleto e deprecato, questa omissione può portare molta gente, che decidendo oggi di imparare il linguaggio html, apprende un concetto errato e quando si dovrà a dover validare il codice, si troverà dinanzi ad un attributo target che inspiegabilmente non passa il check. Sarebbe stato auspicabile almeno un cenno a questo fatto, per evitare di commettere errori all’inizio della propria carriera di programmatori web.

Dove trovare informazioni sulle specifiche HTML Strict

Basterà, però andare, per esempio, su w3schools e notare che, nella tabella riepilogativa, l’attributo TARGET (il cui valore può essere _blank, _parent, _self, _top) non è non previsto nelle DTD Strict, ma è previsto solo nella DTD Transitional.

Una ulteriore conferma, basta andare a leggere il regolamento attuativo della L. 4/20041 (“Decreto Ministeriale 8 luglio 2005—Requisiti tecnici e i diversi livelli per l’accessibilità agli strumenti informatici. Allegato A”) e si noterà che nell’elenco dei requisiti di accessibilità per i siti Internet, al primo punto, compare la voce:

  • per tutti i siti di nuova realizzazione utilizzare almeno la versione 4.01 dell’HTML o preferibilmente la versione 1.0 dell’XHTML, in ogni caso con DTD (Document Type Definition – Definizione del Tipo di Documento) di tipo Strict;
  • per i siti esistenti, in sede di prima applicazione, nel caso in cui non sia possibile ottemperare al punto a) è consentito utilizzare la versione dei linguaggi sopra indicati con DTD Transitional, ma con le seguenti avvertenze:
    1. evitare di utilizzare, all’interno del linguaggio a marcatori con il quale la pagina è realizzata, elementi ed attributi per definirne le caratteristiche di presentazione della pagina (per esempio, caratteristiche dei caratteri del testo, colori del testo stesso e dello sfondo, ecc.), ricorrendo invece ai Fogli di Stile CSS (Cascading Style Sheets) per ottenere lo stesso effetto grafico;
    2. evitare la generazione di nuove finestre; ove ciò non fosse possibile, avvisare esplicitamente l’utente del cambiamento del focus;
    3. pianificare la transizione dell’intero sito alla versione con DTD Strict del linguaggio utilizzato […]

Come si vede, quindi, in ogni caso, sia che il sito è esistente da anni o di nuova realizzazione, la generazione di nuove finestre andrebbe evitata, a meno che non si avvisi esplicitamente l’utente del cambiamento del focus!
Tra le altre cose da evitare per avere un sito accessibile vi sono: i frame e le scritte lampeggianti. Tutte cose che spopolavano anni fa nei primi siti web che comparivano su internet e che, tutt’oggi, le guide html ancora raccontano omettendo che sono deprecate per avere un sito accessibile.

Prima soluzione

Quindi, se l’apertura incondizionata di nuove finestre o di “popup” è deprecata e da evitare, se proprio non se ne vuole fare a meno, allora è necessario avvisare l’utente che si aprirà una nuova finestra.
Per adottare questa tecnica, bisogna, però, è necessario ricorrere a Javascript, sfruttando comandi come window.open() e all’evento onclick, da associare all’attivazione del link, evitando, comunque, di generare elementi o attributi non consentiti.

Qui ho trovato un semplice esempio di come utilizzare un accorgimento particolare che sfrutta javascript senza però andare ad invalidare il codice e soprattutto avvisando l’utente del cambiamento di focus:

E’ ovvio che, questo genere di soluzioni, andrebbero usate solo laddove non se ne può fare a meno, come, per esempio, la generazione di una pagina stampabile.

Seconda soluzione

Un’altra alternativa, la propone Ecologia dei siti web, che, nel tentativo di rispettare la legge L. 4/2004 (come pure le WCAG) che, indica, giustamente, di non vincolare l’utente all’uso di uno specifico dispositivo di input, consiglia di usare l’evento onclick sempre assieme all’evento onkeypress controllando che il tasto premuto corrisponda al tasto ENTER.

Ecco la sua soluzione:

Mentre i collegamenti da aprire in una nuova finestra sono identificati semplicemente tramite l’associazione alla classe blank:

Terza soluzione

Per finire non mi resta che citare un’ultima interessante alternativa tutta italiana: si chiama Wi.Li. (Windowed Links) ed è opera di Diego La Monica che l’ha realizzata partendo da un’idea di Carlo Filippo Follis.

Wi.Li. è uno script che ha il compito di eseguire una scansione di tutti i link sulla pagina in cui è inserito verificandone la destinazione. Nel momento in cui un utente effettua un click su un collegamento, Wi.Li. adotta un comportamento differente in base alla decisione dell’utente che può essere: aprire la pagina in una nuova finestra oppure rimanere nella stessa finestra di navigazione.

Il vantaggio di Wi.Li., quindi, è quello di poter integrare nel proprio sito “finestre popup discrezionali” accessibili, senza dover intervenire manualmente sul codice HTML che rimane validato.

Dagli esempi, si evince il suo funzionamento che, per quanto intuitivo, non rispetta comunque una delle direttive del regolamento attuativo della L. 4/20041, ovvero quella relativa all’avviso esplicito all’utente del cambiamento del focus.

Tag:Css, html, html_validators, Javascript
CONTINUE READING >
4 comments
Ago 16 2007

WikiConverter: Convertire il codice html in wiki

Posted by Antonio Troise
Tweet

WikiConverter è un sito che voglio consigliare per coloro che non hanno ancora imparato bene la sintassi wiki e che preferiscono scrivere i loro articoli con un editor html, oppure per tutti coloro che devono migrare i contenuti da una piattaforma html ad una wiki in modo da non dover convertire tutti i markup.
Infatti, WikiConverter è un sito che, giunto alla versione 0.62, permette di inserire e tradurre pagine html nel markup dei principali wiki come: Confluence, DokuWiki, Kwiki, Markdown, MediaWiki, MoinMoin, Oddmuse, PbWiki, PhpWiki, PmWiki, SnipSnap, Socialtext, TikiWiki, UseMod, WakkaWiki, WikkaWiki.
E’ possibile sia incollare il codice html da convertire in un form ma anche di recuperarlo inserendo, nell’apposita area, il link della pagina html.

Tag:html, wiki
CONTINUE READING >
0 comments
Lug 13 2007

Firebug e la funziona di INSPECT per modificare al volo le pagine html e come fare Hacking di applicazioni web con Firefox

Posted by Antonio Troise
Tweet

Firebug Firebug, è una estensione per Firefox che facilita la vita a chi deve costruire siti e applicazioni web. Tra le centinaia di funzionalità di cui si dispone installando Firebug, come la possibilità di analizzare ed editare il codice HTML, CSS e Javascript, la visualizzazione di tutte le dipendenze, utili strumenti di debug e di esplorazione del DOM e il monitoraggio dettagliato del caricamento delle pagine e degli elementi che le compongono, ve ne è una che, tra tutte, le supera di gran lunga: è la funzione di “Inspect element”.

InspectQuesta opzione, che appare nel menu contestuale quando si attiva firebug in corrispondenza dell’elemento identificato dal mouse (oppure cliccando sul pulsante Inspect e poi selezionando con un click del mouse l’elemento che interessa), permette di modificare e testare “a caldo” qualunque pagina HTML, foglio di stile CSS o funzione Javascript di un qualsiasi sito web senza provocare alcun impatto sulla navigazione per i vostri visitatori.
Così facendo nella parte inferiore della finestra sarà possibile visualizzare il codice html e gli stili associati all’elemento selezionato: per esempio, nella sezione css vengono visualizzate le proprietà dell’oggetto, dichiarate direttamente oppure ereditate (le dichiarazioni che trovate barrate sono quelle sovrascritte da dichiarazioni successive). E’ possibile, quindi, modificare il css e l’html e le funzioni javascript agendo direttamente sulla finestra di Inspect e verificare immediatamente gli effetti della variazione; per ritornare alla pagina originale basta fare un semplice refresh da Firefox.
Addirittura è anche possibile, nella finestra relativa ai css, visualizzare un’anteprima dei colori usati semplicemente posizionando il puntatore sopra al valore esadecimale.

Il bello della funzione di INSPECT di Firebug è che è possibile testare velocemente le modifiche al proprio sito online lavorando localmente su Firefox e in tempo reale. Inoltre, è possibile analizzare molto velocemente la struttura di un altro sito di cui magari se ne vuole carpire qualche trucchetto html o css.

Un esempio pratico delle potenzialità dell’INSPECT di Firebug lo trovate nel Video Tutorial su come modificare il proprio tema WordPress in 5 minuti con FireBug di Daniele Salamina

Altri Toolkit simili è possibile trovarli installando a Web Developer Toolbar oppure Venkman, anche se, a mio parere, non sono così completi performanti come Firebug.

Per chi, invece, non usa Firefox, è possibile testare la console di Firebug con Firebug Lite. Si tratta di uno script da inserire nelle pagine che vogliamo testare e che attiva la visualizzazione della console nella parte inferiore della pagina stessa usando il tasto F12 o la combinazione CTRL+SHIFT+L.

Qui, invece, trovate la traduzione dell’articolo Hacking Web 2.0 Applications with Firefox di Shreeraj Shah pubblicato originariamente su SecurityFocus che insegna come fare hacking di applicazioni Web 2.0 con Firefox e Firebug.

Se poi, l’idea di trasformare Firefox in una hacking platform vi alletta molto, allora non dovete fare altro che seguire l’articolo Turning Firefox to an Ethical Hacking Platform pubblicato da Security Database in cui vengono elencate numerose estensioni per Firefox da installare per avere a disposizione tutto il necessario per l’hacking di applicazioni web.
Queste le categorie: Whois and geo-location, Enumeration / fingerprinting, Social engineering, Googling and spidering, Editors, Headers manipulation, Cookies manipulation, Security auditing, Proxy/web utilities, Hacks for fun, Encryption, Malware scanner, Anti Spoof.

Tag:Ajax, Css, editor, firebug, firefox, hack, html, Javascript, toolkit, Tutorial, Video
CONTINUE READING >
5 comments
SeguiPrezzi - Risparmia con Amazon.it

Categorie

Commenti Recenti

  • Antonio Troise on UltraEdit: per i programmatori esigenti il miglior editor di testo per Windows, Mac OS e Linux
  • Fioredicollina on UltraEdit: per i programmatori esigenti il miglior editor di testo per Windows, Mac OS e Linux
  • Antonio Troise on UltraEdit: per i programmatori esigenti il miglior editor di testo per Windows, Mac OS e Linux
  • Emanuele on UltraEdit: per i programmatori esigenti il miglior editor di testo per Windows, Mac OS e Linux
  • Luca on iDatabase: la valida alternativa di Bento per macOS e iOS per i database personali

Meta

  • Accedi
  • Entries RSS
  • Comments RSS
  • WordPress.org

Friends Link

  • GamerTagMatch
  • SeguiPrezzi.it – Risparmia con Amazon.it
  • Trendy Nail

Seguimi su:

  • facebook
  • twitter
  • rss
Creative Commons License
Levysoft by Antonio Troise is licensed under a Creative Commons Attribuzione-Non commerciale 2.5 Italia License.
© Copyright 2004 - 2014 - Levysoft by Antonio Troise