#####################################################################
## Script in perl "news_facili v.2.0 ita" ##
## Per server con sistemi linux e unix ##
## ##
## © Copyright Marco Allegretti aka "shishii". ##
## ##
## L'uso è soggetto alle seguenti regole: ##
## 1- gratuito per qualunque tipo di sito, in qualunque numero di ##
## copie. ##
## 2- è ammessa la modifica. ##
## 3- è gradita la comunicazione delle modifiche all'autore. ##
## 4- è ammessa la redistribuzione. ##
## 5- NON è ammessa la vendita, ne la cessione in cambio di ##
## qualcosa. ##
## 6- NON è ammessa la rimozione dei link al sito dell'autore ne ##
## degli header che attestano il copyright ##
## 7- NON è ammessa l'inclusione anche di parte del codice in ##
## opere destinate alla vendita. ##
## ##
## Puoi contattarmi presso shishii@tiscalinet.it ##
## Il mio sito è www.shishii.com ##
## Ciao! ##
#####################################################################
## La versione 1.1 differisce dalla 1.0 per una generale ##
## ottimizzazione e per la possibilità di regolare il colore dei ##
## font della pagina creata dallo scipt. ##
## Ringrazio Maurizio Vesce per i suggerimenti datimi. ##
## Puoi contattarlo tramite il suo sito http://www.cercagratis.it ##
#####################################################################
## La versione 1.2 differisce dalla 1.1 solo per la possibilità di ##
## scegliere il tipo di formattazione dei paragrafi ##
## Si ringrazia Alfredo Profeta per i suggerimenti che hanno ##
## contribuito a migliorare questo script ##
## http://www.imprint-profeta.com ##
#####################################################################
## La versione 2.0 è stata completamente riscritta ma non è stata ##
## modificata la struttura del file di database titoli.txt per cui ##
## è possibile sostituire i file della nuova versione alla vecchia ##
## senza perdere le news già inserite. Sarà sufficiente lasciare ##
## il vecchio titoli.txt ##
#####################################################################
I files e directory che troverai nel file compresso sono:
1) variabili.pl
2) news.pl
3) vis_news.pl
4) titoli.txt
5) new.gif
6) news.shtml
7) template.tpl
8) pages Directory
9) old_pages Directory
10) readme.html
#####################################################################
Requisiti Necessari.
- Server UNIX-LINUX. L'adattamento a server windows è semplice,
ma non intendo contribuire al sostegno di un sistema operativo
insicuro, costoso e proprietario. Essendo però ammesse le modifiche
dello script, gli interessati potranno provvedere.
- Interprete di PERL 5
- Supporto CGI e SSI.
#####################################################################
In generale
Questi scripts servono per inserire dinamicamente delle news in un
sito web allocato su server UNIX-LINUX.
La struttura per grandi linee è la seguente:
Tramite un pannello di controllo si inseriscono delle news
contraddistinte da un titolo.
Il titolo andrà a formare il link dinamico che comparirà nella pagina
che presenta l'indice delle news che verrà formato dai titoli in
ordine decrescente di inserimento.
Il testo invece andrà a riempire una pagina html statica creata dallo
script e su cui si giungerà tramite il link suddetto.
Lo stesso pannello di controllo consente di cancellare delle news e
il relativo link.
Anche nella versione 2.0 si è badato a renderne l'utilizzo più
"economico" e semplice possibile. Per cui non si fa uso di database
esterni, o di moduli Perl.
Sono state introdotte le seguenti migliorie:
- Maggiore semplicità grazie alla scomparsa di alcuni file che
richiedevano un apposito settaggio, e all'uso di template per
l'adeguamento della grafica al sito.
- Maggiore sicurezza grazie alla possibilità di utilizzare password
e di filtrare bene l'input.
Le opzioni possibili:
- puoi regolare l'ora tenendo conto del fuso orario del server su cui
risiede il tuo sito
- puoi decidere il numero massimo di news da visualizzare
- le news che superano il numero massimo possono:
-- essere lasciate nella directory pages
-- essere cancellate definitivamente
-- essere archiviate nella directory old_pages
- in ogni caso il link delle news scadute viene cancellato
automaticamente
- puoi inserire automaticamente una piccola immagine accanto alle news
particolarmente recenti
- puoi decidere per quante ore una news va considerata particolarmente
recente
- puoi decidere se fare comparire la data ed ora di inserimento accanto
al titolo della news e sotto il titolo della pagina relativa
- puoi decidere se la data accanto al titolo deve essere scritta con un
font di dimensione minore
- Se decidi di usare la pagina autogenerata:
- puoi decidere il colore di sfondo e il background
- puoi decidere il tipo e la dimensione e il colore dei font
- puoi regolare i margini del testo delle pagine che contengono le
news
- puoi regolare colore, spessore, larghezza della linea orizzontale
posta sotto il titolo
- puoi scrivere il messaggio di "alt" che si evidenzia quando il mouse
va sulla piccola immagine accanto al titolo
- puoi decidere se usare uno stile css per i titoli linkati, in modo
che non siano sottolineati ma che cambino colore al passaggio del
mouse. Puoi decidere quali colori usare.
- Se invece decidi di usare il template puoi regolarme in assoluta libertà
la grafica. Inserendo gli elementi dinamici dove vuoi.
Gli elenchi a tendina di pagine esistenti tra cui scegliere quelle da
cancellare sono fatti con uno script che verifica le relative directory e
genera il codice html necessario direttamente sul pannello, per cui tali
dati sono sempre aggiornati automaticamente.
Sulla pagina html sono presenti JavaScript che consentono l'anteprima di
pagine esistenti.
#########################################################################
## SETTAGGIO
FILES pl
Tutti i files.pl devono essere settati e manipolati solo con editor
specifici o con editor di testo puri tipo "blocco note" di windows.
Devono essere inviati al server tramite client FTP, assicurandosi
che la trasmissione avvenga in modalità ASCII.
Si deve attribuire a tutti chmod 755, tranne che a variabili.pl al quale
deve essere attribuito chmod 644.
FILE shtml
Si tratta della pagina di prova che serve a verificare
il funzionamento degli script, prima dell'inserimento sulle pagine
pubbliche.
Le caratteristiche specifiche verranno illustrate di seguito.
Le sezioni su cui devi intervenire sono segnalate nel corpo del codice
tramite i tag di commento /*....*/ oppure < !--.....-- >.
Non deve essere variato il chmod attribuito dal sistema.
FILE txt
Si tratta del file di database che consente di memorizzare i vari dati
delle news.
Inizialmente è vuoto, e così deve essere caricato sul server. Deve essere
attribuito chmod 666.
Ti consiglio di creare nella directory principale del tuo sito una
directory "news_facili" all'interno della quale inserirlo a questa
directory devi dare chmod 777.
FILE tpl
Si tratta del file di template che consente di avere la pagine delle
news con grafica assolutamente personalizzata.
Ti consiglio di creare nella directory principale del tuo sito una
directory "news_facili" all'interno della quale inserirlo.
DIRECTORY
Si tratta delle directory al cui interno verranno create le pagine e
archiviate quelle vecchie. Le ho inserite nel pacchetto per evitare che
vengano dimenticate o venga sbagliato il nome. Ovviamente se sei capace
puoi anche reimpostarle.
Ti consiglio di creare nella directory principale del tuo sito una
directory "news_facili" con chmod 777 all'interno della quale inserirle.
Alle stesse deve essere attribuito chmod 777.
Diagramma di esempio per l'istallazione dei file con i chmod:
/directory_home_sito/
|
|_ /news_facili/ chmod 777
| |
| |_ titoli.txt chmd 666
| |_ template.tpl chmod 644
| |_ news.shtml chmod 644
| |_ new.gif chmod 644
| |_ /pages/ chmod 777
| |_ /old_pages/ chmod 777
|
|_ /cgi-bin/
|
|_ /news_facili/ chmod 755
|
|_ news.pl chmod 755
|_ vis_news.pl chmod 755
|_ variabili.pl chmod 644
Vediamo adesso come configurare e istallare lo script.
###########################################################################
variabili.pl
----------------------------------------------------
DESCRIZIONE
Questo è il file che contiene tutte le variabili utilizzate dagli scripts.
-----------------------------------------------------
CONFIGURAZIONE
#####################################################################
## SEZIONE INDIRIZZI
Fai molta attenzione agli URL e ai path che inserisci. La maggior
parte dei mancati funzionamenti dei CGI sono dovuti a ciò.
path completo del file di database titoli.txt
$titoli_path = '/var/www/html/news_facili/titoli.txt';
URL della directory che contiene le pagine delle news.
$pag_url = 'http://localhost/news_facili/pages';
path della directory che contiene le pagine delle news.
$pag_dir = '/var/www/html/news_facili/pages';
path della directory che contiene le pagine archiviate delle news.
$old_pag_dir = '/var/www/html/news_facili/old_pages';
URL dell'immagine che viene usata per evidenziare le news recenti.
$img_url = 'http://localhost/news_facili/new.gif';
URL della pagina che contiene i titoli delle news
$news_url = 'http://localhost/news_facili/news.shtml';
URL dello script news.pl
$cgi_url = 'http://localhost/cgi-bin/news_facili/news.pl';
Inserisci l'url della directory che contiene la parte html dello
script, NON di quella che contiene i CGI.
$non_cgi_dir_url = 'http://localhost/news_facili';
#####################################################################
## SEZIONE SICUREZZA
Presta la massima attenzione al settaggio di questa sezione.
Per prima cosa puoi proteggere il pannello di controllo con password.
Tieni presente che si tratta di una semplice password in chiaro.
Ovviamente se puoi e se vuoi puoi disattivare questa protezione
e proteggere la directory dove risiede il pannello di controllo,
news.pl, con password di sistema o webserver.
Ti consiglio di filtrare la lunghezza degli input per evitare
crash del server, esaurimento dello spazio a tua disposizione, ecc.
Infine ti consiglio di non consentire o di restringere al massimo la
possibilità di usare codice html nel testo, a meno che non sia solo
tu ad accedere al pannello di controllo.
se vuoi che le varie attività dello script siano protette da una
password setta la seguente variabile ad 1 altrimenti a 0
$protetta = 1;
se hai scelto 1 nell precedente opzione setta qui la password
$passwd = "ciccio";
Filtraggio Tag html, javascript, ecc, che possono essere inseriti
nel testo della news o nel titolo.
Hai le seguenti scelte:
- per consentire l'inserimento senza selezione dei tag setta la
variabile $tag = 0.
- per consentire l'inserimento di alcuni tag "innocui" da me
selezionati, e cioè: b,i,u,h,small,big,font,p,br,hr setta la
variabile $tag = 1.
- per non consentire alcun inserimento di tag setta la variabile
$tag = 2.
- per consentire l'inserimento di una lista di tag da te predisposta
setta la variabile $tag = 3. In questo caso dovrai inserire i tag
autorizzati come di seguito spiegato.
- per fare trasformare tutti i caratteri < e > in & lt; e & gt; setta
la variabile $tag = 4.
$tag = 2;
il seguente array ti consente di costruire una tua lista di tag
autorizzati ad essere inseriti nel titolo o nel testo delle news.
Devi usare la seguente forma: @tags = ('b','font','br');
se fai usare il pannello ad altri dovrai indicargli quali tag sono
permessi
@tags = ('b','font','br','p');
di seguito puoi fissare la lunghezza massima del titolo e del testo.
fissare delle dimensioni massime è eccellente norma di sicurezza.
se non intendi fissare delle dimensioni massime setta le due
variabili successive a 0.
$titolo_length = 30;
$testo_length = 2000;
#####################################################################
## SEZIONE PAGINA TITOLI LINKATI
regoli l'ora in base al fuso orario del server. Se lo stesso è posto in
un luogo che è 6 ore indietro rispetto al paese da cui provengono i
visitatori allora devi scrivere 6, se è posto 6 ore avanti allora devi
scrivere -6.
$fuso = '0';
indichi il numero massimo di news da visualizzare.
$num_max = '5';
Se $canc_aut 0 non cancella le pagine obsolete
Se 1 cancella la pagina dopo averla archiviata
Se 2 cancella la pagina definitivamente senza archiviarla
$canc_aut = '1';
se vuoi che compaia una piccola immagine accanto ad un titolo di una news
recente setta $image ad 1, altrimenti a 0.
$image = '1';
numero di ore durante le quali deve comparire l'immagine che evidenzia una
nuova news se vuoi che compaia, ad esempio, per 2 giorni scrivi 48.
$num_ore = '12';
setta $data_ins ad 1 se vuoi che a fianco del titolo compaia la data ed
ora di inserimento, altrimenti 0.
$data_ins = '1';
Se hai scelto di inserire la data, e vuoi che il font della stessa sia più
piccolo di quello del titolo setta $small ad 1, se vuoi che abbia la
stessa dimensione setta a 0.
$small = '1';
width dell'immagine che deve comparire accanto alle new recenti
$img_width = '30';
height dell'immagine che deve comparire accanto alle new recenti
$img_height = '18';
setta in questa variabile il contenuto dell'alt dell'immagine inserita
$img_alt = "Questa notizia è stata inserita da meno di $num_ore ore";
se vuoi che il titolo venga formattato tramite css setta $css ad 1,
altrimenti 0
$css = '1';
colore del titolo quando il mouse è lontano
$col_link_off = "blue";
colore del titolo quando il mouse è sopra
$col_link_on = "gold";
###############################################################################
## SEZIONE SCELTA TEMPLATE
Qui puoi scegliere se usare un template per costruire la pagina della news
oppure usare quella generata dallo script.
Se setti a 0 la pagina verrà generata automaticamente dallo script e di
seguito potrai regolare alcuni parametri di grafica.
Se setti ad 1 userai un template di cui dopo dovrai indicare il path.
$template = 1;
path del file template, da settare solo se hai posto ad 1 la variabile $template
$path_template = "/var/www/html/news_facili/template.tpl";
###############################################################################
## SEZIONE GRAFICA PAGINA AUTOMATICA
# I settaggi che seguono vanno effettuati solo se hai scelto di usare
# per le news la pagina generata dallo script.
colore di sfondo della pagina contenente la nuova news.
$bgcolor = '#80ffff';
url dell'immagine di sfondo della pagina contenente la nuova news.
$background = '';
tramite questa variabile puoi adattare la formattazione del testo della news
se la setti ad 1 verranno inseriti i tag -p align="justify"- testo -/p- per ogni paragrafo
se la setti a 2 verranno inseriti i tag -p- testo -/p- per ogni paragrafo
se la setti a 0 verra inserito solo il tag -br- alla fine del paragrafo.
$format = '1';
colore del testo della pagina creata dallo script.
$col_text = '#000000';
colore dei link della pagina creata.
$col_link = '#0000ff';
colore dei link visitati della pagina creata.
$col_vlink = '#800080';
colore dei link attivi della pagina creata.
$col_alink = '#ff0000';
ampiezza in % della porzione di testo nella pagina della news.
$tab_width = '90';
size del font del testo, il titolo sarà automaticamente più grande
$size_text = '4';
font da usare nel testo e nel titolo
$face_text = 'comic sans ms';
larghezza della linea sottostante il titolo
$hr_width = '80';
spessore della linea sottostante il titolo
$hr_size = '2';
colore della linea sottostante il titolo
$hr_color = '#800080';
Non rimuovere in nessun caso questo numero posto alla fine di questo file,
a meno che tu non sia un esperto programmatore in perl e quindi non sappia
cosa significa. :)
1;
------------------------------------------------------------
ISTALLAZIONE
Il file deve essere caricato sul server nella directory cgi-bin (o equivalente) e
nella, eventuale, stessa sottodirectory degli altri script.
E' sufficiente che il file sia leggibile a tutti, quindi puoi lasciare il "chmod"
standard.
#####################################################################
news.pl
---------------------------------------------------------
DESCRIZIONE'
Questo è il file perl principale.
Svolge 4 funzioni:
- Generazione del pannello di login
- Generazione del pannello di comando
- scrittura del titolo della news, crezione della pagina relativa
- cancellazione del titolo e delle pagine
Questo file genera la pagina che contiene il pannello di controllo e si
divide in due sezioni:
Sezione - Scrittura
Selezionando la scelta "scrivi" ti appresti ad inserire nel sito una nuova news.
Devi inserire un titolo e del testo. Sono entrambe obbligatori.
Il titolo è particolarmente importante perchè deve descrivere la news e va a
costituire il link per raggiungere la pagina relativa.
Il testo formattato automaticamente costituirà il corpo della pagina della news.
Tieni presente che quando andrai a capo verrà costituito un nuovo paragrafo.
Sezione - Cancellazione
Selezionando la scelta "cancella" ti appresti a cancellare una news.
Se hai settato la variabile $canc_aut=0 (non cancellazione delle pagine) tutte le pagine,
sia quelle attive che quelle scadute si trovano nella directory "pages" per cui avrai
l'elenco dei files contenuti solo in quella directory.
gli elenchi sono generati automaticamente dallo script file_news.pl.
Se hai settato la variabile $canc_aut=1 (archiviazione delle pagine) le pagine scadute
si trovano nella directory "old_pages" per cui ti verranno presentati due elenchi.
Se hai settato la variabile $canc_aut=2 (cancellazione delle pagine) le pagine scadute
saranno state cancellate per cui avrai l'elenco solo di quelle attive.
In generale comunque se decidi di cancellare una pagina attiva verrà cancellato
automaticamente anche il titolo link. Puoi usare questa procedura quando ti accorgi
di avere fatto un errore.
Sono disponibili due pulsanti "Prova" che ti consentono di vedere la pagina che ti
appresti a cancellare, prima di effettuare l'operazione che è irreversibile.
-----------------------------------------------------
CONFIGURAZIONE
Devi solo inserire nella prima riga l'indirizzo dell'interprete di PERL sul tuo server.
In genere è
#!/usr/bin/perl
oppure
#!/usr/local/bin/perl
------------------------------------------------------------
ISTALLAZIONE
Il file deve essere caricato sul server nella directory cgi-bin (o equivalente) e
nella, eventuale, stessa sottodirectory degli altri script.
Il file deve essere eseguito quindi devi settare chmod 755.
######################################################################
vis_news.pl
---------------------------------------------------------
DESCRIZIONE
Questo file consente la visualizzazione su una tua pagina delle news, in modo
dinamico.
Inoltre inserisce o meno la piccola immagine accanto alle news particolarmente
recenti.
-----------------------------------------------------
CONFIGURAZIONE
Devi solo inserire nella prima riga l'indirizzo dell'interprete di PERL sul tuo server.
In genere è
#!/usr/bin/perl
oppure
#!/usr/local/bin/perl
------------------------------------------------------------
ISTALLAZIONE
Il file deve essere caricato sul server nella directory cgi-bin (o equivalente) e
nella, eventuale, stessa sottodirectory degli altri script.
Il file deve essere eseguito quindi devi settare chmod 755.
#########################################################################
news.shtml
---------------------------------------------------------
DESCRIZIONE
Questo è un file di prova. Ti consente di verificare il funzionamento degli script prima
di pubblicare i titoli delle news in una pagina importante del sito, in genere, la home page.
Per cui una volta verificato il corretto funzionamento potrai cancellarlo, dopo avere copiato
nella pagina su cui dovranno essere i titoli il seguente tag:
che dovrà essere settato in modo da puntare al file vis_news.pl
-----------------------------------------------------
CONFIGURAZIONE
Come già detto devi indicare esattamente il percorso per raggiungere il file vis_news.pl
nel tag:
ATTENZIONE!!!
Potrebbe essere necessario rinominare anche la pagina che ospiterà i titoli da nome.html
a nome.shtml. Anche se si trattasse della index non avrai problemi.
------------------------------------------------------------
ISTALLAZIONE
Il file deve essere caricato sul server nella directory principale e non ha bisogno di
modifica di chmod.
#####################################################################
titoli.txt
---------------------------------------------------------
DESCRIZIONE
Si tratta del fondamentale file di database, che deve essere trattato con ogni cura.
-----------------------------------------------------
CONFIGURAZIONE
Non ha bisogno di alcuna configurazione, anzi ti devi accertare che sia rigorosamente
vuoto.
------------------------------------------------------------
ISTALLAZIONE
Il file deve essere caricato sul server nella directory che preferisci e ha bisogno di
chmod 666. Se lo inserisci in una directory diversa da quella principale devi settare i
chmod della dir a 777.
#####################################################################
new.gif
Si tratta di un regalino che faccio agli utilizzatori del mio script.
E' la piccola immagine che compare accanto alle news particolarmente recenti.
Ovviamente puoi sostituirla con quella che preferisci.
Puoi metterla dove vuoi, ricordati però di settare nel file variabili.pl il path esatto
nella variabile $img_url.
#####################################################################
template.tpl
---------------------------------------------------------
DESCRIZIONE
Si tratta del file di esempio del template utilizzabile per personalizzare
al massimo le pagine delle news. Puoi modificarlo e sostituirlo
come vuoi. Basta che rispetti le poche regole descritte sotto.
-----------------------------------------------------
CONFIGURAZIONE
E' sufficiente che inserisci nei punti che vuoi i seguenti tag "speciali":
< !-- ##titolo## -- >
tramite questo tag farai comparire il titolo della news dove vuoi, gli
potrai dare la formattazione che vuoi.
ATTENZIONE !!! l'unica necessità assoluta è che il tag stia su una sua
riga esclusiva senza altro testo.
< !-- ##date## -- >
tramite questo tag farai comparire la data di inserimento dove vuoi.
< !-- ##news_url## -- >
tramite questo tag puoi creare un link alla pagina che contiene i
titoli delle news.
per inserire il testo hai 3 possibilità:
1) inserire il marcatore "testo-paragrafo-giustificato" in questo modo:
< !-- ##testo-paragrafo-giustificato## -- >
otterrai che il testo inserito nel form venga diviso, in base agli a
capo che hai dato al momento della digitazione, in paragrafi giustificati.
Ad esempio -p align="justify"- testo -/p-.
2) inserire il marcatore "testo-paragrafo" in questo modo:
< !-- ##testo-paragrafo## -- >
otterrai che il testo venga diviso in paragrafi normali allineati a sinistra.
Ad esempio -p- testo -/p-.
3) inserire il marcatore "testo-a-capo" in questo modo:
< !-- ##testo-a-capo## -- >
otterrai che il testo vada semplicemente a capo.
Ad esempio testo-br-
ATTENZIONE !!! Ricordarsi comunque di inserire il marcatore "testo" su una sua
propria riga senza altri caratteri o elementi.
#####################################################################
Directories pages e old_pages
Le ho inserite per evitare che vengano dimenticate.
Il loro uso è necessario perchè molti server non consentono agli script di creare pagine
nella directory principale, per ragioni di sicurezza.
Setta il chmod a 777.
#####################################################################
Ti ringrazio per la preferenza e se hai dei problemi nell'uso di questo script
contattami.
Ciao e buon lavoro!
Marco Allegretti aka "shishii"