#!/usr/bin/perl require "mlistcfg.pl"; #-------------------------------------------------- read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/\n/ /g; $form{$name} = $value; } print "Content-type: text/html\n\n"; $count=0; if($form{'action'} eq "aggiungi") { &subscribe; exit; } if($form{'action'} eq "rimuovi") { &unsubscribe; exit; } else { &mainpage; exit; } #-------------------------------------------------- sub subscribe { if($form{'address'}=~ tr/;<>*|`&$!#()[]{}:'"//) { &dheader; print "Impossibile aggiungere l'indirizzo specificato
Verificarne la correttezza."; &dfooter; exit; } unless($form{'address'}=~/.*\@.*\..*/) { &dheader; print "Impossibile aggiungere l'indirizzo specificato
Verificarne la correttezza."; &dfooter; exit; } open (list, "<$listdata") or &error("Impossibile aprire il file della lista in lettura."); if($flock eq "y") {flock list, 2;} @list=; close(list); foreach $list(@list) { if($list =~ /$form{'address'}/i) { &dheader; print "Impossibile aggiungere l'indirizzo specificato
$form{'address'}
è già presente nella lista.\n"; &dfooter; exit; } } open (data, ">>$listdata") or &error("Impossibile aprire il file della mailing list in scrittura."); if($flock eq "y") {flock data, 2;} print data "$form{'address'}\n"; close(data); &dheader; print "$form{'address'}
è stato aggiunto alla lista."; &dfooter; exit; } #-------------------------------------------------- #-------------------------------------------------- sub unsubscribe { if ($form{'address'}=~ tr/;<>*|`&$!#()[]{}:'"//) { &dheader; print "Impossibile rimuovere l'indirizzo specificato
Verificarne la correttezza."; &dfooter; exit; } unless ($form{'address'}=~/.*\@.*\..*/) { &dheader; print "Impossibile rimuovere l'indirizzo specificato
Verificarne la correttezza."; &dfooter; exit; } open (list, "<$listdata") or &error("Impossibile aprire il file della lista in lettura."); if($flock eq "y") {flock list, 2;} @list=; close(list); foreach $list(@list) { $count++; if($list =~ /$form{'address'}/i) { $count--; splice(@list, $count, 1); open (wlist, ">$listdata") or &error("Impossibile aprire il file della lista in scrittura."); if($flock eq "y") {flock wlist, 2;} print wlist @list; close(wlist); &dheader; print "$form{'address'}
è stato rimosso dalla lista."; &dfooter; exit; } } &dheader; print "$form{'address'}
non è stato trovato nella lista."; &dfooter; } #-------------------------------------------------- #-------------------------------------------------- sub mainpage { &dheader; &dfooter; } #-------------------------------------------------- #-------------------------------------------------- sub dheader { open (dheader, "; close(dheader); print @dheader; } #-------------------------------------------------- #-------------------------------------------------- sub dfooter { open (dfooter, "; close(dfooter); print @dfooter; } #--------------------------------------------------