#!/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!
Error Message $error
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; }