#!/usr/bin/perl ############################################################################## # PROGRAM : BuildACommunity.com Perl Module # # VERSION : 3.1 # # # # NOTES : # ############################################################################## # All source code, images, programs, files included in this distribution # # Copyright (c) 1999 -> 2017 # # Eric L. Pickup, Ecreations, BuildACommunity # # All Rights Reserved. # ############################################################################## # # # ------ DO NOT MODIFY ANYTHING BELOW THIS POINT !!! ------- # # # ############################################################################## use CGI::Carp qw(fatalsToBrowser); #use Time::HiRes qw(gettimeofday); #$PSTART = gettimeofday; use DB_File; require "./common.pm"; require "$GPath{'imagesize.pm'}"; $PROGRAM_NAME = "postcards.cgi"; &parse_FORM; if (-e "$GPath{'user.pm'}") { require "$GPath{'user.pm'}"; if ($FORM{'UserName'} && $FORM{'PassWord'}) { %IUSER = &get_user($FORM{'UserName'},$FORM{'PassWord'}); } $USERPRESENT = "T"; } if ($CONFIG{'POSTCARDS_SetMaxCardsByUserName'} eq "YES") { $CONFIG{'POSTCARD_max_cards'} = $POSTCARD_max_cards; } # Let's set some postcard specific variables... $mycgi = "$CONFIG{'CGI_DIR'}/$CONFIG{'POSTCARD_script_name'}"; $postcard_file = "$GPath{'ecard_data'}/postcards.txt"; $postcard_db = "$GPath{'ecard_data'}/postcards.db"; $banned_file = "$GPath{'ecard_data'}/banned.txt"; $sender_file = "$GPath{'ecard_data'}/senders.txt"; $receivers_file = "$GPath{'ecard_data'}/receivers.txt"; $sender_db = "$GPath{'ecard_data'}/senders.db"; $pc_database = "$GPath{'ecard_data'}/database.txt"; if ($ENV{'HTTP_USER_AGENT'} =~ /MSIE/i) {$ie = "T";} if ($CONFIG{'POSTCARDS_show_colors_page'} ne "YES") { $FORM{'Text_Color'} = $CONFIG{'text_color'}; $FORM{'Link_Color'} = $CONFIG{'link_color'}; $FORM{'BackGround_Color'} = $CONFIG{'win_color'}; } else { $FORM{'Text_Color'} = $FORM{'Text_Color'} || $CONFIG{'postcard_default_text_color'}; $FORM{'Link_Color'} = $FORM{'Link_Color'} || $CONFIG{'postcard_default_link_color'}; $FORM{'BackGround_Color'} = $FORM{'BackGround_Color'} || $CONFIG{'postcard_default_win_color'}; } if (($FORM{'ct'} ne "") && ($FORM{'action'} eq "")){ $FORM{'ticket'} = $FORM{'ct'}; &pickup; &print_output('pc_pickup_page'); } if (($FORM{'action'} eq "Back To The Main Post Office Page!") ||($FORM{'action'} eq "")) { if ($CONFIG{'POSTCARDS_show_intropage'} eq "YES") { &login; &print_output('pc_postcard_front_page'); } else { require "$GPath{'postcards_pictures.pm'}"; &print_pictures; &print_output('pc_pictures'); } } foreach $k (keys %FORM) { $FORM{$k} =~ s/"/\"/g; $FORM{$k} =~ s/\cM//g; } $FORM{'text'} =~ s/\n\n/
/g;
$FORM{'text'} =~ s/\n//g;
if ($FORM{'UserName'} ne "") {
($found, %IUSER) = &get_user_4_forums($FORM{'UserName'},$FORM{'PassWord'});
$Member = $Found;
}
$FORM{'email'} =~ s/(\cM|\n)+/!!/g;
if ($FORM{'action'} eq "Pick up Your Postcard") {
&pickup;
&print_output('pc_pickup_page');
}
if (($FORM{'action'} =~ /Send A Postcard To A Friend/i) || ($FORM{'action'} eq "Search For Cards") || ($FORM{'action'} eq "Send Another Postcard") || ($FORM{'action'} eq "Send $FORM{'recipient'} A Postcard") || ($FORM{'action'} eq "Change Your Picture") || ($FORM{'action'} eq "See More Cards") || ($FORM{'action'} eq "More Card Sets")) {
require "$GPath{'postcards_pictures.pm'}";
&print_pictures;
&print_output('pc_pictures');
}
if (($FORM{'filename'} eq "") && ($FORM{'imageurl'} eq "")) {
my $template = new Text::Template (DELIMITERS => [$open_deliminator, $close_deliminator], TYPE => FILE, SOURCE => "$GPath{'source_templates'}/ecardspro/blankfields.tmplt");
$BODY = $template->fill_in;
$LOWLEVELTEMPLATE = "$GPath{'source_templates'}/ecardspro/blankfields.tmplt";
&print_output('error');
}
if ((($FORM{'step'} eq "2") && ($FORM{'action'} eq "Next Step")) || ($FORM{'action'} eq "Send A Postcard")) {
if ($CONFIG{'POSTCARDS_show_music_page'} eq "YES") {
&music_page;
}
else {
$FORM{'step'} = "3";
$FORM{'action'} = "Next Step";
}
}
if ($FORM{'action'} eq "Change Your Music") {
&music_page;
}
if (($FORM{$FORM{'category'}} ne "NOTHING") && ($FORM{'format'} eq "Form-Based")) {
$FORM{'sound'} = $FORM{$FORM{'category'}};
}
if ($FORM{'sound'} eq "NONE") {
$FORM{'sound'} = "";
}
if (($FORM{'step'} eq "3") && ($FORM{'action'} eq "Next Step")) {
if ($CONFIG{'POSTCARDS_show_colors_page'} eq "YES") {
require($GPath{'postcards_colors.pm'});
&colors;
&print_output('pc_colors');
}
else {
$FORM{'step'} = "4";
$FORM{'action'} = "Next Step";
}
}
if ($FORM{'action'} eq "Change Your Colors") {
require($GPath{'postcards_colors.pm'});
&colors;
&print_output('pc_colors');
}
if (($FORM{'step'} eq "4") && ($FORM{'action'} eq "Next Step")) {
&text_page;
}
if ($FORM{'action'} eq "Change Your Text") {
&text_page;
}
#if ($FORM{'text'} eq "") {
# my $template = new Text::Template (DELIMITERS => [$open_deliminator, $close_deliminator], TYPE => FILE, SOURCE => "$GPath{'source_templates'}/ecardspro/blankfields.tmplt");
# $BODY = $template->fill_in;
# $LOWLEVELTEMPLATE = "$GPath{'source_templates'}/ecardspro/blankfields.tmplt";
# &print_output('error');
#}
if (($FORM{'step'} eq "5") && ($FORM{'action'} eq "Next Step")) {
&addresses_page;
}
if ($FORM{'action'} eq "Change The Addresses or Names") {
&addresses_page;
}
#if (($FORM{'sender'} eq "") || ($FORM{'senderemail'} eq "") || ($FORM{'email'} eq "")) {
# my $template = new Text::Template (DELIMITERS => [$open_deliminator, $close_deliminator], TYPE => FILE, SOURCE => "$GPath{'source_templates'}/ecardspro/blankfields.tmplt");
# $BODY = $template->fill_in;
# $LOWLEVELTEMPLATE = "$GPath{'source_templates'}/ecardspro/blankfields.tmplt";
# &print_output('error');
#}
if ($FORM{'senderemail'} =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/ || $FORM{'senderemail'} !~ /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/) {
my $template = new Text::Template (DELIMITERS => [$open_deliminator, $close_deliminator], TYPE => FILE, SOURCE => "$GPath{'source_templates'}/ecardspro/error_invalidemail.tmplt");
$BODY = $template->fill_in;
$LOWLEVELTEMPLATE = "$GPath{'source_templates'}/ecardspro/error_invalidemail.tmplt";
&print_output('error');
}
if ($FORM{'email'} =~ /!!/) {
$FORM{'email'} =~ s/ //g;
$FORM{'email'} =~ s/\n//g;
$Multiple = "T";
}
else {
if (($FORM{'email'} =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/ || $FORM{'email'} !~ /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/)) {
my $template = new Text::Template (DELIMITERS => [$open_deliminator, $close_deliminator], TYPE => FILE, SOURCE => "$GPath{'source_templates'}/ecardspro/error_invalidemail.tmplt");
$BODY = $template->fill_in;
$LOWLEVELTEMPLATE = "$GPath{'source_templates'}/ecardspro/error_invalidemail.tmplt";
&print_output('error');
}
}
if ($FORM{'action'} =~ /Java/i) {
$FORM{'filename'} =~ s/!!.*//;
&print_java;
&print_output('java_select');
}
if ($FORM{'javaeffect'} ne "") {$FORM{'filename'} .= "!!$FORM{'javaeffect'}";}
if ($FORM{'action'} eq "Preview Your Card") {
&preview;
&print_output('pc_preview');
}
if ($FORM{'action'} eq "Send Your Card") {
$| = 1;
&send_card;
$no_exit = "T";
&print_output('pc_sent');
&sent_mail_notification;
exit;
}
sub addresses_page{
&get_addresses;
&print_output('pc_addresses');
}
sub music_page {
&print_music;
&print_output('pc_music');
}
sub colors_page {
require "$GPath{'postcards_colors.pm'}";
&colors;
&print_output('pc_colors');
}
sub text_page {
&print_text;
&print_output('pc_text');
}
sub pickup {
&lock("postcards");
open(POSTCARDS, "$postcard_file")
|| die $!;
# $postcard_file is defined in the configuration section.
while(sent to $address
\n";
if ($address !~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/ || $address =~ /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/) {
# print "sent to $address
SERVER: $CONFIG{'mail_cmd'}
From: $CONFIG{'email'}
\n";
# print "SENDING MAIL!\n";
open (MAIL, "| $CONFIG{'mail_cmd'}") || &diehtml("I can't open sendmail\n");
# open (MAIL, "| /usr/bin/sendmail -t") || &diehtml("I can't open sendmail\n");
print MAIL "To: $address\n";
print MAIL "From: $CONFIG{'email'}\n";
$CONFIG{'POSTCARDS_message_sent'} =~ s/\[RECIPIENT\]/$FORM{'email'}/g;
$CONFIG{'POSTCARDS_message_sent'} =~ s/\[SENDER\]/$FORM{'sender'}/g;
print MAIL "Subject: $CONFIG{'POSTCARDS_message_sent'}\n";
foreach my $line(@EMAIL) {
$line =~ s/\[POSTCARDPAGE\]/$CONFIG{'POSTCARDS_url'}/g;
$line =~ s/\[POSTCARDPICKUP\]/$CONFIG{'POSTCARDS_url'}\?ct=$FORM{'ticket'}/g;
$line =~ s/\[SENDER\]/$FORM{'sender'}/g;
$line =~ s/\[TICKET\]/$FORM{'ticket'}/g;
$line =~ s/\[RECIPIENT\]/$FORM{'email'}/g;
print MAIL "$line";
}
print MAIL "\n\n\n";
close(MAIL);
# print "DONE SENDING MAIL!
\n";
# print "To: $address\n";
# print "From: $CONFIG{'email'}\n";
# print "Subject: $CONFIG{'POSTCARDS_message_sent'}\n";
#
# foreach $line(@EMAIL) {
# $line =~ s/\[POSTCARDPAGE\]/$CONFIG{'POSTCARDS_url'}/g;
# $line =~ s/\[POSTCARDPICKUP\]/$CONFIG{'POSTCARDS_url'}\?ct=$FORM{'ticket'}/g;
# $line =~ s/\[SENDER\]/$FORM{'sender'} /g;
# $line =~ s/\[TICKET\]/$FORM{'ticket'} /g;
# $line =~ s/\[RECIPIENT\]/$FORM{'email'} /g;
# print "$line";
# }
# print "\n\n\n";
}
}
sub pickedup_mail_notification {
open (BANNED, "$banned_file");
@banned =