Files
web.ems/wxc2_omc/configuration/bssomc/sw_download.php
agtuser 16a3fd1e1b init
2024-11-11 17:56:00 +08:00

394 lines
12 KiB
PHP
Executable File

<?php
//
// Created on: 11 Sep 2001
// Usage: sw_download.php?[language="eng|gb"]
// [&ip=172.18.128.100]
// [&bssid=0]
//
// Function: Transfer BSS software from OMC Server
// to BSC harddisk based on bssdist.fls file
//
//
//
//
// Remarks:
// - Use explode() as a faster split()
//
?>
<?php
include("nocache.inc");
include("header.inc");
include("ip2name.inc");
include("read_bssdist.inc");
include("sw_download.inc");
include("bssversion.inc");
//$version="iw06_00.023"; // For testing only
//$debug=1;
if (!isset($iwbox_type))
$iwbox_type = "bschd";
if (!isset($language))
$language="eng";
$parameter="${language}namearray";
$trans = Array();
function assign_cpu_type($input)
{
global $cpu_type, $trans;
$cpu_type = $input;
if (!strcmp($input,"iwp"))
$trans = Array("KERNEL" => "bsp040", "PROC" => "68k");
else
$trans = Array("KERNEL" => "bspppc", "PROC" => "ppc");
}
/******************************************
* Get the IP address if it is not known
*
*******************************************/
if (!isset($ip))
{
echo "<HTML>\n";
?>
<SCRIPT language="javascript" type="text/javascript">
<!--
function submit_check(myForm)
{
if (myForm.ip.value == '')
{
alert("Please select a valid IP address");
return (false);
}
if (myForm.systype.value == '')
{
alert("Please select a system type");
return (false);
}
window.status="<?=${$parameter}["confirm_sw_dnload"]?>";
answer = confirm("<?=${$parameter}["confirm_sw_dnload"]?>");
window.status="";
if (answer != true)
{
return (false);
}
return (true);
}
//-->
</SCRIPT>
<?php
echo "<FORM onSubmit='return submit_check(this);'>\n";
echo "<TABLE>\n";
echo "<TR>\n";
echo "<TD>\n";
echo "<font color=red size=+1>{${$parameter}["select_ip"]}</font> ";
echo "</TD>\n";
echo "<TD>\n";
echo "<SELECT name=ip size=1 style='width: 120'>\n";
if (isset($bssid))
{
$tmpIp=bssid2ip($bssid);
echo "<OPTION value=$tmpIp>$tmpIp</OPTION>\n";
}
else
{
echo "<OPTION value=''></OPTION>\n";
echo "<OPTION value='172.18.128.100'>172.18.128.100</OPTION>\n";
echo "<OPTION value='172.18.128.101'>172.18.128.101</OPTION>\n";
echo "<OPTION value='172.18.128.102'>172.18.128.102</OPTION>\n";
echo "<OPTION value='172.18.128.103'>172.18.128.103</OPTION>\n";
echo "<OPTION value='172.18.128.104'>172.18.128.104</OPTION>\n";
echo "<OPTION value='172.18.128.105'>172.18.128.105</OPTION>\n";
echo "<OPTION value='172.18.128.106'>172.18.128.106</OPTION>\n";
echo "<OPTION value='172.18.128.107'>172.18.128.107</OPTION>\n";
echo "<OPTION value='172.18.128.108'>172.18.128.108</OPTION>\n";
echo "<OPTION value='172.18.128.109'>172.18.128.109</OPTION>\n";
echo "<OPTION value='172.18.128.110'>172.18.128.110</OPTION>\n";
echo "<OPTION value='172.18.128.111'>172.18.128.111</OPTION>\n";
}
echo "</SELECT>\n";
echo "</TD>\n";
echo "</TR>\n";
echo "<TR>\n";
echo "<TD>\n";
echo "<font color=red size=+1>{${$parameter}["system_type"]}</font> ";
echo "</TD>\n";
echo "<TD>\n";
echo "<SELECT name=systype size=1 style='width: 80'>\n";
echo "<OPTION value=''></OPTION>\n";
echo "<OPTION value='bschd'>BSC</OPTION>\n";
echo "<OPTION value='bsxhd'>BS Plus</OPTION>\n";
echo "</SELECT>\n";
echo "</TD>\n";
echo "</TABLE>\n";
echo "<BR>";
echo "{${$parameter}["swversion"]}: <font color=blue>$version</font>";
echo "<HR>\n";
echo "<INPUT type=hidden name=language value=$language>\n";
echo "<INPUT type=submit value={${$parameter}["submit"]}>\n";
if (isset($bssid))
echo "<INPUT type=button value='{${$parameter}[back]}' " .
"onClick='javascript:parent.location.href=" .
"\"modifyBssParam.php?language=$language&bssid=$bssid\"'>";
echo "</FORM>\n";
echo "</HTML>\n";
return;
}
/******************************************
* Mount the BSC /hd0 to /tmp/$$ directory
*******************************************/
$tmpdir = sprintf("%.3f",time()/1000);
$iwbox = ip2name($ip);
$path_prefix = "/tmp";
$cpu_type="iwp";
$url_temp=$_SERVER["REQUEST_URI"];
echo "This page URL:$url_temp<br>";
echo "$path_prefix/$iwbox<br>";
echo "version=$version<br>";
exit();
/***************************************************************************************
* PHP state machine
*
* Rename original build and create directory
* Format: it is a 2D array
* Array(
* Array('function','description','next state if != 0','next state if == 0'
* )
****************************************************************************************/
$cmdlist = Array(
's00' => Array ('system("/bin/ping -q -c 1 $ip >> /dev/null", $retval);return($retval);',
"{${$parameter}["ping"]} $iwbox ($ip) ...",
"kickout","s01"),
's01' => Array ('return(is_dir("$path_prefix/$iwbox"));',
"{${$parameter}["checkexist"]} $path_prefix/$iwbox",
"s03","s02"),
's02' => Array ('return(mkdir("$path_prefix/$iwbox",0700));',
"{${$parameter}["create_dir"]} $path_prefix/$iwbox",
"s03","halt"),
's03' => Array ('system("/bin/umount $path_prefix/$iwbox", $retval);return($retval);',
"",
//"{${$parameter}["umounting"]} $path_prefix/$iwbox",
"s04","s03"),
's04' => Array ('system("/bin/mount $path_prefix/$iwbox", $retval);return($retval);',
"{${$parameter}["mounting"]} $path_prefix/$iwbox",
"halt","s10"),
's10' => Array ('return(is_dir(sprintf("$path_prefix/$iwbox/%s",strtoupper($version))));',
sprintf("{${$parameter}["checkexist"]} $path_prefix/$iwbox/%s",strtoupper($version)),
"s11","s20"),
's11' => Array ('return(rename(sprintf("$path_prefix/$iwbox/%s",strtoupper($version)),"$path_prefix/$iwbox/$tmpdir"));',
sprintf("{${$parameter}["rename"]} $path_prefix/$iwbox/%s --> $path_prefix/$iwbox/$tmpdir",strtoupper($version)),
"s20","halt"),
's20' => Array ('return(is_file("$path_prefix/$iwbox/BSCSTART"));',
sprintf("{${$parameter}["checkexist"]} $path_prefix/$iwbox/BSCSTART"),
"s21","s30"),
's21' => Array ('return(rename("$path_prefix/$iwbox/BSCSTART","$path_prefix/$iwbox/BSCSTART.OLD"));',
"{${$parameter}["rename"]} $path_prefix/$iwbox/BSCSTART --> $path_prefix/$iwbox/BSCSTART.OLD",
"s30","halt"),
's30' => Array ('return(is_file("$path_prefix/$iwbox/VXWORKS"));',
sprintf("{${$parameter}["checkexist"]} $path_prefix/$iwbox/VXWORKS"),
"s31","s40"),
's31' => Array ('return(rename("$path_prefix/$iwbox/VXWORKS","$path_prefix/$iwbox/VXWORKS"));',
"{${$parameter}["rename"]} $path_prefix/$iwbox/VXWORKS --> $path_prefix/$iwbox/VXWORKS",
"s40","halt"),
's40' => Array ('return(mkdir("$path_prefix/$iwbox/$version",0700));',
"{${$parameter}["create_dir"]} $path_prefix/$iwbox/$version",
"s41","halt"),
's41' => Array ('return(mkdir("$path_prefix/$iwbox/$version/compile",0700));',
"{${$parameter}["create_dir"]} $path_prefix/$iwbox/$version/compile",
"s50","halt"),
's50' => Array ('return(mkdir("$path_prefix/$iwbox/$version/compile/68k",0700));',
"{${$parameter}["create_dir"]} $path_prefix/$iwbox/$version/compile/68k",
"s60","halt"),
's60' => Array ('return(mkdir("$path_prefix/$iwbox/$version/compile/cfg",0700));',
"{${$parameter}["create_dir"]} $path_prefix/$iwbox/$version/compile/cfg",
"s70","halt"),
's70' => Array ('return(mkdir("$path_prefix/$iwbox/$version/btskern",0700));',
"{${$parameter}["create_dir"]} $path_prefix/$iwbox/$version/btskern",
"s80","halt"),
's80' => Array ('return(mkdir("$path_prefix/$iwbox/$version/trxxil",0700));',
"{${$parameter}["create_dir"]} $path_prefix/$iwbox/$version/trxxil",
"s90","halt"),
's90' => Array ('return(mkdir("$path_prefix/$iwbox/$version/trxdsp",0700));',
"{${$parameter}["create_dir"]} $path_prefix/$iwbox/$version/trxdsp",
"s100","halt"),
's100' => Array ('return(mkdir("$path_prefix/$iwbox/$version/mtdspb",0700));',
"{${$parameter}["create_dir"]} $path_prefix/$iwbox/$version/mtdspb",
"s101","halt"),
's101' => Array ('return($version[3]>5);',
"{${$parameter}["check_version"]}",
"s110","s180"),
's110' => Array ('system("/bin/bin/strings /tmp/$iwbox/VXWORKS|grep -i \"interWAVE IWP\"", $retval);return($retval);',
"{${$parameter}["check_cpu_board"]}",
"s111","s112"),
// CPU board is ICP rather than IWP
's111' => Array ('assign_cpu_type("iwp");return(0);',
"{${$parameter}["processor"]}: IWP",
"halt","s120"),
's112' => Array ('assign_cpu_type("icp");return(0);',
"{${$parameter}["processor"]}: ICP",
"halt","s120"),
's120' => Array ('return(mkdir("$path_prefix/$iwbox/$version/isr",0700));',
"{${$parameter}["create_dir"]} $path_prefix/$iwbox/$version/isr",
"s130","halt"),
's130' => Array ('return(mkdir("$path_prefix/$iwbox/$version/iwlib",0700));',
"{${$parameter}["create_dir"]} $path_prefix/$iwbox/$version/iwlib",
"s140","halt"),
's140' => Array ('return(mkdir("$path_prefix/$iwbox/$version/iwlib/platform",0700));',
"{${$parameter}["create_dir"]} $path_prefix/$iwbox/$version/iwlib/platform",
"s150","halt"),
's150' => Array ('return(mkdir("$path_prefix/$iwbox/$version/iwlib/platform/bspppc",0700));',
"{${$parameter}["create_dir"]} $path_prefix/$iwbox/$version/iwlib/platform/bspppc",
"s160","halt"),
's160' => Array ('return(mkdir("$path_prefix/$iwbox/$version/iwlib/platform/bsp040",0700));',
"{${$parameter}["create_dir"]} $path_prefix/$iwbox/$version/iwlib/platform/bsp040",
"s170","halt"),
's170' => Array ('return(mkdir("$path_prefix/$iwbox/$version/compile/ppc",0700));',
"{${$parameter}["create_dir"]} $path_prefix/$iwbox/$version/compile/ppc",
"s180","halt"),
's180' => Array ('return(1);',
"*** {${$parameter}["remind"]} ***",
"s200","halt")
);
/*********************************************
* Get the array of BSS software filenames
*********************************************/
$index = 200;
$output = get_sw_filenames($version,"/home/build", $iwbox_type);
if ($debug)
{
echo "<HR>";
foreach ($output as $files) echo "{${$parameter}["copy"]} $files[0] --> ./$files[1] <BR>";
echo "<HR>";
return;
}
foreach ($output as $files)
{
$tmp_array = Array(
"return(copy(\"" . strtr($files[0],$trans) . "\",\"/tmp/$iwbox/" . strtr($files[1],$trans) . "\"));",
"{${$parameter}["copy"]} $files[0] --> ./$files[1]",
sprintf("s%d",$index + 1),"halt"
);
$cmdlist = array_merge($cmdlist,Array("s$index" => $tmp_array));
$index++;
}
$cmdlist = array_merge($cmdlist, Array(
"s$index" => Array ('return(1);',
"*** {${$parameter}["cleanup"]} ***",
"cleanup","halt"),
"cleanup" => Array('return(is_dir("$path_prefix/$iwbox"));',
"{${$parameter}["checkexist"]} $path_prefix/$iwbox",
"umount","getout"),
"umount" => Array('system("/bin/umount $path_prefix/$iwbox", $retval);return($retval);',
"{${$parameter}["umounting"]} $path_prefix/$iwbox",
"rmdir","rmdir"),
"rmdir" => Array('return(rmdir("$path_prefix/$iwbox"));',
"{${$parameter}["rmdir"]} $path_prefix/$iwbox",
"getout","getout")
)
);
if (isset($debug))
{
foreach ($cmdlist as $key => $value)
{
echo "$key,$value[0],$value[1],$value[2],$value[3]<BR>";
}
}
/*********************************************
* Execute the state machine here
*********************************************/
echo "<font color=red size=+1>{${$parameter}["heading"]}<BR></font>";
echo "<PRE>";
for ($state="s00" ; ; )
{
if (isset($debug))
echo strtr("{$cmdlist[$state][0]}\n$state: ",$trans);
echo strtr(${cmdlist}[$state][1],$trans);
flush();
$command = strtr(${cmdlist}[$state][0],$trans);
if (@eval($command))
$state = $cmdlist[$state][2];
else
$state = $cmdlist[$state][3];
if ($state == "getout")
{
echo " ... {${$parameter}["ok"]}\n";
break;
}
else if ($state == "kickout")
{
echo " ... {${$parameter}["not_ok"]}\n";
echo "</PRE><font color=red size=+1>... {${$parameter}["failed"]}<BR></font>";
echo "<PRE>";
break;
}
else if ($state == "halt")
{
echo " ... {${$parameter}["not_ok"]}\n";
echo "</PRE><font color=red size=+1>... {${$parameter}["failed"]}<BR></font>";
echo "<PRE>";
$state = "cleanup";
}
else
{
if (${cmdlist}[$state][1] != "")
echo " ... {${$parameter}["ok"]}\n";
}
}
echo "</PRE><font color=blue>... {${$parameter}["done"]}<BR></font>";
?>