#!/usr/sbin/perl

# lyris.pl - Web interface to Lyris
# Copyright 1996-1998 Walter Shelby Group Ltd.
# All rights reserved worldwide.

BEGIN {
    require 5.003;
    use CGI;
    if (($CGI::OS eq 'NT') || ($CGI::OS eq 'UNIX')) { unshift (@INC, substr($0, 0, rindex($0, '/'))); }

    # include lyris library functions, such as debug, server connection, global, config, etc.
    require 'lyrislib.pl';
    require 'lyrispg.pl';
    &lyris::init;
}

    #print "Content-type: text/html\n\n";
    #open (STDERR, ">>STDOUT");
    #open (STDERR, ">\temp\log.txt");

package lweb;

    &lweb_main;

# execution starting point of lyris.pl
sub lweb_main {

    my $intime = $^T;
    $lweb::cgi = new CGI;

    # print a Content-Type header, unless we are running inside PERLEX (is this a PerlEx standard?)
    print STDOUT $lweb::cgi->header unless $CGI::PERLEX;

    &lyris::init_each_time();
    if ($lyris::user_allowed != 1) {
        &lyris::message("user's IP address has not been set up for this Lyris server");
    }

    if (length($lweb::cgi->param('site')) > 0) {
        $lyris::site = $lweb::cgi->param('site');
        if (length($lyris::site) < 1) { &lweb::message ('Site has no value'); }
    }
    else {
        $lweb::cgi->param('site', $lyris::site);
    }

    # determine & set whether to use graphics on web page or not
    if ((index( $ENV{"HTTP_USER_AGENT"}, 'ynx') > 0) && (length($lweb::cgi->param('text_mode') < 1))) { $lweb::text_mode = 1; }
    elsif ($lweb::cgi->param('graphics.x') > 0 ) { $lweb::text_mode = 1; }
    elsif ( length($lweb::cgi->param('graphbtn')) > 0) { $lweb::text_mode = 0; }
    elsif ( length($lweb::cgi->param('text_mode') < 1)) { $lweb::text_mode = 0; }
    else { $lweb::text_mode = $lweb::cgi->param('text_mode'); }
    $lweb::cgi->param('text_mode', $lweb::text_mode);

    if ($lyris::user_allowed != 1)                         { &lweb::not_allowed; }
    elsif ($lweb::cgi->param('page') eq 'Enter List')      { &lweb::list; }
    elsif (length($lweb::cgi->param('join')) > 0)          { &lweb::user_join; }
    elsif (length($lweb::cgi->param('visit')) > 0)         { &lweb::user1; }
    elsif (length($lweb::cgi->param('sub')) > 0)           { &lweb::list; }
    elsif (length($lweb::cgi->param('enter')) > 0)         { &lweb::list; }
    elsif ($lweb::cgi->param('help.x') > 0)                { &lweb::help; }
    elsif ($lweb::cgi->param('admin.x') > 0)               { &lweb::admin; }
    elsif ($lweb::cgi->param('sadmin.x') > 0)              { &lweb::site_admin; }
    elsif ($lweb::cgi->param('home.x') > 0)                { &lweb::home; }
    elsif (!defined $lweb::cgi->param('page'))             { &lweb::home; }
    elsif ($lweb::cgi->param('page') eq 'home')            { &lweb::home; }
    elsif ($lweb::cgi->param('page') eq 'topic')           { &lweb::topic; }
    elsif ($lweb::cgi->param('page') eq 'list')            { &lweb::list; }
    elsif ($lweb::cgi->param('page') eq 'Incoming Mail')   { &lweb::ck; &lweb::incoming_mail; }
    elsif ($lweb::cgi->param('page') eq 'incoming_mail2')  { &lweb::ck; &lweb::incoming_mail2; }
    elsif ($lweb::cgi->param('page') eq 'Outgoing Mail')   { &lweb::ck; &lweb::outgoing_mail; }
    elsif ($lweb::cgi->param('page') eq 'outgoing_mail2')  { &lweb::ck; &lweb::outgoing_mail2; }
    elsif ($lweb::cgi->param('page') eq 'List Admin')      { &lweb::list_admin; }
    elsif ($lweb::cgi->param('page') eq 'list_admin2')     { &lweb::ck; &lweb::list_admin2; }
    elsif ($lweb::cgi->param('page') eq 'list_del_am')     { &lweb::ck; &lweb::list_del_am; }
    elsif ($lweb::cgi->param('page') eq 'help')            { &lweb::help; }
    elsif ($lweb::cgi->param('page') eq 'admin')           { &lweb::admin; }
    elsif ($lweb::cgi->param('page') eq 'Server Admin')    { &lweb::server_admin; }
    elsif ($lweb::cgi->param('page') eq 'Sites')           { &lweb::ck; &lweb::server_site1; }
    elsif ($lweb::cgi->param('page') eq 'site_create')     { &lweb::ck; &lweb::site_create; }
    elsif ($lweb::cgi->param('page') eq 'site_create2')    { &lweb::ck; &lweb::site_create2; }
    elsif ($lweb::cgi->param('page') eq 'Site Admin')      { &lweb::site_admin; }
    elsif ($lweb::cgi->param('page') eq 'site_admin2')     { &lweb::ck; &lweb::site_admin2; }
    elsif ($lweb::cgi->param('page') eq 'Site Info')       { &lweb::ck; &lweb::site_edit1; }
    elsif ($lweb::cgi->param('page') eq 'site_edit2')      { &lweb::ck; &lweb::site_edit2; }
    elsif ($lweb::cgi->param('page') eq 'Topics')          { &lweb::ck; &lweb::site_topic1; }
    elsif ($lweb::cgi->param('page') eq 'site_topic2')     { &lweb::ck; &lweb::site_topic2; }
    elsif ($lweb::cgi->param('page') eq 'site_topic3')     { &lweb::ck; &lweb::site_topic3; }
    elsif ($lweb::cgi->param('page') eq 'List Info')       { &lweb::ck; &lweb::site_mlist2; }
    elsif ($lweb::cgi->param('page') eq 'Mailing lists')   { &lweb::ck; &lweb::site_mlist1; }
    elsif ($lweb::cgi->param('page') eq 'site_mlist2')     { &lweb::ck; &lweb::site_mlist2; }
    elsif ($lweb::cgi->param('page') eq 'site_mlist3')     { &lweb::ck; &lweb::site_mlist3; }
    elsif ($lweb::cgi->param('page') eq 'Documents')       { &lweb::ck; &lweb::site_doc1; }
    elsif ($lweb::cgi->param('page') eq 'Server Documents'){ &lweb::ck; &lweb::site_doc1; }
    elsif ($lweb::cgi->param('page') eq 'Statistics')      { &lweb::ck; &lweb::stats1; }
    elsif ($lweb::cgi->param('page') eq 'stats_send')      { &lweb::ck; &lweb::stats_send; }
    elsif ($lweb::cgi->param('page') eq 'site_doc2')       { &lweb::ck; &lweb::site_doc2; }
    elsif ($lweb::cgi->param('page') eq 'site_doc3')       { &lweb::ck; &lweb::site_doc3; }
    elsif ($lweb::cgi->param('page') eq 'Action Phrases')  { &lweb::ck; &lweb::site_act1; }
    elsif ($lweb::cgi->param('page') eq 'site_act2')       { &lweb::ck; &lweb::site_act2; }
    elsif ($lweb::cgi->param('page') eq 'site_act3')       { &lweb::ck; &lweb::site_act3; }
    elsif ($lweb::cgi->param('page') eq 'People')          { &lweb::ck; &lweb::site_peo1; }
    elsif ($lweb::cgi->param('page') eq 'site_peo2')       { &lweb::ck; &lweb::site_peo2; }
    elsif ($lweb::cgi->param('page') eq 'site_peo3')       { &lweb::ck; &lweb::site_peo3; }
    elsif ($lweb::cgi->param('button') eq 'View Log Entry'){ &lweb::ck; &lweb::site_log2; }
    elsif ($lweb::cgi->param('page') eq 'Log')             { &lweb::ck; &lweb::site_log1; }
    elsif ($lweb::cgi->param('page') eq 'Members')         { &lweb::ck; &lweb::site_mem1; }
    elsif ($lweb::cgi->param('page') eq 'site_mem2')       { &lweb::ck; &lweb::site_mem2; }
    elsif ($lweb::cgi->param('page') eq 'site_mem3')       { &lweb::ck; &lweb::site_mem3; }
    elsif ($lweb::cgi->param('page') eq 'site_memcount')   { &lweb::ck; &lweb::site_memcount; }
    elsif ($lweb::cgi->param('page') eq 'site_memcountd')  { &lweb::ck; &lweb::site_memcount_by_date; }
    elsif ($lweb::cgi->param('page') eq 'user1')           { &lweb::user1; }
    elsif ($lweb::cgi->param('page') eq 'user_info')       { &lweb::user_info; }
    elsif ($lweb::cgi->param('page') eq 'user_join')       { &lweb::user_join; }
    elsif ($lweb::cgi->param('page') eq 'user_join2')      { &lweb::user_join2; }
    elsif ($lweb::cgi->param('page') eq 'user_leave1')     { &lweb::user_leave1; }
    elsif ($lweb::cgi->param('page') eq 'user_leave2')     { &lweb::user_leave2; }
    elsif ($lweb::cgi->param('page') eq 'user_contrib')    { &lweb::user_contrib; }
    elsif ($lweb::cgi->param('page') eq 'user_contrib2')   { &lweb::user_contrib2; }
    elsif ($lweb::cgi->param('page') eq 'user_read1')      { &lweb::user_read1; }
    elsif ($lweb::cgi->param('page') eq 'user_read2')      { &lweb::user_read2; }
    elsif ($lweb::cgi->param('page') eq 'Shutdown Server') { &lweb::ck; &lweb::server_shutdown1; }
    elsif ($lweb::cgi->param('page') eq 'shutdown2')       { &lweb::ck; &lweb::server_shutdown2; }
    elsif ($lweb::cgi->param('page') eq 'Server Config')   { &lweb::ck; &lweb::server_config1; }
    elsif ($lweb::cgi->param('page') eq 'server_config2')  { &lweb::ck; &lweb::server_config2; }
    elsif ($lweb::cgi->param('page') eq 'Auto-responders') { &lweb::ck; &lweb::respond1; }
    elsif ($lweb::cgi->param('page') eq 'respond2')        { &lweb::ck; &lweb::respond2; }
    elsif ($lweb::cgi->param('page') eq 'respond3')        { &lweb::ck; &lweb::respond3; }
    elsif ($lweb::cgi->param('page') eq 'Moderate')        { &lweb::ck; &lweb::list_moderate1; }
    elsif ($lweb::cgi->param('page') eq 'list_moderate1')  { &lweb::ck; &lweb::list_moderate1; }
    elsif ($lweb::cgi->param('page') eq 'list_moderate2')  { &lweb::ck; &lweb::list_moderate2; }
    elsif ($lweb::cgi->param('page') eq 'get_password')    { &lweb::get_password; }
    else {                                                  
        &Out::new_page;
        &Out::add('<h2>Undefined page: '.$lweb::cgi->param('page').'</h2>');
        &Out::send;
    }

    &lweb::debug_info;
    &lweb::message ("Total script time is ".(time - $^T)." seconds.<br>\n");
    if ($CGI::PERLEX) { &lweb::message ("This script execution time was ".($^T - $intime)." seconds.<br>\n"); }

    if ($lyris::debug eq 'yes') {
        print STDOUT "<pre>".$lweb::debug_log."</pre>";
    }

    # clear the CGI.pm object, just to be tidy    
    $lweb::cgi->delete_all();

    # clean up variables that are re-used
    undef $lweb::cgi;
    undef $lweb::debug_log;


    #print ("total timing is ".(time - $^T)." seconds.<br>\n");
}

