From bb1bf9219cf3fa2a5ee7592bf937089b7593c18d Mon Sep 17 00:00:00 2001 From: Junyuan Feng Date: Sun, 29 May 2022 18:34:55 +0800 Subject: [PATCH] feat & fix - support openwrt - save server info failed if connect error - support ssh 'none' auth --- assets/linux/wrt.png | Bin 0 -> 81750 bytes lib/data/model/server/memory.dart | 2 - lib/data/provider/server.dart | 58 ++++++++++++++-------------- lib/data/res/icon/linux_icons.dart | 12 +++++- lib/generated/intl/messages_en.dart | 4 +- lib/generated/intl/messages_zh.dart | 2 +- lib/generated/l10n.dart | 8 ++-- lib/l10n/intl_en.arb | 2 +- lib/l10n/intl_zh.arb | 2 +- lib/view/page/server/detail.dart | 5 ++- lib/view/page/server/edit.dart | 20 ++++++++-- pubspec.yaml | 1 + 12 files changed, 70 insertions(+), 46 deletions(-) create mode 100644 assets/linux/wrt.png diff --git a/assets/linux/wrt.png b/assets/linux/wrt.png new file mode 100644 index 0000000000000000000000000000000000000000..bb208dd90590a273fa9b2b138f2d2b64cb3d7de1 GIT binary patch literal 81750 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 z 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 T9Wu5N;J=4DM)zy9?4$n!WR%<> literal 0 HcmV?d00001 diff --git a/lib/data/model/server/memory.dart b/lib/data/model/server/memory.dart index c82720ae..e3913e51 100644 --- a/lib/data/model/server/memory.dart +++ b/lib/data/model/server/memory.dart @@ -2,14 +2,12 @@ class Memory { int total; int used; int free; - int shared; int cache; int avail; Memory( {required this.total, required this.used, required this.free, - required this.shared, required this.cache, required this.avail}); } diff --git a/lib/data/provider/server.dart b/lib/data/provider/server.dart index d53177ed..69f18c01 100644 --- a/lib/data/provider/server.dart +++ b/lib/data/provider/server.dart @@ -37,13 +37,14 @@ const shellCmd = "export LANG=en_US.utf-8 \necho '$seperator' \n" "uptime \necho $seperator \n" "cat /proc/net/snmp \necho $seperator \n" "df -h \necho $seperator \n" - "free -m \necho $seperator \n" + "cat /proc/meminfo \necho $seperator \n" "cat /sys/class/thermal/thermal_zone*/type \necho $seperator \n" "cat /sys/class/thermal/thermal_zone*/temp"; const shellPath = '.serverbox.sh'; const memPrefix = 'Mem:'; final cpuTempReg = RegExp('(x86_pkg_temp|cpu_thermal)'); final numReg = RegExp(r'\s{1,}'); +final memItemReg = RegExp(r'([A-Z].+:)\s+([0-9]+) kB'); class ServerProvider extends BusyProvider { List _servers = []; @@ -54,7 +55,7 @@ class ServerProvider extends BusyProvider { final logger = Logger('ServerProvider'); Memory get emptyMemory => - Memory(total: 1, used: 0, free: 1, shared: 0, cache: 0, avail: 1); + Memory(total: 1, used: 0, free: 1, cache: 0, avail: 1); NetSpeedPart get emptyNetSpeedPart => NetSpeedPart('', 0, 0, 0); @@ -156,8 +157,8 @@ class ServerProvider extends BusyProvider { throw RangeError.index(idx, _servers); } _servers[idx].info = newSpi; - _servers[idx].client = await genClient(newSpi); locator().update(old, newSpi); + _servers[idx].client = await genClient(newSpi); notifyListeners(); refreshData(spi: newSpi); } @@ -194,8 +195,8 @@ class ServerProvider extends BusyProvider { // if client is null, return if (s.client == null) return; final raw = await s.client!.run("sh $shellPath").string; - final lines = raw.split(seperator).map((e) => e.trim()).toList(); - if (raw.isEmpty || lines.length == 1) { + final segments = raw.split(seperator).map((e) => e.trim()).toList(); + if (raw.isEmpty || segments.length == 1) { s.connectionState = ServerConnectionState.failed; if (s.status.failedInfo == null || s.status.failedInfo!.isEmpty) { s.status.failedInfo = 'No data received'; @@ -203,16 +204,16 @@ class ServerProvider extends BusyProvider { notifyListeners(); return; } - lines.removeAt(0); + segments.removeAt(0); try { - _getCPU(spi, lines[2], lines[7], lines[8]); - _getMem(spi, lines[6]); - _getSysVer(spi, lines[1]); - _getUpTime(spi, lines[3]); - _getDisk(spi, lines[5]); - _getTcp(spi, lines[4]); - _getNetSpeed(spi, lines[0]); + _getCPU(spi, segments[2], segments[7], segments[8]); + _getMem(spi, segments[6]); + _getSysVer(spi, segments[1]); + _getUpTime(spi, segments[3]); + _getDisk(spi, segments[5]); + _getTcp(spi, segments[4]); + _getNetSpeed(spi, segments[0]); } catch (e) { s.connectionState = ServerConnectionState.failed; s.status.failedInfo = e.toString(); @@ -333,21 +334,22 @@ class ServerProvider extends BusyProvider { void _getMem(ServerPrivateInfo spi, String raw) { final info = _servers.firstWhere((e) => e.info == spi); - for (var item in raw.split('\n')) { - if (item.contains(memPrefix)) { - final split = item.replaceFirst(memPrefix, '').split(' '); - split.removeWhere((e) => e == ''); - final memList = split.map((e) => int.parse(e)).toList(); - info.status.memory = Memory( - total: memList[0], - used: memList[1], - free: memList[2], - shared: memList[3], - cache: memList[4], - avail: memList[5]); - break; - } - } + final items = raw.split('\n').map((e) => memItemReg.firstMatch(e)).toList(); + final total = int.parse( + items.firstWhere((e) => e?.group(1) == 'MemTotal:')?.group(2) ?? '1'); + final free = int.parse( + items.firstWhere((e) => e?.group(1) == 'MemFree:')?.group(2) ?? '0'); + final cached = int.parse( + items.firstWhere((e) => e?.group(1) == 'Cached:')?.group(2) ?? '0'); + final available = int.parse( + items.firstWhere((e) => e?.group(1) == 'MemAvailable:')?.group(2) ?? + '0'); + info.status.memory = Memory( + total: total, + used: total - available, + free: free, + cache: cached, + avail: available); } Future runSnippet(ServerPrivateInfo spi, Snippet snippet) async { diff --git a/lib/data/res/icon/linux_icons.dart b/lib/data/res/icon/linux_icons.dart index bf98b378..1dbe6a87 100644 --- a/lib/data/res/icon/linux_icons.dart +++ b/lib/data/res/icon/linux_icons.dart @@ -1,4 +1,12 @@ import 'package:toolbox/data/model/server/linux_icon.dart'; -final linuxIcons = LinuxIcons( - ['ubuntu', 'arch', 'centos', 'debian', 'fedora', 'opensuse', 'kali']); +final linuxIcons = LinuxIcons([ + 'ubuntu', + 'arch', + 'centos', + 'debian', + 'fedora', + 'opensuse', + 'kali', + 'wrt' +]); diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart index 27b2bc15..765d39fb 100644 --- a/lib/generated/intl/messages_en.dart +++ b/lib/generated/intl/messages_en.dart @@ -164,8 +164,6 @@ class MessageLookup extends MessageLookupByLibrary { "Current platform does not support in app update.\nPlease build from source and install it."), "plzEnterHost": MessageLookupByLibrary.simpleMessage("Please enter host."), - "plzEnterPwd": - MessageLookupByLibrary.simpleMessage("Please enter password."), "plzSelectKey": MessageLookupByLibrary.simpleMessage("Please select a key."), "port": MessageLookupByLibrary.simpleMessage("Port"), @@ -204,6 +202,8 @@ class MessageLookup extends MessageLookupByLibrary { "start": MessageLookupByLibrary.simpleMessage("Start"), "stop": MessageLookupByLibrary.simpleMessage("Stop"), "sureDelete": m11, + "sureNoPwd": MessageLookupByLibrary.simpleMessage( + "Are you sure to use no password?"), "sureToDeleteServer": m12, "ttl": MessageLookupByLibrary.simpleMessage("ttl"), "unknown": MessageLookupByLibrary.simpleMessage("unknown"), diff --git a/lib/generated/intl/messages_zh.dart b/lib/generated/intl/messages_zh.dart index d76e1ceb..649c8193 100644 --- a/lib/generated/intl/messages_zh.dart +++ b/lib/generated/intl/messages_zh.dart @@ -145,7 +145,6 @@ class MessageLookup extends MessageLookupByLibrary { "platformNotSupportUpdate": MessageLookupByLibrary.simpleMessage("当前平台不支持更新,请编译最新源码后手动安装"), "plzEnterHost": MessageLookupByLibrary.simpleMessage("请输入主机"), - "plzEnterPwd": MessageLookupByLibrary.simpleMessage("请输入密码"), "plzSelectKey": MessageLookupByLibrary.simpleMessage("请选择私钥"), "port": MessageLookupByLibrary.simpleMessage("端口"), "privateKey": MessageLookupByLibrary.simpleMessage("私钥"), @@ -178,6 +177,7 @@ class MessageLookup extends MessageLookupByLibrary { "start": MessageLookupByLibrary.simpleMessage("开始"), "stop": MessageLookupByLibrary.simpleMessage("停止"), "sureDelete": m11, + "sureNoPwd": MessageLookupByLibrary.simpleMessage("确认使用无密码?"), "sureToDeleteServer": m12, "ttl": MessageLookupByLibrary.simpleMessage("缓存时间"), "unknown": MessageLookupByLibrary.simpleMessage("未知"), diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index 19aba532..58cd9f0d 100644 --- a/lib/generated/l10n.dart +++ b/lib/generated/l10n.dart @@ -790,11 +790,11 @@ class S { ); } - /// `Please enter password.` - String get plzEnterPwd { + /// `Are you sure to use no password?` + String get sureNoPwd { return Intl.message( - 'Please enter password.', - name: 'plzEnterPwd', + 'Are you sure to use no password?', + name: 'sureNoPwd', desc: '', args: [], ); diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index dbbe8f18..8e49f72a 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -73,7 +73,7 @@ "addPrivateKey": "Add private key", "choosePrivateKey": "Choose private key", "plzEnterHost": "Please enter host.", - "plzEnterPwd": "Please enter password.", + "sureNoPwd": "Are you sure to use no password?", "plzSelectKey": "Please select a key.", "exampleName": "Example name", "stop": "Stop", diff --git a/lib/l10n/intl_zh.arb b/lib/l10n/intl_zh.arb index c9e29711..a2e38bec 100644 --- a/lib/l10n/intl_zh.arb +++ b/lib/l10n/intl_zh.arb @@ -73,7 +73,7 @@ "addPrivateKey": "添加一个私钥", "choosePrivateKey": "选择私钥", "plzEnterHost": "请输入主机", - "plzEnterPwd": "请输入密码", + "sureNoPwd": "确认使用无密码?", "plzSelectKey": "请选择私钥", "exampleName": "名称示例", "stop": "停止", diff --git a/lib/view/page/server/detail.dart b/lib/view/page/server/detail.dart index dfb88d6d..c7d04435 100644 --- a/lib/view/page/server/detail.dart +++ b/lib/view/page/server/detail.dart @@ -155,6 +155,7 @@ class _ServerDetailPageState extends State } Widget _buildProgress(double percent) { + if (percent > 100) percent = 100; final pColor = primaryColor; final percentWithinOne = percent / 100; return LinearProgressIndicator( @@ -186,7 +187,7 @@ class _ServerDetailPageState extends State final pColor = primaryColor; final used = ss.memory.used / ss.memory.total; final width = _media.size.width - 17 * 2 - 17 * 2; - const mb = 1024 * 1024; + const mb = 1024; return RoundRectCard(Padding( padding: roundRectCardPadding, child: SizedBox( @@ -329,8 +330,8 @@ class _ServerDetailPageState extends State Icons.device_hub, size: 17, ), + Icon(Icons.arrow_downward, size: 17), Icon(Icons.arrow_upward, size: 17), - Icon(Icons.arrow_downward, size: 17) ], ), ); diff --git a/lib/view/page/server/edit.dart b/lib/view/page/server/edit.dart index 5c3a6980..3aff90cf 100644 --- a/lib/view/page/server/edit.dart +++ b/lib/view/page/server/edit.dart @@ -190,14 +190,28 @@ class _ServerEditPageState extends State with AfterLayoutMixin { ), floatingActionButton: FloatingActionButton( child: const Icon(Icons.send), - onPressed: () { + onPressed: () async { if (ipController.text == '') { showSnackBar(context, Text(s.plzEnterHost)); return; } if (!usePublicKey && passwordController.text == '') { - showSnackBar(context, Text(s.plzEnterPwd)); - return; + final cancel = await showRoundDialog( + context, + s.attention, + Text(s.sureNoPwd), + [ + TextButton( + onPressed: () => Navigator.of(context).pop(false), + child: Text(s.ok)), + TextButton( + onPressed: () => Navigator.of(context).pop(true), + child: Text(s.cancel)) + ], + barrierDismiss: false); + if (cancel ?? true) { + return; + } } if (usePublicKey && _pubKeyIndex == -1) { showSnackBar(context, Text(s.plzSelectKey)); diff --git a/pubspec.yaml b/pubspec.yaml index c7d3a74b..22748417 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -93,6 +93,7 @@ flutter: - assets/linux/arch.png - assets/linux/fedora.png - assets/linux/opensuse.png + - assets/linux/wrt.png # - images/a_dot_burr.jpeg # - images/a_dot_ham.jpeg # An image asset can refer to one or more resolution-specific "variants", see