394 lines
11 KiB
PHP
Executable File
394 lines
11 KiB
PHP
Executable File
<?php
|
||
/*********************************************************
|
||
文件说明:
|
||
功能说明:上载文件
|
||
|
||
|
||
调用关系:调用:header.inc
|
||
被调用:
|
||
变量说明:
|
||
|
||
作者:
|
||
|
||
修改注释:
|
||
NO.1
|
||
姓名:
|
||
时间:
|
||
修改说明:
|
||
*********************************************************/
|
||
require("../../inc/header.inc");
|
||
$helpId="6.6.1";
|
||
|
||
//****************************************************************
|
||
//
|
||
// 函数名 send_shm_tftp($file_name,$ip,$length)
|
||
//
|
||
// 功能说明:该函数用于在对数据库进行操作后,通过设置共享内存通知后台程序.
|
||
//
|
||
// 调用关系:
|
||
//
|
||
// 变量说明: $file_name文件名
|
||
// $ip IP地址
|
||
// $length message长度
|
||
// 返回值:
|
||
//
|
||
// 作者:
|
||
//
|
||
//修改注释:
|
||
//NO.1
|
||
//姓名:
|
||
//时间:
|
||
//修改说明:
|
||
//
|
||
//----------------------------------------------------------
|
||
|
||
function send_shm_tftp($file_name,$ip,$length)
|
||
{
|
||
global $strCommandBeExecute,$strDaemonOperationTimeout,$strDaemonOperationFailure,$strDaemonOperationSuccess,$strSetMemoryFailure,$strDaemonRecordNoChange,$strMemoryWaitStatus,$strDownloadSuccessToSwitch,$strDownloadFailureToSwitch;
|
||
$DEBUG=0;
|
||
$command_status_1=tftp_get_shm(0,1);//第一次扫描命令状态
|
||
if($DEBUG) echo "<br>command_status_1=$command_status_1";
|
||
if($command_status_1=='1' || $command_status_1=='2')//1--待执行状态 2--在执行状态
|
||
{
|
||
echo "<br><font color=\"#FF0000\">$strCommandBeExecute!</font>";
|
||
return(-1);
|
||
}
|
||
else//共享内存可写
|
||
{
|
||
if($DEBUG) echo "<br>file_name=$file_name";
|
||
if($DEBUG) echo "<br>ip=$ip";
|
||
if($DEBUG) echo "<br>length=$length";
|
||
$set_result_1=tftp_set_shm(1,0);
|
||
$set_result_2=tftp_set_shm($length,1);
|
||
$set_result_3=tftp_set_shm($ip,5);
|
||
$set_result_4=tftp_set_shm($file_name,20);
|
||
if($DEBUG) echo "<br>set_result_1=$set_result_1";
|
||
if($DEBUG) echo "<br>set_result_2=$set_result_2";
|
||
if($DEBUG) echo "<br>set_result_3=$set_result_3";
|
||
if($DEBUG) echo "<br>set_result_4=$set_result_4";
|
||
$scan_1=0;//待执行状态标识
|
||
$scan_2=0;//已处理记录标识
|
||
$pre_records=0;//上次处理记录数
|
||
if($set_result_1>0 && $set_result_2>0 && $set_result_3>0 && $set_result_4>0)//设置共享内存成功
|
||
{
|
||
do{
|
||
sleep(2);
|
||
$command_status_2=tftp_get_shm(0,1);
|
||
if($DEBUG) echo "<br>command_status_2=$command_status_2";
|
||
if($command_status_2=='1')
|
||
{
|
||
$scan_1++;
|
||
if($DEBUG) echo "<br>scan_1=$scan_1";
|
||
if($scan_1>1)//如果连续4秒处于该状态,异常退出
|
||
{
|
||
$prompt_name=$strMemoryWaitStatus;
|
||
echo "<br><font color=\"#FF0000\">$prompt_name</font>";
|
||
break;
|
||
}
|
||
}
|
||
elseif($command_status_2=='2')
|
||
{
|
||
$the_records=tftp_get_shm(60,4);
|
||
if($DEBUG) echo "<br>the_records=$the_records";
|
||
if($DEBUG) echo "<br>pre_records=$pre_records";
|
||
if($pre_records==$the_records)
|
||
{
|
||
$scan_2++;
|
||
//echo "<br>scan_2=$scan_2";
|
||
}
|
||
else
|
||
{
|
||
$pre_records=$the_records;//把本次已处理记录数赋给上次记录数
|
||
}
|
||
if($scan_2>1)
|
||
{
|
||
$prompt_name=$strDaemonRecordNoChange;
|
||
echo "<br><font color=\"#FF0000\">$prompt_name</font>";
|
||
break;//如果连续4秒已处理记录数不变,异常退出
|
||
}
|
||
}
|
||
else
|
||
{
|
||
$describe=tftp_get_shm(64,36);
|
||
echo "<br><font color=\"#0000FF\">$describe</font>";
|
||
if($command_status_2=='4')
|
||
{
|
||
$prompt_name="$strDownloadFailureToSwitch";
|
||
echo "<br><font color=\"#FF0000\">$prompt_name</font>";
|
||
|
||
}
|
||
elseif($command_status_2=='3')
|
||
{
|
||
$prompt_name="$strDownloadSuccessToSwitch";
|
||
echo "<br><font color=\"#0000FF\">$prompt_name</font>";
|
||
$suc_sign=1;
|
||
}
|
||
}
|
||
}while($command_status_2=='1' || $command_status_2=='2');
|
||
$set_result=tftp_set_shm(0,0);
|
||
if($suc_sign>0){
|
||
return(1);
|
||
}else{
|
||
return(-1);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
echo "<br><font color=\"#FF0000\">$strSetMemoryFailure</font>";
|
||
$set_result=tftp_set_shm(0,0);
|
||
return(-1);
|
||
}
|
||
}//end else共享内存可写
|
||
}
|
||
|
||
//****************************************************************
|
||
// 函数2 tftp_set_shm($str,$offset)
|
||
//
|
||
// 功能说明:该函数用于tftp通知后台程序的共享内存设定.
|
||
//
|
||
// 调用关系:
|
||
//
|
||
// 变量说明:$str 写入共享内存中的字串
|
||
// $offset 从开辟的共享内存块中的第几位开始写
|
||
// (0:发送一般命令,1:发送uninstall命令)
|
||
//
|
||
// 返回值:操作类型的值(正:成功,负:失败)
|
||
//
|
||
//
|
||
//
|
||
//修改注释:
|
||
//NO.1
|
||
//姓名:
|
||
//时间:
|
||
//修改说明:
|
||
//
|
||
//----------------------------------------------------------
|
||
|
||
function tftp_set_shm($str,$offset)
|
||
{
|
||
//PHP_C_SHM_KEY 0x6AE00000
|
||
//PHP_C_SHM_PERM 0666
|
||
//PHP_C_SEM_KEY 440
|
||
//PHP_C_SEM_PERM 0666
|
||
//size 10*100 bytes
|
||
|
||
define("Semaphore_Key",440,1);
|
||
define("SharedMem_Key",0x6AE00000,1);
|
||
define("SharedMem_Size",1000,1); //共享内存大小
|
||
|
||
$SharedMemID = @shmop_open(SharedMem_Key,"c",0666,SharedMem_Size);
|
||
|
||
$sharemen_sign = 0;
|
||
|
||
//将指定变量存入共享内存
|
||
if(shmop_write($SharedMemID,$str,$offset))
|
||
$sharemen_sign++;
|
||
|
||
if($sharemen_sign == 1){
|
||
return(1);
|
||
}else{
|
||
return(-1);
|
||
}
|
||
}
|
||
|
||
//****************************************************************
|
||
// 函数3 tftp_get_shm($offset,$count)
|
||
//
|
||
// 功能说明:该函数用于tftp通知后台程序的共享内存设定.
|
||
//
|
||
// 调用关系:
|
||
//
|
||
// 变量说明: $offset 从开辟的共享内存块中的第几位开始读
|
||
// $count 读多少位
|
||
//
|
||
// 返回值:操作类型的值(正:读出的值,负:失败)
|
||
//
|
||
// 作者:
|
||
//
|
||
//修改注释:
|
||
//NO.1
|
||
//姓名:
|
||
//时间:
|
||
//修改说明:
|
||
//
|
||
//----------------------------------------------------------
|
||
|
||
function tftp_get_shm($offset,$count)
|
||
{
|
||
|
||
//PHP_C_SHM_KEY 0x6AE00000
|
||
//PHP_C_SHM_PERM 0666
|
||
//PHP_C_SEM_KEY 440
|
||
//PHP_C_SEM_PERM 0666
|
||
//size 10*100 bytes
|
||
|
||
define("Semaphore_Key",440,1);
|
||
define("SharedMem_Key",0x6AE00000,1);
|
||
define("SharedMem_Size",1000,1); //共享内存大小
|
||
$SharedMemID = @shmop_open(SharedMem_Key,"c",0666,SharedMem_Size);
|
||
|
||
//将指定共享内存存入变量
|
||
$Read_str= shmop_read($SharedMemID,$offset,$count);
|
||
|
||
return($Read_str);
|
||
}
|
||
|
||
if($action1){ //if files have been uploaded, process them
|
||
$DEBUG=0;
|
||
?>
|
||
<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%\" align=\"left\">";
|
||
echo "Advanced > Software Upgrade >Tftp";
|
||
echo "</td>";
|
||
echo "<td width=\"50%\" align=\"right\" title=\"Help\"> ";
|
||
|
||
echo "</td>";
|
||
echo "</tr>";
|
||
echo "</table>";
|
||
adjust_title_tail();
|
||
adjust_content_head();
|
||
echo "<br>";
|
||
?>
|
||
<p><font face="Arial, Helvetica, sans-serif"><font size="+1"><?php echo $strMapUploadResults; ?></font><br><br>
|
||
|
||
<?
|
||
set_time_limit(60); //make reasonably sure the script does not time out on large files
|
||
$path1 = dirname($PATH_TRANSLATED); // assign our path in a form PHP for Windows understands
|
||
if($DEBUG) echo "<br>path1=$path1";
|
||
$source = $file1;
|
||
if($DEBUG) echo "<br>source=$source";
|
||
$source_name = $file1_name;
|
||
if($DEBUG) echo "<br>source_name=$source_name";
|
||
echo "<br><font color=\"#0000FF\">FileName:$source_name</font>";
|
||
echo "<br><font color=\"#0000FF\">IPAddress:$ip</font>";
|
||
echo "<br><font color=\"#0000FF\">MessageLength:$length BYTES</font><br>";
|
||
|
||
$log_name="TFTP ".$strFileUpload;
|
||
if(($source <> "none")&&($source <> "")){ // see if the file exists; non-existing file has name of "none"
|
||
if($error1 <> 1){ // no need to copy a file if directory not write-enabled
|
||
$dest = $path1."/".$source_name; // append file name to our path
|
||
if($DEBUG) echo "<br>dest=$dest";
|
||
if(copy($source,$dest)){ // copy the file from the temp directory to the upload directory, and test for success
|
||
$newname = "../../../tftp/";
|
||
$newname .=$source_name;
|
||
if(copy($dest,$newname))
|
||
{
|
||
insertLog("$log_name");
|
||
echo "<br><font color=\"#0000FF\">$strFileUploadSuccessToServer</font><br>\n";
|
||
$set_result=send_shm_tftp($source_name,$ip,$length);
|
||
}
|
||
else
|
||
{
|
||
echo "<br><font color=\"#FF0000\">$strUploadFailure</font><br>\n";
|
||
insertLog("$log_name");
|
||
}
|
||
unlink ($dest);
|
||
}//end if(copy($source,$dest))
|
||
else
|
||
{
|
||
echo "$strUploadDirectoryNotWriteEnabled\n"; // you need to write-enable the upload directory
|
||
$error1 = 1; // set flag
|
||
insertLog("$log_name");
|
||
}
|
||
}//if($error1 <> 1)
|
||
unlink($source); // delete the file from the temp directory
|
||
}else{//if(($source <> "none")&&($source <> ""))
|
||
echo "<br><font color=\"#FF0000\">source=none!</font></br>";
|
||
}
|
||
?>
|
||
|
||
<br><br><a href="./tftp.php"><?php echo " <<< Return"; ?></a>
|
||
</font></p>
|
||
<?php
|
||
adjust_content_tail();
|
||
?>
|
||
</body>
|
||
</html>
|
||
|
||
<?
|
||
}//end if($action1)
|
||
else {
|
||
|
||
?>
|
||
<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 "Advanced > Software Upgrade >Tftp";
|
||
echo "</td>";
|
||
echo "<td width=\"50%\" align=\"right\" title=\"Help\">";
|
||
//showHelp($helpId);
|
||
echo "</td>";
|
||
echo "</tr>";
|
||
echo "</table>";
|
||
adjust_title_tail();
|
||
adjust_content_head();
|
||
echo "<br>";
|
||
|
||
?>
|
||
<p><font face="Arial, Helvetica, sans-serif"><font size="3"><b><?php echo $strTFTPFileTransfer; ?></b></font>
|
||
<p></p>
|
||
<form method="post" enctype="multipart/form-data" action="<?php echo "$PHP_SELF"; ?>">
|
||
<input type="hidden" name="MAX_FILE_SIZE" value="800000">
|
||
<input type="hidden" name="action1" value="1">
|
||
<table border="0" width="500">
|
||
<tr>
|
||
<td width="20%"><?php echo "File:"; ?></td>
|
||
<td width="80%"><input type="file" name="file1" size="20" class="button"></td>
|
||
</tr>
|
||
<tr>
|
||
<td width="20%"><?php echo "IP:"; ?></td>
|
||
<td width="80%"><input type="text" name="ip" size="20" class="button"></td>
|
||
</tr>
|
||
<tr>
|
||
<td width="20%"><?php echo "$strMessageLength:"; ?></td>
|
||
<td width="80%">
|
||
<select name="length">
|
||
<option value="64">64</option>
|
||
<option value="128" selected>128</option>
|
||
<option value="256">256</option>
|
||
<option value="512">512</option>
|
||
<option value="1024">1024</option>
|
||
</select>
|
||
Bytes
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td width="15%">
|
||
<?php echo "<input type=\"submit\" value=$strUpload class=\"button\">"; ?>
|
||
</td>
|
||
<td width="85%"> </td>
|
||
</tr>
|
||
</table>
|
||
</form>
|
||
|
||
</font></p>
|
||
</body>
|
||
<b>Remarks:</b><br><br>
|
||
Browse to 8K E1 Card software in the File field.<br>
|
||
Input IP address of LAN module of 8K E1 Card in the IP field.<br>
|
||
Set 128 bytes for the Message length option.<br>
|
||
<?php
|
||
adjust_content_tail();
|
||
?>
|
||
</html>
|
||
|
||
<?
|
||
}
|
||
?>
|
||
|
||
|
||
|
||
|
||
|