fix: sysVer of older CentOS

This commit is contained in:
lollipopkit
2023-05-08 17:30:39 +08:00
parent 7f16c27dcf
commit 6a4d4f9bca
6 changed files with 81 additions and 91 deletions

View File

@@ -4,7 +4,7 @@ import '../../res/misc.dart';
///
/// Code generated by jsonToDartModel https://ashamp.github.io/jsonToDartModel/
///
class TcpStatus {
class ConnStatus {
/*
{
"maxConn": 0,
@@ -19,37 +19,21 @@ class TcpStatus {
late int passive;
late int fail;
TcpStatus(
ConnStatus(
this.maxConn,
this.active,
this.passive,
this.fail,
);
TcpStatus.fromJson(Map<String, dynamic> json) {
maxConn = json["maxConn"].toInt();
active = json["active"].toInt();
passive = json["passive"].toInt();
fail = json["fail"].toInt();
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data["maxConn"] = maxConn;
data["active"] = active;
data["passive"] = passive;
data["fail"] = fail;
return data;
}
}
TcpStatus? parseTcp(String raw) {
ConnStatus? parseConn(String raw) {
final lines = raw.split('\n');
final idx = lines.lastWhere((element) => element.startsWith('Tcp:'),
orElse: () => '');
if (idx != '') {
final vals = idx.split(numReg);
return TcpStatus(vals[5].i, vals[6].i, vals[7].i, vals[8].i);
return ConnStatus(vals[5].i, vals[6].i, vals[7].i, vals[8].i);
}
return null;
}

View File

@@ -2,41 +2,16 @@ import 'package:toolbox/data/model/server/cpu_status.dart';
import 'package:toolbox/data/model/server/disk_info.dart';
import 'package:toolbox/data/model/server/memory.dart';
import 'package:toolbox/data/model/server/net_speed.dart';
import 'package:toolbox/data/model/server/tcp_status.dart';
///
/// Code generated by jsonToDartModel https://ashamp.github.io/jsonToDartModel/
///
import 'package:toolbox/data/model/server/conn_status.dart';
class ServerStatus {
/*
{
"cpuPercent": 0,
"memList": [
1
],
"sysVer": "",
"uptime": "",
"disk": [
{
"mountPath": "",
"mountLocation": "",
"usedPercent": 0,
"used": "",
"size": "",
"avail": ""
}
]
}
*/
CpuStatus cpu;
Memory mem;
Swap swap;
String sysVer;
String uptime;
List<DiskInfo> disk;
TcpStatus tcp;
ConnStatus tcp;
NetSpeed netSpeed;
String? failedInfo;

View File

@@ -1,9 +1,10 @@
import '../../res/server_cmd.dart';
import 'cpu_status.dart';
import 'disk_info.dart';
import 'memory.dart';
import 'net_speed.dart';
import 'server_status.dart';
import 'tcp_status.dart';
import 'conn_status.dart';
class ServerStatusUpdateReq {
final ServerStatus ss;
@@ -12,27 +13,42 @@ class ServerStatusUpdateReq {
const ServerStatusUpdateReq(this.ss, this.segments);
}
extension _SegmentsExt on List<String> {
String at(CmdType t) {
final index = t.index;
if (index >= length) return '';
return this[index];
}
}
Future<ServerStatus> getStatus(ServerStatusUpdateReq req) async {
final net = parseNetSpeed(req.segments[0]);
final net = parseNetSpeed(req.segments.at(CmdType.net));
req.ss.netSpeed.update(net);
final sys = _parseSysVer(req.segments[1], req.segments[9]);
final sys = _parseSysVer(
req.segments.at(CmdType.sys),
req.segments.at(CmdType.host),
req.segments.at(CmdType.sysRhel),
);
if (sys != null) {
req.ss.sysVer = sys;
}
final cpus = parseCPU(req.segments[2]);
final cpuTemp = parseCPUTemp(req.segments[7], req.segments[8]);
final cpus = parseCPU(req.segments.at(CmdType.cpu));
final cpuTemp = parseCPUTemp(
req.segments.at(CmdType.tempType),
req.segments.at(CmdType.tempVal),
);
req.ss.cpu.update(cpus, cpuTemp);
final tcp = parseTcp(req.segments[4]);
final tcp = parseConn(req.segments.at(CmdType.conn));
if (tcp != null) {
req.ss.tcp = tcp;
}
req.ss.disk = parseDisk(req.segments[5]);
req.ss.mem = parseMem(req.segments[6]);
final uptime = _parseUpTime(req.segments[3]);
req.ss.disk = parseDisk(req.segments.at(CmdType.disk));
req.ss.mem = parseMem(req.segments.at(CmdType.mem));
final uptime = _parseUpTime(req.segments.at(CmdType.uptime));
if (uptime != null) {
req.ss.uptime = uptime;
}
req.ss.swap = parseSwap(req.segments[6]);
req.ss.swap = parseSwap(req.segments.at(CmdType.mem));
return req.ss;
}
@@ -49,7 +65,10 @@ String? _parseUpTime(String raw) {
return null;
}
String? _parseSysVer(String raw, String hostname) {
String? _parseSysVer(String raw, String hostname, String rawRhel) {
if (!rawRhel.contains('No such file')) {
return rawRhel;
}
final s = raw.split('=');
if (s.length == 2) {
return s[1].replaceAll('"', '').replaceFirst('\n', '');