Network > Restore"; $DEBUG = 0; $db=$omc_db; set_time_limit(3600); $strNoInput = "No file input!"; 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' 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"; $ftpCon=ftp_connect($dstSeverIp); if($ftpCon < 0){ echo "Connect Failed!"; @unlink ($impFile); return 0; } if(!ftp_login($ftpCon,$ftpLoginName,$ftpLoginPwd)){ echo "Login Failed!"; @unlink ($impFile); return 0; } $remoteFileName=$ftpDir.$impFileName; if(!ftp_put($ftpCon,$remoteFileName,$impFile,FTP_ASCII)){ echo "Put file Failed"; @unlink ($impFile); return 0; } ftp_quit($ftpCon); $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 "SUCCESS!"; } 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 ?> "; echo ""; echo ""; echo "$ThisPage"; echo ""; echo ""; showHelp($helpId); echo ""; echo ""; echo ""; if(isset($inputFile)&&$inputFile!='') { $upload_file = $_FILES['inputFile']['tmp_name']; $upload_file_name = $_FILES['inputFile']['name']; $upload_file_size = $_FILES['inputFile']['size']; $upload_file_type = $_FILES['inputFile']['type']; $file_size_max = 20*1000*1000;// 20M限制文件上传最大容量(bytes) $accept_overwrite = 1;//是否允许覆盖相同文件 //echo "
upload_file_type:$upload_file_type"; if($upload_file_type != 'application/x-gzip-compressed' &&$upload_file_type != 'application/x-tgz') MsgBox("File Type is not correct, it should be a tgz file!"); //exit; // 检查文件大小 if ($upload_file_size > $file_size_max) { MsgBox("The file size is too large!"); } $uploadPath = "/usr/local/apache/htdocs/db_backup/archive/uploaded/";// 上传文件的储存位置 system("rm -rf $uploadPath"); exec("mkdir $uploadPath -p"); //exec("chmod -R 777 $uploadPath"); chmod($uploadPath,0777); // 检查读写文件 if (file_exists($uploadPath . $upload_file_name) && !$accept_overwrite) { MsgBox("The file is already existed!"); } //复制文件到指定目录 if (!copy($upload_file,$uploadPath.$upload_file_name)) { MsgBox("File copy error!"); } //解压缩文件 chdir($uploadPath); exec("tar zxvf $upload_file_name"); system("rm -f $upload_file_name"); sleep(2); } else { MsgBox($strNoInput); } //exit; ////////////////////////////////////////// $allSuccess = 1; $needUpdateParam = 1; $needUpdateSubs = 1; $needUpdateBSS = 1; $needReboot = 1; if($needUpdateParam && $allSuccess) {//update parameters $paramDir = 'params'; $paramPath = $uploadPath . $paramDir . '/'; if(is_dir($paramPath)) {//if there is exist paramPath. echo "
Updating system parameters ... "; flush(); getFileList($paramPath,$fileListArr); // print_r($fileListArr); // exit; for($i=0; $i    Updating [ $sysTypeName ] ... "; flush(); } $rtn = updateParamer($db_name,$table_name,$csvFileName); if($oldName !== $sysTypeName){ if($rtn==1) echo " SUCCESS"; else echo " FAIL"; flush(); } $oldName = $sysTypeName; $allSuccess &= $rtn; } } system("rm -rf $paramDir"); }//end if }//end update parameters. if($needUpdateSubs && $allSuccess) {//update subscribers' data $subsDir = 'subs'; $subsPath = $uploadPath . $subsDir . '/'; if(is_dir($subsPath)) {//if there is exist subsPath echo "

Updating system subscribers ... "; flush(); unset($fileListArr); getFileList($subsPath,$fileListArr); for($i=0; $i 0) { echo "
    Updating [ $sysTypeName ] ... "; flush(); updateSubs($sysId,0,$csvFileName); } } } system("rm -rf $subsDir"); } }//end update subscribers' data if($needUpdateBSS && $allSuccess) {//update bss. $bssDir = "bssDir"; $bssPath = $uploadPath . $bssDir . '/'; $bssOmcTlbDir = "omcTlb"; $bssOmcTlbPath = $bssPath . $bssOmcTlbDir . '/'; $bssDbDir = "dbs"; $bssDbPath = $bssPath . $bssDbDir . '/'; if(is_dir($bssPath)){//if there exist this bssDir echo "

Updating BSS ... "; flush(); //1. update bss db. if(1) { $dir = dir($bssDbPath); while(false !== ($entry = $dir->read())) { if(is_dir("$bssDbPath/$entry") && $entry != "." && $entry != "..") $bssIpArr[] = $entry; } for($i=0; $i< sizeof($bssIpArr); $i++) { $ip = $bssIpArr[$i]; //$ip = '172.18.128.111'; echo "
    Updating BSS' Database [ $ip ] ... "; flush(); $rtn = updateBssDb($ip,"$bssDbPath/$ip/"); if($rtn) echo " SUCCESS
"; $allSuccess &= $rtn; } }//end update bss db. //2. update bssomctable. if($allSuccess) { unset($fileListArr); getFileList($bssOmcTlbPath,$fileListArr); for($i=0; $i    Updating BSS' parameters ... "; $rtn = updateParamer($db_name,$table_name,$csvFileName); if($rtn==1) echo " SUCCESS"; else echo " FAIL"; flush(); $allSuccess &= $rtn; } } {//2.2 insert bss info to sysInfo table $lines = file($csvFileName); foreach ($lines as $line_num => $line) { //echo "Line #{$line_num} : " . htmlspecialchars($line) . "
\n"; $lineArr = explode(',',$line); $bssInfoArr[$line_num][sysNo] = $lineArr[0]; $bssInfoArr[$line_num][ip] = $lineArr[1]; } $sysInfoTable = "OMC_PUB.sysInfo"; $tmpSysType = 500; $tmpSubSysNo = 0; $isRemote = 0; $pubDb = "OMC_PUB"; for($i=0; $i< sizeof($bssInfoArr); $i++){ if(strlen($bssInfoArr[$i][ip])<7) continue; $bssIP = $bssInfoArr[$i][ip]; $tmpSysNo = $bssInfoArr[$i][sysNo]; $sysAlias='BSS'.$tmpSysNo; $addSql = "REPLACE INTO $sysInfoTable (sysTypeNo,sysNo,subSysNo,isRemote,netId,DPC,ip,baseStat,sysAlias,updateTime ) VALUES('$tmpSysType','$tmpSysNo','$tmpSubSysNo','$isRemote','0','0','$bssIP','1','$sysAlias',CURRENT_TIMESTAMP)"; if($DEBUG) echo "
addSql = $addSql"; $result = mysqli_query($pubConn,$addSql); echo mysqli_error($pubConn); } }//end nsert bss info to sysInfo table }//end update bssomctable. system("rm -rf $bssDir"); if($needReboot && $allSuccess)//3. reboot bss. { chdir("/usr/local/apache/htdocs/wxc2_omc/security/backupRestore"); for($i=0; $i< sizeof($bssIpArr); $i++) { $ip = $bssIpArr[$i]; echo "
    Rebooting BSS [ $ip ] ... "; flush(); $tmpCmd ="/usr/local/apache/htdocs/wxc2_omc/element/overview/bssReboot".' '.$ip; system($tmpCmd); //$lastLine = system($tmpCmd, $rtn); //echo "
$tmpCmd
$lastLine
$rtn"; } //var_dump($bssIpArr); }//end reboot bss. $tmpCmd ="/usr/local/apache/htdocs/wxc2_omc/element/overview/bsscommRestart"; system($tmpCmd); } }//end update bss. //exit; if($allSuccess) { //MsgBox("All needed success"); echo ""; } else { echo "

Back"; } ?>