#!/usr/bin/perl ############################################# # To bee used with Ringlink # Searches for an emailadress in sites.db ########################################## # If necessary change the path to Perl # If you change scriptname from emailsearch.pl # you also have to change the name # in the variable $scriptname # Save the script in the same directory # as the other *.pl or *.cgi files. # Thats all! $scriptname = 'emailsearch2.pl'; ########################################## # Run the script from your browser and you # will get a form to fill in # - RingID # - email to search for # - your Ringlink admin password. ########################################### use lib 'lib'; use rlconfig; $rlmain::cgipath = ($0 =~ /[\\\/]/ ? $0 : $ENV{'SCRIPT_FILENAME'}); $rlmain::cgipath =~ s/\\/\//g; $rlmain::cgipath =~ s/(.*)\/\S*/$1/; rlconfig::systemvar; @required = ('ringid','email','pw'); read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); if (length($buffer) < 5) { $buffer = $ENV{QUERY_STRING}; } @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; $FORM{$name} = $value; } if ($FORM{'action'} eq "search") { &check_required; &check_pw; &search_main; exit; } &search_form; exit; # Main sub sub search_main { open (SITES, "$rlmain::datapath/$FORM{'ringid'}/sites.db") || err($!, "No such RingID: $FORM{'ringid'}"); @sites = ; close (SITES); $found = 0; &header; print qq| |; for (@sites) { @sitevalues = split (/\t/, $_); if ($sitevalues[9] eq $FORM{'email'}) { print "\n"; $found++; } } if ($found){ print "
Search for $FORM{'email'} in
RingID: $FORM{'ringid'}
Site IDName
$sitevalues[0]$sitevalues[2]
$FORM{'email'} found in $found site(s).\n"; }else {print "
$FORM{'email'} not found in this ring.\n"; } &footer; } # Check for all required fields sub check_required { foreach $check(@required) { unless ($FORM{$check}) { $check = "password" if ($check eq "pw"); &header; print qq|
Missing Information
I'm sorry, but it would appear that you've forgotten to fill out the $check field.

Please click back and try again. |; &footer; exit; } } # Check for valid email unless ($FORM{'email'} =~ /\w+@\w+.\w+/) { &header; print qq|
Bad E-mail
The e-mail address that you've entered, $FORM{'email'}, is invalid.

Please click back and try again. |; &footer; exit; } } sub check_pw { if ($FORM{'pw'} ne $rlmain::adminpw) { &header; print qq|
Incorrect password
Please click back and try again. |; &footer; exit; } } sub search_form { &header; print qq|
Use email to search for membersite
RingID:
Email:
Password:
  |; &footer; } sub header { print "Content-type: text/html\n\n"; print qq|Email search
|; } sub footer { print qq|
|; } sub parse_form { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); if (length($buffer) < 5) { $buffer = $ENV{QUERY_STRING}; } @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; $FORM{$name} = $value; } } sub err { my($cause, $file) = @_; chomp($cause); &header; print qq|
AN ERROR HAS OCCURRED
Error Message:

$cause
$file

Please click back and try again.

|; &footer; exit -1; }