remove monitors;
add command for restart/close server
This commit is contained in:
@@ -7,8 +7,7 @@ use Workerman\Protocols\Http\Response;
|
|||||||
require_once __DIR__ . '/vendor/autoload.php';
|
require_once __DIR__ . '/vendor/autoload.php';
|
||||||
|
|
||||||
use EdgeManager\EDataCapture\{ EDataCapture, ENodeConfigure };
|
use EdgeManager\EDataCapture\{ EDataCapture, ENodeConfigure };
|
||||||
use EdgeManager\EController\EConfigure;
|
use EdgeManager\EController\{ EConfigure, ECommand };
|
||||||
use EdgeManager\EMonitor\EStatusCapture;
|
|
||||||
|
|
||||||
$options = getopt('h::', ['no_dup_code', 'server_name:', 'port::', 'user:', 'password:', 'help::']);
|
$options = getopt('h::', ['no_dup_code', 'server_name:', 'port::', 'user:', 'password:', 'help::']);
|
||||||
|
|
||||||
@@ -191,6 +190,19 @@ $worker -> onMessage = function(TcpConnection $connection, Request $request) {
|
|||||||
'errmsg' => 'ROLLBACKed: Bad data received (structure and/or values)'
|
'errmsg' => 'ROLLBACKed: Bad data received (structure and/or values)'
|
||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
|
} else if ($post -> action === 'exec') {
|
||||||
|
$task_connection = new AsyncTcpConnection('Text://127.0.0.1:1888');
|
||||||
|
$task_data = array(
|
||||||
|
'action' => 'exec',
|
||||||
|
'data' => $post,
|
||||||
|
);
|
||||||
|
$task_connection -> send(json_encode($task_data));
|
||||||
|
$task_connection -> onMessage = function(AsyncTcpConnection $task_connection, $task_result) use ($connection) {
|
||||||
|
$task_connection -> close();
|
||||||
|
$connection -> send($task_result);
|
||||||
|
};
|
||||||
|
// 执行异步连接
|
||||||
|
$task_connection->connect();
|
||||||
} else {
|
} else {
|
||||||
// 有action,但是不知道是什么鬼动作
|
// 有action,但是不知道是什么鬼动作
|
||||||
$response = new Response(200, [
|
$response = new Response(200, [
|
||||||
@@ -311,20 +323,6 @@ $worker -> onMessage = function(TcpConnection $connection, Request $request) {
|
|||||||
'code' => 0,
|
'code' => 0,
|
||||||
'data' => $devices
|
'data' => $devices
|
||||||
)));
|
)));
|
||||||
} else if ($get['query'] === 'device_status') {
|
|
||||||
$e_status_capture = new EStatusCapture($dbconn, get: $get);
|
|
||||||
$device_status = $e_status_capture -> get_device_status();
|
|
||||||
|
|
||||||
$connection -> send(json_encode(array(
|
|
||||||
'code' => 0,
|
|
||||||
'data' => $device_status
|
|
||||||
)));
|
|
||||||
} else if ($get['query'] === 'all_status') {
|
|
||||||
$all_status = EStatusCapture::get_all_status($dbconn);
|
|
||||||
$connection -> send(json_encode(array(
|
|
||||||
'code' => 0,
|
|
||||||
'data' => $all_status
|
|
||||||
)));
|
|
||||||
} else {
|
} else {
|
||||||
$connection -> send(json_encode(array(
|
$connection -> send(json_encode(array(
|
||||||
'code' => 1,
|
'code' => 1,
|
||||||
@@ -391,6 +389,14 @@ $consumer -> onMessage = function(TcpConnection $connection, $task_data) {
|
|||||||
'msg' => '服务器内部逻辑错误,请联系开发者!'
|
'msg' => '服务器内部逻辑错误,请联系开发者!'
|
||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
|
} else if ($task_data -> action === 'exec') {
|
||||||
|
$e_command = new ECommand($consumer_dbconn, $task_data -> data);
|
||||||
|
$e_command -> exec();
|
||||||
|
|
||||||
|
$connection -> send(json_encode(array(
|
||||||
|
'code' => 0,
|
||||||
|
'msg' => 'Success'
|
||||||
|
)));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
56
EdgeManager/EController/ECommand.php
Normal file
56
EdgeManager/EController/ECommand.php
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
<?php
|
||||||
|
namespace EdgeManager\EController;
|
||||||
|
|
||||||
|
class ECommand {
|
||||||
|
function __construct(
|
||||||
|
protected $dbconn,
|
||||||
|
protected $post = NULL,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
function exec() {
|
||||||
|
$command2API = [
|
||||||
|
'server_restart' => '/Admin/ServerCloseAndRestart',
|
||||||
|
'server_close' => '/Admin/ServerClose',
|
||||||
|
];
|
||||||
|
|
||||||
|
if (str_starts_with($this -> post -> command, 'server')) {
|
||||||
|
$res = pg_query($this -> dbconn, sprintf(
|
||||||
|
"SELECT url, port
|
||||||
|
FROM hf_mes_scada_edgeserver_controller_server
|
||||||
|
WHERE id = '%s'",
|
||||||
|
$this -> post -> server_id
|
||||||
|
));
|
||||||
|
$server_info = pg_fetch_row($res);
|
||||||
|
|
||||||
|
$ch = curl_init(
|
||||||
|
$server_info[0]
|
||||||
|
. ":"
|
||||||
|
. $server_info[1]
|
||||||
|
. $command2API[$this -> post -> command]
|
||||||
|
);
|
||||||
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
|
||||||
|
curl_setopt($ch, CURLOPT_HEADER, 1);
|
||||||
|
curl_setopt($ch, CURLOPT_POST, 1);
|
||||||
|
curl_setopt(
|
||||||
|
$ch,
|
||||||
|
CURLOPT_USERPWD,
|
||||||
|
$this -> post -> username
|
||||||
|
. ":"
|
||||||
|
. $this -> post -> password
|
||||||
|
);
|
||||||
|
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
|
||||||
|
$return = curl_exec($ch);
|
||||||
|
curl_close($ch);
|
||||||
|
}
|
||||||
|
|
||||||
|
pg_insert(
|
||||||
|
$this -> dbconn,
|
||||||
|
'hf_mes_scada_edgeserver_controller_command',
|
||||||
|
[
|
||||||
|
'server_id' => $this -> post -> server_id,
|
||||||
|
'command' => $this -> post -> command,
|
||||||
|
'success' => $return
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -128,7 +128,7 @@ class EConfigure {
|
|||||||
|
|
||||||
function get_device_list() {
|
function get_device_list() {
|
||||||
$res = pg_query($this -> dbconn, sprintf(
|
$res = pg_query($this -> dbconn, sprintf(
|
||||||
"SELECT id, name, status FROM hf_mes_scada_edgeserver_controller_device
|
"SELECT id, name FROM hf_mes_scada_edgeserver_controller_device
|
||||||
WHERE server_id = '%s'",
|
WHERE server_id = '%s'",
|
||||||
$this -> get['id']
|
$this -> get['id']
|
||||||
));
|
));
|
||||||
|
|||||||
@@ -1,61 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace EdgeManager\EMonitor;
|
|
||||||
|
|
||||||
Class EStatusCapture {
|
|
||||||
function __construct(
|
|
||||||
protected $dbconn,
|
|
||||||
protected $post = NULL,
|
|
||||||
protected $get = NULL,
|
|
||||||
) {}
|
|
||||||
|
|
||||||
function get_device_status() {
|
|
||||||
$res = pg_query($this -> dbconn, sprintf(
|
|
||||||
"SELECT server.status AS server_status,
|
|
||||||
device.id,
|
|
||||||
device.status as device_status
|
|
||||||
FROM hf_mes_scada_edgeserver_controller_server server,
|
|
||||||
hf_mes_scada_edgeserver_controller_device device
|
|
||||||
WHERE server.id = '%s'
|
|
||||||
AND server.id = server_id", $this -> get['id']
|
|
||||||
));
|
|
||||||
$res = pg_fetch_all($res);
|
|
||||||
|
|
||||||
$device_status = [];
|
|
||||||
array_walk($res, function($v, $k) use (&$device_status) {
|
|
||||||
$device_status[$v['id']] = $v['device_status'];
|
|
||||||
});
|
|
||||||
|
|
||||||
return [
|
|
||||||
'server_status' => $res[0]['server_status'],
|
|
||||||
'device_status' => $device_status
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
static function get_all_status($dbconn) {
|
|
||||||
$res = pg_query(
|
|
||||||
"SELECT server_id,
|
|
||||||
server.name AS server_name,
|
|
||||||
url, port,
|
|
||||||
server.status AS server_status,
|
|
||||||
device.name AS device_name,
|
|
||||||
conf -> '@DeviceType' AS device_type,
|
|
||||||
device.status AS device_status,
|
|
||||||
success_count, failed_count
|
|
||||||
FROM hf_mes_scada_edgeserver_controller_server server,
|
|
||||||
hf_mes_scada_edgeserver_controller_device device
|
|
||||||
WHERE (conf -> '@DeviceType') IS NOT NULL
|
|
||||||
AND server.id = server_id;"
|
|
||||||
);
|
|
||||||
$all_status = pg_fetch_all($res);
|
|
||||||
|
|
||||||
$server_devices = [];
|
|
||||||
foreach ($all_status as $device) {
|
|
||||||
if (!isset($server_devices[$device['server_id']]))
|
|
||||||
$server_devices[$device['server_id']] = array_slice($device, 0, 5);
|
|
||||||
$server_devices[$device['server_id']]['devices'][] = array_slice($device, -5);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $server_devices;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -28,7 +28,6 @@ function init_db($server_name, $port, $user, $password) {
|
|||||||
url text NOT NULL,
|
url text NOT NULL,
|
||||||
port int2 NOT NULL,
|
port int2 NOT NULL,
|
||||||
address text NOT NULL,
|
address text NOT NULL,
|
||||||
status bool,
|
|
||||||
create_date timestamp NOT NULL DEFAULT NOW(),
|
create_date timestamp NOT NULL DEFAULT NOW(),
|
||||||
note text
|
note text
|
||||||
)");
|
)");
|
||||||
@@ -39,20 +38,15 @@ function init_db($server_name, $port, $user, $password) {
|
|||||||
server_id serial2 references hf_mes_scada_edgeserver_controller_server(id),
|
server_id serial2 references hf_mes_scada_edgeserver_controller_server(id),
|
||||||
conf json,
|
conf json,
|
||||||
create_date timestamp NOT NULL DEFAULT NOW(),
|
create_date timestamp NOT NULL DEFAULT NOW(),
|
||||||
note text,
|
note text
|
||||||
status bool,
|
|
||||||
success_count int8,
|
|
||||||
failed_count int8,
|
|
||||||
duration int8
|
|
||||||
)");
|
)");
|
||||||
pg_query($dbconn, "CREATE TABLE IF NOT EXISTS hf_mes_scada_edgeserver_controller_command (
|
pg_query($dbconn, "CREATE TABLE IF NOT EXISTS hf_mes_scada_edgeserver_controller_command (
|
||||||
id serial8 primary key,
|
id serial8 primary key,
|
||||||
server_id serial2 references hf_mes_scada_edgeserver_controller_server(id),
|
server_id serial2 references hf_mes_scada_edgeserver_controller_server(id),
|
||||||
device_id text,
|
device_id text,
|
||||||
node text,
|
|
||||||
command text,
|
command text,
|
||||||
create_date timestamp NOT NULL DEFAULT NOW(),
|
create_date timestamp NOT NULL DEFAULT NOW(),
|
||||||
update_status bool
|
success bool
|
||||||
)");
|
)");
|
||||||
pg_close($dbconn);
|
pg_close($dbconn);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user