#!/usr/local/bin/perl
$scsi_cmd = "/http/cgi-bin/g_scsi";
$main = "/damon/daview.html";
$img = "/damon/";
$ENV{'PATH'} = '/bin:/usr/bin';
$ENV{'SHELL'} = '/bin/sh' if $ENV{'SHELL'} ne '';
$ENV{'IFS'} = '' if $ENV{'IFS'} ne '';
#
# Print out a content-type for HTTP/1.0 compatibility
#
print "Content-type: text/html\n\n";
print "
DA View
TEXA Disk Array Parameter Viewer
";
&Get_Para; # Get & setup Input parameters
&Get_RAID_Mode; # get parameters
$mtype =~ s/\s//g;
open(FILE, "param.dat");
$Start=0;
while()
{
if($Start==1)
{
$parabuf=$parabuf.$_;
}
$Start=0 if /Model/ && $Start==1;
$Start=1 if /$mtype/;
};
$parabuf =~ s/\b +\b/\#/g;
$parabuf =~ s/\s//g;
$parabuf =~ s/\#/ /g;
@para = split(/\;/,$parabuf);
if ($err == 0)
{
print "
| Group |
Description |
Value |
";
print "
| Inquiry |
Product ID |
",$product," |
";
print "
| Vendor ID |
",$vendor," |
";
print "
| FirmWare |
",$rev," |
";
foreach $parameter (@para)
{
@item=split(/\,/,$parameter);
if($rev ge $item[0])
{
if($Group ne $item[1])
{
$GroupNumber=0;
foreach $GroupPara (@para)
{
@GroupItem=split(/\,/,$GroupPara);
$GroupNumber+=1 if $GroupItem[1] eq $item[1] and $rev ge $GroupItem[0];
}
if($nu[$item[3]] ne "FF")
{
print "
| $item[1] |
$item[2] |
",$item[hex($nu[$item[3]])+4]," |
";
}
else
{
print "
| $item[1] |
$item[2] |
","NOT USED"," |
";
}
$Group=$item[1];
}
else
{
if($nu[$item[3]] ne "FF")
{
print "
| $item[2] |
",$item[hex($nu[$item[3]])+4]," |
";
}
else
{
print "
| $item[2] |
","NOT USED"," |
";
}
}
}
}
print "
";
}
print "
to Startup Menu
";
exit;
#
# Get RAID mode
#
sub Get_RAID_Mode
{
$err=0;
open(SCSI, "$scsi_cmd $port $id 0|"); # Inquiry
read(SCSI, $buf, 1024);
@nu = split(/ /, $buf);
if ((length($nu[0]) == 0)||($nu[0] ne "00"))
{
print "SCSI access Error
\n";
$err=1;
}
else
{
#vendor id
$vendor = pack("H2" x 4,$nu[9],$nu[10],$nu[11],$nu[12]);
$vendor .= pack("H2" x 4,$nu[13],$nu[14],$nu[15],$nu[16]);
#product id
$product = pack("H2" x 4,$nu[17],$nu[18],$nu[19],$nu[20]);
$product .= pack("H2" x 4,$nu[21],$nu[22],$nu[23],$nu[24]);
$product .= pack("H2" x 4,$nu[25],$nu[26],$nu[27],$nu[28]);
$product .= pack("H2" x 4,$nu[29],$nu[30],$nu[31],$nu[32]);
}
close(SCSI);
open(SCSI, "$scsi_cmd $port $id 1|"); # mode sense 3e
read(SCSI, $buf, 1024);
@nu = split(/ /, $buf);
if ((length($nu[0]) == 0)||($nu[0] ne "00"))
{
print "SCSI access Error
\n";
$err=1;
}
else
{
#firmware revision
$rev = pack("H2" x 5,$nu[18],$nu[19],$nu[20],$nu[21],$nu[22]);
$mtype = pack("H2" x 4,$nu[31],$nu[32],$nu[33],$nu[34]); #get type
}
close(SCSI);
}
#
# Get input parameters
#
sub Get_Para{
$buffer=$ENV{'QUERY_STRING'}; #GET
@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
# Un-Webify plus signs and %-encoding
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
$port = $FORM{'port'}; # SCSI card port number
if ($port eq "") {$port = 0;}
$id = $FORM{'id'}; # SCSI ID number
if ($id eq "") {$id = 0;}
}