#!/usr/bin/perl # # This script is a part of # Trouble Ticket Express package. # http://www.troubleticketexpress.com # # COPYRIGHT: 2002-2005, United Web Coders # http://www.unitedwebcoders.com # # $Revision: 196 $ # $Date: 2006-07-12 10:48:30 -0400 (Wed, 12 Jul 2006) $ # # my $configfile; my $VERSION = '2.22'; my $REVISION; # ==== NOTHING TO EDIT BELOW THIS LINE. PLS DO NOT CROSS ======================= BEGIN { $REVISION = '$Revision: 196 $'; if ($REVISION =~ /(\d+)/) { $REVISION = $1; } my $sd = _findsd() || '.'; $sd =~ /(.*)/; $sd = $1; eval "use lib '$sd'"; if ($@) { _fatalbegin($@); exit 0; } if ($sd ne '.') { chdir $sd; } eval "use TTXConfig"; if ($@) { if (-f "$sd/TTXConfig.pm") { _fatalbegin($@); } else { _fatalbegin("Incomplete package. Please upload all *.cgi and *.pm files to your web server"); } exit 0; } sub _fatalbegin { print <

Fatal error: $_[0]

Trouble Ticket Express Help Desk
EOT print "
SDir: $sd
\n"; foreach my $key (sort keys %ENV) { print "$key: $ENV{$key}
\n"; } print "\n\n"; } sub _findsd { my $dir = $ENV{'SCRIPT_FILENAME'}; $dir = $ENV{'PATH_TRANSLATED'} if $ENV{'PATH_TRANSLATED'} ne undef; $dir = $ENV{'pathTranslated'} if $ENV{'pathTranslated'} ne undef; return $ENV{'PWD'} if $dir eq undef; my @path = split(/\/|\\/, $dir); pop(@path); $dir = join("\/", @path); return $dir; } } use strict; use CGI; use TTXConfig; use TTXSetup; use TTXData; # # Global vars # my $cfg; my $query; my %data; print "Content-type: text/html\n\n"; # # Read config # $configfile = 'ttxcfg.cgi' if $configfile eq undef; $cfg = TTXConfig->new($configfile); TTXData::set('CONFIG', $cfg); my $freshsetup = 1 if $cfg->error() ne undef; if ($cfg->get('cfgref') ne undef) { my $regcfg = TTXConfig->new($cfg->get('cfgref')); $cfg = $regcfg; $freshsetup = 1 if $cfg->error() ne undef; TTXData::set('CONFIG', $cfg); } # # Parse input # $query = new CGI; # # Validate user if not fresh setup and id provided # if (!$freshsetup && $query->param('cmd') ne 'logout') { if ($query->param('pwd') ne undef) { if ($cfg->get('admpwd') eq $query->param('pwd')) { my $seed = join ('', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]); $cfg->set('admpwdseed', $seed); $cfg->save(); my $cpwd = crypt($cfg->get('admpwd'), $seed); $cpwd =~ s/^..//; $query->param(-name => 'pwd', value => $cpwd); } if (crypt($cfg->get('admpwd'), $cfg->get('admpwdseed')) ne $cfg->get('admpwdseed').$query->param('pwd')) { login(); } else { my $seed = join ('', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]); $cfg->set('admpwdseed', $seed); $cfg->save(); my $cpwd = crypt($cfg->get('admpwd'), $seed); $cpwd =~ s/^..//; $query->param(-name => 'pwd', value => $cpwd); } } elsif ($cfg->get('admpwd') ne undef) { login(); } else { $query->param(-name => 'cmd', -value => 'setup3'); } } header(); # # Execute command # my $cmd = $query->param('cmd'); $cmd = 'setup1' if $cmd eq undef; if ($cmd eq 'setup1') { TTXSetup::setup1($cfg, $query); } elsif ($cmd eq 'setup2') { TTXSetup::setup2($cfg, $query); } elsif ($cmd eq 'setup3') { TTXSetup::setup3($cfg, $query); } elsif ($cmd eq 'setup4') { TTXSetup::setup4($cfg, $query); } elsif ($cmd eq 'setup5') { TTXSetup::setup5($cfg, $query); } elsif ($cmd eq 'grps') { TTXSetup::grps($cfg, $query); } elsif ($cmd eq 'inventory') { TTXSetup::inventory($cfg, $query); } elsif ($cmd eq 'logout') { if (!$freshsetup) { $cfg->set('admpwdseed', ''); $cfg->save(); } dologin(); } elsif ($cmd eq 'login') { dologin(); } elsif ($cmd eq 'smtplog') { smtplog(); } elsif ($cmd eq 'sysinfo') { TTXSetup::sysinfo($cfg, $query); } footer($ENV{'QUERY_STRING'} !~ /pwd=/ ? 1:0); #======================================================================= dologin sub dologin { my $error; if ($query->param('do')) { if ($query->param('passwd') eq undef || $query->param('passwd') ne $cfg->get('admpwd')) { $error = "Invalid password"; } else { my $seed = join ('', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]); $cfg->set('admpwdseed', $seed); $cfg->save(); my $cpwd = crypt($cfg->get('admpwd'), $seed); $cpwd =~ s/^..//; $query->param(-name => 'pwd', value => $cpwd); $query->param(-name => 'do', -value => ''); TTXSetup::setup4($cfg, $query); return; } } $error = "
Error: $error

" if $error ne undef; print <Please login

$error
Administrator password


Subscribe to United Web Coders news.
Stay tuned for new software releases and yet to be documented features.

Use RSS news feed.
or Subscribe to our mail list

Email:

Delivered by FeedBurner
EOT } # ====================================================================== smtplog sub smtplog { my $smtplog = $cfg->get('basedir').'/smtptrace.txt'; my $pwd = $query->param('pwd'); if (! -f $smtplog) { print "
SMTP log file does not exist

\n"; } elsif (!open(LOG, $smtplog)) { print "
Error opening SMTP log file.

\n"; } else { print <

EOT my @buff = ; close LOG; foreach my $line (@buff) { $line =~ s/"; } } print <

EOT } #========================================================================= login sub login { $query->param(-name => 'pwd', -value => ''); $query->param(-name => 'cmd', -value => 'login'); } #==================================================================== fatalerror sub fatalerror { print < Trouble Ticket Express

Fatal Error: $_[0]

EOT exit; } sub header { my $logout; if (!$freshsetup) { $logout = "
". "". "logout
\n"; } print < Trouble Ticket Express Setup
$logout EOT } # ======================================================================= footer sub footer { print <


rev. $VERSION.$REVISION
EOT }