Ik heb een database waar ik alle e-mail adressen uit wil
filteren. Volgens mij moet dat mogelijk zijn; ik weet
alleen niet hoe.
De database ziet er zo uit:
test@test.nl;;;;http://www.test.nl;;;;nederlands;;;;k2ij366.dial.kabelfoon.nl;;;;Mon Oct 2 15:20:12 MEST 2000
test@test.nl;;;;http://www.test.nl;;;;nederlands;;;;k2ij366.dial.kabelfoon.nl;;;;Mon Oct 2 15:20:12 MEST 2000
test@test.nl;;;;http://www.test.nl;;;;nederlands;;;;k2ij366.dial.kabelfoon.nl;;;;Mon Oct 2 15:20:12 MEST 2000
Alleen dan met steeds andere gegevens
email;;;;url;;;;taal;;;;ip;;;;datum
Hier zou toch vrij eenvoudig een scriptje voor gemaakt
kunnen worden dat de e-mail adressen eruit filtert?
Het huidige script is als volgt:
#!/usr/local/bin/perl
###############################
# Define Script Variables #
###############################
($admin='test@test.nl'); #Change this to your email address
($datafile='list.dat'); #This is the file that holds the addresses, Should be chmod 777
($sendmail='/usr/lib/sendmail'); #This is the path to sendmail
($messagepage='message.htm'); #This is the Message Template page
($adminpassword='test'); #Change this to your admin password
($addedmessage='U bent succesvol toegevoegd!'); #Change this to your Welcome Message
###############################
&parse;
&direct; #This tells the program what to do.
exit;
###############################
# Sub Routines for the Script #
###############################
sub direct{
($query=$ENV{'QUERY_STRING'});
if($query eq "Add"){
if($address eq "No"){
($message="Ongeldig e-mail adres, $address!\n");
&messagepage;
exit;
}
&lookforaddress;
if($found eq "Yes"){
($message="De URL: $url is al toegevoegd.\n");
}
else{
&addaddress;
($message="Bedankt, je website: $url is toegevoegd. \n");
}
&messagepage;
}
elsif($query eq "Delete"){
if($address eq "No"){
($message="Ongeldig e-mail adres!\n");
&messagepage;
exit;
}
&lookforaddress;
if($found eq "Yes"){
($message="De URL: $url kan niet verwijderd door u, stuur een e-mail naar de beheerder.\n");
}
else{
($message="De URL: $url staat niet in de database!\n");
}
&messagepage;
}
elsif($query eq "Send"){
if($password ne $adminpassword){
($message='Admin. Password is Incorrect!');
&messagepage;
exit; #if password is wrong then exit
}
&sendthismail;
($message='Mail Sent!');
&messagepage;
}
else{
($message='Nothing to Do!');
&messagepage;
}
}
#sub parse{
sub parse{
&parseit(*input);
($address=$input{'address'});
($letter=$input{'letter'});
($password=$input{'password'});
($subject=$input{'subject'});
($url=$input{'url'});
($realm=$input{'realm'});
($host=$ENV{'REMOTE_HOST'});
($ip=$ENV{'REMOTE_ADDR'});
($date=`date`);
chomp($date);
if($address =~ m/@/){
#it's ok
}
else{
($address="No");
}
}
#sub sendmail
sub sendthismail{
open(DATA, "<$datafile");
@data=<DATA>;
close(DATA);
foreach(@data){
($address, $url, $realm, $host, $date)=split(';;;;', $_);
open(MAIL, "|$sendmail -t $address");
print MAIL "To: $address\n";
print MAIL "From: $admin\n";
print MAIL "Subject: $subject\n";
print MAIL "\n";
print MAIL "Beste internetter,\n";
print MAIL "\n";
print MAIL $letter;
close(MAIL);
sleep(1);
}
}
#sub deleteaddress
sub deleteaddress{
open(DATA, "<$datafile");
@data=<DATA>;
close(DATA);
foreach(@data){
($addressfile, $rest)=split(';;;;', $_);
if($addressfile eq $address){
$_="";
}
}
open(DELETED, ">$datafile");
print DELETED @data;
close(DELETED);
}
#sub addaddress
sub addaddress{
open(ADD, ">>$datafile");
print ADD "$address;;;;$url;;;;$realm;;;;$host;;;;$date\n";
close(ADD);
open(MAIL, "|$sendmail -t $address");
print MAIL "To: $address\n";
print MAIL "From: $admin\n";
print MAIL "Subject: Toevoeging \n";
print MAIL "\n";
print MAIL "Beste internetter,\n";
print MAIL "\n";
print MAIL $addedmessage;
print MAIL "\n";
print MAIL "\nAdded By:\nHost: $host\nI.P.: $ip\nDate: $date\n";
print MAIL "\n";
close(MAIL);
}
#sub lookforaddress
sub lookforaddress{
open(DATA, "<$datafile");
while(<DATA>){
($address2,$url2,$realm2,$host2,$date2)=split(';;;;', $_);
if($url2 eq $url){
($found = "Yes");
close(DATA);
}
}
close(DATA);
}
#Sub messagepage
sub messagepage{
&head;
open(PAGE, "<$messagepage");
while(<PAGE>){
$_ =~ s/<!--Message Here-->/$message/i;
print $_;
}
close(PAGE);
}
#Sub head
sub head{
print "Content-Type: text/html\n\n";
print "\n";
}
sub parseit {
local (*in) = @_ if @_;
local ($i, $key, $val);
read(STDIN,$in,$ENV{'CONTENT_LENGTH'});
@in = split(/[&;]/,$in);
foreach $i (0 .. $#in) {
$in[$i] =~ s/\+/ /g;
($key, $val) = split(/=/,$in[$i],2); # splits on the first =.
$key =~ s/%(..)/pack("c",hex($1))/ge;
$val =~ s/%(..)/pack("c",hex($1))/ge;
$in{$key} .= "\0" if (defined($in{$key})); # \0 is the multiple separator
$in{$key} .= $val;
$in{$key} =~ s/\*|\$|\<|\>|\#|\%//gi;
}
return scalar(@in);
}
filteren. Volgens mij moet dat mogelijk zijn; ik weet
alleen niet hoe.
De database ziet er zo uit:
test@test.nl;;;;http://www.test.nl;;;;nederlands;;;;k2ij366.dial.kabelfoon.nl;;;;Mon Oct 2 15:20:12 MEST 2000
test@test.nl;;;;http://www.test.nl;;;;nederlands;;;;k2ij366.dial.kabelfoon.nl;;;;Mon Oct 2 15:20:12 MEST 2000
test@test.nl;;;;http://www.test.nl;;;;nederlands;;;;k2ij366.dial.kabelfoon.nl;;;;Mon Oct 2 15:20:12 MEST 2000
Alleen dan met steeds andere gegevens
email;;;;url;;;;taal;;;;ip;;;;datum
Hier zou toch vrij eenvoudig een scriptje voor gemaakt
kunnen worden dat de e-mail adressen eruit filtert?
Het huidige script is als volgt:
#!/usr/local/bin/perl
###############################
# Define Script Variables #
###############################
($admin='test@test.nl'); #Change this to your email address
($datafile='list.dat'); #This is the file that holds the addresses, Should be chmod 777
($sendmail='/usr/lib/sendmail'); #This is the path to sendmail
($messagepage='message.htm'); #This is the Message Template page
($adminpassword='test'); #Change this to your admin password
($addedmessage='U bent succesvol toegevoegd!'); #Change this to your Welcome Message
###############################
&parse;
&direct; #This tells the program what to do.
exit;
###############################
# Sub Routines for the Script #
###############################
sub direct{
($query=$ENV{'QUERY_STRING'});
if($query eq "Add"){
if($address eq "No"){
($message="Ongeldig e-mail adres, $address!\n");
&messagepage;
exit;
}
&lookforaddress;
if($found eq "Yes"){
($message="De URL: $url is al toegevoegd.\n");
}
else{
&addaddress;
($message="Bedankt, je website: $url is toegevoegd. \n");
}
&messagepage;
}
elsif($query eq "Delete"){
if($address eq "No"){
($message="Ongeldig e-mail adres!\n");
&messagepage;
exit;
}
&lookforaddress;
if($found eq "Yes"){
($message="De URL: $url kan niet verwijderd door u, stuur een e-mail naar de beheerder.\n");
}
else{
($message="De URL: $url staat niet in de database!\n");
}
&messagepage;
}
elsif($query eq "Send"){
if($password ne $adminpassword){
($message='Admin. Password is Incorrect!');
&messagepage;
exit; #if password is wrong then exit
}
&sendthismail;
($message='Mail Sent!');
&messagepage;
}
else{
($message='Nothing to Do!');
&messagepage;
}
}
#sub parse{
sub parse{
&parseit(*input);
($address=$input{'address'});
($letter=$input{'letter'});
($password=$input{'password'});
($subject=$input{'subject'});
($url=$input{'url'});
($realm=$input{'realm'});
($host=$ENV{'REMOTE_HOST'});
($ip=$ENV{'REMOTE_ADDR'});
($date=`date`);
chomp($date);
if($address =~ m/@/){
#it's ok
}
else{
($address="No");
}
}
#sub sendmail
sub sendthismail{
open(DATA, "<$datafile");
@data=<DATA>;
close(DATA);
foreach(@data){
($address, $url, $realm, $host, $date)=split(';;;;', $_);
open(MAIL, "|$sendmail -t $address");
print MAIL "To: $address\n";
print MAIL "From: $admin\n";
print MAIL "Subject: $subject\n";
print MAIL "\n";
print MAIL "Beste internetter,\n";
print MAIL "\n";
print MAIL $letter;
close(MAIL);
sleep(1);
}
}
#sub deleteaddress
sub deleteaddress{
open(DATA, "<$datafile");
@data=<DATA>;
close(DATA);
foreach(@data){
($addressfile, $rest)=split(';;;;', $_);
if($addressfile eq $address){
$_="";
}
}
open(DELETED, ">$datafile");
print DELETED @data;
close(DELETED);
}
#sub addaddress
sub addaddress{
open(ADD, ">>$datafile");
print ADD "$address;;;;$url;;;;$realm;;;;$host;;;;$date\n";
close(ADD);
open(MAIL, "|$sendmail -t $address");
print MAIL "To: $address\n";
print MAIL "From: $admin\n";
print MAIL "Subject: Toevoeging \n";
print MAIL "\n";
print MAIL "Beste internetter,\n";
print MAIL "\n";
print MAIL $addedmessage;
print MAIL "\n";
print MAIL "\nAdded By:\nHost: $host\nI.P.: $ip\nDate: $date\n";
print MAIL "\n";
close(MAIL);
}
#sub lookforaddress
sub lookforaddress{
open(DATA, "<$datafile");
while(<DATA>){
($address2,$url2,$realm2,$host2,$date2)=split(';;;;', $_);
if($url2 eq $url){
($found = "Yes");
close(DATA);
}
}
close(DATA);
}
#Sub messagepage
sub messagepage{
&head;
open(PAGE, "<$messagepage");
while(<PAGE>){
$_ =~ s/<!--Message Here-->/$message/i;
print $_;
}
close(PAGE);
}
#Sub head
sub head{
print "Content-Type: text/html\n\n";
print "\n";
}
sub parseit {
local (*in) = @_ if @_;
local ($i, $key, $val);
read(STDIN,$in,$ENV{'CONTENT_LENGTH'});
@in = split(/[&;]/,$in);
foreach $i (0 .. $#in) {
$in[$i] =~ s/\+/ /g;
($key, $val) = split(/=/,$in[$i],2); # splits on the first =.
$key =~ s/%(..)/pack("c",hex($1))/ge;
$val =~ s/%(..)/pack("c",hex($1))/ge;
$in{$key} .= "\0" if (defined($in{$key})); # \0 is the multiple separator
$in{$key} .= $val;
$in{$key} =~ s/\*|\$|\<|\>|\#|\%//gi;
}
return scalar(@in);
}