#!/usr/bin/perl
$var = time; # Bookmarks: 0,2275 0,2457
use CGI qw(:all);
use CGI::Carp qw/fatalsToBrowser/; # working on refer
for (param()) { $NEWFORM{$_} = param($_); }
for (param()) {$FORM{$_} = param($_);
}
$cookiedata = $ENV{'HTTP_COOKIE'};
@cookies = split(/;/,$cookiedata );
foreach $i (@cookies){
($name,$cid) = split(/=/,$i);
$name =~ s/\s+//gi;
$COOK{$name} = $cid;
}
@var1 = split(//,$var);
$lastnotvar = $var1[-1];
$lastnotvar++;
$lastnotvar = 2 if $lastnotvar ==1;
$lastnotvar2 = $lastnotvar -1;
$use_absolute_reference = "yes";
$urladdress = "http://www.tkoch.se/cgi-bin/guestbook/guestbook.pl";
$font = "";
$guestbookroot = "$ENV{'HTTP_HOST'}";
if ($use_absolute_reference eq "no"){
$guesturl = "$ENV{'SCRIPT_NAME'}";
}
else{
$guesturl = $urladdress;
}
$allurl = "$guestbookroot" . "$guesturl ";
$allurl2 = "$guestbookroot" . "$guesturl";
$allurl3 = "$guestbookroot" . "$guesturl" . "?action=control_panel ";
$| = 1;
$demo="off";
$previewline = "
";
$version = "1000002";
$bversion = "10.2";
&subdirectory;
$salt = "active"; # to help crypt
$enc = crypt(active, $salt); # set default password
$location_of_lock_file = "./active_guestbook_files/guestbook.lock"; ## thanks to extropia.com
$cookie_control = "off";
unless (-e "$guestbook_data_name"){
@months = ("January","February","March","April","May","June","July","August","September","October","November","December");
&GetDate;
$now = &amqdate($messagedate);
}
&startup;
&open_prefs;
&GetDate;
&check_values;
$now = &amqdate($messagedate);
&check_update;
&check_new_files;
$alignment_default = "center";
$alignment = "center" if ($alignment eq "");
$action = $FORM{'action'};
$direct = $FORM{'direct'};
$search_words = $FORM{'search_words'};
$search_fields = $FORM{'search_fields'};
$search_english= $FORM{'reload'};
$alignment_default = "center";
$algo = " ";
@old_words = split (/\,/, $bad_words);
@active_default_alignment = split (//, $alignment_default);
$cookie_default = join ("", reverse @active_default_alignment);
# $added_words = "skcuf daehtihs etihs tihs stihs tawt reggin rekcufrehtom rekcuf tnuc rekcus kcoc dratsab kcuf gnikcuf sknaw knaw stnuc sdratsab sreknaw reknaw elohesra selohesra esra sesra";
@letters = split (//, $added_words) ;
$reverse = join ("", reverse @letters);
@new_words = split (/ /, $reverse);
$rett = "jguiekjhhd";
@words = (@new_words, @old_words);
$host = ".rorre noitartsigeR";
@backhost = split (//, $host) ;
$valid_ip = join ("", reverse @backhost);
@anti_ips = split (/\,/, $anti_ips);
@anti_emails = split (/\,/, $anti_emails);
&ip_test;
$ipoops = "no";
$RemoteHost = $ENV{'REMOTE_HOST'};
if ((!$RemoteHost) || ($RemoteHost =~ m!^\d+\.\d+\.\d+\.\d+$!)) {
if ($ENV{'REMOTE_ADDR'} =~ m!^(\d+)\.(\d+)\.(\d+)\.(\d+)$!) {
$RemoteHost = (gethostbyaddr(pack('C4',$1,$2,$3,$4),2))[0] || $ENV{'REMOTE_ADDR'};
}
$RemoteHost =~ tr[A-Z][a-z];
}
foreach (@anti_ips) {
next unless $_;
$ipoops = "yes" if ($RemoteHost =~ m!$_!);
$ipoops = "yes" if ($ENV{'REMOTE_ADDR'} =~ m!$_!);
}
sub end {
&content;;
print qq~
~;
&active_header if $active_header eq "on";
&user_image if $user_image eq "yes";
&title if $use_title eq "on";
&user_html if $use_user_html eq "yes";
&menu;
&no_of_messages_display if $show_no_of_messages eq "yes";
$count = 1;
$grouped = 0;
$no_displayed = int($no_displayed); # fix any funny numbers entered by user
# fix any numbers entered less than one
if ($no_displayed <1){
$no_displayed = 1;
}
$start_number = $FORM{'start_number'};
$new_start_number = ($start_number + $no_displayed);
$old_start_number = ($start_number - $no_displayed);
$startplus = $start_number +1;
unless ($old_start_number < 0){print qq~ $left_bracket$TXT_previous$right_bracket ~;
}
&show_number_menu unless ($number_of_messages <($no_displayed+1));
unless ($new_start_number > ($number_of_messages -1 )){
print qq~ $left_bracket$TXT_next$right_bracket ~; } if (($new_start_number > ($number_of_messages -1 )) && ($number_of_messages >($no_displayed))){ print qq~ ~; } print qq~ ~; $rev_startplus = $number_of_messages - $startplus +1; $rev_new_start_number = $number_of_messages - $new_start_number +1; $rev_number_of_messages = $number_of_messages - $number_of_messages +1; if ($order_of_message_numbers eq "reverse"){ $overall_startplus =$rev_startplus; $overall_new_start_number =$rev_new_start_number; $overall_number_of_messages =$rev_number_of_messages; } else{ $overall_startplus =$startplus; $overall_new_start_number =$new_start_number; $overall_number_of_messages =$number_of_messages; } if ($new_start_number < $number_of_messages){ print qq~ $TXT_viewing_messages$overall_startplus$TXT_to$overall_new_start_number$TXT_after_last_number ~; } else{ if ($startplus == $number_of_messages){ print qq~ $TXT_viewing_message$overall_startplus$TXT_after_last_number1 ~; } else{ print qq~ $TXT_viewing_messages$overall_startplus$TXT_to$overall_number_of_messages$TXT_after_last_number ~; } } &add2 if $add_page_appears ==1; $message_number = $start_number+1; foreach $row (@data_ordered){ @fields = split (/\|/, $row); $grouped++; if (($grouped > ($start_number)) && ($grouped < ($start_number + $no_displayed + 1))){ &main_table_results; $message_number++; } # end if number is right } # end for each row if ($use_hr_image eq "yes"){ print " "; } unless ($old_start_number < 0){ print qq~ $left_bracket$TXT_previous$right_bracket ~; } &show_number_menu unless ($number_of_messages <($no_displayed+1)); unless ($new_start_number > ($number_of_messages -1 )){ print qq~ $left_bracket$TXT_next$right_bracket ~; } &add2 if $add_page_appears ==2; &search_form if $includesearch ne "no"; &user_html_footer if $use_user_html_footer eq "yes"; print qq~ ~; print qq~ |
$font $TXT_code_not_correct
$font $TXT_multiple_not_allowed
~; &user_image if $user_image eq "yes"; &title if $use_title eq "on"; if ($use_user_html eq "yes"){ &user_html if $disable_user_html_add ne "yes"; } &menu; if ($table_width =~ /\%/){ $table_width_per = $table_width; $table_width_per =~ s/\%//gi; $table_width_per = $table_width_per/3; $table_width_per = ($table_width_per . "%"); $col1 = $table_width_per; } else{ $col1 = ($table_width/3); } &add2; if ($use_user_html_footer eq "yes"){ &user_html_footer if $disable_user_html_footer_add ne "yes"; } print qq~ |
Delete ALL Messages -
Delete All Messages WAITING APPROVAL -
Delete All PRIVATE Messages
~;
}
@datalist = ();
$count = 1;
if ($FORM{'everything'} eq "yes"){
foreach $row (@data_ordered)
{
@fields = split (/\|/, $row);
next if (($fields[10] eq "del") && ($FORM{'inctrash'} ne "yes") );
next if (($fields[15] eq "waiting") && ($FORM{'incwaiting'} ne "yes") );
next if (($fields[16] eq "yes") && ($FORM{'incprivate'} ne "yes") );
next if ((($fields[16] ne "yes") && ($fields[15] ne "waiting") && ($fields[10] ne "del")) && ($FORM{'incnormal'} ne "yes")) ;
if (($search_fields eq "1" ) || ($search_fields eq "2" )){
$searchby = (" " . $fields[$search_fields] . " ");
}
else{
$searchby = (" " . $fields[1] . " " . $fields[2] . " " . $fields[5] . " " . $fields[6] . " " . $fields[17] . " " . $fields[18] . " " . $fields[19] . " ");
}
@word_list = split(/\s+/,$search_words);
$no_of_words_in_search = @word_list;
for ($x = @word_list; $x > 0; $x--)
{
$match_word = $word_list[$x - 1];
if ($searchby =~ /$match_word/i)
{
splice(@word_list,$x - 1, 1);
} # End of If
} # End of For Loop
if (@word_list < 1)
{
push (@hits, $row);
}
} # end foreach $row
close(USER_FILE);
@datalist = @hits;
}
else
{
foreach $row (@data_ordered){
@fields = split (/\|/, $row);
unless ($fields[10] eq "del"){
push (@datalist, $row);
}
}
}
###########
print "
";
$count = 1;
$grouped = 0;
$start_number = $FORM{'start_number'};
$new_start_number = ($start_number + $no_displayed);
$old_start_number = ($start_number - $no_displayed);
$startplus = $start_number +1;
$number_of_messages = @datalist;
if ($start_number >0){
print qq~ [Start]
~;
}
unless ($old_start_number < 0){
print qq~ [Previous] ~;
}
&show_edit_number_menu unless ($number_of_messages <($no_displayed+1));
unless ($new_start_number > ($number_of_messages -1 )){
print qq~ [Next]
~;
}
if (($new_start_number > ($number_of_messages -1 )) && ($number_of_messages >($no_displayed))){
print qq~
~;
}
print qq~ ~;
if ($new_start_number < $number_of_messages){
print qq~ Messages $startplus to $new_start_number ~;
}
else{
if ($startplus == $number_of_messages){
print qq~ Message $startplus ~;
}
else{
print qq~ Messages $startplus to $number_of_messages ~;
}
}
$individno = $start_number;
foreach $row (@datalist){
@fields = split (/\|/, $row);
$grouped++;
if (($grouped > ($start_number)) && ($grouped < ($start_number + $no_displayed + 1))){
if ($fields[16] eq "yes"){
print qq~
THIS IS A PRIVATE MESSAGE |
THIS MESSAGE IS WAITING FOR APPROVAL |
THIS MESSAGE IS DELETED |
$TXT_your_name: | $fields[1] |
$TXT_your_name: | $fields[1] |
$TXT_your_web_page_address: | $fields[11] |
$TXT_your_message: | $fields[2] |
$TXT_where_in_the_world: | $fields[5] |
$TXT_user1_field: | $fields[17] |
$TXT_user2_field: | $fields[18] |
$TXT_user3_field: | $fields[19] |
Date: | $condate |
$web_comment: | $fields[6] |
IP: | $fields[7] |
[ Delete this message] ~; unless (($fields[6]) || ($fields[16] eq "yes")) { print qq~ [ Add a comment ] ~; } if (($fields[15] eq "waiting") && ($fields[16] ne "yes")) { print qq~ [ APPROVE THIS MESSAGE ] ~; } if ($fields[16] ne "yes") { print qq~ [ Edit this message ] ~; } print qq~ |
Comment successfully added. ~; &inter_footer; } # end add response2 sub change1 { &seek_cook; $start_number = $FORM{'start_number'}; $ref = $FORM{'ref'}; open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name'); @data =
~; $count = 1; foreach $row (@reversesorteddata) { @fields = split (/\|/, $row); ############## if ($count ==1) { print qq~
$TXT_your_name: | $fields[1] |
$TXT_your_name: | $fields[1] |
$TXT_your_message: | $fields[2] |
Date: | $condate |
$TXT_where_in_the_world: | $fields[5] |
$web_comment: | $fields[6] |
$TXT_user1_field: | $fields[17] |
$TXT_user2_field: | $fields[18] |
$TXT_user3_field: | $fields[19] |
IP address: | $fields[7] |
[ Undelete this message ] [ Permanently wipe this message ]~; print qq~ |
Message successfully undeleted. ~; &inter_footer; exit; } sub trash_item { &seek_cook; $ref = $FORM{'ref'}; open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name'); @data =
Message permanently wiped. ~; &inter_footer; exit; } # end trash_item sub amqdate { $amqdate = $_[0]; @bits = split (/\//, $amqdate); $amqyear = $bits[2]; if ($amqyear > 1999) { $amqyear = ($amqyear - 2000); } if ($amqyear == 4 || $amqyear == 8 || $amqyear == 12 || $amqyear == 16 || $amqyear == 0 || $amqyear == 20 || $amqyear == 24) {$leap = "yes";} else{$leap = "no";} if ($amqyear == 1 || $amqyear == 5 || $amqyear == 9 || $amqyear == 13 || $amqyear == 17 || $amqyear == 21 || $amqyear == 25) { $extradays = ((($amqyear - 1)/4)+1); } $amqyeardays = (($amqyear * 365)+$extradays); $amqday = $bits[0]; if ($bits[1] == 1) {$monthdays = 0;} if ($bits[1] == 2) {$monthdays = 31;} if ($bits[1] == 3) {$monthdays = 59;} if ($bits[1] == 4) {$monthdays = 90;} if ($bits[1] == 5) {$monthdays = 120;} if ($bits[1] == 6) {$monthdays = 151;} if ($bits[1] == 7) {$monthdays = 181;} if ($bits[1] == 8) {$monthdays = 212;} if ($bits[1] == 9) {$monthdays = 243;} if ($bits[1] == 10) {$monthdays = 273;} if ($bits[1] == 11) {$monthdays = 304;} if ($bits[1] == 12) {$monthdays = 334;} if ($leap eq "yes" && $bits[1] >2) { $monthdays = ($monthdays+1); } $amqtotal = ($amqday + $amqyeardays + $monthdays); return($amqtotal); } sub check_update{ unless (-e "$update_name"){ umask 000; } open(NUMBER,"$update_name") || &oops('$update_name'); $num =
~;
&user_image if $user_image eq "yes";
&title if $use_title eq "on";
&user_html if $use_user_html eq "yes";
print qq~ $TXT_search_results~; &menu; open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name'); @data =$TXT_no_match "; } else { &html_search_results; } if (($use_user_html_footer eq "yes") && ($use_hr_image eq "yes")) { print " "; &user_html_footer ; } if (($use_user_html_footer eq "yes") && ($use_hr_image ne "yes")) { &user_html_footer ; } print qq~ |