运维功能调整

main
Matthew 2 years ago
parent abdacbba38
commit 257f623c25

@ -88,6 +88,17 @@ foreach ($rows as $row)
$cmdData = empty($row['cmd']) ? array() : json_decode($row['cmd'], true); $cmdData = empty($row['cmd']) ? array() : json_decode($row['cmd'], true);
if ($row['name'] == 'upgrade') if ($row['name'] == 'upgrade')
{
if (!empty($cmdData['url']))
{
$result['isUpgrade'] = 1;
$result['sj'] = 1;
$result['url'] = $cmdData['url'];
}
}
else
{
if ($row['name'] == 'upload-logs')
{ {
if (!empty($cmdData['url'])) if (!empty($cmdData['url']))
{ {
@ -100,13 +111,9 @@ foreach ($rows as $row)
{ {
$cmdData['url'] .= '&termId=' . urlencode($row['term_id']); $cmdData['url'] .= '&termId=' . urlencode($row['term_id']);
} }
$result['isUpgrade'] = 1;
$result['sj'] = 1;
$result['url'] = $cmdData['url'];
} }
} }
else
{
$result['cmd'] = $row['name']; $result['cmd'] = $row['name'];
if (!empty($row['cmd'])) if (!empty($row['cmd']))
{ {

@ -7,17 +7,18 @@ $db = new PDO('mysql:host=' . $config['host'] . ';dbname=' . $config['database']
\PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8mb4'" \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8mb4'"
]); ]);
$action = isset($_GET['act']) ? $_GET['act'] : ''; $action = isset($_GET['act']) ? $_GET['act'] : '';
$termId = isset($_GET['termId']) ? intval($_GET['termId']) : 0; $termId = isset($_GET['termId']) ? intval($_GET['termId']) : 0;
$termIdsStr = isset($_GET['termIds']) ? $_GET['termIds'] : ''; $termIdsStr = isset($_GET['termIds']) ? $_GET['termIds'] : '';
$mntnMode = isset($_GET['mntn']) ? intval($_GET['mntn']) : 0;
$quickHeartbeat = isset($_GET['quickhb']) ? intval($_GET['quickhb']) : 0;
if (!$termId && !$termIdsStr) if (!$termId && !$termIdsStr)
{ {
exit(); exit();
} }
$result = array('code' => 0, 'data' => array());
$termIds = array(); $termIds = array();
if (!empty($termIdsStr)) if (!empty($termIdsStr))
{ {
@ -28,21 +29,59 @@ else
$termIds[] = $termId; $termIds[] = $termId;
} }
$sql = "DELETE FROM mntn_cmds WHERE term_id=:termid AND `name`=:cmdName"; if ($action == 'mntn')
$stmt1 = $db->prepare($sql); {
$mntnMode = isset($_GET['mntn']) ? intval($_GET['mntn']) : 0;
// $quickHeartbeat = isset($_GET['quickhb']) ? intval($_GET['quickhb']) : 0;
$sql = "INSERT INTO mntn_cmds(term_id,`name`,`cmd`,`desc`) VALUES(:termId,:cmdName,:cmd,:cmdDesc)"; // header("qhb:" . $quickHeartbeat);
$stmt2 = $db->prepare($sql); header("mntn:" . $mntnMode);
$sql = "UPDATE mntn_status SET `quick_hb`=:qhb,`in_maintain`=:mntn,`mode_time`=CURRENT_TIMESTAMP() WHERE term_id=:termId"; $sql = "UPDATE mntn_status SET `in_maintain`=:mntn,`mode_time`=CURRENT_TIMESTAMP() WHERE term_id=:termId";
$stmt3 = $db->prepare($sql); $stmt3 = $db->prepare($sql);
header("qhb:" . $quickHeartbeat); foreach($termIds as $termId)
header("mntn:" . $mntnMode); {
$res = $stmt3->execute(array('termId' => $termId, 'mntn' => $mntnMode));
if (!$res)
{
print_r($stmt3->errorInfo());
}
$result = array('code' => 0, 'data' => array()); $result['data'][] = $termId;
foreach($termIds as $termId) }
}
else if ($action == 'quickhb')
{ {
$quickHeartbeat = isset($_GET['quickhb']) ? intval($_GET['quickhb']) : 0;
header("qhb:" . $quickHeartbeat);
$sql = "UPDATE mntn_status SET `quick_hb`=:qhb,`mode_time`=CURRENT_TIMESTAMP() WHERE term_id=:termId";
$stmt3 = $db->prepare($sql);
foreach($termIds as $termId)
{
$res = $stmt3->execute(array('termId' => $termId, 'qhb' => $quickHeartbeat));
if (!$res)
{
print_r($stmt3->errorInfo());
}
$result['data'][] = $termId;
}
}
else
{
$sql = "DELETE FROM mntn_cmds WHERE term_id=:termid AND `name`=:cmdName";
$stmt1 = $db->prepare($sql);
$sql = "INSERT INTO mntn_cmds(term_id,`name`,`cmd`,`desc`) VALUES(:termId,:cmdName,:cmd,:cmdDesc)";
$stmt2 = $db->prepare($sql);
foreach($termIds as $termId)
{
$termId = intval($termId); $termId = intval($termId);
$values = array('termId' => $termId, 'cmd' => '', 'cmdDesc' => '', 'cmdName' => ''); $values = array('termId' => $termId, 'cmd' => '', 'cmdDesc' => '', 'cmdName' => '');
@ -65,7 +104,7 @@ foreach($termIds as $termId)
$values['cmdName'] = 'i1_cmd_set_i1_server_ip_port'; $values['cmdName'] = 'i1_cmd_set_i1_server_ip_port';
$values['cmd'] = json_encode(array('value_str' => $_GET['ip'], 'value_int' => intval($_GET['port']))); $values['cmd'] = json_encode(array('value_str' => $_GET['ip'], 'value_int' => intval($_GET['port'])));
} }
else if ($action == 'set-mntn-svr') else if ($action == 'set-mntn')
{ {
$values['cmdName'] = 'i1_cmd_set_xy_yw_ip_port'; $values['cmdName'] = 'i1_cmd_set_xy_yw_ip_port';
$values['cmd'] = json_encode(array('value_str' => $_GET['ip'], 'value_int' => intval($_GET['port']))); $values['cmd'] = json_encode(array('value_str' => $_GET['ip'], 'value_int' => intval($_GET['port'])));
@ -75,16 +114,11 @@ foreach($termIds as $termId)
$values['cmdName'] = 'i1_cmd_set_i1_heart_beat_time'; $values['cmdName'] = 'i1_cmd_set_i1_heart_beat_time';
$values['cmd'] = json_encode(array('value_int' => intval($_GET['hb']))); $values['cmd'] = json_encode(array('value_int' => intval($_GET['hb'])));
} }
else if ($action == 'upload-logs')
{
$values['cmdName'] = 'yw_cmd_upload_i1_zip_log';
$values['cmd'] = json_encode(array('url' => intval($_GET['url'])));
}
else if ($action == 'upgrade') else if ($action == 'upgrade')
{ {
$values['cmdName'] = 'upgrade'; $values['cmdName'] = 'upgrade';
$md5 = empty($_GET['md5']) ? '' : $_GET['md5']; $md5 = empty($_GET['md5']) ? '' : $_GET['md5'];
$values['cmd'] = json_encode(array('url' => intval($_GET['url']), 'md5' => $md5)); $values['cmd'] = json_encode(array('url' => $_GET['url'], 'md5' => $md5));
} }
else if ($action == 'start-frpc') else if ($action == 'start-frpc')
{ {
@ -96,7 +130,7 @@ foreach($termIds as $termId)
$frpc['type'] = empty($_GET['type']) ? '' : $_GET['type']; $frpc['type'] = empty($_GET['type']) ? '' : $_GET['type'];
$frpc['local_ip'] = empty($_GET['local_ip']) ? '' : $_GET['local_ip']; $frpc['local_ip'] = empty($_GET['local_ip']) ? '' : $_GET['local_ip'];
$frpc['local_port'] = empty($_GET['local_port']) ? '0' : intval($_GET['local_port']) . ''; $frpc['local_port'] = empty($_GET['local_port']) ? '0' : intval($_GET['local_port']) . '';
$frpc['remote_port'] = empty($_GET['remote_port']) ? '0' : intval($_GET['local_port']) . ''; $frpc['remote_port'] = empty($_GET['remote_port']) ? '0' : intval($_GET['remote_port']) . '';
$frpc_str = json_encode($frpc); $frpc_str = json_encode($frpc);
@ -115,12 +149,6 @@ foreach($termIds as $termId)
// continue; // continue;
} }
$res = $stmt3->execute(array('termId' => $termId, 'mntn' => $mntnMode, 'qhb' => $quickHeartbeat));
if (!$res)
{
print_r($stmt3->errorInfo());
}
if (!empty($action)) if (!empty($action))
{ {
$res = $stmt1->execute(array('termid' => $termId, 'cmdName' => $values['cmdName'])); $res = $stmt1->execute(array('termid' => $termId, 'cmdName' => $values['cmdName']));
@ -146,9 +174,10 @@ foreach($termIds as $termId)
// i1_cmd_set_xy_yw_ip_port //参数 value_str:ip value_int:port // i1_cmd_set_xy_yw_ip_port //参数 value_str:ip value_int:port
// i1_cmd_set_i1_heart_beat_time ////参数 value_int:心跳间隔 // i1_cmd_set_i1_heart_beat_time ////参数 value_int:心跳间隔
}
}
}
header ('Content-type: application/json; charset=utf-8'); header ('Content-type: application/json; charset=utf-8');

@ -27,13 +27,14 @@ if (!empty($_GET['cmdid']))
$values['cmdid'] = '%' . $_GET['cmdid'] . '%'; $values['cmdid'] = '%' . $_GET['cmdid'] . '%';
} }
$conditions[] = "t4.`raw_report_time`<>0";
$conditionStr = ''; $conditionStr = '';
if (count($conditions) > 0) if (count($conditions) > 0)
{ {
$conditionStr = ' WHERE ' . implode($conditions, ' AND '); $conditionStr = ' WHERE ' . implode($conditions, ' AND ');
} }
$sql = "SELECT t1.id, t1.cmdid,t1.`display_name`,t1.`protocol`,t2.`name` AS tower_name,t3.`name` AS line_name, t4.last_raw_report AS raw_report,FROM_UNIXTIME(t4.raw_report_time) AS last_heartbeat,t4.in_maintain,t4.quick_hb,t4.mode_time"; $sql = "SELECT t1.id, t1.cmdid,t1.`display_name`,t1.`protocol`,t2.`name` AS tower_name,t3.`name` AS line_name, t4.last_raw_report AS raw_report,t4.raw_report_time AS last_heartbeat_ts,FROM_UNIXTIME(t4.raw_report_time) AS last_heartbeat,t4.in_maintain,t4.quick_hb,t4.mode_time";
$sql .= " FROM terminals AS t1 JOIN towers AS t2 ON t1.tower_id=t2.id JOIN `lines` AS t3 ON t2.line_id=t3.id"; $sql .= " FROM terminals AS t1 JOIN towers AS t2 ON t1.tower_id=t2.id JOIN `lines` AS t3 ON t2.line_id=t3.id";
$sql .= " LEFT JOIN mntn_status AS t4 ON t1.id=t4.term_id " . $conditionStr . " ORDER BY t2.line_id,t2.`order`,t1.cmdid"; $sql .= " LEFT JOIN mntn_status AS t4 ON t1.id=t4.term_id " . $conditionStr . " ORDER BY t2.line_id,t2.`order`,t1.cmdid";
$stmt = $db->prepare($sql); $stmt = $db->prepare($sql);

@ -14,6 +14,12 @@
<table border=0 borderColorLight="#99ccff" borderColorDark="#FFFFFF" cellpadding=4 cellspacing=0 width="100%" style="position: sticky; z-index: 10000;" > <table border=0 borderColorLight="#99ccff" borderColorDark="#FFFFFF" cellpadding=4 cellspacing=0 width="100%" style="position: sticky; z-index: 10000;" >
<tr style="background-color: aqua;"> <tr style="background-color: aqua;">
<td> <td>
<select id="mntn-status">
<option value="0"> 全部 </option>
<option value="1"> 在线 </option>
<option value="2"> 离线 </option>
</select>
&nbsp;
<select id="lines"> <select id="lines">
<option value="0"> 全部线路 </option> <option value="0"> 全部线路 </option>
</select> </select>
@ -53,7 +59,6 @@
<option value="stop-frpc">停止frpc</option> <option value="stop-frpc">停止frpc</option>
<option value="stop-aging-test">停止老化测试</option> <option value="stop-aging-test">停止老化测试</option>
</select> </select>
&nbsp; &nbsp; <input type="checkbox" id="mntn-mode" value="1">运维模式 <input type="checkbox" id="quick-hb-mode" value="1">快心跳模式
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<input type="button" id="btn-send" value=" 下发命令 " /> <input type="button" id="btn-send" value=" 下发命令 " />
@ -141,6 +146,7 @@
<th colspan="2" align="center">重启次数</th> <th colspan="2" align="center">重启次数</th>
<th rowspan="2" align="center">CMA服务器</th> <th rowspan="2" align="center">CMA服务器</th>
<th rowspan="2" align="center">SIM卡</th> <th rowspan="2" align="center">SIM卡</th>
<th rowspan="2" align="center">出厂Id</th>
<th rowspan="2" align="center">版本</th> <th rowspan="2" align="center">版本</th>
</tr> </tr>
@ -197,12 +203,21 @@
$.getJSON(urlTarget, params, function(result) { $.getJSON(urlTarget, params, function(result) {
$('#term-cnt').text("装置数量:" + result.data.length);
var tableResult = $('#tbody-result')[0]; var tableResult = $('#tbody-result')[0];
var dt = new Date();
var ts = dt.getTime() / 1000;
var mntn_status = $('#mntn-status').val();
var terminalCnt = 0;
for (var idx = 0; idx < result.data.length; idx++) for (var idx = 0; idx < result.data.length; idx++)
{ {
var item = result.data[idx]; var item = result.data[idx];
var status_online = (ts - item.last_heartbeat_ts <= 720);
if (((mntn_status == 2) && status_online) || ((mntn_status == 1) && !status_online))
{
continue;
}
terminalCnt++;
var msgsObj = {}; var msgsObj = {};
if ('msgs' in item.raw_report) if ('msgs' in item.raw_report)
{ {
@ -228,12 +243,12 @@
} }
var td3 = '<span id="cmdid-' + item.id + '" class="cmdid" title="' + text + '">' + item.cmdid + '</span>'; var td3 = '<span id="cmdid-' + item.id + '" class="cmdid" title="' + text + '">' + item.cmdid + '</span>';
var td4 = (item.in_maintain == 0) ? '否' : '是'; var td4 = '<input type="checkbox" onclick="javascript:UpdateMaintainMode(this, ' + item.id + ');"' + ((item.in_maintain == 0) ? '' : ' CHECKED') + '>';
var td5 = (item.quick_hb == 0) ? '否' : '是'; var td5 = '<input type="checkbox" onclick="javascript:UpdateQuickHbMode(this, ' + item.id + ');"' + ((item.quick_hb == 0) ? '' : ' CHECKED') + '>';
var td6 = ConvertProtocolName(item.protocol); var td6 = ConvertProtocolName(item.protocol);
// var hbDetailUrl = "hb.html?term_id=" + item.id + "&cmdid=" + item.cmdid + "&st=" + startTime + "&et=" + endTime; // var hbDetailUrl = "hb.html?term_id=" + item.id + "&cmdid=" + item.cmdid + "&st=" + startTime + "&et=" + endTime;
var td7 = item.last_heartbeat_time; var td7 = '<span class="' + (status_online ? 'online-hb' : 'offline-hb') + '">' + item.last_heartbeat_time + '</span>';
var td8 = (('numberOfHb' in msgsObj) ? msgsObj.numberOfHb : ''); var td8 = (('numberOfHb' in msgsObj) ? msgsObj.numberOfHb : '');
var td9 = (('heartbeatDuration' in msgsObj) ? msgsObj.heartbeatDuration : ''); var td9 = (('heartbeatDuration' in msgsObj) ? msgsObj.heartbeatDuration : '');
var td10 = ('recv' in msgsObj) ? msgsObj.recv : ''; var td10 = ('recv' in msgsObj) ? msgsObj.recv : '';
@ -254,6 +269,8 @@
var td20 = ('cma' in msgsObj) ? msgsObj.cma : ''; var td20 = ('cma' in msgsObj) ? msgsObj.cma : '';
var td21 = (('simcard1' in msgsObj) ? ('<span title="卡1">' + msgsObj.simcard1 + '</span>') : '') + '<br>' + (('simcard2' in msgsObj) ? ('<span title="卡2">' + msgsObj.simcard2 + '</span>') : ''); var td21 = (('simcard1' in msgsObj) ? ('<span title="卡1">' + msgsObj.simcard1 + '</span>') : '') + '<br>' + (('simcard2' in msgsObj) ? ('<span title="卡2">' + msgsObj.simcard2 + '</span>') : '');
var td22 = ('oid' in item.raw_report) ? item.raw_report.oid : '';
var version = ''; var version = '';
if ('i1Version' in msgsObj) if ('i1Version' in msgsObj)
{ {
@ -276,18 +293,29 @@
{ {
version += '&nbsp; <b>MCU</b>:' + msgsObj.mcu; version += '&nbsp; <b>MCU</b>:' + msgsObj.mcu;
} }
var td22 = version; var td23 = version;
// "安徽欣影ds2-2x/4x,yw:0829_4.2.502, i1:ahxy_0829_4.2.502, cam:4.2.1, ai:1.1.0_1, i1服务器:47.96.238.157:6891 ,心跳间隔:1 , // "安徽欣影ds2-2x/4x,yw:0829_4.2.502, i1:ahxy_0829_4.2.502, cam:4.2.1, ai:1.1.0_1, i1服务器:47.96.238.157:6891 ,心跳间隔:1 ,
// 电池:6.3V\/0.2V\/87% ,系统重启:1 ,i1重启:13 ,收:10:52 ,拍:48\/44 ,成:44 ,败:0 ,传:44 , // 电池:6.3V\/0.2V\/87% ,系统重启:1 ,i1重启:13 ,收:10:52 ,拍:48\/44 ,成:44 ,败:0 ,传:44 ,
// 心跳累计:142 ,网络异常:139 ,信号1:4\/99 ,信号2:4\/99 ,卡1:898604F5122380159566,卡2: ,mcu:MTK_MCU_V3.2.5 Aug 9 2023" // 心跳累计:142 ,网络异常:139 ,信号1:4\/99 ,信号2:4\/99 ,卡1:898604F5122380159566,卡2: ,mcu:MTK_MCU_V3.2.5 Aug 9 2023"
var tr = AppendTable(tableResult, td1, td2, td3, td4, td5, td6, td7, td8, td9, td10, td11, td12, td13, td14, td15, td16, td17, td18, td19, td20, td21, td22); var tr = AppendTable(tableResult, td1, td2, td3, td4, td5, td6, td7, td8, td9, td10, td11, td12, td13, td14, td15, td16, td17, td18, td19, td20, td21, td22, td23);
if ((item.in_maintain != 0) || (item.quick_hb != 0)) if (item.in_maintain != 0)
{ {
tr.classList.add("in_maintain"); tr.cells[3].classList.add("in_maintain");
} }
if (item.quick_hb != 0)
{
tr.cells[4].classList.add("in_maintain");
} }
}
$('#term-cnt').text("装置数量:" + terminalCnt);
}); });
} }
@ -332,6 +360,54 @@
} }
} }
function UpdateMaintainMode(src, termId) {
var params = {'act': 'mntn'};
params['mntn'] = $(src).prop('checked') ? 1 : 0;
var urlTarget = 'api/doAction.php';
params['termId'] = termId;
$.getJSON(urlTarget, params, function(result) {
for (var idx = 0; idx < result.data.length; idx++)
{
if (result.data[idx] == termId)
{
if (params['mntn'] == 1) {
src.parentNode.classList.add("in_maintain");
} else {
src.parentNode.classList.remove("in_maintain");
}
}
// $("#cmdid-" + result.data[idx]).addClass("sent");
}
});
}
function UpdateQuickHbMode(src, termId) {
var params = {'act': 'quickhb'};
params['quickhb'] = $(src).prop('checked') ? 1 : 0;
var urlTarget = 'api/doAction.php';
params['termId'] = termId;
$.getJSON(urlTarget, params, function(result) {
for (var idx = 0; idx < result.data.length; idx++)
{
if (result.data[idx] == termId)
{
if (params['quickhb'] == 1) {
src.parentNode.classList.add("in_maintain");
} else {
src.parentNode.classList.remove("in_maintain");
}
}
// $("#cmdid-" + result.data[idx]).addClass("sent");
}
});
}
$('#btn-send').click(function() { $('#btn-send').click(function() {
var act = $('#act').val(); var act = $('#act').val();
if ((act == null || act == '') && !$('#mntn-mode').prop('checked') && !$('#quick-hb-mode').prop('checked')) { if ((act == null || act == '') && !$('#mntn-mode').prop('checked') && !$('#quick-hb-mode').prop('checked')) {
@ -419,7 +495,7 @@
params['remote_port'] = $('#frpc-remote-port').val(); params['remote_port'] = $('#frpc-remote-port').val();
if (params['remote_port'] == null || params['remote_port'] == '') { if (params['remote_port'] == null || params['remote_port'] == '') {
alert('请输入Remote Port。'); alert('请输入Remote Port。');
$('#frpc-local-ip').focus(); $('#frpc-remote-port').focus();
return; return;
} }
params['frpc_type'] = $('#frpc-type').val(); params['frpc_type'] = $('#frpc-type').val();

@ -200,12 +200,23 @@ TD.merged-dark
color: green; color: green;
} }
tr.in_maintain tr.in_maintain,
td.in_maintain
{ {
background-color: red; background-color: red;
} }
tr.in_maintain td td.in_maintain
{ {
color: yellow; color: yellow;
} }
.online-hb
{
color: green;
}
.offline-hb
{
color: gray;
}
Loading…
Cancel
Save