#!/usr/bin/perl
################################ FIREBOOK #####################################
# firebook.cgi #
###############################################################################
# [i-dreams.net] - guestbook #
# open-source software #
# - see licence at http://scripts.i-dreams.net/licence - #
# #
# =========================================================================== #
# #
# Version: 5.4 #
# Release: 05.05.2007 #
# Author: Karl Tschetschonig #
# URL: http://scripts.i-dreams.net #
# E-Mail: karl\@i-dreams.net #
# ICQ: 114294955 #
# #
###############################################################################
#use CGI::Carp qw(fatalsToBrowser);
use Time::Local;
alarm(40);
######## EDIT THESE PATHS FOR MANUAL CONFIGURATION
### EXAMPLE
### $configpath = qq~/var/www/virtual/f650gs.eu/cgi-bin/firebook/config.pl~;
### $datadirpath = qq~/var/www/virtual/f650gs.eu/cgi-bin/firebook/data~;
### $configpath = qq~/var/www/virtual/f650gs.eu/schnuerpel_net/cgi-bin/firebook/config.pl~;
$configpath = qq~/var/www/virtual/f650gs.eu/schnuerpel_net/cgi-bin/firebook/config.pl~;
$datadirpath = qq~/var/www/virtual/f650gs.eu/schnuerpel_net/cgi-bin/firebook/data~;
####### EDIT THESE PATHS FOR MANUAL CONFIGURATION
$thisscriptcode = qq~gaestebuch~;
$thisversion = qq~5.4.11~;
if ($ENV{HTTP_REFERER}){ $tempurl = $ENV{HTTP_REFERER}; }
elsif($ENV{HTTP_HOST} && $ENV{REQUEST_URI}){ $tempurl = qq~http://$ENV{HTTP_HOST}$ENV{REQUEST_URI}~; }
elsif($ENV{HTTP_HOST} && $ENV{SCRIPT_NAME}){ $tempurl = qq~http://$ENV{HTTP_HOST}$ENV{SCRIPT_NAME}~; }
$lastslash = rindex($tempurl,"/");
$foundurl = substr($tempurl,0,$lastslash);
if ($0=~m#^(.*)\\#) {
$cgi_dir = "$1";
} elsif ($0=~m#^(.*)/# ) {
$cgi_dir = "$1";
} else {`pwd` =~ /(.*)/;
$cgi_dir = "$1";
}
$SIG{"__DIE__"} = sub {
my $error = shift;
chomp $error;
$error =~ s/\n/
\n/gs; # return \n as html
print $error, return unless defined $ENV{GATEWAY_INTERFACE};
$servername = $ENV{SERVER_NAME} || 'not found';
$referer = $ENV{HTTP_REFERER} || 'none';
$remote_user = $ENV{REMOTE_USER} || 'not found';
$query_string = $ENV{QUERY_STRING} || 'none';
$cookies = $ENV{HTTP_COOKIE} || 'none';
$formular = $ENV{REQUEST_METHOD} || 'none';
$serversoftware = $ENV{SERVER_SOFTWARE} || 'not found';
print header(-status=>"200 OK", -charset=>$charset);
print qq~
Error Occured!
|
An Error Occured! | |
|
| helpful information: |
| running system | $serversoftware |
| perl version | $] |
| script path | $cgi_dir/firebook.cgi|pl |
| script url | $foundurl |
| http referer | $referer |
| remote user | $remote_user |
| method | $formular |
| query string | $query_string |
| cookies | $cookies |
| You may contact the programmers on i-dreams.net for help.
» i-dreams.net support forums
|
|
~;
exit 0;
};
$cgi_dir =~ s/\\/\//ig;
$cgi_dir =~ s/^.:(.+?)/$1/ig;
if (-e "$cgi_dir/config.pl") { require "$cgi_dir/config.pl"; }
elsif (-e "config.pl") { require "config.pl"; }
elsif (-e "$configpath") { require "$configpath"; }
else { die "unable to open config file: config.pl"; }
if (-d "$ordnerdir/data") { $datadir = "$ordnerdir/data"; }
elsif (-d "$cgi_dir/data") { $datadir = "$cgi_dir/data"; }
elsif (-d "data") { $datadir = "data"; }
elsif (-d "$datadirpath") { $datadir = "$datadirpath"; }
else { die "unable to find data dir"; }
if (-e "$ordnerdir/firebook.pl") { $fi_ext = "pl"; }
else { $fi_ext = "cgi"; }
push(@INC, "$datadir/modules");
require "$datadir/admdat/level.dat";
$subsdir = qq~$datadir/subs~;
require "$subsdir/important.pl";
&readform;
$script = "$ordnerurl/firebook.$fi_ext";
$fisession = $INFO{'fisession'} || $FORM{'fisession'};
$nonew_session = 0;
@browser_accesses = split(/\|/, $browser_access);
foreach $test_browser (@browser_accesses) {
$test_browser = quotemeta($test_browser);
if ($ENV{'HTTP_USER_AGENT'} =~ m/$test_browser/i) {
$nonew_session = 1;
$fisession = "";
}
}
if (($fisession eq "") && !(%FORM) && ($action ne "redirectexit") && ($action ne "topentrys")) {
unless ($nonew_session) { &new_session(); }
}
unless ($skinchosen) { $skinchosen = "standard"; }
unless ($INFO{'skin'}) { $skin = $skinchosen; }
else { $skin = $INFO{'skin'}; }
unless ($INFO{'requskin'}) {
unless (-e "$datadir/skins/$skin/config.pl") { $skin = $skinchosen; $INFO{'skin'} = $skinchosen; }
require "$datadir/skins/$skin/config.pl";
}
else {
unless (-e "$datadir/skins/$INFO{'requskin'}/config.pl") { $skin = $skinchosen; $INFO{'skin'} = $skinchosen; $INFO{'requskin'} = $skinchosen; }
require "$datadir/skins/$INFO{'requskin'}/config.pl";
}
if (($action eq "login") || ($action eq "admin")) {
$INFO{'skin'} = "admin";
$skin = "admin";
}
if ((($action eq "edit") || ($action eq "kommedit")) && ($skin eq "admin")) { $skin = $skinchosen; $INFO{'skin'} = $skinchosen; $byadmin = 1; }
$fi_bilderurlsk = qq~$fi_bilderurl/skins/$skin~;
@onoff_autosett = qw/abackup savebaks stampbaks/;
@getvar_autosett = qw/file1 file2 bigger1 bigger2 older1 backupwhere backupmode backuppath actionstime movearchivdays deldays delarchivdays backupmail/;
@onoff_mmadmin = qw/mapakt maplink lueb forcegb/;
@getvar_mmadmin = qw/mapmoegl usecards/;
@onoff_ubbccontrol = qw/ubbc autolinkurls tabletags/;
@getvar_ubbccontrol = qw/imgres1 imgres2/;
@onoff_einstwicht = qw/act_sprachw wartung browserlanguage/;
@getvar_einstwicht = qw/fi_fbname sprache gzcomp ordnerurl ordnerdir fi_bilderurl bilderdir setofdatum sessionidtime timeout use_flock usetempfile faketruncation/;
@onoff_einstmail = qw/publiccopy mailusrwahl smtp_auth_required emailact emailact2 emailact3 emailact4 emailact5 emailact6 emailact10 formcheck/;
@getvar_einstmail = qw/admmail admname admmail2 mailprog mailtype sendmvia authuser authpass/;
@onoff_einstlayout = qw/htmlredir verkehrt beantw ebestseite allp editicon adminlink markpflicht nofree/;
@getvar_einstlayout = qw/maximumbei2 vorzdatum vorzdatum2 maxindex getnpages pophelp1 pophelp2 popsm1 popsm2 uplpop1 uplpop2 popsilly1 popsilly2 popcomm1 popcomm2/;
@onoff_einstsonst = qw/regcheck astats cookadmin cookadmusr cookusr cookbeitr clickit userregakt versioncheck/;
@getvar_einstsonst = qw/reglevel oftenused maxcount ebene1 ebene2 url_ssi browser_access/;
@onoff_einstmessage = qw/freisch message_val_check publicarchiv privatna editown addedit addeditadm mark_new kommentarakt kommentarbelow kommentarfade/;
@getvar_einstmessage = qw/bildermax anzahlZeichen kommentarpag kommentarnr/;
@onoff_einstfields = qw/versteckm nomailer actjavacheck sndcheck wicht_jabber wicht_url wicht_ort wicht_file wicht_icq wicht_aim wicht_yim wicht_msn wicht_skype wicht_state wicht_bewertung wicht_betreff wicht_name wicht_email wicht_namek wicht_emailk q_url q_ort q_state q_icq q_aim q_msn q_skype q_yim q_smilies q_headicon q_bewertung q_nosmile q_preview q_hidemail q_privatn q_file q_codeblink q_name q_email q_betreff q_jabber q_ubbc f_betreff f_state f_icq f_aim f_yim f_msn f_skype f_jabber f_bewertung f_name f_email f_url f_ort f_hidemail/;
@getvar_einstfields = qw/maximumbei zeich_betreff zeich_name zeich_message zeich_email zeich_url zeich_ort zeich_icq zeich_aim zeich_yim zeich_msn zeich_skype zeich_jabber zeich_namek zeich_emailk zeich_messagek mzeich_betreff mzeich_name mzeich_email mzeich_url mzeich_ort mzeich_icq mzeich_aim mzeich_yim mzeich_msn mzeich_skype mzeich_jabber/;
@onoff_einstattach = qw/attachakt attachzusatz showattached/;
@getvar_einstattach = qw/stwidth stheight limit dirlimit filetypes/;
@onoff_spamfilter = qw/spam_guests spam_users spam_usersa spam_admins spam_toadmin spam_touser spam_error/;
@getvar_spamfilter = qw/aggressive/;
@onoff_guardadmin = qw/deny_proxy notify_proxy addip_proxy deny_referer notify_referer addip_referer deny_harvester notify_harvester addip_harvester deny_request notify_request addip_request deny_string notify_string addip_string deny_script notify_script addip_script refon stealthurl/;
@getvar_guardadmin = qw/black_proxy black_referer black_harvester black_request black_string/;
@getvar_skinsystem = qw/skinchosen/;
@getvar_all = (@getvar_einstfields, @getvar_autosett, @getvar_mmadmin, @getvar_ubbccontrol, @getvar_einstwicht, @getvar_einstmail, @getvar_einstlayout, @getvar_einstsonst, @getvar_einstmessage, @getvar_einstattach, @getvar_spamfilter, @getvar_guardadmin, @getvar_skinsystem);
@onoff_all = (@onoff_einstfields, @onoff_autosett, @onoff_mmadmin, @onoff_ubbccontrol, @onoff_einstwicht, @onoff_einstmail, @onoff_einstlayout, @onoff_einstsonst, @onoff_einstmessage, @onoff_einstattach, @onoff_spamfilter, @onoff_guardadmin);
@onoff_skineinst = qw/bewgraphics smileys popsmiley headsmilies quick_active/;
@getvar_skineinst = qw/smiliesrow smiliesrowquick bimage logourl logolink useonlinehost/;
if ($browserlanguage == 1) {
$acceptedlanguage = "$ENV{'HTTP_ACCEPT_LANGUAGE'}";
($reallanguage, $dummy) = split(/\-/, $acceptedlanguage);
@language_contents = &opendirectory("$datadir/language");
foreach $line (@language_contents){
if (($line ne ".") && ($line ne "..")){
$cutsprache = substr($line, 0, 2);
if ($cutsprache eq "$reallanguage") {
unless ($INFO{'lang'}) { $INFO{'lang'} = $line; }
}
}
}
}
if ($sprache ne "") {
if ($INFO{'lang'} ne "") { require "$datadir/language/$INFO{'lang'}/global.lng"; $sprache2 = "$INFO{'lang'}"; }
else { require "$datadir/language/$sprache/global.lng"; $sprache2 = "$sprache"; }
}
else { require "$datadir/language/english/global.lng"; $sprache2 = "english"; }
$datainc = "$datadir/impdat/data.inc";
&openfile("$datainc","datainc");
require "$subsdir/always.pl";
%director=(
'admin',"admin",
'admreg',"register",
'admreg2',"register",
'archiv',"messageothers",
'archivback',"archive",
'archivdel',"archive",
'autosett',"autosett",
'autosett2',"autosett",
'automove',"message2",
'badwords',"protection",
'badwords2',"protection",
'bann',"protection",
'bann2',"protection",
'bestseite',"message",
'checkit',"register",
'cook',"login",
'deleteit',"edit",
'editall',"editall",
'editall2',"editall",
'editentries',"editsum",
'editentries2',"editsum",
'editlogin',"login",
'edit',"edit",
'edit2',"edit",
'einst',"settings",
'einst2',"settings2",
'einstattach',"attachcontrol",
'formail',"mailer",
'formail2',"mailer",
'freisch',"archive",
'freisch2',"archive",
'guardadmin',"protection",
'guardadmin2',"protection",
'showmessage',"messageothers",
'help',"help",
'idreams',"admin",
'inputmanage',"inputmanage",
'inputmanage2',"inputmanage",
'komm',"komm",
'komm2',"komm",
'kommedit',"kommedit",
'kommedit2',"kommedit",
'login',"login",
'mail',"mailer",
'mail2',"mailer",
'message',"message",
'message2',"message2",
'messageindex',"messageindex",
'mlist',"mailer",
'mlist2',"mailer",
'mmadmin',"mmadmin",
'mmadmin2',"mmadmin",
'newadmin',"login",
'newadmin2',"login",
'newskin',"skinsystem",
'owntemplates',"owntemplates",
'owntemplates2',"owntemplates",
'owntemplates3',"owntemplates",
'popsmiley',"smilies",
'privatn',"messageothers",
'showmm',"membermap",
'showclicklog',"clicklog",
'sillystats',"sillystats",
'smilies',"smilies",
'smilies2',"smilies",
'spamfilter',"spamfilter",
'spamfilter2',"spamfilter",
'sprach',"language",
'sprach2',"language",
'sprach3',"language",
'such',"search",
'such2',"search",
'skinsystem',"skinsystem",
'skinsystem2',"skinsystem2",
'syntaxh',"skinsystem",
'topentrys',"topentrys",
'ubbccontrol',"ubbccontrol",
'ubbccontrol2',"ubbccontrol2",
'uploadmanager',"attachcontrol",
'userreg',"register",
'validate',"validate",
'writemm',"membermap",
'writemm2',"membermap",
);
if (-e "$ordnerdir/backup.lock") {
$letzter_zugriff_backup = (stat("$ordnerdir/backup.lock"))[9];
if ((time - $letzter_zugriff_backup) > 600) {
&dounlink("$ordnerdir/backup.lock");
}
else {
$wartung = 1;
}
}
unless ($wartung == 1 and ($action eq '') || ($action eq 'message') || ($action eq 'message2')) {
if ($director{$action}) {
require "$subsdir/$director{$action}.pl";
if (-e "$datadir/language/$sprache2/$director{$action}.lng") {
require "$datadir/language/$sprache2/$director{$action}.lng";
}
}
else {
require "$subsdir/messageindex.pl";
}
}
if (($clickit == 1) || ($astats == 1)) {
require "$subsdir/clicklognew.pl";
if ($clickit == 1) { &clicklog; }
if ($astats == 1) { &astats; }
}
$smiliespath = "$datadir/language/$sprache2/smilies.txt";
$headsmiliespath = "$datadir/language/$sprache2/smilieshead.txt";
$mailpath = "$datadir/language/$sprache2/mail.txt";
$mail2path = "$datadir/language/$sprache2/mail2.txt";
$mail3path = "$datadir/language/$sprache2/mail3.txt";
$mail4path = "$datadir/language/$sprache2/mail4.txt";
$mail5path = "$datadir/language/$sprache2/mail5.txt";
$mail6path = "$datadir/language/$sprache2/mail6.txt";
$mail7path = "$datadir/language/$sprache2/mail7.txt";
$mail8path = "$datadir/language/$sprache2/mail8.txt";
$mail9path = "$datadir/language/$sprache/mail9.txt"; ### immer auf $sprache weil Backup
$mail10path = "$datadir/language/$sprache2/mail10.txt";
$mail11path = "$datadir/language/$sprache2/mail11.txt";
$mail12path = "$datadir/language/$sprache2/mail12.txt";
$mail13path = "$datadir/language/$sprache2/mail13.txt";
@menus = ("$txt_gl{'13'}","$txt_gl{'6'}","$txt_gl{'7'}","$txt_gl{'8'}","$txt_gl{'9'}","$txt_gl{'10'}","$txt_gl{'11'}","$txt_gl{'12'}");
$countmenus = @menus;
&banning;
&check_sessions;
$scriptactions = qq~lang=$sprache2;skin=$INFO{'skin'};fisession=$fisession;action~;
$scriptactionsnosk = qq~lang=$sprache2;fisession=$fisession;action~;
if ($INFO{'preview'} == 1) {
$scriptactions = "preview=1;".$scriptactions;
$scriptactionsnosk = "preview=1;".$scriptactions;
}
if ($ordnerurl eq "") {
$script = "$ENV{'SCRIPT_NAME'}";
$script2 = "$ENV{'SCRIPT_NAME'}";
$scriptac = "$ENV{'SCRIPT_NAME'}?$scriptactions";
$fi_scriptacnoskin = "$ENV{'SCRIPT_NAME'}?$scriptactionsnosk";
$fi_script = $script;
$fi_scriptac = $scriptac;
}
else {
$script = "$ordnerurl/firebook.$fi_ext";
$script2 = "$ordnerurl/firebook.$fi_ext";
$scriptac = "$ordnerurl/firebook.$fi_ext?$scriptactions";
$fi_scriptacnoskin = "$ordnerurl/firebook.$fi_ext?$scriptactionsnosk";
$fi_script = $script;
$fi_scriptac = $scriptac;
}
$fi_scriptpr = qq~$script?skin=print;lang=$sprache2~;
$hiddenscro = qq~~;
$hiddenscro_os = qq~~;
if ($adminlink == 1) { $fi_admin = qq~$txt_gl{'2'}~; }
else { $fi_admin = ""; }
if (($deny_proxy) || ($deny_referer) || ($deny_harvester) || ($deny_request) || ($deny_string) || ($deny_script)) {
require "$subsdir/guard.pl";
&guard;
}
if (%FORM) { &refcheck; }
if ($cgipost == 1) {
unless ($allkeys) {
&fatal_error("$txt_gl{'16'} $limit2 $txt_gl{'17'}");
}
}
if ($wartung == 1 and ($action eq '') || ($action eq 'message') || ($action eq 'message2')) {
require "$subsdir/maintenance.pl";
&wartung;
}
if ($action eq "message") { $fi_addmsg = qq~$txt_gl{'3'}~; }
else { $fi_addmsg = qq~$txt_gl{'3'}~; }
if (($action eq "") && ($INFO{'suche'} eq "") && ($INFO{'show'} ne "archiv") && ($INFO{'start'} == 0)) { $fi_showentrys = qq~$txt_gl{'1'}~; }
else { $fi_showentrys = qq~$txt_gl{'1'}~; }
$fi_helplink = qq~$txt_gl{'15'}~;
if ($action ne "") { &viewpages;
if ($fi_pages eq "") { $fi_pages = qq~1~; }
}
$fi_menu = "[ $fi_addmsg ] [ $fi_showentrys | $txt_gl{'4'} : $fi_pages] $fi_admin";
if ($userregakt != 1) { $fi_reglink = ""; }
elsif ($action eq "userreg") { $fi_reglink = "$txt_gl{'14'}"; }
else { $fi_reglink = qq~$txt_gl{'14'}~; }
if ($action eq '') { &actions; &messageindex;}
else { &$action; }