#!/usr/bin/perl -w
$| = 1;

###############################################################################
###############################################################################
# YaWPS - Yet another web Portal System                                       #
#-----------------------------------------------------------------------------#
# yawps.cgi - this code initiates everything ;-)                              #
#                                                                             #
# Copyright (C) 2001 by d3m1g0d (www.demigodz.org, webmaster@demigodz.org)    #
#                                                                             #
# This program is free software; you can redistribute it and/or               #
# modify it under the terms of the GNU General Public License                 #
# as published by the Free Software Foundation; either version 2              #
# of the License, or (at your option) any later version.                      #
#                                                                             #
# This program is distributed in the hope that it will be useful,             #
# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
# GNU General Public License for more details.                                #
#                                                                             #
# You should have received a copy of the GNU General Public License           #
# along with this program; if not, write to the Free Software                 #
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. #
#                                                                             #
#                                                                             #
# File: yawps.cgi, Last modified: 13:06 09/25/2001                            #
###############################################################################
###############################################################################

$scriptname = "YaWPS";
$scriptver = "0.1.2";

eval {
	require "../config.pl";
	require "$lang";
	require "$sourcedir/subs.pl";

	if ($IIS != 2) {
		if ($IIS == 0) {
			if ($ENV{'SERVER_SOFTWARE'} =~ m!IIS!) { $IIS = 1; }
		}
		if (($IIS) && ($0 =~ m!(.*)(\\|\/)!)) { chdir($1); }
		if ($IIS == 1) { print "HTTP/1.0 200 OK\n"; }
	}
};
if ($@) {
	print "Content-type: text/html\n\n";
	print qq~<h1>Software Error:</h1>
Execution of <b>$scriptname</b> has been aborted due a compilation error:<br>
<pre>$@</pre>
<p>If this problem persits, please contact the webmaster and inform him about date and time you've recieved this error.</p>
~;
	exit;
}

getcgi();
getdate();
logips();
loadcookie();
loaduser();
logvisitors();

if ($action eq "register") { require "$sourcedir/user.pl"; register(); }
elsif ($action eq "register2") { require "$sourcedir/user.pl"; register2(); }
elsif ($action eq "login") { require "$sourcedir/user.pl"; login(); }
elsif ($action eq "login2") { require "$sourcedir/user.pl"; login2(); }
elsif ($action eq "logout") { require "$sourcedir/user.pl"; logout(); }
elsif ($action eq "reminder") { require "$sourcedir/user.pl"; reminder(); }
elsif ($action eq "reminder2") { require "$sourcedir/user.pl"; reminder2(); }
elsif ($action eq "editprofile") { require "$sourcedir/user.pl"; editprofile(); }
elsif ($action eq "editprofile2") { require "$sourcedir/user.pl"; editprofile2(); }
elsif ($action eq "viewprofile") { require "$sourcedir/user.pl"; viewprofile(); }
elsif ($action eq "memberlist") { require "$sourcedir/memberlist.pl"; mlist(); }
elsif ($action eq "postnews") { require "$sourcedir/topics.pl"; postnews(); }
elsif ($action eq "postnews2") { require "$sourcedir/topics.pl"; postnews2(); }
elsif ($action eq "viewnews") { require "$sourcedir/topics.pl"; viewnews(); }
elsif ($action eq "commentnews") { require "$sourcedir/topics.pl"; commentnews(); }
elsif ($action eq "topics") { require "$sourcedir/topics.pl"; topics(); }
elsif ($action eq "im") { require "$sourcedir/instantmessage.pl"; imindex(); }
elsif ($action eq "imremove") { require "$sourcedir/instantmessage.pl"; imremove(); }
elsif ($action eq "imsend") { require "$sourcedir/instantmessage.pl"; impost(); }
elsif ($action eq "imsend2") { require "$sourcedir/instantmessage.pl"; impost2(); }
elsif ($action eq "recommend") { require "$sourcedir/recommend.pl"; recommend(); }
elsif ($action eq "recommend2") { require "$sourcedir/recommend.pl"; recommend2(); }
elsif ($action eq "pollit") { require "$sourcedir/poll.pl"; pollit(); }
elsif ($action eq "pollit2") { require "$sourcedir/poll.pl"; pollit2(); }
elsif ($action eq "stats") { require "$sourcedir/stats.pl"; stats(); }
elsif ($action eq "links") { require "$sourcedir/links.pl"; links(); }
elsif ($action eq "addlink") { require "$sourcedir/links.pl"; addlink(); }
elsif ($action eq "addlink2") { require "$sourcedir/links.pl"; addlink2(); }
elsif ($action eq "redirect") { require "$sourcedir/links.pl"; redirect(); }
elsif ($action eq "admin") {
	$admin = qq~$cgi?action=admin~;
	if ($op eq "") { require "$sourcedir/admin.pl"; siteadmin(); }
	elsif ($op eq "siteadmin") { require "$sourcedir/admin.pl"; siteadmin(); }
	elsif ($op eq "siteconfig") { require "$sourcedir/admin.pl"; siteconfig(); }
	elsif ($op eq "siteconfig2") { require "$sourcedir/admin.pl"; siteconfig2(); }
	elsif ($op eq "welcomemsg") { require "$sourcedir/admin.pl"; welcomemsg(); }
	elsif ($op eq "welcomemsg2") { require "$sourcedir/admin.pl"; welcomemsg2(); }

	elsif ($op eq "managecats") { require "$sourcedir/admin.pl"; managecats(); }
	elsif ($op eq "reordercats") { require "$sourcedir/admin.pl"; reordercats(); }
	elsif ($op eq "removecat") { require "$sourcedir/admin.pl"; removecat(); }
	elsif ($op eq "createcat") { require "$sourcedir/admin.pl"; createcat(); }
	elsif ($op eq "manageboards") { require "$sourcedir/admin.pl"; manageboards(); }
	elsif ($op eq "reorderboards") { require "$sourcedir/admin.pl"; reorderboards(); }
	elsif ($op eq "reorderboards2") { require "$sourcedir/admin.pl"; reorderboards2(); }
	elsif ($op eq "modifyboard") { require "$sourcedir/admin.pl"; modifyboard(); }
	elsif ($op eq "createboard") { require "$sourcedir/admin.pl"; createboard(); }
	elsif ($op eq "setcensor") { require "$sourcedir/admin.pl"; setcensor(); }
	elsif ($op eq "setcensor2") { require "$sourcedir/admin.pl"; setcensor2(); }

	elsif ($op eq "polladmin") { require "$sourcedir/admin.pl"; polladmin(); }
	elsif ($op eq "createpoll") { require "$sourcedir/admin.pl"; createpoll(); }
	elsif ($op eq "editpoll") { require "$sourcedir/admin.pl"; editpoll(); }
	elsif ($op eq "editpoll2") { require "$sourcedir/admin.pl"; editpoll2(); }
	elsif ($op eq "editpoll2a") { require "$sourcedir/admin.pl"; editpoll2a(); }
	elsif ($op eq "editpoll3") { require "$sourcedir/admin.pl"; editpoll3(); }
	elsif ($op eq "resetpoll") { require "$sourcedir/admin.pl"; resetpoll(); }
	elsif ($op eq "deletepoll") { require "$sourcedir/admin.pl"; deletepoll(); }

	elsif ($op eq "verifynews") { require "$sourcedir/admin.pl"; verifynews(); }
	elsif ($op eq "verifynews2") { require "$sourcedir/admin.pl"; verifynews2(); }
	elsif ($op eq "modifynews") { require "$sourcedir/admin.pl"; modifynews(); }
	elsif ($op eq "modifynews2") { require "$sourcedir/admin.pl"; modifynews2(); }
	elsif ($op eq "modifynews3") { require "$sourcedir/admin.pl"; modifynews3(); }
	elsif ($op eq "movetopic") { require "$sourcedir/admin.pl"; movetopic(); }
	elsif ($op eq "topicadmin") { require "$sourcedir/admin.pl"; topicadmin(); }
	elsif ($op eq "topicadmin2") { require "$sourcedir/admin.pl"; topicadmin2(); }
	elsif ($op eq "topicadmin3") { require "$sourcedir/admin.pl"; topicadmin3(); }
	else { require "$sourcedir/admin.pl"; siteadmin(); }
}
elsif ($action eq "forum") {
	$forum = qq~$cgi?action=forum&amp;board=$currentboard~;
	if ($currentboard ne "" and $op eq "") {
		open(FILE, "$boardsdir/$currentboard.dat") || error("$err{'001'} $boardsdir/$currentboard.dat");
		lock(FILE);
		chomp(@boardinfo=<FILE>);
		unlock(FILE);
		close(FILE);

		$boardname = "$boardinfo[0]";
		$boardmoderator = "$boardinfo[2]";

		open(MODERATOR, "$memberdir/$boardmoderator.dat");
		lock(MODERATOR);
		chomp(@modprop = <MODERATOR>);
		unlock(MODERATOR);
		close(MODERATOR);

		$moderatorname = "$modprop[1]";

		require "$sourcedir/forum.pl";
		messageindex();
	}
	elsif ($currentboard ne "" and $op eq "display") { require "$sourcedir/forum.pl"; display(); }
	elsif ($currentboard ne "" and $op eq "post" and $action ne "index") { require "$sourcedir/forum.pl"; post(); }
	elsif ($currentboard ne "" and $op eq "post2" and $action ne "index") { require "$sourcedir/forum.pl"; post2(); }
	elsif ($currentboard ne "" and $op eq "notify" and $action ne "index") { require "$sourcedir/forum.pl"; notify(); }
	elsif ($currentboard ne "" and $op eq "notify2" and $action ne "index") { require "$sourcedir/forum.pl"; notify2(); }
	elsif ($currentboard ne "" and $op eq "modify" and $action ne "index") { require "$sourcedir/forum.pl"; modifymessage(); }
	elsif ($currentboard ne "" and $op eq "modify2" and $action ne "index") { require "$sourcedir/forum.pl"; modifymessage2(); }
	elsif ($currentboard ne "" and $op eq "movethread" and $action ne "index") { require "$sourcedir/forum.pl"; movethread(); }
	elsif ($currentboard ne "" and $op eq "movethread2" and $action ne "index") { require "$sourcedir/forum.pl"; movethread2(); }
	elsif ($currentboard ne "" and $op eq "removethread" and $action ne "index") { require "$sourcedir/forum.pl"; removethread(); }
	elsif ($currentboard ne "" and $op eq "removethread2" and $action ne "index") { require "$sourcedir/forum.pl"; removethread2(); }
	elsif ($currentboard ne "" and $op eq "lockthread" and $action ne "index") { require "$sourcedir/forum.pl"; lockthread(); }
	elsif ($currentboard ne "" and $op eq "printpage" and $action ne "index") { require "$sourcedir/forum.pl"; printpage(); }
	elsif ($currentboard eq "") { require "$sourcedir/forum.pl"; boardindex(); }
}
elsif ($action eq "showsmilies") { require "$datadir/smilies.pl"; }
else { print_main(); }

exit; # all done
