diff --git a/lib/data/model/app/shell_func.dart b/lib/data/model/app/shell_func.dart index 7d474420..6cd66382 100644 --- a/lib/data/model/app/shell_func.dart +++ b/lib/data/model/app/shell_func.dart @@ -122,8 +122,8 @@ fi'''; export LANG=en_US.UTF-8 # If macSign & bsdSign are both empty, then it's linux -macSign=\$(uname 2>&1 | grep "Darwin") -bsdSign=\$(uname 2>&1 | grep "BSD") +macSign=\$(uname -a 2>&1 | grep "Darwin") +bsdSign=\$(uname -a 2>&1 | grep "BSD") # Link /bin/sh to busybox? isBusybox=\$(ls -l /bin/sh | grep "busybox") diff --git a/lib/data/model/server/server_status_update_req.dart b/lib/data/model/server/server_status_update_req.dart index 6de68bde..f0384134 100644 --- a/lib/data/model/server/server_status_update_req.dart +++ b/lib/data/model/server/server_status_update_req.dart @@ -1,4 +1,5 @@ import 'package:toolbox/data/model/server/system.dart'; +import 'package:toolbox/data/res/logger.dart'; import '../app/shell_func.dart'; import 'cpu.dart'; @@ -29,69 +30,124 @@ Future getStatus(ServerStatusUpdateReq req) async { } } +// Wrap each operation with a try-catch, so that if one operation fails, +// the following operations can still be executed. Future _getLinuxStatus(ServerStatusUpdateReq req) async { final segments = req.segments; - final time = int.parse(StatusCmdType.time.find(segments)); - - final net = parseNetSpeed(StatusCmdType.net.find(segments), time); - req.ss.netSpeed.update(net); - - final sys = _parseSysVer( - StatusCmdType.sys.find(segments), - StatusCmdType.host.find(segments), - ); - if (sys != null) { - req.ss.sysVer = sys; + try { + final time = int.parse(StatusCmdType.time.find(segments)); + final net = parseNetSpeed(StatusCmdType.net.find(segments), time); + req.ss.netSpeed.update(net); + } catch (e, s) { + Loggers.parse.warning(e, s); } - final cpus = parseCPU(StatusCmdType.cpu.find(segments)); - req.ss.cpu.update(cpus); - - req.ss.temps.parse( - StatusCmdType.tempType.find(segments), - StatusCmdType.tempVal.find(segments), - ); - - final tcp = parseConn(StatusCmdType.conn.find(segments)); - if (tcp != null) { - req.ss.tcp = tcp; + try { + final sys = _parseSysVer( + StatusCmdType.sys.find(segments), + StatusCmdType.host.find(segments), + ); + if (sys != null) { + req.ss.sysVer = sys; + } + } catch (e, s) { + Loggers.parse.warning(e, s); } - req.ss.disk = parseDisk(StatusCmdType.disk.find(segments)); - - req.ss.mem = parseMem(StatusCmdType.mem.find(segments)); - - final uptime = _parseUpTime(StatusCmdType.uptime.find(segments)); - if (uptime != null) { - req.ss.uptime = uptime; + try { + final cpus = parseCPU(StatusCmdType.cpu.find(segments)); + req.ss.cpu.update(cpus); + req.ss.temps.parse( + StatusCmdType.tempType.find(segments), + StatusCmdType.tempVal.find(segments), + ); + } catch (e, s) { + Loggers.parse.warning(e, s); } - req.ss.swap = parseSwap(StatusCmdType.mem.find(segments)); + try { + final tcp = parseConn(StatusCmdType.conn.find(segments)); + if (tcp != null) { + req.ss.tcp = tcp; + } + } catch (e, s) { + Loggers.parse.warning(e, s); + } + + try { + req.ss.disk = parseDisk(StatusCmdType.disk.find(segments)); + } catch (e, s) { + Loggers.parse.warning(e, s); + } + + try { + req.ss.mem = parseMem(StatusCmdType.mem.find(segments)); + } catch (e, s) { + Loggers.parse.warning(e, s); + } + + try { + final uptime = _parseUpTime(StatusCmdType.uptime.find(segments)); + if (uptime != null) { + req.ss.uptime = uptime; + } + } catch (e, s) { + Loggers.parse.warning(e, s); + } + + try { + req.ss.swap = parseSwap(StatusCmdType.mem.find(segments)); + } catch (e, s) { + Loggers.parse.warning(e, s); + } return req.ss; } +// Same as above, wrap with try-catch Future _getBsdStatus(ServerStatusUpdateReq req) async { final segments = req.segments; - final time = int.parse(BSDStatusCmdType.time.find(segments)); - - final net = parseBsdNetSpeed(BSDStatusCmdType.net.find(segments), time); - req.ss.netSpeed.update(net); - - req.ss.sysVer = BSDStatusCmdType.sys.find(segments); - - req.ss.cpu = parseBsdCpu(BSDStatusCmdType.cpu.find(segments)); - - //req.ss.mem = parseBsdMem(BSDStatusCmdType.mem.find(segments)); - - final uptime = _parseUpTime(BSDStatusCmdType.uptime.find(segments)); - if (uptime != null) { - req.ss.uptime = uptime; + try { + final time = int.parse(BSDStatusCmdType.time.find(segments)); + final net = parseBsdNetSpeed(BSDStatusCmdType.net.find(segments), time); + req.ss.netSpeed.update(net); + } catch (e, s) { + Loggers.parse.warning(e, s); } - req.ss.disk = parseDisk(BSDStatusCmdType.disk.find(segments)); + try { + req.ss.sysVer = BSDStatusCmdType.sys.find(segments); + } catch (e, s) { + Loggers.parse.warning(e, s); + } + try { + req.ss.cpu = parseBsdCpu(BSDStatusCmdType.cpu.find(segments)); + } catch (e, s) { + Loggers.parse.warning(e, s); + } + + // try { + // req.ss.mem = parseBsdMem(BSDStatusCmdType.mem.find(segments)); + // } catch (e, s) { + // Loggers.parse.warning(e, s); + // } + + try { + final uptime = _parseUpTime(BSDStatusCmdType.uptime.find(segments)); + if (uptime != null) { + req.ss.uptime = uptime; + } + } catch (e, s) { + Loggers.parse.warning(e, s); + } + + try { + req.ss.disk = parseDisk(BSDStatusCmdType.disk.find(segments)); + } catch (e, s) { + Loggers.parse.warning(e, s); + } return req.ss; }