#!/usr/local/bin/perl -w # Ultimate Bulletin Board (UBB) # This entire program is copyright Infopop Corporation. # For more info on the Ultimate Bulletin Board and other Infopop # Products/Services, visit: http://www.infopop.com # You may not distribute this program in any manner, modified or otherwise, without the express, written consent of Infopop Corporation. # You may make modifications, but only for your own use and within the confines of the UBB License Agreement (see our website for that). # Note: if you modify ANY code within the UBB, we at Infopop Corporation cannot offer you support! use strict; use CGI ':standard'; use CGI::Carp qw(fatalsToBrowser carpout); use CGI qw(:cgi-lib); use vars qw(%vars_config %vars_misc %vars_registration %vars_forums %vars_styles %vars_display %vars_style %vars_email %vars_time %vars_search %common_words %vars_wordlets %vars_wordlets_err %vars_wordlets_email @ubber %GotTime @memberslist @login @session $username $password $last_login_dt $session_login_dt $last_login_j $session_login_j $days_prune $InfopopCopyright $ThisHTML %in %ProfileNumber $memlistopen $CurrentTab %template $template %template_match $page_background $Hiddens $Legend $LoginWording $LastLoginTime $MainButtonsLine $TableWidth2 $ContactLine $pubname $user_topic_view $user_number $direct_to $cgi_ext $exact_path $TBT $TBB $Header $Footer $EmailHeader $show_logout); eval { # Get the script location: UNIX / or Windows / ($0 =~ m,(.*)/[^/]+,) && unshift (@INC, "$1"); # Get the script location: Windows \ ($0 =~ m,(.*)\\[^\\]+,) && unshift (@INC, "$1"); require "vars_config.cgi"; require "ubb_lib.cgi"; require "ubb_lib_time.cgi"; require "$vars_config{VariablesPath}/vars_display.cgi"; require "$vars_config{VariablesPath}/vars_misc.cgi"; require "$vars_config{VariablesPath}/vars_email.cgi"; require "$vars_config{VariablesPath}/vars_style_1.cgi"; require "$vars_config{VariablesPath}/vars_time.cgi"; require "$vars_config{VariablesPath}/vars_search.cgi"; require "$vars_config{VariablesPath}/vars_registration.cgi"; require "$vars_config{VariablesPath}/vars_template_match.cgi"; require "$vars_config{VariablesPath}/vars_wordlets.cgi"; require "$vars_config{VariablesPath}/vars_wordlets_err.cgi"; require "$vars_config{NonCGIPath}/Templates/public_common.pl"; }; if ($@) { print "Error including required files: $@\n"; print "Make sure these files exist, permissions are set properly, and paths are set correctly. $@"; exit; } $template = \%template; # set main buttons options $MainButtonsLine = &MainButtonOptions; # in ubb_lib.pl ReadParse(); # standard argument my $ubb = $in{ubb}; my $skip_cookie_check; my $logoff; if ($ubb eq "clearcookies") { require "$vars_config{CGIPath}/ubb_lib_misc.cgi"; &clear_cookies; exit; } #end clearcookies # perform user login? if ($ubb eq "do_login") { $skip_cookie_check = "true"; require "$vars_config{CGIPath}/ubb_lib_2.cgi"; my @user_info = &verify_id("$in{username}", "$in{password}"); my $pubname = $user_info[0]; my $dp = $user_info[1]; my $profile_number = $user_info[2]; if ($dp eq "") { $dp = "$vars_display{DaysPruneDefault}"; } my $cookie = cookie(-name=> "ubber$vars_config{Cookie_Number}", -value=> [$in{username}, $in{password}, $pubname, $dp, $profile_number], -expires=> '+2y'); $username = $in{username}; print header(-cookie=>[$cookie]); # display refer page if (($in{refer} ne '') && ($in{refer} !~ /logoff$/) && ($in{refer} !~ /cookies$/)) { # take viewer back to topic &set_page_elements; &Transition("$in{refer}", "$vars_wordlets{thanks_for_login}", "$in{refer}"); exit; } else { $ubb = ""; } } # end do login # perform user logoff? if ($ubb eq "logoff") { $skip_cookie_check = "true"; my $cookie = cookie(-name=> "ubber$vars_config{Cookie_Number}", -value=> ['', ''], -expires=> '-2y'); print header(-cookie=>[$cookie]); # confirm logoff &set_page_elements; &StandardHTML($vars_wordlets{logged_off}); } # end logoff #retrieve cookies! @ubber = cookie("ubber$vars_config{Cookie_Number}"); if ($ubber[0] ne "") { $username = $ubber[0]; } if ($ubber[1] ne "") { $password = $ubber[1]; } if ($ubber[2] ne "") { $pubname = $ubber[2]; } if ($ubber[3] ne "") { $user_topic_view = $ubber[3]; } if ($ubber[4] ne "") { $user_number = $ubber[4]; } @login = cookie("login$vars_config{Cookie_Number}"); if ($login[0] ne "") { $last_login_dt = $login[0]; } if ($login[1] ne "") { $last_login_j = $login[1]; } @session = cookie("session$vars_config{Cookie_Number}"); if ($session[0] ne "") { $session_login_dt = $session[0]; } if ($session[1] ne "") { $session_login_j = $session[1]; } # in case this is a new visitor! if ($last_login_dt eq "") { $last_login_dt = "NEW"; } # set login cookie, if necessary if ($skip_cookie_check ne "true") { if ($session_login_dt eq "") { &GetDateTime; # set session cookie: # this is a temp cookie that stores previous last login my $cookie1 = cookie(-name=> "session$vars_config{Cookie_Number}", -value=> [$last_login_dt, $last_login_j]); # set new last login my $cookie2 = cookie(-name=> "login$vars_config{Cookie_Number}", -value=> [$GotTime{LastLoginDT}, $GotTime{LastLoginJulian}], -expires=> '+1y'); print header(-cookie=>[$cookie1, $cookie2]); } else { unless (($ubb eq "submit_registration") || ($ubb eq "edit_profile")) { print header; } } } #if not do_login # members only acess check if ($vars_display{MembersOnlyAccess} eq "YES") { if (($username eq "") || ($logoff eq "true")) { unless ( ($ubb eq "agree") || ($ubb eq "coppa_agree") || ($ubb eq "register_page") || ($ubb eq "underage_register_page") || ($ubb eq "submit_registration") ) { &set_page_elements; do "$vars_config{NonCGIPath}/Templates/public_login.pl"; exit; } } } # all ubb options # is forum closed? if ($vars_misc{BBStatus} ne "ON") { &set_page_elements; &StandardHTML("$vars_misc{BBClosedMessage}"); } # forum summary if ($ubb eq "") { require "$vars_config{CGIPath}/ubb_forum_summary.cgi"; &forum_summary; exit; } if ($ubb eq "login") { &set_page_elements; do "$vars_config{NonCGIPath}/Templates/public_login.pl"; exit; } if ($ubb eq "agree") { require "$vars_config{CGIPath}/ubb_registration.cgi"; &do_agree; exit; } #end agree if ($ubb eq "coppa_agree") { require "$vars_config{CGIPath}/ubb_registration.cgi"; &coppa_agree; exit; } #end coppa_agree if ($ubb eq "register_page") { require "$vars_config{CGIPath}/ubb_registration.cgi"; ®ister_page; exit; } #end register_page if ($ubb eq "underage_register_page") { require "$vars_config{CGIPath}/ubb_registration.cgi"; &underage_register_page; exit; } #end underage_register_page if ($ubb eq "submit_registration") { require "$vars_config{CGIPath}/ubb_registration.cgi"; &submit_registration; exit; } #end submit_reg if ($ubb eq "forum") { if ($in{f} =~ /CAT:/) { my ($j, $cat_number); ($j, $cat_number) = split(/:/, $in{f}); $in{category} = $cat_number; require "$vars_config{CGIPath}/ubb_forum_summary.cgi"; &forum_summary; } else { require "$vars_config{CGIPath}/ubb_forum.cgi"; &get_forum; } exit; } #end forum if ($ubb eq "newtopic") { require "$vars_config{CGIPath}/ubb_new_topic.cgi"; &new_topic_page; exit; } #end newtopic if ($ubb eq "submit_new_topic") { require "$vars_config{CGIPath}/ubb_new_topic.cgi"; &submit_new_topic; exit; } #end submit_new_topic if ($ubb eq "get_topic") { require "$vars_config{CGIPath}/ubb_get_topic.cgi"; &get_topic($in{f}, $in{t}); exit; } #end get_topic if ($ubb eq "reply") { require "$vars_config{CGIPath}/ubb_new_reply.cgi"; &reply_page; exit; } #end reply if ($ubb eq "submit_new_reply") { require "$vars_config{CGIPath}/ubb_new_reply.cgi"; &submit_new_reply; exit; } #end submit_new_reply if ($ubb eq "get_profile") { require "$vars_config{CGIPath}/ubb_profile.cgi"; &get_profile; exit; } #end get_profile if ($ubb eq "edit_profile") { require "$vars_config{CGIPath}/ubb_profile.cgi"; &edit_profile; exit; } #end edit_profile if ($ubb eq "recent_user_posts") { require "$vars_config{CGIPath}/ubb_profile.cgi"; &recent_user_posts; exit; } #end recent_user_posts if ($ubb eq "get_ip") { require "$vars_config{CGIPath}/ubb_get_topic.cgi"; &get_ip; exit; } #end get_ip if ($ubb eq "delete_topic") { require "$vars_config{CGIPath}/ubb_topic_maint.cgi"; &delete_topic; exit; } #end delete_topic if (($ubb eq "close_topic") || ($ubb eq "open_topic")) { require "$vars_config{CGIPath}/ubb_topic_maint.cgi"; &topic_open_close; exit; } #end close_topic/open_topic if ($ubb eq "next_topic") { require "$vars_config{CGIPath}/ubb_get_topic.cgi"; &next_topic; exit; } #end next_topic if ($ubb eq "email") { require "$vars_config{CGIPath}/ubb_profile.cgi"; &email_user; exit; } #end email if ($ubb eq "edit_my_profile") { require "$vars_config{CGIPath}/ubb_profile.cgi"; &edit_my_profile; exit; } #end edit_my_profile if (($ubb eq "transfer") || ($ubb eq "transfer_topic")){ require "$vars_config{CGIPath}/ubb_topic_maint.cgi"; &transfer_topic; exit; } #end transfer if ($ubb eq "edit_post") { require "$vars_config{CGIPath}/ubb_edit_post.cgi"; &edit_post; exit; } #end edit_post if ($ubb eq "submit_edit") { require "$vars_config{CGIPath}/ubb_edit_post.cgi"; &submit_edit; exit; } #end submit_edit if ($ubb eq "get_daily") { require "$vars_config{CGIPath}/ubb_search.cgi"; &get_daily; exit; } #end get_daily if ($ubb eq "search") { require "$vars_config{CGIPath}/ubb_search.cgi"; &search; exit; } #end search if ($ubb eq "do_search") { require "$vars_config{CGIPath}/ubb_search.cgi"; if ( ($vars_search{IndexMethod} eq 'PERFORUM') && ($in{search_forum} eq 'ALL') ) { &do_search_2; } else { &do_search; } exit; } #end do_search if ($ubb eq "send_topic") { require "$vars_config{CGIPath}/ubb_friend.cgi"; &send_topic; exit; } #end send_topic if ($ubb eq "faq") { require "$vars_config{CGIPath}/ubb_lib_misc.cgi"; &faq; exit; } #end faq if ($ubb eq "ubb_code_page") { require "$vars_config{CGIPath}/ubb_lib_misc.cgi"; &ubb_code_page; exit; } #end ubb_code_page if ($ubb eq "lost_password") { require "$vars_config{CGIPath}/ubb_lib_misc.cgi"; &lost_password; exit; } #end lost_password if ($ubb eq "find_lost") { require "$vars_config{CGIPath}/ubb_lib_misc.cgi"; &find_lost; exit; } #end find_lost #default error-- obviously they do not know where they are going &StandardHTML("$vars_wordlets_err{dead_end}"); exit(0); # comply with SafePerl