mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
feat: custom net dev (#543)
This commit is contained in:
@@ -690,7 +690,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CURRENT_PROJECT_VERSION = 1060;
|
CURRENT_PROJECT_VERSION = 1068;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||||
@@ -700,7 +700,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.1060;
|
MARKETING_VERSION = 1.0.1068;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
@@ -826,7 +826,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CURRENT_PROJECT_VERSION = 1060;
|
CURRENT_PROJECT_VERSION = 1068;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||||
@@ -836,7 +836,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.1060;
|
MARKETING_VERSION = 1.0.1068;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
@@ -854,7 +854,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CURRENT_PROJECT_VERSION = 1060;
|
CURRENT_PROJECT_VERSION = 1068;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||||
@@ -864,7 +864,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.1060;
|
MARKETING_VERSION = 1.0.1068;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
@@ -885,7 +885,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1060;
|
CURRENT_PROJECT_VERSION = 1068;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@@ -898,7 +898,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.1060;
|
MARKETING_VERSION = 1.0.1068;
|
||||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||||
@@ -924,7 +924,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1060;
|
CURRENT_PROJECT_VERSION = 1068;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@@ -937,7 +937,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.1060;
|
MARKETING_VERSION = 1.0.1068;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
@@ -960,7 +960,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1060;
|
CURRENT_PROJECT_VERSION = 1068;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@@ -973,7 +973,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.1060;
|
MARKETING_VERSION = 1.0.1068;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
@@ -996,7 +996,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1060;
|
CURRENT_PROJECT_VERSION = 1068;
|
||||||
DEVELOPMENT_ASSET_PATHS = "";
|
DEVELOPMENT_ASSET_PATHS = "";
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
@@ -1008,7 +1008,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.1060;
|
MARKETING_VERSION = 1.0.1068;
|
||||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
||||||
@@ -1037,7 +1037,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1060;
|
CURRENT_PROJECT_VERSION = 1068;
|
||||||
DEVELOPMENT_ASSET_PATHS = "";
|
DEVELOPMENT_ASSET_PATHS = "";
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
@@ -1049,7 +1049,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.1060;
|
MARKETING_VERSION = 1.0.1068;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
||||||
PRODUCT_NAME = ServerBox;
|
PRODUCT_NAME = ServerBox;
|
||||||
@@ -1075,7 +1075,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1060;
|
CURRENT_PROJECT_VERSION = 1068;
|
||||||
DEVELOPMENT_ASSET_PATHS = "";
|
DEVELOPMENT_ASSET_PATHS = "";
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
@@ -1087,7 +1087,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.1060;
|
MARKETING_VERSION = 1.0.1068;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
||||||
PRODUCT_NAME = ServerBox;
|
PRODUCT_NAME = ServerBox;
|
||||||
|
|||||||
@@ -132,10 +132,7 @@ class AppRoutes {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static AppRoutes sftp(
|
static AppRoutes sftp(
|
||||||
{Key? key,
|
{Key? key, required Spi spi, String? initPath, bool isSelect = false}) {
|
||||||
required Spi spi,
|
|
||||||
String? initPath,
|
|
||||||
bool isSelect = false}) {
|
|
||||||
return AppRoutes(
|
return AppRoutes(
|
||||||
SftpPage(
|
SftpPage(
|
||||||
key: key,
|
key: key,
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import 'package:fl_lib/fl_lib.dart';
|
|||||||
import 'package:hive_flutter/hive_flutter.dart';
|
import 'package:hive_flutter/hive_flutter.dart';
|
||||||
import 'package:server_box/core/extension/context/locale.dart';
|
import 'package:server_box/core/extension/context/locale.dart';
|
||||||
import 'package:server_box/data/model/server/server.dart';
|
import 'package:server_box/data/model/server/server.dart';
|
||||||
import 'package:server_box/data/res/store.dart';
|
|
||||||
|
|
||||||
part 'net_view.g.dart';
|
part 'net_view.g.dart';
|
||||||
|
|
||||||
@@ -27,8 +26,11 @@ enum NetViewType {
|
|||||||
NetViewType.speed => l10n.speed,
|
NetViewType.speed => l10n.speed,
|
||||||
};
|
};
|
||||||
|
|
||||||
(String, String) build(ServerStatus ss) {
|
/// If no device is specified, return the cached value (only real devices,
|
||||||
final ignoreLocal = Stores.setting.ignoreLocalNet.fetch();
|
/// such as ethX, wlanX...).
|
||||||
|
(String, String) build(ServerStatus ss, {String? dev}) {
|
||||||
|
final notSepcifyDev = dev == null || dev.isEmpty;
|
||||||
|
try {
|
||||||
switch (this) {
|
switch (this) {
|
||||||
case NetViewType.conn:
|
case NetViewType.conn:
|
||||||
return (
|
return (
|
||||||
@@ -36,28 +38,32 @@ enum NetViewType {
|
|||||||
'${libL10n.fail}:\n${ss.tcp.fail}',
|
'${libL10n.fail}:\n${ss.tcp.fail}',
|
||||||
);
|
);
|
||||||
case NetViewType.speed:
|
case NetViewType.speed:
|
||||||
if (ignoreLocal) {
|
if (notSepcifyDev) {
|
||||||
return (
|
return (
|
||||||
'↓:\n${ss.netSpeed.cachedRealVals.speedIn}',
|
'↓:\n${ss.netSpeed.cachedVals.speedIn}',
|
||||||
'↑:\n${ss.netSpeed.cachedRealVals.speedOut}',
|
'↑:\n${ss.netSpeed.cachedVals.speedOut}',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
'↓:\n${ss.netSpeed.speedIn()}',
|
'↓:\n${ss.netSpeed.speedIn(device: dev)}',
|
||||||
'↑:\n${ss.netSpeed.speedOut()}',
|
'↑:\n${ss.netSpeed.speedOut(device: dev)}',
|
||||||
);
|
);
|
||||||
case NetViewType.traffic:
|
case NetViewType.traffic:
|
||||||
if (ignoreLocal) {
|
if (notSepcifyDev) {
|
||||||
return (
|
return (
|
||||||
'↓:\n${ss.netSpeed.cachedRealVals.sizeIn}',
|
'↓:\n${ss.netSpeed.cachedVals.sizeIn}',
|
||||||
'↑:\n${ss.netSpeed.cachedRealVals.sizeOut}',
|
'↑:\n${ss.netSpeed.cachedVals.sizeOut}',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
'↓:\n${ss.netSpeed.sizeIn()}',
|
'↓:\n${ss.netSpeed.sizeIn(device: dev)}',
|
||||||
'↑:\n${ss.netSpeed.sizeOut()}',
|
'↑:\n${ss.netSpeed.sizeOut(device: dev)}',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
} catch (e, s) {
|
||||||
|
Loggers.app.warning('NetViewType.build', e, s);
|
||||||
|
return ('N/A', 'N/A');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int toJson() => switch (this) {
|
int toJson() => switch (this) {
|
||||||
|
|||||||
@@ -21,6 +21,14 @@ final class ServerCustom {
|
|||||||
@HiveField(5)
|
@HiveField(5)
|
||||||
final String? logoUrl;
|
final String? logoUrl;
|
||||||
|
|
||||||
|
/// The device name of the network interface displayed in the home server card.
|
||||||
|
@HiveField(6)
|
||||||
|
final String? netDev;
|
||||||
|
|
||||||
|
/// The directory where the script is stored.
|
||||||
|
@HiveField(7)
|
||||||
|
final String? scriptDir;
|
||||||
|
|
||||||
const ServerCustom({
|
const ServerCustom({
|
||||||
//this.temperature,
|
//this.temperature,
|
||||||
this.pveAddr,
|
this.pveAddr,
|
||||||
@@ -28,6 +36,8 @@ final class ServerCustom {
|
|||||||
this.cmds,
|
this.cmds,
|
||||||
this.preferTempDev,
|
this.preferTempDev,
|
||||||
this.logoUrl,
|
this.logoUrl,
|
||||||
|
this.netDev,
|
||||||
|
this.scriptDir,
|
||||||
});
|
});
|
||||||
|
|
||||||
factory ServerCustom.fromJson(Map<String, dynamic> json) =>
|
factory ServerCustom.fromJson(Map<String, dynamic> json) =>
|
||||||
@@ -35,12 +45,6 @@ final class ServerCustom {
|
|||||||
|
|
||||||
Map<String, dynamic> toJson() => _$ServerCustomToJson(this);
|
Map<String, dynamic> toJson() => _$ServerCustomToJson(this);
|
||||||
|
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return toJson().toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool operator ==(Object other) {
|
bool operator ==(Object other) {
|
||||||
return other is ServerCustom &&
|
return other is ServerCustom &&
|
||||||
@@ -49,7 +53,9 @@ final class ServerCustom {
|
|||||||
other.pveIgnoreCert == pveIgnoreCert &&
|
other.pveIgnoreCert == pveIgnoreCert &&
|
||||||
other.cmds == cmds &&
|
other.cmds == cmds &&
|
||||||
other.preferTempDev == preferTempDev &&
|
other.preferTempDev == preferTempDev &&
|
||||||
other.logoUrl == logoUrl;
|
other.logoUrl == logoUrl &&
|
||||||
|
other.netDev == netDev &&
|
||||||
|
other.scriptDir == scriptDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -59,5 +65,7 @@ final class ServerCustom {
|
|||||||
pveIgnoreCert.hashCode ^
|
pveIgnoreCert.hashCode ^
|
||||||
cmds.hashCode ^
|
cmds.hashCode ^
|
||||||
preferTempDev.hashCode ^
|
preferTempDev.hashCode ^
|
||||||
logoUrl.hashCode;
|
logoUrl.hashCode ^
|
||||||
|
netDev.hashCode ^
|
||||||
|
scriptDir.hashCode;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,13 +22,15 @@ class ServerCustomAdapter extends TypeAdapter<ServerCustom> {
|
|||||||
cmds: (fields[3] as Map?)?.cast<String, String>(),
|
cmds: (fields[3] as Map?)?.cast<String, String>(),
|
||||||
preferTempDev: fields[4] as String?,
|
preferTempDev: fields[4] as String?,
|
||||||
logoUrl: fields[5] as String?,
|
logoUrl: fields[5] as String?,
|
||||||
|
netDev: fields[6] as String?,
|
||||||
|
scriptDir: fields[7] as String?,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void write(BinaryWriter writer, ServerCustom obj) {
|
void write(BinaryWriter writer, ServerCustom obj) {
|
||||||
writer
|
writer
|
||||||
..writeByte(5)
|
..writeByte(7)
|
||||||
..writeByte(1)
|
..writeByte(1)
|
||||||
..write(obj.pveAddr)
|
..write(obj.pveAddr)
|
||||||
..writeByte(2)
|
..writeByte(2)
|
||||||
@@ -38,7 +40,11 @@ class ServerCustomAdapter extends TypeAdapter<ServerCustom> {
|
|||||||
..writeByte(4)
|
..writeByte(4)
|
||||||
..write(obj.preferTempDev)
|
..write(obj.preferTempDev)
|
||||||
..writeByte(5)
|
..writeByte(5)
|
||||||
..write(obj.logoUrl);
|
..write(obj.logoUrl)
|
||||||
|
..writeByte(6)
|
||||||
|
..write(obj.netDev)
|
||||||
|
..writeByte(7)
|
||||||
|
..write(obj.scriptDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -64,6 +70,8 @@ ServerCustom _$ServerCustomFromJson(Map<String, dynamic> json) => ServerCustom(
|
|||||||
),
|
),
|
||||||
preferTempDev: json['preferTempDev'] as String?,
|
preferTempDev: json['preferTempDev'] as String?,
|
||||||
logoUrl: json['logoUrl'] as String?,
|
logoUrl: json['logoUrl'] as String?,
|
||||||
|
netDev: json['netDev'] as String?,
|
||||||
|
scriptDir: json['scriptDir'] as String?,
|
||||||
);
|
);
|
||||||
|
|
||||||
Map<String, dynamic> _$ServerCustomToJson(ServerCustom instance) =>
|
Map<String, dynamic> _$ServerCustomToJson(ServerCustom instance) =>
|
||||||
@@ -73,4 +81,6 @@ Map<String, dynamic> _$ServerCustomToJson(ServerCustom instance) =>
|
|||||||
'cmds': instance.cmds,
|
'cmds': instance.cmds,
|
||||||
'preferTempDev': instance.preferTempDev,
|
'preferTempDev': instance.preferTempDev,
|
||||||
'logoUrl': instance.logoUrl,
|
'logoUrl': instance.logoUrl,
|
||||||
|
'netDev': instance.netDev,
|
||||||
|
'scriptDir': instance.scriptDir,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -14,6 +14,13 @@ class NetSpeedPart extends TimeSeqIface<NetSpeedPart> {
|
|||||||
bool same(NetSpeedPart other) => device == other.device;
|
bool same(NetSpeedPart other) => device == other.device;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef CachedNetVals = ({
|
||||||
|
String sizeIn,
|
||||||
|
String sizeOut,
|
||||||
|
String speedIn,
|
||||||
|
String speedOut,
|
||||||
|
});
|
||||||
|
|
||||||
class NetSpeed extends TimeSeq<List<NetSpeedPart>> {
|
class NetSpeed extends TimeSeq<List<NetSpeedPart>> {
|
||||||
NetSpeed(super.init1, super.init2);
|
NetSpeed(super.init1, super.init2);
|
||||||
|
|
||||||
@@ -24,14 +31,14 @@ class NetSpeed extends TimeSeq<List<NetSpeedPart>> {
|
|||||||
|
|
||||||
realIfaces.clear();
|
realIfaces.clear();
|
||||||
realIfaces.addAll(devices
|
realIfaces.addAll(devices
|
||||||
.where((e) => realIfacePrefixs.any((prefix) => e.startsWith(prefix)))
|
.where((e) => realIfacePrefixs.any((prefix) => e.startsWith(prefix))));
|
||||||
.toList());
|
|
||||||
|
|
||||||
final sizeIn = this.sizeIn();
|
final sizeIn = this.sizeIn();
|
||||||
final sizeOut = this.sizeOut();
|
final sizeOut = this.sizeOut();
|
||||||
final speedIn = this.speedIn();
|
final speedIn = this.speedIn();
|
||||||
final speedOut = this.speedOut();
|
final speedOut = this.speedOut();
|
||||||
cachedRealVals = (
|
|
||||||
|
cachedVals = (
|
||||||
sizeIn: sizeIn,
|
sizeIn: sizeIn,
|
||||||
sizeOut: sizeOut,
|
sizeOut: sizeOut,
|
||||||
speedIn: speedIn,
|
speedIn: speedIn,
|
||||||
@@ -49,12 +56,7 @@ class NetSpeed extends TimeSeq<List<NetSpeedPart>> {
|
|||||||
/// Cached non-virtual network device prefix
|
/// Cached non-virtual network device prefix
|
||||||
final realIfaces = <String>[];
|
final realIfaces = <String>[];
|
||||||
|
|
||||||
({
|
CachedNetVals cachedVals =
|
||||||
String sizeIn,
|
|
||||||
String sizeOut,
|
|
||||||
String speedIn,
|
|
||||||
String speedOut,
|
|
||||||
}) cachedRealVals =
|
|
||||||
(sizeIn: '0kb', sizeOut: '0kb', speedIn: '0kb/s', speedOut: '0kb/s');
|
(sizeIn: '0kb', sizeOut: '0kb', speedIn: '0kb/s', speedOut: '0kb/s');
|
||||||
|
|
||||||
/// Time diff between [pre] and [now]
|
/// Time diff between [pre] and [now]
|
||||||
@@ -67,7 +69,8 @@ class NetSpeed extends TimeSeq<List<NetSpeedPart>> {
|
|||||||
BigInt sizeOutBytes(int i) => now[i].bytesOut;
|
BigInt sizeOutBytes(int i) => now[i].bytesOut;
|
||||||
|
|
||||||
String speedIn({String? device}) {
|
String speedIn({String? device}) {
|
||||||
if (pre[0].device == '' || now[0].device == '') return '0kb/s';
|
if (pre.isEmpty || now.isEmpty) return 'N/A';
|
||||||
|
if (pre.length != now.length) return 'N/A';
|
||||||
if (device == null) {
|
if (device == null) {
|
||||||
var speed = 0.0;
|
var speed = 0.0;
|
||||||
for (final device in devices) {
|
for (final device in devices) {
|
||||||
@@ -84,7 +87,8 @@ class NetSpeed extends TimeSeq<List<NetSpeedPart>> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String sizeIn({String? device}) {
|
String sizeIn({String? device}) {
|
||||||
if (pre[0].device == '' || now[0].device == '') return '0kb';
|
if (pre.isEmpty || now.isEmpty) return 'N/A';
|
||||||
|
if (pre.length != now.length) return 'N/A';
|
||||||
if (device == null) {
|
if (device == null) {
|
||||||
var size = BigInt.from(0);
|
var size = BigInt.from(0);
|
||||||
for (final device in devices) {
|
for (final device in devices) {
|
||||||
@@ -101,7 +105,8 @@ class NetSpeed extends TimeSeq<List<NetSpeedPart>> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String speedOut({String? device}) {
|
String speedOut({String? device}) {
|
||||||
if (pre[0].device == '' || now[0].device == '') return '0kb/s';
|
if (pre.isEmpty || now.isEmpty) return 'N/A';
|
||||||
|
if (pre.length != now.length) return 'N/A';
|
||||||
if (device == null) {
|
if (device == null) {
|
||||||
var speed = 0.0;
|
var speed = 0.0;
|
||||||
for (final device in devices) {
|
for (final device in devices) {
|
||||||
@@ -118,7 +123,8 @@ class NetSpeed extends TimeSeq<List<NetSpeedPart>> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String sizeOut({String? device}) {
|
String sizeOut({String? device}) {
|
||||||
if (pre[0].device == '' || now[0].device == '') return '0kb';
|
if (pre.isEmpty || now.isEmpty) return 'N/A';
|
||||||
|
if (pre.length != now.length) return 'N/A';
|
||||||
if (device == null) {
|
if (device == null) {
|
||||||
var size = BigInt.from(0);
|
var size = BigInt.from(0);
|
||||||
for (final device in devices) {
|
for (final device in devices) {
|
||||||
|
|||||||
@@ -75,8 +75,7 @@ class Spi {
|
|||||||
this.envs,
|
this.envs,
|
||||||
}) : id = '$user@$ip:$port';
|
}) : id = '$user@$ip:$port';
|
||||||
|
|
||||||
factory Spi.fromJson(Map<String, dynamic> json) =>
|
factory Spi.fromJson(Map<String, dynamic> json) => _$SpiFromJson(json);
|
||||||
_$SpiFromJson(json);
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() => _$SpiToJson(this);
|
Map<String, dynamic> toJson() => _$SpiToJson(this);
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,8 @@ class Snippet implements TagPickable {
|
|||||||
this.autoRunOn,
|
this.autoRunOn,
|
||||||
});
|
});
|
||||||
|
|
||||||
factory Snippet.fromJson(Map<String, dynamic> json) => _$SnippetFromJson(json);
|
factory Snippet.fromJson(Map<String, dynamic> json) =>
|
||||||
|
_$SnippetFromJson(json);
|
||||||
|
|
||||||
Map<String, dynamic> toJson() => _$SnippetToJson(this);
|
Map<String, dynamic> toJson() => _$SnippetToJson(this);
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
|
|
||||||
class BuildData {
|
class BuildData {
|
||||||
static const String name = "ServerBox";
|
static const String name = "ServerBox";
|
||||||
static const int build = 1060;
|
static const int build = 1068;
|
||||||
static const int script = 57;
|
static const int script = 57;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ class SettingStore extends PersistentStore {
|
|||||||
|
|
||||||
/// Ignore local network device (eg: br-xxx, ovs-system...)
|
/// Ignore local network device (eg: br-xxx, ovs-system...)
|
||||||
/// when building traffic view on server tab
|
/// when building traffic view on server tab
|
||||||
late final ignoreLocalNet = property('ignoreLocalNet', true);
|
//late final ignoreLocalNet = property('ignoreLocalNet', true);
|
||||||
|
|
||||||
/// Remerber pwd in memory
|
/// Remerber pwd in memory
|
||||||
/// Used for [DialogX.showPwdDialog]
|
/// Used for [DialogX.showPwdDialog]
|
||||||
|
|||||||
@@ -587,18 +587,15 @@ ${ss.err?.message ?? 'null'}
|
|||||||
Widget _buildNet(ServerStatus ss, String id) {
|
Widget _buildNet(ServerStatus ss, String id) {
|
||||||
final cardNoti = _getCardNoti(id);
|
final cardNoti = _getCardNoti(id);
|
||||||
final type = cardNoti.value.net ?? Stores.setting.netViewType.fetch();
|
final type = cardNoti.value.net ?? Stores.setting.netViewType.fetch();
|
||||||
final (a, b) = type.build(ss);
|
final device = ServerProvider.pick(id: id)?.value.spi.custom?.netDev ?? 'tailscale0';
|
||||||
|
final (a, b) = type.build(ss, dev: device);
|
||||||
return AnimatedSwitcher(
|
return AnimatedSwitcher(
|
||||||
duration: const Duration(milliseconds: 377),
|
duration: const Duration(milliseconds: 377),
|
||||||
transitionBuilder: (Widget child, Animation<double> animation) {
|
transitionBuilder: (c, anim) => FadeTransition(opacity: anim, child: c),
|
||||||
return FadeTransition(opacity: animation, child: child);
|
|
||||||
},
|
|
||||||
child: _buildIOData(
|
child: _buildIOData(
|
||||||
a,
|
a,
|
||||||
b,
|
b,
|
||||||
onTap: () {
|
onTap: () => cardNoti.value = cardNoti.value.copyWith(net: type.next),
|
||||||
cardNoti.value = cardNoti.value.copyWith(net: type.next);
|
|
||||||
},
|
|
||||||
key: ValueKey(type),
|
key: ValueKey(type),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -471,7 +471,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1060;
|
CURRENT_PROJECT_VERSION = 1068;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = "Server Box";
|
INFOPLIST_KEY_CFBundleDisplayName = "Server Box";
|
||||||
@@ -481,7 +481,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
MARKETING_VERSION = 1.0.1060;
|
MARKETING_VERSION = 1.0.1068;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||||
PRODUCT_NAME = "Server Box";
|
PRODUCT_NAME = "Server Box";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -608,7 +608,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1060;
|
CURRENT_PROJECT_VERSION = 1068;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = "Server Box";
|
INFOPLIST_KEY_CFBundleDisplayName = "Server Box";
|
||||||
@@ -618,7 +618,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
MARKETING_VERSION = 1.0.1060;
|
MARKETING_VERSION = 1.0.1068;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||||
PRODUCT_NAME = "Server Box";
|
PRODUCT_NAME = "Server Box";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -638,7 +638,7 @@
|
|||||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application";
|
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application";
|
||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1060;
|
CURRENT_PROJECT_VERSION = 1068;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
"DEVELOPMENT_TEAM[sdk=macosx*]" = BA88US33G6;
|
"DEVELOPMENT_TEAM[sdk=macosx*]" = BA88US33G6;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
@@ -649,7 +649,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
MARKETING_VERSION = 1.0.1060;
|
MARKETING_VERSION = 1.0.1068;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||||
PRODUCT_NAME = "Server Box";
|
PRODUCT_NAME = "Server Box";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
name: server_box
|
name: server_box
|
||||||
description: server status & toolbox app.
|
description: server status & toolbox app.
|
||||||
publish_to: 'none'
|
publish_to: 'none'
|
||||||
version: 1.0.1060+1060
|
version: 1.0.1068+1068
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0"
|
sdk: ">=3.0.0"
|
||||||
|
|||||||
Reference in New Issue
Block a user