new: battery (#235)

This commit is contained in:
lollipopkit
2023-12-18 17:43:38 +08:00
parent dd2555fc3f
commit 48bc6da7b5
21 changed files with 141 additions and 54 deletions

View File

@@ -1,4 +1,5 @@
import 'package:dartssh2/dartssh2.dart';
import 'package:toolbox/data/model/app/shell_func.dart';
import 'package:toolbox/data/model/server/conn.dart';
import 'package:toolbox/data/model/server/cpu.dart';
import 'package:toolbox/data/model/server/disk.dart';
@@ -47,8 +48,6 @@ class ServerStatus {
Cpus cpu;
Memory mem;
Swap swap;
String sysVer;
String uptime;
List<Disk> disk;
Conn tcp;
NetSpeed netSpeed;
@@ -57,6 +56,7 @@ class ServerStatus {
String? err;
DiskIO diskIO;
List<NvidiaSmiItem>? nvidia;
final Map<StatusCmdType, String> more = {};
/// Whether is connectting, parsing and etc.
bool _isBusy = false;
@@ -64,8 +64,6 @@ class ServerStatus {
ServerStatus({
required this.cpu,
required this.mem,
required this.sysVer,
required this.uptime,
required this.disk,
required this.tcp,
required this.netSpeed,

View File

@@ -49,10 +49,18 @@ Future<ServerStatus> _getLinuxStatus(ServerStatusUpdateReq req) async {
try {
final sys = _parseSysVer(
StatusCmdType.sys.find(segments),
StatusCmdType.host.find(segments),
);
if (sys != null) {
req.ss.sysVer = sys;
req.ss.more[StatusCmdType.sys] = sys;
}
} catch (e, s) {
Loggers.parse.warning(e, s);
}
try {
final host = StatusCmdType.host.find(segments);
if (host.isNotEmpty) {
req.ss.more[StatusCmdType.host] = host;
}
} catch (e, s) {
Loggers.parse.warning(e, s);
@@ -93,7 +101,7 @@ Future<ServerStatus> _getLinuxStatus(ServerStatusUpdateReq req) async {
try {
final uptime = _parseUpTime(StatusCmdType.uptime.find(segments));
if (uptime != null) {
req.ss.uptime = uptime;
req.ss.more[StatusCmdType.uptime] = uptime;
}
} catch (e, s) {
Loggers.parse.warning(e, s);
@@ -118,6 +126,16 @@ Future<ServerStatus> _getLinuxStatus(ServerStatusUpdateReq req) async {
} catch (e, s) {
Loggers.parse.warning(e, s);
}
try {
final battery = StatusCmdType.battery.find(segments);
if (battery.isNotEmpty && !battery.contains('No such')) {
req.ss.more[StatusCmdType.battery] = battery;
}
} catch (e, s) {
Loggers.parse.warning(e, s);
}
return req.ss;
}
@@ -134,7 +152,7 @@ Future<ServerStatus> _getBsdStatus(ServerStatusUpdateReq req) async {
}
try {
req.ss.sysVer = BSDStatusCmdType.sys.find(segments);
req.ss.more[StatusCmdType.sys] = BSDStatusCmdType.sys.find(segments);
} catch (e, s) {
Loggers.parse.warning(e, s);
}
@@ -154,7 +172,7 @@ Future<ServerStatus> _getBsdStatus(ServerStatusUpdateReq req) async {
try {
final uptime = _parseUpTime(BSDStatusCmdType.uptime.find(segments));
if (uptime != null) {
req.ss.uptime = uptime;
req.ss.more[StatusCmdType.uptime] = uptime;
}
} catch (e, s) {
Loggers.parse.warning(e, s);
@@ -181,10 +199,10 @@ String? _parseUpTime(String raw) {
return null;
}
String? _parseSysVer(String raw, String hostname) {
String? _parseSysVer(String raw) {
final s = raw.split('=');
if (s.length == 2) {
return s[1].replaceAll('"', '').replaceFirst('\n', '');
}
return hostname.isEmpty ? null : hostname;
return null;
}