Files
web.ems/wxc2_omc/element/mss/licenseControl.php
2025-06-03 11:52:10 +08:00

454 lines
14 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/*********************************************************
程序说明:
功能说明导入system.ini,控制MSS License
调用关系:调用:
被调用:
变量说明:
作者:
修改注释:
NO.1
姓名:
时间:
修改说明:
*********************************************************/
require("../sub_inc/commfunc.php");
$DEBUG = 0;
$ftpInfo=get2GCLicenseAccount();
$impFile=$_FILES['impFile']['tmp_name'];
$sysTypeNo=$_REQUEST['selKeyFieldName'];
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 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($sysTypeNo.'_99_99',$impObjId,$instanceNo,'00');
$commIdArr = sysCommSend($sysTypeNo.'_99_99',$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&nbsp;&nbsp;($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']}\">{$sysTypeName}_{$infoRow['sysNo']}_{$infoRow['subSysNo']}</option>";
}//end for
?>
<!-- <option value="msisdn" selected>MSISDN</option>
<option value="imsi">IMSI</option>
<option value="imei">IMEI</option> -->
</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>