#!/usr/bin/perl
package pseek;
########################################################################
# COPYRIGHT NOTICE:
#
# Copyright 2003 FocalMedia.Net All Rights Reserved.
#
# Selling the code for this program without prior written consent
# from FocalMedia.Net is expressly forbidden. You may not
# redistribute this program in any shape or form.
#
# This program is distributed "as is" and without warranty of any
# kind, either express or implied. In no event shall the liability
# of FocalMedia.Net for any damages, losses and/or causes of action
# exceed the total amount paid by the user for this software.
#
########################################################################
#### EDIT HERE -- FOR WINDOWS/IIS BASED INSTALLATIONS ONLY #######
$config_cgi = "config.cgi";
# THE PATH ON A WINDOWS INSTALLATION WILL LOOK SOMETHING LIKE THIS:
# $config_cgi = "c:/inetpub/webpub/cgi-bin/pseek/config.cgi";
#### DO NOT CHANGE ANYTHING BELOW THIS LINE #################
use FindBin;
use lib $FindBin::Bin;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use Time::Local;
use IO::Socket;
use MIME::Base64 qw(decode_base64 encode_base64);
#use Net::SMTP;
require Exporter;
use vars qw/@ISA @EXPORT @EXPORT_OK $copyright $prgname/;
@ISA = qw(Exporter);
@EXPORT = qw(get_file_contents
encode_dir
decode_dir
new_gsettings
decode_date
get_rating_images
setCookie
getCookies
ts_insert_template_includes
send_email
remove_leading_spacing
get_cid_cat
fill_vars
insert_images
remove_html
get_imgboxes
check_img_auth
accesscheck
fill_cp_vars
insert_go_back_buttons
);
@EXPORT_OK = qw($thefile
$enc_string
$decoded_string
$rdvalue
$images
@rawCookies1
$tmpl_page
$chopped_string
$cidret
$filledvar
$ihtml
$imgb
$error_ind
$tofvar
$selq
$lnktitle
$url
$moreinfo_url);
&get_setup;
$default_permissions = 0777;
#####################################
sub insert_go_back_buttons
{
my ($tmplcode, $link_id, $categ_id) = @_;
$gsettings = new_gsettings pseek;
if ($mysql_hostname eq ""){$dsn = "DBI:mysql:$db_name";}else{$dsn = "DBI:mysql:$db_name:$mysql_hostname:$mysql_port";}
$dbh = DBI->connect($dsn, $db_username, $db_password);
if ( !defined $dbh ) {die "Cannot connect to MySQL server: $DBI::errstr\n"; }
#### GET CATEGORIES
$sql = "SELECT * FROM dirs WHERE cid = '$categ_id'";
$sth = $dbh->prepare($sql);
$sth->execute;
$serror = ""; $serror = $sth->errstr; if ($serror ne "") {die "SQL Syntax Error: $serror \n From: $sql";}
$selq = "";
$lv = 1;
while ( @row = $sth->fetchrow() )
{
for ($ms = 2; $ms < 18; $ms++)
{
if ($row[$ms] ne "")
{
if ($gsettings->{dyn_stat} eq "Static")
{
$ecat = $ecat . &encode_dir($row[$ms]) . "/";
$selq = $selq . qq[$row[$ms]] . " " . $gsettings->{location_seperator} . " ";
}
else
{
$ecat = $ecat . &encode_dir($row[$ms]) . "-";
$rlcat = substr($ecat, 0, length($ecat)-1);
$selq = $selq . qq[$row[$ms]] . " " . $gsettings->{location_seperator} . " ";
}
$lv++;
}
}
}
$selq = substr($selq, 0, length($selq) - (length($gsettings->{location_seperator}) + 1));
$sql = "SELECT * FROM links WHERE lnkid = '$link_id'";
$sth = $dbh->prepare($sql);
$sth->execute;
$serror = ""; $serror = $sth->errstr; if ($serror ne "") {die "SQL Syntax Error: $serror \n From: $sql";}
while ( @row = $sth->fetchrow() )
{
$lnktitle = $row[2];
$url = $row[5];
}
$sth->finish;
$dbh->disconnect;
if ($gsettings->{dyn_stat} eq "Static")
{
if ($gsettings->{more_info_naming} eq "linktitles")
{
#$moreinfo_url = "$web_url/" . $ecat . &get_more_info_file_name($lnktitle) . $gsettings->{gen_file_ext};
$moreinfo_url = "$web_url/" . $ecat . &get_more_info_file_name($lnktitle) . "_" . $link_id . $gsettings->{gen_file_ext};
}
else
{
$moreinfo_url = "$web_url/" . $ecat . $link_id . $gsettings->{gen_file_ext};
}
}
else
{
$moreinfo_url = "$script_url/linfo.cgi?id=" . $link_id;
}
$new_tmplcode = $tmplcode;
$new_tmplcode =~ s/!!title_without_link!!/$lnktitle/gi;
$new_tmplcode =~ s/!!url!!/$url/gi;
$new_tmplcode =~ s/!!more_info_url!!/$moreinfo_url/gi;
$new_tmplcode =~ s/!!category_with_link!!/$selq/gi;
return ($new_tmplcode);
######## category string with link, $lnktitle, $url, $moreinfo_url
}
sub accesscheck
{
my ($passed_user, $passed_pass, $addurl_click) = @_;
$topvar = pseek::get_file_contents("$data_dir/frontlink.dat");
if ($passed_user =~ /'/) { $passed_user = ""; } if ($passed_user =~ /\\/) { $passed_user = ""; }
if ($passed_pass =~ /'/) { $passed_pass = ""; } if ($passed_pass =~ /\\/) { $passed_pass = ""; }
##### CHECK COOKIES
$query = new CGI;
$usercookie = $query->cookie('cpuser');
$passcookie = $query->cookie('cppass');
if (($usercookie ne "") and ($passcookie ne "") and ($passed_user eq "") and ($passed_pass eq ""))
{
$cookie_set = "True";
$passed_user = $usercookie;
$passed_pass = $passcookie;
}
if (($passed_user eq "") and ($passed_pass eq "") and ($addurl_click eq "LOGIN_LINK"))
{
print "Content-type: text/html\n\n";
$login_template = pseek::get_file_contents("$data_dir/rgs_login.html");
$login_template = pseek::ts_insert_template_includes($login_template);
$login_template = pseek::fill_vars($login_template);
$login_template =~ s/!!error_text!!//gi;
$login_template =~ s/!!rgs_login!!/$script_url\/rgs_cp\.cgi/gi;
if ($topvar eq ""){$login_template =~ s/!!top!!/$script_url\/fp\.cgi/gi;}else{$login_template =~ s/!!top!!/$topvar/gi;}
print $login_template;
exit;
}
### IF ADD URL BUTTON PRESSED
if (($passed_user eq "") and ($passed_pass eq "") and ($addurl_click eq "ADDURL_CL"))
{
$addurl_template = pseek::get_file_contents("$data_dir/rgs_register.html");
$login_template = pseek::get_file_contents("$data_dir/rgs_msgregister.html");
$login_template = pseek::ts_insert_template_includes($login_template);
$login_template = pseek::fill_vars($login_template);
$login_template =~ s/!!rgs_login!!/$script_url\/rgs_login\.cgi/gi;
if ($topvar eq ""){$login_template =~ s/!!top!!/$script_url\/fp\.cgi/gi;}else{$login_template =~ s/!!top!!/$topvar/gi;}
$login_template =~ s/!!account_create!!/$script_url\/rgs_register\.cgi/gi;
$login_template =~ s/!!retreive_password!!/$script_url\/rgs_repass\.cgi/gi;
print "$login_template";
exit;
}
if (($passed_user eq "") and ($passed_pass eq "") and ($addurl_click eq "MOD_LINK"))
{
$login_template = pseek::get_file_contents("$data_dir/rgs_modify_instructions.html");
$login_template = pseek::ts_insert_template_includes($login_template);
$login_template = pseek::fill_vars($login_template);
$login_template =~ s/!!rgs_login!!/$script_url\/rgs_login\.cgi/gi;
if ($topvar eq ""){$login_template =~ s/!!top!!/$script_url\/fp\.cgi/gi;}else{$login_template =~ s/!!top!!/$topvar/gi;}
$login_template =~ s/!!account_create!!/$script_url\/rgs_register\.cgi/gi;
$login_template =~ s/!!retreive_password!!/$script_url\/rgs_repass\.cgi/gi;
print "$login_template";
exit;
}
if (($passed_user eq "") or ($passed_pass eq "")) ### IF NOTHING ENTERED INTO LOGIN BOXES
{
print "Content-type: text/html\n\n";
$login_template = pseek::get_file_contents("$data_dir/rgs_login.html");
$login_template = pseek::ts_insert_template_includes($login_template);
$login_template = pseek::fill_vars($login_template);
$login_template =~ s/!!rgs_login!!/$script_url\/rgs_cp\.cgi/gi;
if ($topvar eq ""){$login_template =~ s/!!top!!/$script_url\/fp\.cgi/gi;}else{$login_template =~ s/!!top!!/$topvar/gi;}
$rgtext = pseek::get_file_contents("$data_dir/regusers.txt");
@regtext = split (/\n/, $rgtext);
$login_template =~ s/!!error_text!!/$regtext[7]/gi;
print $login_template;
exit;
}
##### CHECK USER NAME AND PASSWORD
if ($mysql_hostname eq ""){$dsn = "DBI:mysql:$db_name";}else{$dsn = "DBI:mysql:$db_name:$mysql_hostname:$mysql_port";}
$dbh = DBI->connect($dsn, $db_username, $db_password);
if ( !defined $dbh ) {die "Cannot connect to MySQL server: $DBI::errstr\n"; }
#$sql = "SELECT * FROM lnkusers WHERE rgsuser = '$passed_user' AND rgspass = '$passed_pass' AND activated = 'Y'";
$sql = "SELECT * FROM lnkusers WHERE rgsuser = '$passed_user' AND rgspass = '$passed_pass'";
$sth = $dbh->prepare($sql);
$sth->execute;
$serror = ""; $serror = $sth->errstr; if ($serror ne "") {die "SQL Syntax Error: $serror - From: $sql";}
$rows = $sth->rows();
while ( @row = $sth->fetchrow() )
{
$RGSuserid = $row[0];
$activated_status = $row[15];
}
$sth->finish;
$dbh->disconnect;
if ($activated_status ne "Y")
{
print "Content-type: text/html\n\n";
$login_template = pseek::get_file_contents("$data_dir/rgs_login.html");
$login_template = pseek::ts_insert_template_includes($login_template);
$login_template = pseek::fill_vars($login_template);
$login_template =~ s/!!rgs_login!!/$script_url\/rgs_cp\.cgi/gi;
if ($topvar eq ""){$login_template =~ s/!!top!!/$script_url\/fp\.cgi/gi;}else{$login_template =~ s/!!top!!/$topvar/gi;}
$rgtext = pseek::get_file_contents("$data_dir/regusers.txt");
@regtext = split (/\n/, $rgtext);
$login_template =~ s/!!error_text!!/$regtext[20]/gi;
print $login_template;
exit;
}
elsif ($rows < 1)
{
print "Content-type: text/html\n\n";
$login_template = pseek::get_file_contents("$data_dir/rgs_login.html");
$login_template = pseek::ts_insert_template_includes($login_template);
$login_template = pseek::fill_vars($login_template);
$login_template =~ s/!!rgs_login!!/$script_url\/rgs_cp\.cgi/gi;
if ($topvar eq ""){$login_template =~ s/!!top!!/$script_url\/fp\.cgi/gi;}else{$login_template =~ s/!!top!!/$topvar/gi;}
$rgtext = pseek::get_file_contents("$data_dir/regusers.txt");
@regtext = split (/\n/, $rgtext);
$login_template =~ s/!!error_text!!/$regtext[7]/gi;
print $login_template;
exit;
}
elsif ($cookie_set ne "True") ### SET COOKIE
{
$thecookie1 = $query->cookie(-name=>'cpuser',
-value=>$passed_user,
-expires=>'+24h',
-path=>'/');
$thecookie2 = $query->cookie( -name=>'cppass',
-value=>$passed_pass,
-expires=>'+24h',
-path=>'/');
print $query->header(-cookie=>[$thecookie1, $thecookie2]);
print qq[
Powerseek
];
exit;
}
return ($RGSuserid);
}
sub check_img_auth
{
$query = new CGI;
$uncr = &decode_ps($query->param('ia'));
$uncr =~ s/\.gif//gi;
($img1, $img2, $img3, $img4) = split (/O/, $uncr);
$letter1 = chr(substr($img1, 9, length($img1) - 9));
$letter2 = chr(substr($img2, 9, length($img2) - 9));
$letter3 = chr(substr($img3, 9, length($img3) - 9));
$letter4 = chr(substr($img4, 9, length($img4) - 9));
$lbox = $letter1 . $letter2 . $letter3 . $letter4;
$ia = $query->param('ia');
$letters = $query->param('letters');
$letters = lc($letters);
if ($letters ne $lbox) { $error_ind = "false"; }
return ($error_ind);
}
####
sub get_imgboxes ### IMAGE AUTHENTICATION
{
my ($ls1, $ls2, $ls3, $ls4, $alpha, @alpharray, $alpha1, $alpha2, $alpha3, $alpha4, $alpha_number1,
$alpha_number2, $alpha_number3, $alpha_number4, @files, $filename, $img1, $img2, $img3, $img4,
$iname1, $iname2, $iname3, $iname4, $un_crypted_str, $crypted_str, $imgb);
$ls1 = int(rand(4));
$ls1++;
if ($ls1 < 1) { $ls1 = 1; }
if ($ls1 == 1){ $ls1 = 49; }if ($ls1 == 2){ $ls1 = 50; }if ($ls1 == 3){ $ls1 = 51; }if ($ls1 == 4){ $ls1 = 52; }
$ls2 = int(rand(4));
$ls2++;
if ($ls2 < 1) { $ls2 = 1; }
if ($ls2 == 1){ $ls2 = 49; }if ($ls2 == 2){ $ls2 = 50; }if ($ls2 == 3){ $ls2 = 51; }if ($ls2 == 4){ $ls2 = 52; }
$ls3 = int(rand(4));
$ls3++;
if ($ls3 < 1) { $ls3 = 1; }
if ($ls3 == 1){ $ls3 = 49; }if ($ls3 == 2){ $ls3 = 50; }if ($ls3 == 3){ $ls3 = 51; }if ($ls3 == 4){ $ls3 = 52; }
$ls4 = int(rand(4));
$ls4++;
if ($ls4 < 1) { $ls4 = 1; }
if ($ls4 == 1){ $ls4 = 49; }if ($ls4 == 2){ $ls4 = 50; }if ($ls4 == 3){ $ls4 = 51; }if ($ls4 == 4){ $ls4 = 52; }
#print "--> $ls1
";
$alpha++;
@alpharray = ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z");
$alpha1 = rand(26);
$alpha_number1 = ord($alpharray[$alpha1]);
$alpha2 = rand(26);
$alpha_number2 = ord($alpharray[$alpha2]);
$alpha3 = rand(26);
$alpha_number3 = ord($alpharray[$alpha3]);
$alpha4 = rand(26);
$alpha_number4 = ord($alpharray[$alpha4]);
#print "1:$alpha_number1 - $ls1
";
#print "2:$alpha_number2 - $ls2
";
#print "3:$alpha_number3 - $ls3
";
#print "4:$alpha_number4 - $ls4
";
opendir(DIR,"$web_dir");
@files = readdir(DIR);
foreach $filename (@files)
{
if (($filename ne ".") and ($filename ne ".."))
{
#print "->" . substr($filename, 9, length($filename)- 9) . "
";
if ((substr($filename, 5, 2) == $ls1) and (substr($filename, 9, length($filename)- 9) == $alpha_number1))
{
$img1 = "
";
$iname1 = $filename;
#print "-1-> $filename - $alpha_number1 - $img1
";
}
if ((substr($filename, 5, 2) == $ls2) and (substr($filename, 9, length($filename)- 9) == $alpha_number2))
{
$img2 = "
";
$iname2 = $filename;
#print "-2-> $filename - $alpha_number2 - $img2
";
}
if ((substr($filename, 5, 2) == $ls3) and (substr($filename, 9, length($filename)- 9) == $alpha_number3))
{
$img3 = "
";
$iname3 = $filename;
#print "-3-> $filename - $alpha_number3 - $img3
";
}
if ((substr($filename, 5, 2) == $ls4) and (substr($filename, 9, length($filename)- 9) == $alpha_number4))
{
$img4 = "
";
$iname4 = $filename;
#print "-4-> $filename - $alpha_number4 - $img4
";
}
}
}
closedir(DIR);
$un_crypted_str = $iname1 ."O". $iname2 . "O" . $iname3 . "O" . $iname4;
$crypted_str = &encode_ps($un_crypted_str);
$imgb = "$img1 $img2 $img3 $img4 :::" . $crypted_str;
return ($imgb);
}
sub encode_ps
{
my($cc) = @_;
my($rcc, $ccount, $rndchar, $onechar);
$rcc = "";
$ccount = 0;
while ($ccount < length($cc))
{
$ccount++;
$rndchar = int(rand(24)) + 97;
$onechar = ord(substr($cc, length($cc) - $ccount, 1));
$onechar = $onechar + 1;
$rcc = $rcc . chr($onechar) . chr($rndchar);
}
$lcnt = 0;
while ($lcnt < length($rcc))
{
$onechar = substr($rcc,$lcnt,1);
$ordchar = ord($onechar);
if (length($ordchar) == 1) { $ordchar = "00" . $ordchar; }
if (length($ordchar) == 2) { $ordchar = "0" . $ordchar; }
$retrcc = $retrcc . $ordchar;
$lcnt++;
}
return ($retrcc);
}
sub decode_ps
{
my($cc) = @_;
my($rcc, $ccount, $ccount2, $rndchar, $rchar);
$lcnt = 0; $thrc = 1;
while ($lcnt < length($cc))
{
if ($thrc == 1)
{
$to_dec = $to_dec . substr($cc, $lcnt, 1);
$thrc = 2;
}
elsif ($thrc == 2)
{
$to_dec = $to_dec . substr($cc, $lcnt, 1);
$thrc = 3;
}
elsif ($thrc == 3)
{
$to_dec = $to_dec . substr($cc, $lcnt, 1);
$thrc = 1;
$real_c = $real_c . chr($to_dec);
$to_dec = "";
}
$lcnt++;
}
$cc = $real_c;
$cc = "_" . $cc;
####
$rcc = ""; $ccount = 0; $d1 = 2;
while ($ccount < length($cc) )
{
if ($d1 == 2)
{
$rchar = substr($cc, length($cc) - $ccount, 1);
$rchar = ord($rchar);
$rchar = $rchar - 1;
$rchar = chr($rchar);
$rcc = $rcc . $rchar;
$d1 = 0;
}
$d1++;
$ccount++;
}
return (substr($rcc, 1, length($rcc)));
}
sub remove_html
{
($html_ecode) = @_;
$html_ecode =~ s/<[^>]*>//g;
$html_ecode =~ s/>//g;
$html_ecode =~ s//g;
my $h_removed = $html_ecode;
return ($h_removed);
}
sub insert_images
{
my ($ihtml, $iurl) = @_;
$crit = "
"; $ihtml =~ s/\[\/img\]/$crit/gi;
$crit = "
"; $ihtml =~ s/\[\/imglnk\]/$crit/gi;
return ($ihtml);
}
sub fill_cp_vars
{
my ($tofvar) = @_;
$tofvar =~ s/!!edit_account_details!!/$script_url\/rgs_editacc\.cgi/g;
return ($tofvar);
}
sub fill_vars
{
my ($filledvar) = @_;
$filledvar =~ s/!!scripts_url!!/$script_url/g;
$filledvar =~ s/!!tseeksearch!!/$script_url\/search\.cgi/g;
$filledvar =~ s/!build_url!/$web_url/g;
$filledvar =~ s/!!build_url!!/$web_url/g;
open (GSETT, "$data_dir/gsettings.dat");
@conflines = ;
close (GSETT);
$statsetting = $conflines[29];
chop($statsetting);
####
if ($statsetting =~ /dyn_stat=Dynamic/)
{
$filledvar =~ s/!!whatsnew!!/$script_url\/dirs\.cgi?newpop=new/g;
$filledvar =~ s/!!tophits!!/$script_url\/dirs\.cgi?newpop=pop/g;
}
else
{
$filledvar =~ s/!!whatsnew!!/$web_url\/new\//g;
$filledvar =~ s/!!tophits!!/$web_url\/pop\//g;
}
$filledvar =~ s/!!modify_link_url!!/$script_url\/modify\.cgi/g;
$filledvar =~ s/!!add_url_link!!/$script_url\/addurl\.cgi/g;
$filledvar =~ s/!!add_premium_url_link!!/$script_url\/addurl\.cgi?p=1/g;
$filledvar =~ s/!!rgs_login!!/$script_url\/rgs_login\.cgi?p=1/g;
$topvar = pseek::get_file_contents("$data_dir/frontlink.dat");
if ($topvar eq ""){$filledvar =~ s/!!top!!/$script_url\/fp\.cgi/gi;}else{$filledvar =~ s/!!top!!/$topvar/gi;}
$filledvar =~ s/!!register!!/$script_url\/rgs_register\.cgi?p=1/g;
$filledvar =~ s/!!log_out!!/$script_url\/rgs_logout\.cgi/g;
$filledvar =~ s/!!advanced!!/$script_url\/searchadv\.cgi/g;
$filledvar =~ s/!!my_links!!/$script_url\/rgs_login\.cgi/g;
$filledvar =~ s/!!account_details!!/$script_url\/rgs_adet\.cgi/g;
$filledvar =~ s/!!retrieve_password!!/$script_url\/rgs_repass\.cgi/g;
$filledvar =~ s/!!resend_activation!!/$script_url\/rgs_resend2\.cgi/g;
$query = new CGI;
$searched_keywords = $query->param('keywords');
$filledvar =~ s/!!keywords!!/$searched_keywords/g;
return ($filledvar);
}
sub get_cid_cat
{
my ($dstring) = @_;
my (@alldirs, $lvcount, $ccats, $item44, $readycat, $sqlstr, $sql, $cidret);
@alldirs = split (/\//, $dstring);
$lvcount = 1;
$ccats = "";
foreach $item44 (@alldirs)
{
$item44 =~ s/'/\\'/g;
$ccats = $ccats . "(l" . $lvcount . " = '$item44') AND ";
$readycat = substr($ccats, 0, length($ccats) - 4);
$sqlstr = $sqlstr . "($readycat AND (level = '$lvcount')) OR";
$lvcount++;
}
$sqlstr = substr($sqlstr, 0, length($sqlstr) - 2);
$sql = "SELECT cid FROM dirs WHERE $sqlstr ORDER BY level";
#print "$sql \n\n";
### CONNECT TO DB
if ($mysql_hostname eq ""){$dsn = "DBI:mysql:$db_name";}else{$dsn = "DBI:mysql:$db_name:$mysql_hostname:$mysql_port";}
$dbh = DBI->connect($dsn, $db_username, $db_password);
if ( !defined $dbh ) {die "Cannot connect to MySQL server: $DBI::errstr\n"; }
$sth = $dbh->prepare($sql);
$sth->execute;
$serror = ""; $serror = $sth->errstr; if ($serror ne "") {die "SQL Syntax Error: $serror - From: $sql";}
$cidret = "";
while ( @row = $sth->fetchrow() )
{
$cidret = $cidret . $row[0] . "-";
}
$sth->finish;
$dbh->disconnect;
$cidret = substr($cidret, 0, length($cidret) - 1);
return ($cidret);
}
sub remove_leading_spacing
{
my ($ostring) = @_;
my ($ds, $wfound);
for ($ds = 0; $ds < length($ostring); $ds++)
{
if ((substr($ostring, length($ostring) - 1, 1) eq " ") and ($wfound ne "true"))
{
chop($ostring);
}
else
{
$wfound = "true";
}
}
$chopped_string = $ostring;
return ($chopped_string);
}
sub send_email
{
my($sendername1, $fromemail1, $toemail1, $mail_subject1, $email_message1) = @_;
if ($mail_method eq "smtp_pm")
{
&send_mail_smtp_pm($toemail1, $fromemail1, $sendername1, $mail_subject1, $email_message1, $smtp_server);
}
elsif ($mail_method eq "smtp")
{
&send_mail_smtp($toemail1, $fromemail1, $sendername1, $mail_subject1, $email_message1, $smtp_server);
}
elsif ($mail_method eq "sendmail")
{
&send_mail_sendmail ($sendername1, $fromemail1, $toemail1, $mail_subject1, $email_message1);
}
elsif ($mail_method eq "smtp_auth")
{
&send_mail_smtp_auth($toemail1, $fromemail1, $sendername1, $mail_subject1, $email_message1, $smtp_server, $smtp_user, $smtp_pass);
}
}
sub send_mail_smtp_auth
{
my ($to_email, $from_email, $from_name, $email_subject, $email_msg, $smtp_server_ss, $e_user, $e_pass) = @_;
$e_user = encode_base64($e_user);
$e_pass = encode_base64($e_pass);
chomp($e_user);
chomp($e_pass);
$remote = IO::Socket::INET->new(
Proto => "tcp",
PeerAddr => $smtp_server_ss,
PeerPort => 25
);
unless ($remote)
{
print "Connection failed when trying to connect to $smtp_server_ss";
$TCPconnect = "False";
exit;
}
open (MAITH, "> $data_dir/mailauth.log");
if ($TCPconnect ne "False")
{
$remote->autoflush(1);
send($remote, "EHLO localhost\r\n", 0);
recv($remote, $buffer, 200, 0);
print MAITH "EHLO localhost -> $buffer\n";
### AUTHENTICATE #####################################################
send($remote, "AUTH LOGIN\r\n", 0);
recv($remote, $buffer, 200, 0);
print MAITH "AUTH LOGIN SENT -> $buffer\n";
send($remote, "$e_user\r\n", 0);
recv($remote, $buffer, 200, 0);
print MAITH "$e_user - USER NAME SENT -> $buffer\n";
send($remote, "$e_pass\r\n", 0);
recv($remote, $buffer, 200, 0);
print MAITH "$e_pass - PASS SENT -> $buffer\n";
### SEND MAIL ########################################################
send($remote, "MAIL From:<$from_email>\r\n", 0);
recv($remote, $buffer, 200, 0);
print MAITH "MAIL From [$from_email] -> $buffer\n";
send($remote, "RCPT To:<$to_email>\r\n", 0);
recv($remote, $buffer, 200, 0);
print MAITH "RCPT To: [$to_email] -> $buffer\n";
send($remote, "DATA\r\n", 0);
recv($remote, $buffer, 200, 0);
print MAITH "DATA -> $buffer\n";
send($remote, "From: $from_name <$from_email>\r\n", 0);
send($remote, "Subject: $email_subject\r\n", 0);
send($remote, $email_msg, 0); ### SEND MESSAGE
send($remote, "\r\n.\r\n", 0);
send($remote, "QUIT\n", 0);
recv($remote, $buffer, 200, 0);
print MAITH "QUIT -> $buffer\n\n\n\n\n";
close $remote;
}
close (MAITH);
}
sub send_mail_sendmail
{
# REQUIRES
# - location of sendmail
# - name
# - from email
# - to email address
# - subject
# - message
my($sendername, $fromemail, $toemail, $mail_subject, $email_message) = @_;
my ($ftext);
$sendername =~ s/\n//g;
$fromemail =~ s/\n//g;
$toemail =~ s/\n//g;
$mail_subject =~ s/\n//g;
### check for attacks
$toemail =~ s/\;//g;
$toemail =~ s/^\s+//g;
$toemail =~ s/\s+$//g;
if ($toemail =~ /^\S+\@\S+$/)
{
$ftext = "<" . "$fromemail" . ">";
open (SENDMAIL, "| $sendmail $toemail");
print SENDMAIL <new(
Proto => "tcp",
PeerAddr => $smtp_server_ss,
PeerPort => 25
);
unless ($remote)
{
print "Connection failed when trying to connect to $smtp_server_ss";
$TCPconnect = "False";
exit;
}
if ($TCPconnect ne "False")
{
sleep(1);
$remote->autoflush(1);
send($remote, "HELO localhost\n", 0);
recv($remote, $buffer, 200, 0);
if ($buffer !~ /220/) { $remote_error = $buffer; }
#print "HELO localhost -> $buffer
";
if ($remote_error eq "")
{
send($remote, "MAIL From: <$from_email>\n", 0);
recv($remote, $buffer, 200, 0);
if ($buffer !~ /250/) { $remote_error = $buffer; }
#print "MAIL From [$from_email] -> $buffer
";
}
if ($remote_error eq "")
{
send($remote, "RCPT To: <$to_email>\n", 0);
recv($remote, $buffer, 200, 0);
if ($buffer !~ /250/) { $remote_error = $buffer; }
#print "RCPT To: [$to_email] -> $buffer
";
}
if ($remote_error eq "")
{
send($remote, "DATA\n", 0);
recv($remote, $buffer, 200, 0);
if ($buffer !~ /250/) { $remote_error = $buffer; }
#print "DATA -> $buffer
";
}
send($remote, "From: $from_email\n", 0); # was $from_name
send($remote, "Subject: $email_subject\n", 0);
send($remote, $email_msg, 0);
send($remote, "\r\n.\r\n", 0);
send($remote, "QUIT\n", 0);
close $remote;
}
}
sub ts_insert_template_includes
{
my ($tmpl_page) = @_;
opendir(DIR,"$data_dir");
@files = readdir(DIR);
closedir(DIR);
if ($tmpl_page =~ /%%incl_/)
{
foreach $ifilen (@files)
{
if (substr($ifilen, 0, 5) eq "incl_")
{
$incl = $ifilen;
$incl =~ s/\.html//g;
$incl = "%%" . $incl . "%%";
if ($tmpl_page =~ /$incl/)
{
$theincl = &get_file_contents ("$data_dir/$ifilen");
$tmpl_page =~ s/$incl/$theincl/g;
}
}
}
}
########
$tmpl_settings = &get_file_contents ("$data_dir/gsettings.dat");
@tmpl_sett = split (/\n/, $tmpl_settings);
foreach $titem (@tmpl_sett)
{
if ($titem =~ /searchmeth/)
{
if ($titem =~ /fulltext/i)
{
$search_rpl = "$script_url/search2\.cgi";
}
}
}
if ($search_rpl eq "")
{
$tmpl_page =~ s/!!tseeksearch!!/$script_url\/search\.cgi/g;
}
else
{
$tmpl_page =~ s/!!tseeksearch!!/$search_rpl/g;
}
#########
$tmpl_page =~ s/!build_url!/$web_url/g;
$tmpl_page =~ s/!!scripts_url!!/$script_url/g;
$tmpl_page =~ s/!!rgs_login!!/$script_url\/rgs_login\.cgi/g;
$topvar = pseek::get_file_contents("$data_dir/frontlink.dat");
if ($topvar eq ""){$tmpl_page =~ s/!!top!!/$script_url\/fp\.cgi/gi;}else{$tmpl_page =~ s/!!top!!/$topvar/gi;}
$tmpl_page =~ s/!!my_links!!/$script_url\/rgs_login\.cgi/g;
$tmpl_page =~ s/!!register!!/$script_url\/rgs_register\.cgi?p=1/g;
$tmpl_page =~ s/!!log_out!!/$script_url\/rgs_logout\.cgi/g;
$tmpl_page =~ s/!!advanced!!/$script_url\/searchadv\.cgi/g;
$tmpl_page =~ s/!!account_details!!/$script_url\/rgs_adet\.cgi/g;
$tmpl_page =~ s/!!retrieve_password!!/$script_url\/rgs_repass\.cgi/g;
$tmpl_page =~ s/!!resend_activation!!/$script_url\/rgs_resend2\.cgi/g;
$query = new CGI;
$searched_keywords = $query->param('keywords');
$tmpl_page =~ s/!!keywords!!/$searched_keywords/g;
return ($tmpl_page);
}
sub decode_date
{
my ($tvalue) = @_;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$ydat,$isdst,@marray, $rdvalue, $ampm);
open (GSETT, "$data_dir/gsettings.dat");
@conflines = ;
close (GSETT);
$dateformat = $conflines[48];
chop($dateformat);
($sec,$min,$hour,$mday,$mon,$year,$wday,$ydat,$isdst) = localtime($tvalue);
$year = "20" . substr($year, 1, 2);
@marray = ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
if (length($min) == 1) {$min = "0" . $min;}
if (length($min) == 1) {$min = "0" . $min;}
if ($hour == 0){$hour = 12;}
if ($dateformat eq "date_format=0")
{
$rdvalue = "$marray[$mon] $mday, $year";
}
elsif ($dateformat eq "date_format=1")
{
$rdvalue = "$mday $marray[$mon] $year";
}
elsif ($dateformat eq "date_format=2")
{
$mon++;
if (length($mday) == 1) { $mday = "0" . $mday; }
if (length($mon) == 1) { $mon = "0" . $mon; }
$rdvalue = "$year-$mon-$mday";
}
elsif ($dateformat eq "date_format=3")
{
$mon++;
if (length($mday) == 1) { $mday = "0" . $mday; }
if (length($mon) == 1) { $mon = "0" . $mon; }
$rdvalue = "$mon-$mday-$year";
}
elsif ($dateformat eq "date_format=4")
{
$mon++;
if (length($mday) == 1) { $mday = "0" . $mday; }
if (length($mon) == 1) { $mon = "0" . $mon; }
$rdvalue = "$mday-$mon-$year";
}
#print "==>$dateformat $rdvalue
";
return ($rdvalue);
}
sub new_gsettings
{
my $this = {};
$scnts = &get_file_contents("$data_dir/gsettings.dat");
@all_obj_items = split (/\n/, $scnts);
foreach $obji (@all_obj_items)
{
($obj_prp, $obj_val) = split (/=/, $obji);
$this->{$obj_prp} = $obj_val;
}
bless $this;
return $this;
}
sub encode_dir
{
my ($fstring) = @_;
my ($ms, $enc_string, $oneletter, $bstr);
$fstring =~ s/ /_/g;
for ($ms = 0; $ms < length($fstring); $ms++)
{
$oneletter = substr($fstring, $ms, 1);
if (($oneletter !~ /[0-9a-zA-Z]/) and ($oneletter ne "_"))
{
$bstr = ord($oneletter);
if (length($bstr) == 1) {$bstr = "00" . $bstr;}
if (length($bstr) == 2) {$bstr = "0" . $bstr;}
$bstr = "," . $bstr;
$enc_string = $enc_string . $bstr;
}
else
{
$enc_string = $enc_string . $oneletter;
}
}
return ($enc_string);
}
sub decode_dir
{
my ($coded_string) = @_;
my ($ms, $oneletter, $decoded_string, $plusval, $dechar, $fdchar);
$coded_string =~ s/_/ /g;
$plusval = 0;
for ($ms = 0; $ms < length($coded_string); $ms++)
{
$oneletter = substr($coded_string, $ms, 1);
if ($plusval != 0)
{
$plusval++;
if ($plusval == 4) {$plusval = 0;}
}
elsif ($oneletter eq ",")
{
$dechar = substr($coded_string, ($ms+1), 3);
$dechar = int($dechar);
$dechar = chr($dechar);
$dechar =~ s//g;
$decoded_string = $decoded_string . $dechar;
$plusval++;
}
else
{
$decoded_string = $decoded_string . $oneletter;
}
}
return($decoded_string);
}
#####################################
sub get_file_contents
{
my ($filename) = @_;
my ($filesize, $filesize, $thefile);
if ((-e "$filename") > 0)
{
$filesize = (-s "$filename");
open (TFILECNTS, "$filename") || die "$filename";
read(TFILECNTS,$thefile,$filesize);
close (TFILECNTS);
}
return ($thefile);
}
sub get_rating_images
{
my ($rating) = @_;
my ($image_rate, $decm, $images);
if ($rating > 0)
{
($image_rate, $decm) = split (/\./, $rating);
if (length($decm) == 1)
{
if ($decm > 4) {$image_rate++;}
}
if (length($decm) == 2)
{
if ($decm > 49) {$image_rate++;}
}
$image_rate = "r" . $image_rate . ".gif";
$image_rate =~ s/ //g;
$images = "
";
}
return ($images);
}
sub setCookie
{
my($name, $value) = @_;
$query = new CGI;
$tcookie = $query->cookie(-name=>$name,
-value=>$value,
-expires=>'+12M');
print "Set-Cookie: $tcookie\n";
}
sub getCookies
{
my (@rawCookies1);
$query = new CGI;
$rwc = 0;
foreach $name ($query->cookie())
{
$rawCookies1[$rwc] = $name . "=" . $query->cookie($name);
$rwc++;
}
#foreach $item (@rawCookies1){print "==> $item
";}
return (@rawCookies1);
}
sub send_mail_smtp_pm
{
my ($to_email, $from_email, $from_name, $email_subject, $email_msg, $smtp_server_ss) = @_;
#print "$to_email, $from_email, $from_name, $email_subject, $email_msg, $smtp_server_ss";
eval('use Net::SMTP; 1;') or acs::problem_popup("The Perl module called Net::SMTP is not installed. Please install it. Perl version $]");
$smtp = Net::SMTP->new($smtp_server_ss,
Hello => $smtp_server_ss,
Timeout => 30,
Debug => 0
);
$smtp->mail($to_email);
$smtp->to($to_email);
$smtp->data();
$smtp->datasend("To: $to_email\n");
$smtp->datasend("From: $from_name <$from_email>\n");
$smtp->datasend("Subject: $email_subject\n");
$smtp->datasend("\n");
$smtp->datasend("$email_msg\n");
$smtp->dataend();
$smtp->quit;
}
sub get_more_info_file_name
{
my ($title_without_link) = @_;
$title_without_link_tmp = $title_without_link;
$more_info_pg_name = ""; $title_without_link_tmp =~ s/ /_/gi;
for ($ms = 0; $ms < length($title_without_link_tmp); $ms++)
{
$oneletter1 = substr($title_without_link_tmp, $ms, 1);
if (($oneletter1 =~ /[0-9a-zA-Z]/) or ($oneletter1 eq "_"))
{
$more_info_pg_name = $more_info_pg_name . $oneletter1;
}
}
$more_info_pg_name = lc($more_info_pg_name);
if (length($more_info_pg_name) > 80) { $more_info_pg_name = substr($more_info_pg_name, 0, 80); }
return ($more_info_pg_name);
}
#### GET CONFIGURATION ########################################################
sub get_setup
{
$exists = (-e "$config_cgi");
if ($exists > 0)
{
open (STP, "$config_cgi");
while (defined($line=))
{
if ($line =~ m/#/g)
{
$r = pos($line);
$line = substr($line, 0, $r - 1);
}
$line =~ s/\n//g;
if ($line =~ /^DB_NAME/){$db_name = &get_setup_line($line, DB_NAME);}
if ($line =~ /^DB_USERNAME/){$db_username = &get_setup_line($line, DB_USERNAME);}
if ($line =~ /^DB_PASSWORD/){$db_password = &get_setup_line($line, DB_PASSWORD);}
if ($line =~ /^MYSQL_HOSTNAME/){$mysql_hostname = &get_setup_line($line, MYSQL_HOSTNAME);}
if ($line =~ /^MYSQL_PORT/){$mysql_port = &get_setup_line($line, MYSQL_PORT);}
if ($line =~ /^SCRIPT_URL/){$script_url = &get_setup_line($line, SCRIPT_URL);}
if ($line =~ /^ADMIN_URL/){$admin_url = &get_setup_line($line, ADMIN_URL);}
if ($line =~ /^WEB_URL/){$web_url = &get_setup_line($line, WEB_URL);}
if ($line =~ /^WEB_DIR/){$web_dir = &get_setup_line($line, WEB_DIR);}
if ($line =~ /^DATA_DIR/){$data_dir = &get_setup_line($line, DATA_DIR);}
if ($line =~ /^USERNAME/){$username = &get_setup_line($line, USERNAME);}
if ($line =~ /^PASSWORD/){$password = &get_setup_line($line, PASSWORD);}
if ($line =~ /^MAIL_METHOD/){$mail_method = &get_setup_line($line, MAIL_METHOD);}
if ($line =~ /^SENDMAIL/){$sendmail = &get_setup_line($line, SENDMAIL);}
if ($line =~ /^SMTP_SERVER/){$smtp_server = &get_setup_line($line, SMTP_SERVER);}
if ($line =~ /^SMTP_USER/){$smtp_user = &get_setup_line($line, SMTP_USER);}
if ($line =~ /^SMTP_PASS/){$smtp_pass = &get_setup_line($line, SMTP_PASS);}
}
close (STP);
}
}
sub get_setup_line
{
my ($setup_line, $setup_var) = @_;
$crit = "\"";
$setup_line =~ m/$crit/g;
$r1 = pos($setup_line);
$setup_line =~ m/$crit/g;
$r2 = pos($setup_line);
$setup_line = substr($setup_line, $r1, ($r2 - $r1 - 1));
$return_val = $setup_line;
return ($return_val);
}
#### END CONFIGURATION ########################################################
1;