############################################################################### # Subs.pl # ############################################################################### # YaBB: Yet another Bulletin Board # # Open-Source Community Software for Webmasters # # Version: YaBB 1 Gold - SP 1.3.1 # # Released: December 2001; Updated April 18, 2003 # # Distributed by: http://www.yabbforum.com # # =========================================================================== # # Copyright (c) 2000-2003 YaBB (www.yabbforum.com) - All Rights Reserved. # # Software by: The YaBB Development Team # # with assistance from the YaBB community. # # Sponsored by: Xnull Internet Media, Inc. - http://www.ximinc.com # ############################################################################### $subsplver = "1 Gold - SP 1.3.1"; use subs 'exit'; $yymain = ""; # set body start to blank &readform; # parse the query &get_date; # get the current date/time $currentboard = $INFO{'board'}; if ($currentboard =~ m~/~){ &fatal_error($txt{'399'}); } if ($currentboard =~ m~\\~){ &fatal_error($txt{'400'}); } if ($currentboard ne '' && $currentboard !~ /\A[\s0-9A-Za-z#%+,-\.:=?@^_]+\Z/){ &fatal_error($txt{'399'}); } $pwseed ||= 'yy'; $user_ip = $ENV{'REMOTE_ADDR'}; if ($user_ip eq "127.0.0.1") { if ($ENV{'HTTP_CLIENT_IP'} && $ENV{'HTTP_CLIENT_IP'} ne "127.0.0.1") {$user_ip = $ENV{'HTTP_CLIENT_IP'};} elsif ($ENV{'X_CLIENT_IP'} && $ENV{'X_CLIENT_IP'} ne "127.0.0.1") {$user_ip = $ENV{'X_CLIENT_IP'};} elsif ($ENV{'HTTP_X_FORWARDED_FOR'} && $ENV{'HTTP_X_FORWARDED_FOR'} ne "127.0.0.1") {$user_ip = $ENV{'HTTP_X_FORWARDED_FOR'};} } $scripturl = qq~$boardurl/YaBB.$yyext~; $cgi = qq~$scripturl?board=$currentboard~; sub exit { local $| = 1; local $\ = ''; print ''; CORE::exit( $_[0] || 0 ); } sub header { my %params = @_; my $ret = ""; if ($params{'-status'}) { if ($yyIIS) { $ret .= "HTTP/1.0 $params{'-status'}\n"; } else { $ret .= "Status: $params{'-status'}\n"; } } $ret .= qq~Cache-Control: no-cache, must-revalidate\n~; $ret .= qq~Pragma: no-cache\n~; if ($params{'-cookie'}) { my(@cookie) = ref($params{'-cookie'}) && ref($params{'-cookie'}) eq 'ARRAY' ? @{$params{'-cookie'}} : $params{'-cookie'}; foreach (@cookie) { $ret .= "Set-Cookie: $_\n"; } } if ($params{'-location'}) { $ret .= "Location: $params{'-location'}\n"; } $params{'-charset'} = "; charset=$params{'-charset'}" if $params{'-charset'}; $params{'Content-Encoding'} = "Content-Encoding: $params{'Content-Encoding'}\n" if $params{'Content-Encoding'}; $ret .= "$params{'Content-Encoding'}Content-Type: text/html$params{'-charset'}\n\n"; return $ret; } sub cookie { my %params = @_; if ($params{'-expires'} =~ /\+(\d+)m/) { my ($sec,$min,$hour,$mday,$mon,$year,$wday) = gmtime(time + $1*60); $year += 1900; my @mos = ("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"); my @dys = ("Sun","Mon","Tue","Wed","Thu","Fri","Sat"); $mon = $mos[$mon]; $wday = $dys[$wday]; $params{'-expires'} = sprintf("%s, %02i-%s-%04i %02i:%02i:%02i GMT", $wday, $mday, $mon, $year, $hour, $min, $sec); } $params{'-path'} = " path=$params{'-path'};" if $params{'-path'}; $params{'-expires'} = " expires=$params{'-expires'};" if $params{'-expires'}; return "$params{'-name'}=$params{'-value'};$params{'-path'}$params{'-expires'}"; } sub redirectexit { print header(-status=>"302 Moved Temporarily", -location=>$yySetLocation); exit; } sub redirectinternal { &LoadIMs; # Load IM's if($currentboard) { if($INFO{'num'}) { require "$sourcedir/Display.pl"; &Display; } else { require "$sourcedir/MessageIndex.pl"; &MessageIndex; } } else { require "$sourcedir/BoardIndex.pl"; &BoardIndex; } exit; } sub template { if($yySetCookies1 || $yySetCookies2) { print header(-status=>"200 OK", -cookie=>[$yySetCookies1, $yySetCookies2], -charset=>$yycharset); } else { print header(-status=>"200 OK", -charset=>$yycharset); } $yyposition = $yytitle; $yytitle = "$mbname - $yytitle"; $yymenu = qq~$img{'home'}$menusep$img{'help'}$menusep$img{'search'}$menusep$img{'memberlist'}~; if($settings[7] eq 'Administrator') { $yymenu .= qq~$menusep$img{'admin'}~; } if($settings[7] eq 'Global Moderator' && $allow_mod == 1) { $yymenu .= qq~$menusep$img{'admin'}~; } if($regop != 1) { $regbut = qq~$menusep$img{'register'}~; } if($username eq 'Guest') { $yymenu .= qq~$menusep$img{'login'}$regbut~; } else { $yymenu .= qq~$menusep$img{'profile'}~; if($enable_notification) { $yymenu .= qq~$menusep$img{'notification'}~; } if ($regop == 1) { $yymenu .= qq~$menusep$img{'logout'}$menusep$img{'register'}~; } else { $yymenu .= qq~$menusep$img{'logout'}~; } } $yyimages = $imagesdir; fopen(TEMPLATE,"template.html") || die("$txt{'23'}: template.html"); @yytemplate =