90 lines
3.5 KiB
Perl
Executable File
90 lines
3.5 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
# ==================================================================
|
|
# Gossamer Forum -
|
|
#
|
|
# Website : http://gossamer-threads.com/
|
|
# Support : http://gossamer-threads.com/scripts/support/
|
|
# CVS Info :
|
|
# Revision : $Id: gforum.cgi,v 1.52.2.5 2003/10/10 20:30:01 jagerman Exp $
|
|
#
|
|
# Copyright (c) 2003 Gossamer Threads Inc. All Rights Reserved.
|
|
# Redistribution in part or in whole strictly prohibited. Please
|
|
# see LICENSE file for full details.
|
|
# ==================================================================
|
|
use strict;
|
|
use lib '/home/slowtwitch/forum.slowtwitch.com/cgi-bin/admin';
|
|
use GForum qw/:forum :user $DB $IN $CFG $USER $GUEST %HIDDEN $TEMPLATE_SET/;
|
|
use GForum::Template;
|
|
use GForum::Authenticate;
|
|
|
|
GForum::init('/home/slowtwitch/forum.slowtwitch.com/cgi-bin/admin');
|
|
|
|
main();
|
|
|
|
sub main {
|
|
# -------------------------------------------------------------------
|
|
# Display whatever page the user has requested
|
|
#
|
|
local $SIG{__DIE__} = \&GForum::fatal;
|
|
|
|
# Show the disabled page if the forum has been disabled
|
|
if ($CFG->{disabled} == 1) {
|
|
print $IN->header;
|
|
my $message = $CFG->{disabled_message};
|
|
$message =~ s/\n/<br>\n/g;
|
|
return GForum::Template->parse_print("disabled.html" => { message => \$message });
|
|
}
|
|
{
|
|
# If the user is banned, simply deny them access
|
|
my @expanded_bans = @{$CFG->{bans}};
|
|
for (@expanded_bans) {
|
|
if (/^(\d+\.\d+\.\d+\.)(\d+)-(\d+)$/ and $2 < $3) {
|
|
# Allows you to specify '123.45.67.89-123' to ban that range of IP's
|
|
for ($2 .. $3) {
|
|
push @expanded_bans, "$1$_";
|
|
}
|
|
next;
|
|
}
|
|
# Turn a ban into a regexp
|
|
my $ban = quotemeta($_);
|
|
# *'s match anything
|
|
$ban =~ s/\\\*/.*/g;
|
|
# ?'s match any single character
|
|
$ban =~ s/\\\?/./g;
|
|
if ($ENV{REMOTE_HOST} and $ENV{REMOTE_HOST} =~ /^$ban$/i or $ENV{REMOTE_ADDR} =~ /^$ban$/i) {
|
|
print $IN->header;
|
|
return GForum::Template->parse_print($CFG->{functions}->{banned}->{page}, { error => GForum::language('USER_BANNED') });
|
|
}
|
|
}
|
|
}
|
|
GForum::authenticate() or return; # False = stop!
|
|
|
|
if ($CFG->{disabled} == 2 and (not $USER or $USER->{user_status} != ADMINISTRATOR)) {
|
|
print $IN->header;
|
|
my $message = $CFG->{disabled_message};
|
|
$message =~ s/\n/<br>\n/g;
|
|
return GForum::Template->parse_print("disabled.html" => { message => \$message });
|
|
}
|
|
|
|
my $template_set = $IN->param('t');
|
|
if (not $template_set or $template_set !~ /^[\w-]+$/ or not -d "$CFG->{admin_root_path}/templates/$template_set" or $template_set =~ /^(?:help|admin|fileman|CVS)$/) {
|
|
$template_set = '';
|
|
}
|
|
else { # It's good!
|
|
$HIDDEN{t} = $template_set;
|
|
}
|
|
|
|
if ($USER) {
|
|
if ($USER->{user_show_racetags}) {
|
|
$DB->table('User')->update({ user_show_racetags => 0 }, { user_id => $USER->{user_id} });
|
|
print $IN->header . qq~Hidden <a href="#" onclick="return status_toggle()">(click to unhide)</a>~;
|
|
}
|
|
else {
|
|
$DB->table('User')->update({ user_show_racetags => 1 }, { user_id => $USER->{user_id} });
|
|
print $IN->header . qq~Viewable <a href="#" onclick="return status_toggle()">(click to hide)</a>~;
|
|
}
|
|
}
|
|
}
|
|
|
|
1;
|