require("../../inc/header.inc");
?>
$helpId = isset($helpId)?$helpId:'5.1.6';
$ThisPage="$strMaintenance > $strBackupRestore > "."Download&Upload";
$DEBUG = 0;
$db=$omc_db;
set_time_limit(3600);
$strNoInput = "No file input!";
$needReboot = 0;
function MsgBox($str)
{
echo "";
}
function getNameByTypeNo($sysTypeNo)
{
$pubDb = "OMC_PUB";
$selSql = "select sysTypeName from OMC_PUB.sysConf where sysTypeNo=$sysTypeNo";
$result = mysqli_query($pubConn,$selSql);
$row = mysqli_fetch_array($result);
$name = $row[sysTypeName];
return $name;
}
function getFileList($dir,&$fileListArr)
{
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$fileListArr[] = $file;
}
}
closedir($handle);
}
}
function updateParamer($db_name,$table_name,$csvFileName)
{
$del_sql = "DELETE FROM $table_name";
if($DEBUG) echo "
del_sql = $del_sql";
$del_result = mysqli_query($pubConn,$del_sql);
if($DEBUG) echo "
del_result=$del_result";
$insert_sql = "LOAD DATA LOCAL INFILE '$csvFileName'
INTO TABLE $table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
";
if(0) echo "
insert_sql=$insert_sql";
$insert_result=mysqli_query($pubConn,$insert_sql);
if($DEBUG) echo "
insert_result=$insert_result";
if ($insert_result)
return 1;
else
return 0;
}//end updateParamer
function updateSubs($sysId,$dataTypeNo,$impFile)
{
$nSetComm = 3;
$pubDb = 'OMC_PUB';
$sysSubsConfTable = 'OMC_PUB.sysSubsConf';
$sysInfoTable = 'OMC_PUB.sysInfo';
$sysIdArr=explode('_',$sysId);
$sysTypeNo =$sysIdArr[0];
$sysNo =$sysIdArr[1];
$subSysNo =$sysIdArr[2];
if($sysTypeNo==390)
$getConfSql="SELECT subsDataTable,impObjId,impFileName,ftpDir,ftpLoginName,ftpLoginPwd,
logFileName,maxSegmentNum,maxIndexNumPerSeg
FROM $sysSubsConfTable
WHERE sysTypeNo='$sysTypeNo' AND dataTypeNo='$dataTypeNo' AND sysNo='$sysNo'
";
else
$getConfSql="SELECT subsDataTable,impObjId,impFileName,ftpDir,ftpLoginName,ftpLoginPwd,
logFileName,maxSegmentNum,maxIndexNumPerSeg
FROM $sysSubsConfTable
WHERE sysTypeNo='$sysTypeNo' AND dataTypeNo='$dataTypeNo'
";
if($DEBUG) echo "
getConfSql=$getConfSql";
$getConfResult=mysqli_query($pubConn,$getConfSql);
echo mysqli_error($pubConn);
$getConfRows=mysqli_fetch_array($getConfResult);
$subsDataTable = $getConfRows[subsDataTable];
$impObjId = $getConfRows[impObjId];
$impFileName = $getConfRows[impFileName];
$logFileName = $getConfRows[logFileName];
$ftpDir = $getConfRows[ftpDir];
$ftpLoginName = $getConfRows[ftpLoginName];
$ftpLoginPwd = $getConfRows[ftpLoginPwd];
$maxSegmentNum = $getConfRows[maxSegmentNum];
$maxIndexNumPerSeg = $getConfRows[maxIndexNumPerSeg];
$maxTotalNum = $maxSegmentNum * $maxIndexNumPerSeg;
$maxImpFileSize = 5*1024*1024;
$maxImpRecordNum = 5000;
//Get the system name;
$selSql = "SELECT sysTypeName FROM sysConf WHERE sysTypeNo='$sysTypeNo'";
if ($DEBUG) echo "selSql = $selSql
";
$selRes = @mysqli_query($pubConn, $selSql);
echo mysqli_error($pubConn);
$selRow = @mysqli_fetch_array($selRes);
$sysName = $selRow[sysTypeName];
if($sysTypeNo==390)
$getSysIdSql = "SELECT sysNo,subSysNo,ip
FROM $sysInfoTable
WHERE sysTypeNo='$sysTypeNo' AND sysNo='$sysNo' AND baseStat > '0'
ORDER BY sysNo,subSysNo
";
else
$getSysIdSql = "SELECT sysNo,subSysNo,ip
FROM $sysInfoTable
WHERE sysTypeNo='$sysTypeNo' AND baseStat > '0'
ORDER BY sysNo,subSysNo
";
if($DEBUG) echo "
getSysIdSql=$getSysIdSql";
$getSysIdResult= mysqli_query($pubConn,$getSysIdSql);
echo mysqli_error($pubConn);
$runningServerNum = mysqli_num_rows($getSysIdResult);
if($runningServerNum <= 0){
echo "No system running normally";
return 0;
}
if($DEBUG) echo "running server number = $runningServerNum
";
//找出已有的记录个数
$getTotalSql = "SELECT count(*) FROM $subsDataTable";
if($DEBUG) echo "
getTotalSql=$getTotalSql";
$getTotalRes = mysqli_query($pubConn,$getTotalSql);
$getTotalRow = @mysqli_fetch_array($getTotalRes);
$existNum = $getTotalRow[0];
if($DEBUG) echo "
existNum=$existNum";
//检查导入的文件大小,记录条数
$impFileSize = filesize($impFile);
if($DEBUG) {
echo "
impFile=$impFile";
echo "
impFileSize=$impFileSize";
}
if($impFileSize > $maxImpFileSize){
$impFileSizeM=ceil($impFileSize/1024/1024);
echo "File size is too large!(Must <= 5M)";
@unlink ($impFile);
return 0;
}
if($impFileSize <=0){
echo "subscriber data is null.";
@unlink ($impFile);
return 0;
}
$impRecordNum = count(file($impFile));
if($DEBUG) echo "
impRecordNum=$impRecordNum";
if($impRecordNum > $maxImpRecordNum){
echo "Records are too much!(Must <= $maxImpRecordNum)";
@unlink ($impFile);
return 0;
}
if($impRecordNum > $maxTotalNum-$existNum){
echo "User number is too much!";
@unlink ($impFile);
return 0;
}
for ($k=0; $k<$runningServerNum; $k++) {
$getSysIdRow=mysqli_fetch_array($getSysIdResult);
$sysId=$sysTypeNo.'_'.$getSysIdRow[sysNo].'_'.$getSysIdRow[subSysNo];
$dstSeverIp = $getSysIdRow[ip];
if($sysTypeNo==360)
$sysIdCyc[$k] = '360_99_99';
else if($sysTypeNo==390)
$sysIdCyc[$k]='390_'.$getSysIdRow[sysNo].'_99';
else
$sysIdCyc[$k] = $sysId;
if($DEBUG) echo "
sysId = $sysId";
if($DEBUG) echo "
dstSeverIp = $dstSeverIp";
/* close ftp
$ftpCon=ftp_connect($dstSeverIp);
if($ftpCon < 0){
echo "Connect Failed!";
@unlink ($impFile);
return 0;
}
*/
$connection=sftp_connect($dstSeverIp);
if(!$connection)
{
echo "Connect Failed!";
@unlink ($impFile);
return 0;
}
/* fclose ftp
if(!ftp_login($ftpCon,$ftpLoginName,$ftpLoginPwd)){
echo "Login Failed!";
@unlink ($impFile);
return 0;
}
*/
$key=sftp_login($connection,$ftpLoginName,$ftpLoginPwd);
if(!$key)
{
echo "Login Failed!";
@unlink ($impFile);
return 0;
}
$remoteFileName=$ftpDir.$impFileName;
/* close ftp
if(!ftp_put($ftpCon,$remoteFileName,$impFile,FTP_ASCII)){
echo "Put file Failed";
@unlink ($impFile);
return 0;
}
ftp_quit($ftpCon);
*/
if(!sftp_put($ftpCon,$remoteFileName,$impFile,SFTP_ASCII)){
echo "Put file Failed";
@unlink ($impFile);
return 0;
}
$logFile="/usr/local/apache/htdocs/ftpFile/$logFileName";
@unlink ($logFile);
}
@unlink ($impFile);
//修改设备参数
if($sysTypeNo==340){
$k4_flag = 0; //should be 0 or 8.
$instanceNo = 0;
$commState = $k4_flag.'1';
$totalNum = DecHex($impRecordNum);
$totalNum = omc_keep_length($totalNum,'0',6);
if($k4_flag!=8)
$k4 = '0000000000000000';
else{
if(strlen($k4)<16){
echo "K4 is incorrect!";
return 0;
}
}
$newValue = $commState.$totalNum.$k4;
}else{
$instanceNo = 0;
$commState = '01';
$totalNum = DecHex($impRecordNum);
$totalNum = omc_keep_length($totalNum,'0',6);
$finishNum = '000000';
$newValue = $commState.$totalNum.$finishNum;
}
if($DEBUG)echo "
newValue=$newValue";
//send set command
for ($k=0; $k< $runningServerNum; $k++) {
$chgResult = setSysParamValue($sysIdCyc[$k],$impObjId,$instanceNo,$newValue);
$commStr = sysCommSend($sysIdCyc[$k],$nSetComm,$impObjId);
chkCommStat($sysId,$impObjId,$impRecordNum,$commStr);
}
}//end updateSubs
function chkCommStat($sysId,$impObjId,$impRecordNum,$commStr)
{
$nProcFail =0;
$nWaitProc =1;
$nInProc =2;
$nOutProc =3;
$sysIdArr=explode('_',$sysId);
$sysTypeNo =$sysIdArr[0];
$sysNo =$sysIdArr[1];
$subSysNo =$sysIdArr[2];
$maxSeconds = 20;
while(1) {
$paramValue = getSysParamValue($sysId,$impObjId,0,'readValue');
$impCommState = substr($paramValue,0,2);
$runSeconds += 2;
if($sysTypeNo==340){
$allNum=$impRecordNum;
$doneNum = substr($paramValue,2,6);
$doneNum = HexDec($doneNum);
}else{
$allNum = substr($paramValue,2,6);
$allNum = HexDec($allNum);
$doneNum = substr($paramValue,8,6);
$doneNum = HexDec($doneNum);
}
if($doneNum > $oldDoneNum){
$runSeconds = 0;
}
$oldDoneNum = $doneNum;
sleep(2);
if($runSeconds > $maxSeconds || $doneNum >= $allNum || $impCommState == '03' || $impCommState == '04')
{
if($impCommState == '04'){
echo "Failed!";
}elseif($runSeconds > $maxSeconds){
echo "Response Time Out!";
}else{
echo "Finished!";
}
break;
}
$commIdArr = explode('-',$commStr);
$commId = $commIdArr[0];
$commSql = " SELECT commState FROM parameterComm WHERE commId = '$commId' ";
$commRes = mysqli_query($pubConn,$commSql);
$commRow = @mysqli_fetch_array($commRes);
$commStat = $commRow[commState];
if($commStat == $nOutProc || !isset($commStat)){
$commStr = sysCommSend($sysId,0,$impObjId);
}
}//end while
}//end chkCommStat
function updateBssDb($bssIpAddr,$localDir)
{
$remoteDir = "/hd0/iw07_00.010/compile/cfg/";
$ftpCon=@ftp_connect($bssIpAddr);
if($ftpCon < 0){
echo "BSS's ip is error or connect $bssIpAddr Failed!";
flush();
return 0;
}
if(!@ftp_login($ftpCon,'','')){
echo "BSS's ip is error or login $bssIpAddr Failed!";
@ftp_close($ftpCon);
flush();
return 0;
}
if(!@ftp_chdir($ftpCon, $remoteDir)){
echo "Change dir error!";
@ftp_close($ftpCon);
flush();
return 0;
}
$dir = @dir($localDir);
while(false !== ($entry=$dir->read())) {
if(is_file("$localDir$entry") && $entry!='.' && $entry!='..')
$fileArr[] = $entry;
}
for($i=0; $i< sizeof($fileArr); $i++) {
$file = $fileArr[$i];
$remoteFile=$remoteDir.$file;
$localFile=$localDir.$file;
if (!@ftp_put($ftpCon, $remoteFile, $localFile, FTP_BINARY)) {
flush();
echo "Put file error!";
@ftp_close($ftpCon);
return 0;
}
}//end for
@ftp_close($ftpCon);
return 1;
}//end get BssDb
?>
Back";
}
?>