File: test.cgi

package info (click to toggle)
haci 0.98c-2.2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,240 kB
  • sloc: perl: 23,790; javascript: 1,817; sh: 225; makefile: 8
file content (111 lines) | stat: -rwxr-xr-x 3,531 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#!/usr/bin/perl

use strict;
use warnings;
use CGI;
use Data::Dumper;


sub getWorkDir {
	my $currDir = `pwd`;
	chomp($currDir);
	my $scriptFile	= $0;
	$scriptFile		= $ENV{SCRIPT_FILENAME} if exists $ENV{SCRIPT_FILENAME};
	(my $scriptDir  = $scriptFile) =~ s/\/[^\/]+$//;
	my $destDir		= ($scriptDir =~ /^\//) ? $scriptDir : $currDir . '/' . $scriptDir;
	chdir "$destDir/../" or die "Cannot change into workdir '$destDir/../': $!\n";
	my $workDir = `pwd`;
	chomp($workDir);

	return $workDir;
}

BEGIN {
	my $workDir		= &getWorkDir();
	$ENV{workdir}	= $workDir;
	unshift @INC, $ENV{workdir} . '/modules';
}

$|				= 1;
my $workDir		= &getWorkDir();
$ENV{workdir}	= $workDir;
unshift @INC, $ENV{workdir} . '/modules';

our $conf; *conf    = \$HaCi::Conf::conf;
eval {
	require HaCi::Conf;
	&HaCi::Conf::init($workDir);
};

my $q		= new CGI(@_);
my $title	= 'HaCi - IP Address Administration';
my $ver		= $conf->{static}->{gui}->{version} || '[unknown]';
my @mands	= qw/CGI CGI::Ajax CGI::Carp CGI::Cookie CGI::Session Class::Accessor Class::MakeMethods Config::General DBD::mysql Digest::MD5 Digest::SHA Encode Encode::Guess File::Temp HTML::Entities Locale::gettext Log::LogLite Math::Base85 Math::BigInt%1.87 Net::CIDR Net::IMAP::Simple Net::IPv6Addr Net::SNMP Storable Template Time::Local Text::CSV/;
my @opts	= qw/Cache::FastMmap Cache::FileCache DNS::ZoneParse IO::Socket::INET6 Math::BigInt::GMP Net::DNS Net::Nslookup Net::Ping Pod::WSDL SOAP::Transport::HTTP SQL::Translator%0.09000 SQL::Translator::Diff Text::CSV_XS Apache::DBI DBD::Pg DBD::mysql Frontier::RPC2 File::Basename Time::HiRes JSON URI::Query Text::CSV_XS/;

print $q->header(-charset=>'UTF-8');

print $q->start_html({
	title	=> $title
});

print $q->h1($title);
print $q->h2("Version: " . $ver . (($ENV{MOD_PERL}) ? ' (running under mod-perl)' : ''));
print $q->h6($ENV{SERVER_SOFTWARE});

eval {
	require HaCi::Utils;
	&HaCi::Utils::getConfig();
	my $dbError	= &checkDB();
	my $dbHost	= $conf->{user}->{db}->{dbhost} || '';
	my $dbName	= $conf->{user}->{db}->{dbname} || '';
	my $dbUser	= $conf->{user}->{db}->{dbuser} || '';
	print $q->br, $q->h3("Database connection ($dbUser\@$dbHost:$dbName): <font color=#" . (($dbError eq 'OK') ? '00AA00' : 'AA0000') . ">$dbError</font>");
};
print $q->br, $q->h5("Canot test database connection:<br><pre>$@</pre>");


print $q->br, $q->h3("<u>Mandatory Modules:</u>");
print $q->start_table({cellpadding=>3, rules=>'all'});
foreach (sort @mands) {
	s/%/ /g;
	eval "use $_";
	warn $@ if $@;
	print $q->Tr($q->th({align=>'left'}, $_), $q->td({bgcolor=>(($@) ? '#FFAAAA' : '#AAFFAA')}, (($@) ? 'NOT' : '') . ' available'));
}
print $q->end_table;

print $q->start_table({cellpadding=>3, rules=>'all'});
print $q->br, $q->h3("<u>Recommended Modules:</u>");
foreach (sort @opts) {
	s/%/ /g;
	eval "use $_";
	warn $@ if $@;
	print $q->Tr($q->th({align=>'left'}, $_), $q->td({bgcolor=>(($@) ? '#FFAAAA' : '#AAFFAA')}, (($@) ? 'NOT' : '') . ' available'));
}

exit 0;
#-----------------------------------
sub checkDB {
	my $dbType	= &HaCi::Utils::getConfigValue('db', 'dbtype');
	eval {
		require "HaCi/Tables/$dbType/network.pm";
	};
	return "Error while loading Table 'network': $@\n" if $@;


	$DBIEasy::lastError	= '';
	my $tableRef	= "HaCi::Tables::${dbType}::network"->new($conf->{user}->{db});
	return $DBIEasy::lastError if $DBIEasy::lastError;

	my $dbh	= $tableRef->dbh();
	if (ref($dbh) && $dbh->can('ping') && $dbh->ping()) {
		return 'OK';
	} else {
		return $dbh->errstr;
	}

	return 'OK';
}

# vim:ts=4:sw=4