462 lines
14 KiB
PHP
Executable File
462 lines
14 KiB
PHP
Executable File
<?php
|
||
/*********************************************************
|
||
程序说明:
|
||
功能说明:导入system.ini,控制MSS License
|
||
|
||
调用关系:调用:
|
||
被调用:
|
||
|
||
变量说明:
|
||
|
||
作者:
|
||
|
||
修改注释:
|
||
NO.1
|
||
姓名:
|
||
时间:
|
||
修改说明:
|
||
*********************************************************/
|
||
require("../sub_inc/commfunc.php");
|
||
$DEBUG = 0;
|
||
$ftpInfo=get2GCLicenseAccount();
|
||
$impFile=$_FILES['impFile']['tmp_name'];
|
||
$sysTypeNo=$_REQUEST['selKeyFieldName'];
|
||
$sysId=$_REQUEST['selKeyFieldName'];
|
||
|
||
if ($_REQUEST['selKeyFieldName'])
|
||
{
|
||
$realSysId = $_REQUEST['selKeyFieldName'];
|
||
if($DEBUG) echo "<br>realSysId=$realSysId";
|
||
$sysIdArr=explode('_',$realSysId);
|
||
$sysTypeNo=$sysIdArr[0];
|
||
$sysNo=$sysIdArr[1];
|
||
// echo "sysTypeNo=$sysTypeNo,sysNo=$sysNo";
|
||
}
|
||
if($DEBUG)echo "<br>sysTypeNo= $sysTypeNo";
|
||
// echo "<pre>";
|
||
// echo print_r($ftpInfo);
|
||
// echo "</pre>";
|
||
$nGetComm = 0;
|
||
$nSetComm = 3;
|
||
|
||
$nSubSysParam = 0;
|
||
$nGlobalSubSysParam = 1;
|
||
$nGlobalSysParam = 2;
|
||
|
||
$omc_db = 'OMC_PUB';
|
||
$sysInfoTable = 'OMC_PUB.sysInfo';
|
||
|
||
$impObjId = '99.2.1.2';
|
||
$impFileName = 'system.ini';
|
||
$ftpDir = '/usr/local/subsManage/';
|
||
$ftpLoginName = 'subsManager';
|
||
$baseLogFileName = 'fib.txt';
|
||
$ftpLoginPwd = 'iammanager';
|
||
$paramType = $nGlobalSysParam;
|
||
$maxImpFileSize = 4*1024;
|
||
|
||
if($DEBUG)echo "<br>impObjId= $impObjId";
|
||
if($DEBUG)echo "<br>impFileName=$impFileName ";
|
||
if($DEBUG)echo "<br>ftpDir=$ftpDir ";
|
||
if($DEBUG)echo "<br>ftpLoginName=$ftpLoginName ";
|
||
if($DEBUG)echo "<br>ftpLoginPwd=$ftpLoginPwd";
|
||
if($DEBUG)echo "<br>paramType=$paramType ";
|
||
if($DEBUG)echo "<br>maxImpFileSize=$maxImpFileSize ";
|
||
|
||
|
||
function ssh_exec_command($connection, $command) {
|
||
$stdio_stream = ssh2_exec($connection, $command);
|
||
$stderr_stream = ssh2_fetch_stream($stdio_stream, SSH2_STREAM_STDERR);
|
||
|
||
stream_set_blocking($stdio_stream, true);
|
||
stream_set_blocking($stderr_stream, true);
|
||
|
||
$output = stream_get_contents($stdio_stream);
|
||
$error = stream_get_contents($stderr_stream);
|
||
|
||
fclose($stdio_stream);
|
||
fclose($stderr_stream);
|
||
|
||
return $output . $error; // 合并输出和错误
|
||
}
|
||
|
||
|
||
//判断是否有文件上载
|
||
if(isset($impFile) && $impFile != "none"){
|
||
// $getSysIdSql = "SELECT sysNo,subSysNo,ip
|
||
// FROM $sysInfoTable
|
||
// WHERE sysTypeNo='200' AND sysNo='9' AND baseStat > '0'
|
||
// ORDER BY sysNo,subSysNo
|
||
// ";
|
||
$getSysIdSql = "SELECT sysNo,subSysNo,ip
|
||
FROM $sysInfoTable
|
||
WHERE sysTypeNo='$sysTypeNo' AND sysNo=$sysNo AND baseStat > '0'
|
||
ORDER BY sysNo,subSysNo
|
||
";
|
||
if($DEBUG) echo "<br>getSysIdSql=$getSysIdSql";
|
||
$getSysIdResult= mysqli_query($pubConn,$getSysIdSql);
|
||
echo mysqli_error($pubConn);
|
||
$runningServerNum = mysqli_num_rows($getSysIdResult);
|
||
if($runningServerNum <= 0){
|
||
echo "<br><b>Error: No system run normally</font>";
|
||
}
|
||
if($DEBUG) echo "running server number = $runningServerNum<br>";
|
||
|
||
//检查导入的文件大小,记录条数
|
||
$impFileSize = @filesize($impFile);
|
||
if($DEBUG) {
|
||
echo "<br>impFile=$impFile";
|
||
echo "<br>impFileSize=$impFileSize";
|
||
}
|
||
if($impFileSize > $maxImpFileSize){
|
||
echo "<br><b>Import File Size is $impFileSize bytes";
|
||
echo "<br>File size is too large!(Must be <= $maxImpFileSize)</font>";
|
||
@unlink ($impFile);
|
||
echo "<p align=\"left\"><a href=\"JavaScript:history.go(-1)\"><img align=absBottom border=0 src=\"../../images/left.gif\" width=\"14\" height=\"14\">Back</a>";
|
||
exit();
|
||
}
|
||
|
||
if($impFileSize <=0){
|
||
echo "<br><b>No import File";
|
||
@unlink ($impFile);
|
||
echo "<p align=\"left\"><a href=\"JavaScript:history.go(-1)\"><img align=absBottom border=0 src=\"../../images/left.gif\" width=\"14\" height=\"14\">Back</a>";
|
||
exit();
|
||
}
|
||
|
||
$submitStat = 'DISABLED';
|
||
for ($k=0; $k<$runningServerNum; $k++) {
|
||
$getSysIdRow=mysqli_fetch_array($getSysIdResult);
|
||
$dstSeverIp = $getSysIdRow[ip];
|
||
$dstSeverIpArr[$k] = $getSysIdRow[ip];
|
||
if($DEBUG) echo "<br>dstSeverIp = $dstSeverIp";
|
||
|
||
/* close ftp
|
||
$ftpCon=@ftp_connect($dstSeverIp);
|
||
if($ftpCon < 0){
|
||
echo "<br><b>Connect $dstSeverIp Failed!</font>";
|
||
@unlink ($impFile);
|
||
echo "<p align=\"left\"><a href=\"JavaScript:history.go(-1)\"><img align=absBottom border=0 src=\"../../images/left.gif\" width=\"14\" height=\"14\">Back</a>";
|
||
exit();
|
||
}
|
||
*/
|
||
|
||
$connection=sftp_connect($dstSeverIp);
|
||
if(!$connection)
|
||
{
|
||
echo "<br><b>Connect $dstSeverIp Failed!</font>";
|
||
@unlink ($impFile);
|
||
echo "<p align=\"left\"><a href=\"JavaScript:history.go(-1)\"><img align=absBottom border=0 src=\"../../images/left.gif\" width=\"14\" height=\"14\">Back</a>";
|
||
exit();
|
||
}
|
||
|
||
/* close ftp
|
||
if(!@ftp_login($ftpCon,$ftpLoginName,$ftpLoginPwd)){
|
||
echo "<br><b>Login $dstSeverIp Failed!</font>";
|
||
@unlink ($impFile);
|
||
echo "<p align=\"left\"><a href=\"JavaScript:history.go(-1)\"><img align=absBottom border=0 src=\"../../images/left.gif\" width=\"14\" height=\"14\">Back</a>";
|
||
exit();
|
||
}
|
||
*/
|
||
|
||
$key=sftp_login($connection,$ftpLoginName,$ftpLoginPwd);
|
||
if(!$key)
|
||
{
|
||
echo "<br><b>Login $dstSeverIp Failed!</font>";
|
||
@unlink ($impFile);
|
||
echo "<p align=\"left\"><a href=\"JavaScript:history.go(-1)\"><img align=absBottom border=0 src=\"../../images/left.gif\" width=\"14\" height=\"14\">Back</a>";
|
||
exit();
|
||
}
|
||
|
||
|
||
if($DEBUG) echo "<br>sysTypeNo= $sysTypeNo";
|
||
switch($sysTypeNo){
|
||
case '320':
|
||
$black='msc';
|
||
break;
|
||
case '330':
|
||
$black='hlr';
|
||
break;
|
||
case '350':
|
||
$black='smsc';
|
||
break;
|
||
case '360':
|
||
$black='ocs';
|
||
break;
|
||
default:
|
||
echo "Uknown sysTypeNo:$sysTypeNo";
|
||
exit(1);
|
||
}
|
||
// 针对 HLR 的特殊处理
|
||
if ($sysTypeNo === '330') {
|
||
$tempFilePath = $ftpDir.$impFileName;
|
||
$finalFilePath = '/usr/local/etc/udm/license/' . $impFileName;
|
||
// 1. 先用 subsManager 上传到 /usr/local/subsManage/
|
||
if(!sftp_put($key,$tempFilePath,$impFile,SFTP_ASCII))
|
||
{
|
||
echo "<br><b>Put file to $dstSeverIp Failed</font>";
|
||
exit();
|
||
@unlink ($impFile);
|
||
echo "<p align=\"left\"><a href=\"JavaScript:history.go(-1)\"><img align=absBottom border=0 src=\"../../images/left.gif\" width=\"14\" height=\"14\">Back</a>";
|
||
exit();
|
||
}
|
||
|
||
// 2. 用 agtuser ssh 连接并执行 sudo mv
|
||
$agt_connection = ssh2_connect($dstSeverIp, 22);
|
||
if (!$agt_connection) {
|
||
echo "<br><b>Connect $dstSeverIp Failed!</font>";
|
||
exit();
|
||
}
|
||
if (!ssh2_auth_password($agt_connection, $ftpInfo['UserName'], $ftpInfo['Password'])) {
|
||
echo "<br><b>Login $dstSeverIp Failed!</font>";
|
||
exit();
|
||
}
|
||
$moveCommand = "sudo mv $tempFilePath $finalFilePath";
|
||
$moveResult = ssh_exec_command($agt_connection, $moveCommand);
|
||
|
||
if (strpos($moveResult, 'error') !== false || strpos($moveResult, 'Error') !== false || strpos($moveResult, 'cannot') !== false)
|
||
{
|
||
echo "<br><b>Failed to move file to $finalFilePath</font>";
|
||
exit();
|
||
}
|
||
|
||
@unlink($impFile);
|
||
echo "<br><font color=\"#0000FF\" size=2>HLR License Upload Finished</font>";
|
||
echo "<p align=\"left\"><a href=\"JavaScript:history.go(-1)\"><img align=absBottom border=0 src=\"../../images/left.gif\" width=\"14\" height=\"14\">Back</a>";
|
||
exit();
|
||
}
|
||
$impFileName="system.ini.".$black;
|
||
$remoteFileName=$ftpDir.$impFileName;
|
||
if($DEBUG)echo "$ftpCon,$remoteFileName,$impFile";
|
||
/* close ftp
|
||
if(!@ftp_put($ftpCon,$remoteFileName,$impFile,FTP_BINARY)){
|
||
echo "<br><b>Put file to $dstSeverIp Failed</font>";
|
||
exit();
|
||
@unlink ($impFile);
|
||
echo "<p align=\"left\"><a href=\"JavaScript:history.go(-1)\"><img align=absBottom border=0 src=\"../../images/left.gif\" width=\"14\" height=\"14\">Back</a>";
|
||
exit();
|
||
}
|
||
ftp_quit($ftpCon);
|
||
*/
|
||
|
||
if(!sftp_put($key,$remoteFileName,$impFile,SFTP_ASCII))
|
||
{
|
||
echo "<br><b>Put file to $dstSeverIp Failed</font>";
|
||
exit();
|
||
@unlink ($impFile);
|
||
echo "<p align=\"left\"><a href=\"JavaScript:history.go(-1)\"><img align=absBottom border=0 src=\"../../images/left.gif\" width=\"14\" height=\"14\">Back</a>";
|
||
exit();
|
||
}
|
||
}
|
||
@unlink ($impFile);
|
||
|
||
//$sysId=$sysTypeNo.'_99_99';
|
||
if($DEBUG) echo "<br>(2) sysId=$sysId";
|
||
|
||
//send set command
|
||
|
||
$chgResult = setSysParamValue($sysId,$impObjId,$instanceNo,'00');
|
||
$commIdArr = sysCommSend($sysId,$nSetComm,$impObjId);
|
||
if($DEBUG){
|
||
echo "setSysParamValue($sysId,$impObjId,$instanceNo,$newValue)<br>";
|
||
echo "sysCommSend($sysId,$nSetComm,$impObjId)";
|
||
}
|
||
|
||
|
||
CheckState($commIdArr);
|
||
echo "<br><font color=\"#0000FF\" size=2>Finished</font>";
|
||
|
||
for($k=0;$k<sizeof($dstSeverIpArr);$k++){
|
||
|
||
if($DEBUG)echo "<br>dstSeverIp=$dstSeverIp";
|
||
$dstSeverIp=$dstSeverIpArr[$k];
|
||
/* close ftp
|
||
$ftpCon=@ftp_connect($dstSeverIp);
|
||
if($ftpCon < 0){
|
||
echo "<br><b>Connect $dstSeverIp Failed!</font>";
|
||
echo "<p align=\"left\"><a href=\"JavaScript:history.go(-1)\"><img align=absBottom border=0 src=\"../../images/left.gif\" width=\"14\" height=\"14\">Back</a>";
|
||
exit();
|
||
}
|
||
*/
|
||
|
||
$connection=sftp_connect($dstSeverIp);
|
||
if(!$connection){
|
||
echo "<br><b>Connect $dstSeverIp Failed!</font>";
|
||
echo "<p align=\"left\"><a href=\"JavaScript:history.go(-1)\"><img align=absBottom border=0 src=\"../../images/left.gif\" width=\"14\" height=\"14\">Back</a>";
|
||
exit();
|
||
}
|
||
|
||
/* close ftp
|
||
if(!@ftp_login($ftpCon,$ftpLoginName,$ftpLoginPwd)){
|
||
echo "<br><b>Login $dstSeverIp Failed!</font>";
|
||
echo "<p align=\"left\"><a href=\"JavaScript:history.go(-1)\"><img align=absBottom border=0 src=\"../../images/left.gif\" width=\"14\" height=\"14\">Back</a>";
|
||
exit();
|
||
}
|
||
*/
|
||
|
||
$key=sftp_login($connection,$ftpLoginName,$ftpLoginPwd);
|
||
if(!$key)
|
||
{
|
||
echo "<br><b>Login $dstSeverIp Failed!</font>";
|
||
echo "<p align=\"left\"><a href=\"JavaScript:history.go(-1)\"><img align=absBottom border=0 src=\"../../images/left.gif\" width=\"14\" height=\"14\">Back</a>";
|
||
exit();
|
||
}
|
||
|
||
$remoteFileName =$ftpDir.$baseLogFileName;
|
||
//echo "remoteFileName=$remoteFileName";
|
||
|
||
$timestamp = time();
|
||
$nameArray = explode(".",$baseLogFileName);
|
||
$logFileName = $nameArray[0].$timestamp."_".$k.".log";
|
||
$localFileName ="/usr/local/apache/htdocs/ftpFile/$logFileName";
|
||
/*
|
||
//delete *.log
|
||
$handle=opendir('/usr/local/apache/htdocs/ftpFile/');
|
||
while($file=readdir($handle)){
|
||
$retval="";
|
||
$pt=strrpos($file,".");
|
||
if($pt) $retval=substr($file,$pt+1,strlen($file)-$pt);
|
||
$delFileName = "/usr/local/apache/htdocs/ftpFile/".$file;
|
||
if($retval=='log') unlink($delFileName);
|
||
}
|
||
*/
|
||
/* close ftp
|
||
if(!ftp_get($ftpCon,$localFileName,$remoteFileName,FTP_ASCII)){
|
||
echo "<br><b>Get log file from $dstSeverIp Failed</font>";
|
||
echo "<p align=\"left\"><a href=\"JavaScript:history.go(-1)\"><img align=absBottom border=0 src=\"../../images/left.gif\" width=\"14\" height=\"14\">Back</a>";
|
||
exit();
|
||
}
|
||
ftp_quit($ftpCon);
|
||
*/
|
||
|
||
//if(!sftp_get($key,$localFileName,$remoteFileName,SFTP_ASCII))
|
||
if(!sftp_get($connection,$localFileName,$remoteFileName,SFTP_ASCII))
|
||
{
|
||
echo "<br><b>Get log file from $dstSeverIp Failed</font>";
|
||
echo "<p align=\"left\"><a href=\"JavaScript:history.go(-1)\"><img align=absBottom border=0 src=\"../../images/left.gif\" width=\"14\" height=\"14\">Back</a>";
|
||
exit();
|
||
}
|
||
|
||
$logFileUrl="../../../ftpFile/$logFileName";
|
||
echo "<br><br><a href=\"$logFileUrl\" download>Click here to open the log ($dstSeverIp).</a>";
|
||
}
|
||
echo "<p align=\"left\"><a href=\"JavaScript:history.go(-1)\"><img align=absBottom border=0 src=\"../../images/left.gif\" width=\"14\" height=\"14\">Back</a>";
|
||
exit();
|
||
}elseif(isset($impFile)){
|
||
echo "<br><b><b>Upload file failed, File isn't exist or file is empty!</b></font>";
|
||
}
|
||
?>
|
||
<body leftmargin="15" rightmargin="10" onload="javascript:adjust();" onresize="javascript:adjust();" style="overflow:hidden;overflow-x:hidden;overflow-y:hidden;">
|
||
|
||
|
||
<?php
|
||
adjust_head();
|
||
adjust_title_head();
|
||
echo "<table id=\"table_up\" border=\"0\" width=\"100%\">";
|
||
echo "<tr>";
|
||
echo "<td width=\"50%\">";
|
||
echo "$strConfiguration > MSS License Control";
|
||
echo "</td>";
|
||
echo "<td width=\"50%\" align=\"right\">";
|
||
$helpId="2.61";
|
||
showHelp($helpId);
|
||
echo "</td>";
|
||
echo "</tr>";
|
||
echo "</table>";
|
||
adjust_title_tail();
|
||
adjust_content_head();
|
||
echo "<br>";
|
||
?>
|
||
|
||
|
||
<form method="POST" action="<?php echo "$PHP_SELF";?>" name="subsData" enctype="multipart/form-data">
|
||
<table border="1" width="100%" cellpadding="2" cellspacing="0" bordercolor="#666666" bordercolordark="#FFFFFF" >
|
||
|
||
<?php
|
||
$title = "Import system.ini ";
|
||
echo "<tr bgcolor=\"#E6E6E6\">";
|
||
echo "<td width=100% colspan=2 align=center>";
|
||
echo "<font size=3><b>$title</b></font>";
|
||
echo "</td>";
|
||
echo "</tr>";
|
||
?>
|
||
|
||
<tr>
|
||
<td colspan=2>
|
||
<font color="#0000FF" size=2>Note:Import File's size <= <?php echo $maxImpFileSize?> bytes</font>
|
||
</td>
|
||
</tr>
|
||
|
||
|
||
|
||
<tr>
|
||
<td>Select Object:</td>
|
||
<td>
|
||
<select size="1" name="selKeyFieldName" >
|
||
<?php
|
||
|
||
$infoSql="select sysTypeNo,sysNo,subSysNo FROM sysInfo where sysTypeNo='330' or sysTypeNo='320' or sysTypeNo='350' or sysTypeNo='360' and baseStat > '0' order by sysNo,subSysNo";
|
||
$infoRes=@mysqli_query($pubConn,$infoSql);
|
||
$infoCount=mysqli_num_rows($infoRes);
|
||
for($i=0;$i<$infoCount;$i++)
|
||
{
|
||
$infoRow=@mysqli_fetch_array($infoRes);
|
||
|
||
$sysId=$infoRow['sysTypeNo']."_99_99";
|
||
switch($infoRow['sysTypeNo']){
|
||
case '320':
|
||
$sysTypeName='MSC';
|
||
break;
|
||
case '330':
|
||
$sysTypeName='HLR';
|
||
break;
|
||
case '350':
|
||
$sysTypeName='SMSC';
|
||
break;
|
||
case '360':
|
||
$sysTypeName='PPS';
|
||
break;
|
||
default:
|
||
echo "Uknown sysTypeNo:$sysTypeNo";
|
||
exit(1);
|
||
}
|
||
//if($statRow['sysNo']=$i)
|
||
echo "<option value=\"{$infoRow['sysTypeNo']}_{$infoRow['sysNo']}_{$infoRow['subSysNo']}\">{$sysTypeName}_{$infoRow['sysNo']}_{$infoRow['subSysNo']}</option>";
|
||
|
||
}//end for
|
||
?>
|
||
</select>
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td>Select File:</td>
|
||
<td>
|
||
<input type="file" name="impFile">
|
||
<input type="hidden" name="MAX_FILE_SIZE" value="20971520"><!-- MAX_FILE_SIZE = 20M -->
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td colspan=2>
|
||
<?php
|
||
if($DEBUG) echo "<br>submitStat=$submitStat";
|
||
|
||
if($submitStat == 'DISABLED'){
|
||
echo "<input type=\"submit\" DISABLED value=\"$strSubmit\">";
|
||
}else{
|
||
echo "<input type=\"submit\" value=\"$strSubmit\">";
|
||
}
|
||
|
||
echo "<input Name=\"dataTypeNo\" type=\"hidden\" value=\"$dataTypeNo\">";
|
||
echo "<input Name=\"sysId\" type=\"hidden\" value=\"$sysId\">";
|
||
?>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</form>
|
||
<?php
|
||
adjust_content_tail();
|
||
?>
|
||
</body>
|
||
</html>
|