#!/usr/bin/perl
#
# CGI.pl - a few common, convenient CGI routines
#
# Copyright (1997) Advanced Internet Technologies, Inc.
# domain name for this cpanel
#
$mydomain = "vhhostname";
$myaccount = "vhname";
# start and HTML page, with Contents line
#
sub start_html {
local($myti) = @_;
print "Content-type: text/html\n\n";
print <<"EndHTML";
$myti
EndHTML
}
# print standard trailer and close HTML
#
sub end_html {
print <<"EndHTML";
VSMT the Virtual Server Management Tool
EndHTML
}
# dump a message to an HTML page, then die
#
sub write_and_exit {
local ($msg) = @_;
&start_html("");
print $msg;
&end_html;
exit(0);
}
# get form input, return %FORM
#
sub read_cgi_input {
local ($method, $query, @keypairs, $keyvalue, $key, $value);
$method = $ENV{'REQUEST_METHOD'};
if ($method eq "GET") {
$query = $ENV{'QUERY_STRING'};
} elsif ($method eq "POST") {
read (STDIN, $query, $ENV{'CONTENT_LENGTH'});
} else {
local ($msg) = "Unsupported method: $method\n";
&write_and_exit($msg);
}
@keypairs = split(/&/,$query);
foreach $keyvalue (@keypairs) {
($key,$value) = split(/=/,$keyvalue);
$key =~ tr/+/ /;
$key =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack("C",hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack("C",hex($1))/eg;
$value =~ s/[\r\n]+$//;
if (defined($FORM{$key})) {
$FORM{$key} = join("\0",$FORM{$key},$value);
} else {
$FORM{$key} = $value;
}
}
}
# routine to encrypt the password (based on Mark Wensell's code)
#
sub generate_pw {
local ($mypw) = @_;
local @atoms,$n,$enc,@s,$salt;
@atoms = split //,
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./";
# seed the random number generator
srand(time ^ $$); # this should be adequate, we are only generating a salt
# not the passwd itself
$n = int(rand 64);
$s[0] = $atoms[$n];
$n = int(rand 64);
$s[1] = $atoms[$n];
$salt = $s[0].$s[1];
$enc = crypt($mypw, $salt);
return($enc);
}
# check for sensitive usernames
#
sub unsafe_user {
local ($myuser) = @_;
return 1 if ($myuser eq $myaccount);
return 1 if ($myuser eq "root");
return 1 if ($myuser eq "mail");
return 1 if ($myuser eq "cpanel");
return 1 if ($myuser eq "nobody");
return 1 if ($myuser eq "vroot");
return 0;
}
# return 1 when 'require'd
1;