discourse-legacysite-perl/site/forum.slowtwitch.com/cgi-bin/toggle.cgi
2024-06-17 21:49:12 +10:00

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;