From 5a3a7a9e4326e800f503c3438400ea5aaa750aad Mon Sep 17 00:00:00 2001 From: suyun888 <124353292+suyun888@users.noreply.github.com> Date: Wed, 15 Jul 2026 14:31:36 +0800 Subject: [PATCH 1/2] Add native iOS client and unsigned IPA --- README.md | 7 + ios/AppIcon.svg | 11 + ios/README.md | 24 ++ .../project.pbxproj | 364 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcschemes/UnraidManagerIOS.xcscheme | 91 +++++ .../AppIcon.appiconset/AppIcon-1024.png | Bin 0 -> 29658 bytes .../AppIcon.appiconset/Contents.json | 14 + .../Resources/Assets.xcassets/Contents.json | 6 + ios/UnraidManagerIOS/Resources/Info.plist | 51 +++ ios/UnraidManagerIOS/Sources/AppStore.swift | 174 +++++++++ .../Sources/ContainerStatsViewModel.swift | 89 +++++ .../Sources/FileManagerViews.swift | 106 +++++ .../Sources/KeychainStore.swift | 48 +++ ios/UnraidManagerIOS/Sources/Models.swift | 179 +++++++++ .../Sources/SystemViews.swift | 114 ++++++ .../Sources/UnraidAPIClient.swift | 260 +++++++++++++ .../Sources/UnraidManagerApp.swift | 14 + ios/UnraidManagerIOS/Sources/Views.swift | 233 +++++++++++ .../Sources/XFileManagerClient.swift | 161 ++++++++ ios/dist/SHA256SUMS | 1 + ios/dist/UnraidManager-0.2.0-unsigned.ipa | Bin 0 -> 410911 bytes ios/project.yml | 62 +++ 23 files changed, 2016 insertions(+) create mode 100644 ios/AppIcon.svg create mode 100644 ios/README.md create mode 100644 ios/UnraidManagerIOS.xcodeproj/project.pbxproj create mode 100644 ios/UnraidManagerIOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/UnraidManagerIOS.xcodeproj/xcshareddata/xcschemes/UnraidManagerIOS.xcscheme create mode 100644 ios/UnraidManagerIOS/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon-1024.png create mode 100644 ios/UnraidManagerIOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/UnraidManagerIOS/Resources/Assets.xcassets/Contents.json create mode 100644 ios/UnraidManagerIOS/Resources/Info.plist create mode 100644 ios/UnraidManagerIOS/Sources/AppStore.swift create mode 100644 ios/UnraidManagerIOS/Sources/ContainerStatsViewModel.swift create mode 100644 ios/UnraidManagerIOS/Sources/FileManagerViews.swift create mode 100644 ios/UnraidManagerIOS/Sources/KeychainStore.swift create mode 100644 ios/UnraidManagerIOS/Sources/Models.swift create mode 100644 ios/UnraidManagerIOS/Sources/SystemViews.swift create mode 100644 ios/UnraidManagerIOS/Sources/UnraidAPIClient.swift create mode 100644 ios/UnraidManagerIOS/Sources/UnraidManagerApp.swift create mode 100644 ios/UnraidManagerIOS/Sources/Views.swift create mode 100644 ios/UnraidManagerIOS/Sources/XFileManagerClient.swift create mode 100644 ios/dist/SHA256SUMS create mode 100644 ios/dist/UnraidManager-0.2.0-unsigned.ipa create mode 100644 ios/project.yml diff --git a/README.md b/README.md index 31d970a..454f870 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,13 @@ $env:ANDROID_HOME="$env:LOCALAPPDATA\Android\Sdk" The APK is written to `app/build/outputs/apk/debug/app-debug.apk`. +### iOS preview client + +A native SwiftUI client and Xcode project are available under [`ios/`](ios/README.md). +It covers secure server configuration, detailed monitoring, Docker operations and logs, +VM status, operation history, and XFileManager file management. Xcode 16 or newer is +required to build and sign it. + ## Safety boundary - The APK does not contain an Unraid password or API key. diff --git a/ios/AppIcon.svg b/ios/AppIcon.svg new file mode 100644 index 0000000..5ac2fd5 --- /dev/null +++ b/ios/AppIcon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/ios/README.md b/ios/README.md new file mode 100644 index 0000000..4348e3f --- /dev/null +++ b/ios/README.md @@ -0,0 +1,24 @@ +# Unraid Manager for iOS + +原生 SwiftUI 客户端,提供服务器监控、Docker 运维、VM 只读状态和 XFileManager 文件管理。 + +## 构建 + +1. 使用 Xcode 16 或更新版本打开 `UnraidManagerIOS.xcodeproj`。 +2. 在 Target **UnraidManagerIOS > Signing & Capabilities** 中选择自己的 Team,并按需修改 Bundle Identifier。 +3. 选择真机或模拟器后运行。归档发布时选择 **Product > Archive**。 + +最低系统版本为 iOS 17。API Key 存放于 iOS Keychain,服务器名称和地址存放于 UserDefaults。客户端不绕过 TLS 验证;公网访问建议使用有效 HTTPS 证书。 + +为了兼容局域网 IP 上常见的明文 `http://` Unraid 服务,当前包允许用户主动填写的 HTTP 地址;这不会绕过 HTTPS 的证书校验。提交 App Store 前建议为服务器配置 HTTPS,并移除 Info.plist 中的 `NSAllowsArbitraryLoads`,否则审核时需要说明用途。 + +## 当前功能 + +- 登录验证、演示模式、Keychain 凭据存储、系统/浅色/深色外观和定时刷新。 +- 健康评分、CPU 总负载/逻辑线程、完整内存与 Swap、阵列/磁盘详情、UPS 原生 API 与 Lucky HTTPS Bridge 回退、电力指标。 +- Docker 列表和搜索、容器详情、GraphQL WebSocket 实时 CPU/内存/网络/磁盘 I/O、WebUI、脱敏日志、原生更新检查、模板保护的单容器更新,以及启停和两步重启。 +- VM 列表和详情保持只读,不暴露尚未验证的 VM 写操作。 +- 操作历史持久化,记录容器操作成功或失败。 +- XFileManager 登录、受限根目录浏览、新建文件夹、上传、下载、Quick Look/文本预览、重命名、确认删除和 24 小时分享链接。 +- 安全边界:每个写操作均要求确认;没有容器删除、批量更新或 VM 写操作。 +- 尚未移植:原始 NUT 3493 TCP 回退、Android 应用映射和后台系统通知。这些功能需要额外网络协议、iOS 后台权限或平台专属能力。 diff --git a/ios/UnraidManagerIOS.xcodeproj/project.pbxproj b/ios/UnraidManagerIOS.xcodeproj/project.pbxproj new file mode 100644 index 0000000..0bcc840 --- /dev/null +++ b/ios/UnraidManagerIOS.xcodeproj/project.pbxproj @@ -0,0 +1,364 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 77; + objects = { + +/* Begin PBXBuildFile section */ + 0088B9F2BD0E55838C4C8615 /* XFileManagerClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = D077B38A10E83CDE3C8B06AC /* XFileManagerClient.swift */; }; + 3E72E76D8F4AD6BE7C0D9762 /* KeychainStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5D297BFBB5F71D96B680427 /* KeychainStore.swift */; }; + 581002999EF52536702B3013 /* FileManagerViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8659384B3D35AD4C5B7AD89 /* FileManagerViews.swift */; }; + 5EC822FE517E37FFC9752B79 /* SystemViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = C38E12CE2A786EA26AD4AEF3 /* SystemViews.swift */; }; + 7328192F787F3AE363366F6E /* AppStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E4F3E65CEDB11803E6C11F5 /* AppStore.swift */; }; + 94E16BE7003CB43447228088 /* Views.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B190865C370858831B276B9 /* Views.swift */; }; + A5EF26900D5109A64234DDCF /* UnraidAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE1B181287ACC654B5978009 /* UnraidAPIClient.swift */; }; + AF8E349692DC7732B45A5ECB /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = EACE1548A11B35CF896839C2 /* Models.swift */; }; + BC4FC81451EB2DF8D918C5BA /* ContainerStatsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 229FC71FE30CBB8B6901D37D /* ContainerStatsViewModel.swift */; }; + CA74785BE8D28AEE3604F7BA /* UnraidManagerApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC62D2707014E5B2758E14EC /* UnraidManagerApp.swift */; }; + CE9923A73CD8354462AC421F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F207AB118F3419E984923ED8 /* Assets.xcassets */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 0B190865C370858831B276B9 /* Views.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Views.swift; sourceTree = ""; }; + 229FC71FE30CBB8B6901D37D /* ContainerStatsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContainerStatsViewModel.swift; sourceTree = ""; }; + 2E4F3E65CEDB11803E6C11F5 /* AppStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppStore.swift; sourceTree = ""; }; + 95311F871C995A50AF540A46 /* UnraidManagerIOS.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = UnraidManagerIOS.app; sourceTree = BUILT_PRODUCTS_DIR; }; + BE1B181287ACC654B5978009 /* UnraidAPIClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnraidAPIClient.swift; sourceTree = ""; }; + C38E12CE2A786EA26AD4AEF3 /* SystemViews.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SystemViews.swift; sourceTree = ""; }; + C5D297BFBB5F71D96B680427 /* KeychainStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeychainStore.swift; sourceTree = ""; }; + D077B38A10E83CDE3C8B06AC /* XFileManagerClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XFileManagerClient.swift; sourceTree = ""; }; + D8659384B3D35AD4C5B7AD89 /* FileManagerViews.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileManagerViews.swift; sourceTree = ""; }; + DC62D2707014E5B2758E14EC /* UnraidManagerApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnraidManagerApp.swift; sourceTree = ""; }; + EACE1548A11B35CF896839C2 /* Models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Models.swift; sourceTree = ""; }; + F207AB118F3419E984923ED8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXGroup section */ + 87BC9B7B9674E3BA96688163 /* Products */ = { + isa = PBXGroup; + children = ( + 95311F871C995A50AF540A46 /* UnraidManagerIOS.app */, + ); + name = Products; + sourceTree = ""; + }; + 9021D115A9F0F4EC2D20325E /* UnraidManagerIOS */ = { + isa = PBXGroup; + children = ( + FAA375DC4B47E30F6EA7DB38 /* Resources */, + F6E774FF1073ED7AC8069FA0 /* Sources */, + ); + path = UnraidManagerIOS; + sourceTree = ""; + }; + D3CDC7088A473AA0C5735471 = { + isa = PBXGroup; + children = ( + 9021D115A9F0F4EC2D20325E /* UnraidManagerIOS */, + 87BC9B7B9674E3BA96688163 /* Products */, + ); + sourceTree = ""; + }; + F6E774FF1073ED7AC8069FA0 /* Sources */ = { + isa = PBXGroup; + children = ( + 2E4F3E65CEDB11803E6C11F5 /* AppStore.swift */, + 229FC71FE30CBB8B6901D37D /* ContainerStatsViewModel.swift */, + D8659384B3D35AD4C5B7AD89 /* FileManagerViews.swift */, + C5D297BFBB5F71D96B680427 /* KeychainStore.swift */, + EACE1548A11B35CF896839C2 /* Models.swift */, + C38E12CE2A786EA26AD4AEF3 /* SystemViews.swift */, + BE1B181287ACC654B5978009 /* UnraidAPIClient.swift */, + DC62D2707014E5B2758E14EC /* UnraidManagerApp.swift */, + 0B190865C370858831B276B9 /* Views.swift */, + D077B38A10E83CDE3C8B06AC /* XFileManagerClient.swift */, + ); + path = Sources; + sourceTree = ""; + }; + FAA375DC4B47E30F6EA7DB38 /* Resources */ = { + isa = PBXGroup; + children = ( + F207AB118F3419E984923ED8 /* Assets.xcassets */, + ); + path = Resources; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + A04AFA6B78692A02332AAC58 /* UnraidManagerIOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1664B028BB0EB57D2976E1AB /* Build configuration list for PBXNativeTarget "UnraidManagerIOS" */; + buildPhases = ( + 35E5EE44D8D86573DF79EC20 /* Sources */, + 7F4C999A9D41C7BC9284FAC4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = UnraidManagerIOS; + packageProductDependencies = ( + ); + productName = UnraidManagerIOS; + productReference = 95311F871C995A50AF540A46 /* UnraidManagerIOS.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 92E3D1044BFC007DF53E751A /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 2600; + TargetAttributes = { + A04AFA6B78692A02332AAC58 = { + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = AC9E3A5292C57B588F93CBED /* Build configuration list for PBXProject "UnraidManagerIOS" */; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + Base, + en, + ); + mainGroup = D3CDC7088A473AA0C5735471; + minimizedProjectReferenceProxies = 1; + preferredProjectObjectVersion = 77; + productRefGroup = 87BC9B7B9674E3BA96688163 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + A04AFA6B78692A02332AAC58 /* UnraidManagerIOS */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 7F4C999A9D41C7BC9284FAC4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CE9923A73CD8354462AC421F /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 35E5EE44D8D86573DF79EC20 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7328192F787F3AE363366F6E /* AppStore.swift in Sources */, + BC4FC81451EB2DF8D918C5BA /* ContainerStatsViewModel.swift in Sources */, + 581002999EF52536702B3013 /* FileManagerViews.swift in Sources */, + 3E72E76D8F4AD6BE7C0D9762 /* KeychainStore.swift in Sources */, + AF8E349692DC7732B45A5ECB /* Models.swift in Sources */, + 5EC822FE517E37FFC9752B79 /* SystemViews.swift in Sources */, + A5EF26900D5109A64234DDCF /* UnraidAPIClient.swift in Sources */, + CA74785BE8D28AEE3604F7BA /* UnraidManagerApp.swift in Sources */, + 94E16BE7003CB43447228088 /* Views.swift in Sources */, + 0088B9F2BD0E55838C4C8615 /* XFileManagerClient.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 3D174B55373854B42A007207 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 2; + INFOPLIST_FILE = UnraidManagerIOS/Resources/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 0.2.0; + PRODUCT_BUNDLE_IDENTIFIER = com.bigfeng.unraidmanager.ios; + PRODUCT_NAME = UnraidManager; + SDKROOT = iphoneos; + SUPPORTS_MACCATALYST = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 983DB00C86EE5651E4E579E7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_STRICT_CONCURRENCY = complete; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + BC816475FA050D0C5BF522B6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 2; + INFOPLIST_FILE = UnraidManagerIOS/Resources/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 0.2.0; + PRODUCT_BUNDLE_IDENTIFIER = com.bigfeng.unraidmanager.ios; + PRODUCT_NAME = UnraidManager; + SDKROOT = iphoneos; + SUPPORTS_MACCATALYST = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + F09FB09CC1252B181B86D5E1 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "DEBUG=1", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_STRICT_CONCURRENCY = complete; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1664B028BB0EB57D2976E1AB /* Build configuration list for PBXNativeTarget "UnraidManagerIOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BC816475FA050D0C5BF522B6 /* Debug */, + 3D174B55373854B42A007207 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + AC9E3A5292C57B588F93CBED /* Build configuration list for PBXProject "UnraidManagerIOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F09FB09CC1252B181B86D5E1 /* Debug */, + 983DB00C86EE5651E4E579E7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + }; + rootObject = 92E3D1044BFC007DF53E751A /* Project object */; +} diff --git a/ios/UnraidManagerIOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/UnraidManagerIOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/ios/UnraidManagerIOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/UnraidManagerIOS.xcodeproj/xcshareddata/xcschemes/UnraidManagerIOS.xcscheme b/ios/UnraidManagerIOS.xcodeproj/xcshareddata/xcschemes/UnraidManagerIOS.xcscheme new file mode 100644 index 0000000..3296418 --- /dev/null +++ b/ios/UnraidManagerIOS.xcodeproj/xcshareddata/xcschemes/UnraidManagerIOS.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/UnraidManagerIOS/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon-1024.png b/ios/UnraidManagerIOS/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..067db421032a07fa33d91de3183b6eb4ecc66073 GIT binary patch literal 29658 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 Tf~x5M*woiG*_W^FaOwX739X54 literal 0 HcmV?d00001 diff --git a/ios/UnraidManagerIOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/UnraidManagerIOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..f22e10c --- /dev/null +++ b/ios/UnraidManagerIOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,14 @@ +{ + "images" : [ + { + "filename" : "AppIcon-1024.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/UnraidManagerIOS/Resources/Assets.xcassets/Contents.json b/ios/UnraidManagerIOS/Resources/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/ios/UnraidManagerIOS/Resources/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/UnraidManagerIOS/Resources/Info.plist b/ios/UnraidManagerIOS/Resources/Info.plist new file mode 100644 index 0000000..f0b0dc1 --- /dev/null +++ b/ios/UnraidManagerIOS/Resources/Info.plist @@ -0,0 +1,51 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Unraid Manager + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + NSAllowsLocalNetworking + + + NSLocalNetworkUsageDescription + 连接并管理您明确配置的局域网 Unraid 服务器。 + UILaunchScreen + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationPortraitUpsideDown + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/ios/UnraidManagerIOS/Sources/AppStore.swift b/ios/UnraidManagerIOS/Sources/AppStore.swift new file mode 100644 index 0000000..809541c --- /dev/null +++ b/ios/UnraidManagerIOS/Sources/AppStore.swift @@ -0,0 +1,174 @@ +import Foundation +import SwiftUI + +@MainActor +final class AppStore: ObservableObject { + @Published var configuration: ServerConfiguration + @Published var snapshot: ServerSnapshot? + @Published var isLoading = false + @Published var errorMessage: String? + @Published var showConfiguration = false + @Published var operations: [OperationRecord] = [] + @Published var colorSchemePreference = "system" + @Published var autoRefresh = true + + private let api = UnraidAPIClient() + private let defaults = UserDefaults.standard + + init() { + configuration = ServerConfiguration( + name: UserDefaults.standard.string(forKey: "server.name") ?? "我的 Unraid", + url: UserDefaults.standard.string(forKey: "server.url") ?? "", + apiKey: KeychainStore.loadAPIKey(), + upsBridgeURL: UserDefaults.standard.string(forKey: "ups.bridgeURL") ?? "", + fileManagerURL: UserDefaults.standard.string(forKey: "files.url") ?? "", + fileManagerUsername: UserDefaults.standard.string(forKey: "files.username") ?? "", + fileManagerPassword: KeychainStore.loadFileManagerPassword(), + fileManagerRootPath: UserDefaults.standard.string(forKey: "files.root") ?? "", + mockMode: UserDefaults.standard.bool(forKey: "server.mockMode") + ) + colorSchemePreference = defaults.string(forKey: "appearance.scheme") ?? "system" + autoRefresh = defaults.object(forKey: "refresh.enabled") as? Bool ?? true + if let data = defaults.data(forKey: "operations"), let stored = try? JSONDecoder().decode([OperationRecord].self, from: data) { operations = stored } + showConfiguration = configuration.url.isEmpty && !configuration.mockMode + } + + var isConfigured: Bool { + configuration.mockMode || (!configuration.normalizedURL.isEmpty && !configuration.apiKey.isEmpty) + } + + func save(configuration newValue: ServerConfiguration) async -> Bool { + do { + let cleanValue = ServerConfiguration( + name: newValue.name.trimmingCharacters(in: .whitespacesAndNewlines), + url: newValue.normalizedURL, + apiKey: newValue.apiKey.trimmingCharacters(in: .whitespacesAndNewlines), + upsBridgeURL: newValue.upsBridgeURL.trimmingCharacters(in: .whitespacesAndNewlines), + fileManagerURL: newValue.fileManagerURL.trimmingCharacters(in: .whitespacesAndNewlines).trimmingCharacters(in: CharacterSet(charactersIn: "/")), + fileManagerUsername: newValue.fileManagerUsername.trimmingCharacters(in: .whitespacesAndNewlines), + fileManagerPassword: newValue.fileManagerPassword, + fileManagerRootPath: Self.normalizePath(newValue.fileManagerRootPath), + mockMode: newValue.mockMode + ) + try KeychainStore.saveAPIKey(cleanValue.apiKey) + try KeychainStore.saveFileManagerPassword(cleanValue.fileManagerPassword) + configuration = cleanValue + defaults.set(cleanValue.name, forKey: "server.name") + defaults.set(cleanValue.url, forKey: "server.url") + defaults.set(cleanValue.mockMode, forKey: "server.mockMode") + defaults.set(cleanValue.upsBridgeURL, forKey: "ups.bridgeURL") + defaults.set(cleanValue.fileManagerURL, forKey: "files.url") + defaults.set(cleanValue.fileManagerUsername, forKey: "files.username") + defaults.set(cleanValue.fileManagerRootPath, forKey: "files.root") + if cleanValue.mockMode { + snapshot = .demo + showConfiguration = false + return true + } + await refresh() + if snapshot != nil { + showConfiguration = false + return true + } + return false + } catch { + errorMessage = error.localizedDescription + return false + } + } + + func refresh() async { + guard isConfigured else { + showConfiguration = true + return + } + if configuration.mockMode { + snapshot = .demo + errorMessage = nil + return + } + isLoading = true + errorMessage = nil + do { + snapshot = try await api.fetchSnapshot(configuration: configuration) + } catch { + errorMessage = error.localizedDescription + } + isLoading = false + } + + func perform(_ action: ContainerOperation, on container: ContainerInfo) async { + guard !configuration.mockMode else { + errorMessage = "演示模式不会向服务器发送操作" + return + } + isLoading = true + errorMessage = nil + do { + switch action { + case .start: try await api.perform(configuration: configuration, containerID: container.id, action: .start) + case .stop: try await api.perform(configuration: configuration, containerID: container.id, action: .stop) + case .restart: try await api.restart(configuration: configuration, containerID: container.id) + case .update: try await api.perform(configuration: configuration, containerID: container.id, action: .updateContainer) + } + snapshot = try await api.fetchSnapshot(configuration: configuration) + record("\(action.rawValue) \(container.name)", detail: "操作完成并重新读取服务器状态", succeeded: true) + } catch { + errorMessage = error.localizedDescription + record("\(action.rawValue) \(container.name)", detail: error.localizedDescription, succeeded: false) + } + isLoading = false + } + + func logs(for container: ContainerInfo) async throws -> [String] { + if configuration.mockMode { return ["12:44:01 Demo container initialized", "12:44:03 Service is ready"] } + return try await api.fetchContainerLogs(configuration: configuration, containerID: container.id) + } + + func checkContainerUpdates() async { + guard !configuration.mockMode else { return } + isLoading = true + do { + let results = try await api.checkContainerUpdates(configuration: configuration) + if let current = snapshot { + snapshot = current.replacingContainers(current.containers.map { item in + var copy = item + copy.updateState = results[item.name] ?? (item.updateAvailable ? .available : .unknown) + return copy + }) + } + } catch { errorMessage = error.localizedDescription } + isLoading = false + } + + func savePreferences() { + defaults.set(colorSchemePreference, forKey: "appearance.scheme") + defaults.set(autoRefresh, forKey: "refresh.enabled") + } + + private func record(_ title: String, detail: String, succeeded: Bool) { + operations.insert(OperationRecord(id: UUID(), title: title, detail: detail, date: Date(), succeeded: succeeded), at: 0) + operations = Array(operations.prefix(50)) + if let data = try? JSONEncoder().encode(operations) { defaults.set(data, forKey: "operations") } + } + + func clearOperations() { operations = []; defaults.removeObject(forKey: "operations") } + + private static func normalizePath(_ value: String) -> String { + value.replacingOccurrences(of: "\\", with: "/").split(separator: "/").filter { $0 != "." && $0 != ".." }.joined(separator: "/") + } +} + +enum ContainerOperation: String, Identifiable { + case start = "启动" + case stop = "停止" + case restart = "重启" + case update = "更新" + var id: String { rawValue } +} + +private extension ServerSnapshot { + func replacingContainers(_ value: [ContainerInfo]) -> ServerSnapshot { + ServerSnapshot(hostname: hostname, release: release, kernel: kernel, uptime: uptime, cpuBrand: cpuBrand, cpuPercent: cpuPercent, cpuCores: cpuCores, cpuThreads: cpuThreads, cpuCorePercents: cpuCorePercents, cpuTemperature: cpuTemperature, cpuPowerWatts: cpuPowerWatts, memoryPercent: memoryPercent, memoryAvailableBytes: memoryAvailableBytes, memoryTotalBytes: memoryTotalBytes, memoryUsedBytes: memoryUsedBytes, memoryFreeBytes: memoryFreeBytes, memoryActiveBytes: memoryActiveBytes, memoryBufferCacheBytes: memoryBufferCacheBytes, swapTotalBytes: swapTotalBytes, swapUsedBytes: swapUsedBytes, arrayState: arrayState, arrayTotalKB: arrayTotalKB, arrayUsedKB: arrayUsedKB, arrayFreeKB: arrayFreeKB, disks: disks, caches: caches, containers: value, virtualMachines: virtualMachines, ups: ups) + } +} diff --git a/ios/UnraidManagerIOS/Sources/ContainerStatsViewModel.swift b/ios/UnraidManagerIOS/Sources/ContainerStatsViewModel.swift new file mode 100644 index 0000000..2ad9f20 --- /dev/null +++ b/ios/UnraidManagerIOS/Sources/ContainerStatsViewModel.swift @@ -0,0 +1,89 @@ +import Foundation + +@MainActor +final class ContainerStatsViewModel: ObservableObject { + @Published private(set) var stats: ContainerRuntimeStats? + @Published private(set) var status = "尚未连接实时指标" + + private var socket: URLSessionWebSocketTask? + private var receiveTask: Task? + private var targetContainerID = "" + + func connect(configuration: ServerConfiguration, containerID: String) { + disconnect() + guard !configuration.mockMode else { + stats = ContainerRuntimeStats(id: containerID, cpuPercent: 1.8, memoryUsage: "128 MiB / 2 GiB", memoryPercent: 6.25, networkIO: "24 MB / 8 MB", blockIO: "4 MB / 1 MB") + status = "演示实时指标" + return + } + guard var components = URLComponents(string: configuration.normalizedURL) else { status = "实时指标地址无效"; return } + components.scheme = components.scheme == "https" ? "wss" : "ws" + components.path = components.path.trimmingCharacters(in: CharacterSet(charactersIn: "/")) + "/graphql" + if !components.path.hasPrefix("/") { components.path = "/" + components.path } + guard let url = components.url else { status = "实时指标地址无效"; return } + targetContainerID = containerID + var request = URLRequest(url: url) + request.setValue("graphql-transport-ws", forHTTPHeaderField: "Sec-WebSocket-Protocol") + let task = URLSession.shared.webSocketTask(with: request) + socket = task + task.resume() + status = "正在连接实时指标…" + receiveTask = Task { [weak self] in + guard let self else { return } + await self.send(type: "connection_init", payload: ["x-api-key": configuration.apiKey]) + await self.receiveLoop() + } + } + + func disconnect() { + receiveTask?.cancel() + receiveTask = nil + if let socket { + let complete = try? JSONSerialization.data(withJSONObject: ["id": "docker-stats", "type": "complete"]) + if let complete, let text = String(data: complete, encoding: .utf8) { socket.send(.string(text)) { _ in } } + socket.cancel(with: .normalClosure, reason: nil) + } + socket = nil + } + + private func receiveLoop() async { + while !Task.isCancelled, let socket { + do { + let message = try await socket.receive() + guard case .string(let text) = message, let data = text.data(using: .utf8), let root = try JSONSerialization.jsonObject(with: data) as? [String: Any] else { continue } + switch root["type"] as? String { + case "connection_ack": + status = "实时指标已连接" + await send(type: "subscribe", id: "docker-stats", payload: ["query": Self.subscription]) + case "next": parseNext(root) + case "ping": await send(type: "pong", payload: root["payload"]) + case "error": status = "实时指标订阅失败" + case "complete": status = "实时指标订阅已结束" + default: break + } + } catch { + if !Task.isCancelled { status = "实时指标已断开:\(error.localizedDescription)" } + return + } + } + } + + private func send(type: String, id: String? = nil, payload: Any? = nil) async { + var root: [String: Any] = ["type": type] + if let id { root["id"] = id } + if let payload { root["payload"] = payload } + guard let data = try? JSONSerialization.data(withJSONObject: root), let text = String(data: data, encoding: .utf8) else { return } + try? await socket?.send(.string(text)) + } + + private func parseNext(_ root: [String: Any]) { + guard let payload = root["payload"] as? [String: Any], let data = payload["data"] as? [String: Any], let item = data["dockerContainerStats"] as? [String: Any] else { return } + let id = sanitize(item["id"] as? String ?? "") + guard id == targetContainerID || id.hasSuffix(targetContainerID) || targetContainerID.hasSuffix(id) else { return } + stats = ContainerRuntimeStats(id: id, cpuPercent: (item["cpuPercent"] as? NSNumber)?.doubleValue ?? 0, memoryUsage: item["memUsage"] as? String ?? "—", memoryPercent: (item["memPercent"] as? NSNumber)?.doubleValue ?? 0, networkIO: item["netIO"] as? String ?? "—", blockIO: item["blockIO"] as? String ?? "—") + } + + private func sanitize(_ value: String) -> String { value.unicodeScalars.filter { !CharacterSet.controlCharacters.contains($0) }.map(String.init).joined() } + + private static let subscription = "subscription DockerStats { dockerContainerStats { id cpuPercent memUsage memPercent netIO blockIO } }" +} diff --git a/ios/UnraidManagerIOS/Sources/FileManagerViews.swift b/ios/UnraidManagerIOS/Sources/FileManagerViews.swift new file mode 100644 index 0000000..0b90e5a --- /dev/null +++ b/ios/UnraidManagerIOS/Sources/FileManagerViews.swift @@ -0,0 +1,106 @@ +import SwiftUI +import UniformTypeIdentifiers +#if os(iOS) +import QuickLook +#endif + +struct FileBrowserView: View { + @EnvironmentObject private var store: AppStore + var body: some View { + if store.configuration.fileManagerURL.isEmpty { + ContentUnavailableView("未配置 XFileManager", systemImage: "folder.badge.questionmark", description: Text("请在设置中填写 XFileManager 地址和专用账号")) + .navigationTitle("文件") + } else { + FileDirectoryView(path: store.configuration.fileManagerRootPath) + } + } +} + +private struct FileDirectoryView: View { + @EnvironmentObject private var store: AppStore + let path: String + private let client = XFileManagerClient() + @State private var entries: [RemoteFileEntry] = [] + @State private var loading = false + @State private var error: String? + @State private var showImporter = false + @State private var newFolder = "" + @State private var showNewFolder = false + @State private var renameEntry: RemoteFileEntry? + @State private var renameValue = "" + @State private var deleteEntry: RemoteFileEntry? + @State private var shareURL: URL? + + var body: some View { + List { + if entries.isEmpty && !loading { ContentUnavailableView("文件夹为空", systemImage: "folder") } + ForEach(entries) { entry in + if entry.isDirectory { + NavigationLink { FileDirectoryView(path: entry.path) } label: { FileRow(entry: entry) } + .contextMenu { actions(entry) } + } else { + NavigationLink { RemoteFilePreviewView(entry: entry, client: client) } label: { FileRow(entry: entry) } + .contextMenu { actions(entry) } + } + } + } + .navigationTitle(path.split(separator: "/").last.map(String.init) ?? "文件") + .overlay { if loading { ProgressView() } } + .refreshable { await load() } + .task { await load() } + .toolbar { ToolbarItemGroup(placement: .primaryAction) { Button { showNewFolder = true } label: { Image(systemName: "folder.badge.plus") }; Button { showImporter = true } label: { Image(systemName: "square.and.arrow.up") } } } + .fileImporter(isPresented: $showImporter, allowedContentTypes: [.item]) { result in Task { await upload(result) } } + .alert("新建文件夹", isPresented: $showNewFolder) { TextField("名称", text: $newFolder); Button("创建") { Task { await createFolder() } }; Button("取消", role: .cancel) {} } + .alert("重命名", isPresented: Binding(get: { renameEntry != nil }, set: { if !$0 { renameEntry = nil } })) { TextField("新名称", text: $renameValue); Button("保存") { Task { await rename() } }; Button("取消", role: .cancel) {} } + .confirmationDialog("确认删除 \(deleteEntry?.name ?? "")?", isPresented: Binding(get: { deleteEntry != nil }, set: { if !$0 { deleteEntry = nil } })) { Button("永久删除", role: .destructive) { Task { await delete() } }; Button("取消", role: .cancel) {} } message: { Text("此操作不能撤销。") } + .alert("XFileManager", isPresented: Binding(get: { error != nil }, set: { if !$0 { error = nil } })) { Button("好", role: .cancel) {} } message: { Text(error ?? "") } + .sheet(item: Binding(get: { shareURL.map(ShareItem.init) }, set: { if $0 == nil { shareURL = nil } })) { item in NavigationStack { VStack(spacing: 24) { Image(systemName: "link.circle.fill").font(.system(size: 64)).foregroundStyle(.orange); Text(item.url.absoluteString).textSelection(.enabled).multilineTextAlignment(.center); ShareLink(item: item.url) { Label("分享链接", systemImage: "square.and.arrow.up") }.buttonStyle(.borderedProminent) }.padding().navigationTitle("分享链接").toolbar { Button("完成") { shareURL = nil } } } } + } + + @ViewBuilder private func actions(_ entry: RemoteFileEntry) -> some View { + Button { renameEntry = entry; renameValue = entry.name } label: { Label("重命名", systemImage: "pencil") } + Button { Task { await share(entry) } } label: { Label("创建 24 小时分享", systemImage: "link") } + Button(role: .destructive) { deleteEntry = entry } label: { Label("删除", systemImage: "trash") } + } + private func load() async { loading = true; do { entries = try await client.list(configuration: store.configuration, path: path) } catch { self.error = error.localizedDescription }; loading = false } + private func createFolder() async { do { try await client.createDirectory(configuration: store.configuration, parent: path, name: newFolder); newFolder = ""; await load() } catch { self.error = error.localizedDescription } } + private func rename() async { guard let entry = renameEntry else { return }; renameEntry = nil; do { try await client.rename(configuration: store.configuration, entryPath: entry.path, newName: renameValue); await load() } catch { self.error = error.localizedDescription } } + private func delete() async { guard let entry = deleteEntry else { return }; deleteEntry = nil; do { try await client.delete(configuration: store.configuration, entryPath: entry.path); await load() } catch { self.error = error.localizedDescription } } + private func share(_ entry: RemoteFileEntry) async { do { shareURL = try await client.createShareLink(configuration: store.configuration, entry: entry).url } catch { self.error = error.localizedDescription } } + private func upload(_ result: Result) async { do { let url = try result.get(); let access = url.startAccessingSecurityScopedResource(); defer { if access { url.stopAccessingSecurityScopedResource() } }; try await client.upload(configuration: store.configuration, parent: path, fileURL: url); await load() } catch { self.error = error.localizedDescription } } +} + +private struct ShareItem: Identifiable { let url: URL; var id: String { url.absoluteString } } + +private struct FileRow: View { + let entry: RemoteFileEntry + var body: some View { HStack { Image(systemName: entry.isDirectory ? "folder.fill" : icon).foregroundStyle(entry.isDirectory ? .orange : .blue).frame(width: 30); VStack(alignment: .leading) { Text(entry.name).lineLimit(1); HStack { if !entry.isDirectory { Text(ByteCountFormatter.string(fromByteCount: entry.sizeBytes, countStyle: .file)) }; if let date = entry.modified { Text(date, style: .date) } }.font(.caption).foregroundStyle(.secondary) } } } + private var icon: String { let ext = (entry.name as NSString).pathExtension.lowercased(); if ["jpg", "jpeg", "png", "gif", "heic"].contains(ext) { return "photo" }; if ext == "pdf" { return "doc.richtext" }; if ["mp4", "mov", "mkv"].contains(ext) { return "film" }; if ["mp3", "m4a", "flac"].contains(ext) { return "waveform" }; return "doc" } +} + +private struct RemoteFilePreviewView: View { + @EnvironmentObject private var store: AppStore + let entry: RemoteFileEntry + let client: XFileManagerClient + @State private var localURL: URL? + @State private var text: String? + @State private var error: String? + private var isText: Bool { ["txt", "md", "json", "xml", "yaml", "yml", "log", "conf", "ini", "swift", "kt", "js", "ts", "css", "html", "py", "sh"].contains((entry.name as NSString).pathExtension.lowercased()) } + var body: some View { Group { if let text { ScrollView { Text(text).font(.system(.caption, design: .monospaced)).textSelection(.enabled).frame(maxWidth: .infinity, alignment: .leading).padding() } } else if let localURL { QuickLookView(url: localURL) } else if let error { ContentUnavailableView("无法预览", systemImage: "exclamationmark.triangle", description: Text(error)) } else { ProgressView() } }.navigationTitle(entry.name).toolbar { if let localURL { ShareLink(item: localURL) { Image(systemName: "square.and.arrow.up") } } }.task { await load() } } + private func load() async { do { if isText { text = try await client.textPreview(configuration: store.configuration, entry: entry) } else { localURL = try await client.download(configuration: store.configuration, entry: entry) } } catch { self.error = error.localizedDescription } } +} + +#if os(iOS) +private struct QuickLookView: UIViewControllerRepresentable { + let url: URL + func makeCoordinator() -> Coordinator { Coordinator(url: url) } + func makeUIViewController(context: Context) -> QLPreviewController { let controller = QLPreviewController(); controller.dataSource = context.coordinator; return controller } + func updateUIViewController(_ controller: QLPreviewController, context: Context) { context.coordinator.url = url; controller.reloadData() } + final class Coordinator: NSObject, QLPreviewControllerDataSource { var url: URL; init(url: URL) { self.url = url }; func numberOfPreviewItems(in controller: QLPreviewController) -> Int { 1 }; func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem { url as NSURL } } +} +#else +private struct QuickLookView: View { + let url: URL + var body: some View { ContentUnavailableView("预览仅支持 iOS", systemImage: "doc") } +} +#endif diff --git a/ios/UnraidManagerIOS/Sources/KeychainStore.swift b/ios/UnraidManagerIOS/Sources/KeychainStore.swift new file mode 100644 index 0000000..c772790 --- /dev/null +++ b/ios/UnraidManagerIOS/Sources/KeychainStore.swift @@ -0,0 +1,48 @@ +import Foundation +import Security + +enum KeychainStore { + private static let service = "com.bigfeng.unraidmanager.ios" + private static let apiAccount = "unraid-api-key" + private static let fileManagerAccount = "xfilemanager-password" + + static func saveAPIKey(_ value: String) throws { try save(value, account: apiAccount) } + static func saveFileManagerPassword(_ value: String) throws { try save(value, account: fileManagerAccount) } + static func loadAPIKey() -> String { load(account: apiAccount) } + static func loadFileManagerPassword() -> String { load(account: fileManagerAccount) } + + private static func save(_ value: String, account: String) throws { + let query: [String: Any] = [ + kSecClass as String: kSecClassGenericPassword, + kSecAttrService as String: service, + kSecAttrAccount as String: account + ] + SecItemDelete(query as CFDictionary) + guard !value.isEmpty else { return } + var item = query + item[kSecValueData as String] = Data(value.utf8) + item[kSecAttrAccessible as String] = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly + let status = SecItemAdd(item as CFDictionary, nil) + guard status == errSecSuccess else { throw KeychainError.status(status) } + } + + private static func load(account: String) -> String { + let query: [String: Any] = [ + kSecClass as String: kSecClassGenericPassword, + kSecAttrService as String: service, + kSecAttrAccount as String: account, + kSecReturnData as String: true, + kSecMatchLimit as String: kSecMatchLimitOne + ] + var result: CFTypeRef? + guard SecItemCopyMatching(query as CFDictionary, &result) == errSecSuccess, + let data = result as? Data else { return "" } + return String(decoding: data, as: UTF8.self) + } + + private enum KeychainError: LocalizedError { + case status(OSStatus) + var errorDescription: String? { "Keychain 写入失败(\(code))" } + private var code: OSStatus { if case .status(let value) = self { value } else { 0 } } + } +} diff --git a/ios/UnraidManagerIOS/Sources/Models.swift b/ios/UnraidManagerIOS/Sources/Models.swift new file mode 100644 index 0000000..64b8959 --- /dev/null +++ b/ios/UnraidManagerIOS/Sources/Models.swift @@ -0,0 +1,179 @@ +import Foundation + +struct ServerConfiguration: Equatable, Sendable { + var name = "我的 Unraid" + var url = "" + var apiKey = "" + var upsBridgeURL = "" + var fileManagerURL = "" + var fileManagerUsername = "" + var fileManagerPassword = "" + var fileManagerRootPath = "" + var mockMode = false + + var normalizedURL: String { + url.trimmingCharacters(in: .whitespacesAndNewlines).trimmingCharacters(in: CharacterSet(charactersIn: "/")) + } +} + +enum HealthState: String, Sendable { + case healthy, warning, stopped +} + +enum ContainerUpdateState: String, Sendable { + case notChecked, checking, upToDate, available, rebuildReady, unknown + + var label: String { + switch self { + case .notChecked: "尚未检查" + case .checking: "检查中" + case .upToDate: "已是最新" + case .available: "有可用更新" + case .rebuildReady: "可重建" + case .unknown: "无法判断" + } + } +} + +struct UPSInfo: Sendable { + let name: String + let model: String + let status: String + let chargePercent: Int + let runtimeSeconds: Int + let batteryHealth: String + let inputVoltage: Double + let outputVoltage: Double + let loadPercent: Int + let nominalPowerWatts: Int? + let currentPowerWatts: Double? +} + +struct DiskInfo: Identifiable, Sendable { + let id: String + let name: String + let sizeKB: Int64 + let usedKB: Int64 + let freeKB: Int64 + let temperature: Int? + let status: String + let errors: Int64 +} + +struct ContainerInfo: Identifiable, Sendable { + let id: String + let name: String + let image: String + let state: HealthState + let status: String + let ports: String + let iconURL: URL? + let webUIURL: URL? + let templatePath: String + let updateAvailable: Bool + var updateState: ContainerUpdateState = .notChecked +} + +struct ContainerRuntimeStats: Sendable { + let id: String + let cpuPercent: Double + let memoryUsage: String + let memoryPercent: Double + let networkIO: String + let blockIO: String +} + +struct VMInfo: Identifiable, Sendable { + let id: String + let name: String + let state: HealthState +} + +struct ServerSnapshot: Sendable { + let hostname: String + let release: String + let kernel: String + let uptime: String + let cpuBrand: String + let cpuPercent: Double + let cpuCores: Int + let cpuThreads: Int + let cpuCorePercents: [Double] + let cpuTemperature: Double? + let cpuPowerWatts: Double? + let memoryPercent: Double + let memoryAvailableBytes: Int64 + let memoryTotalBytes: Int64 + let memoryUsedBytes: Int64 + let memoryFreeBytes: Int64 + let memoryActiveBytes: Int64 + let memoryBufferCacheBytes: Int64 + let swapTotalBytes: Int64 + let swapUsedBytes: Int64 + let arrayState: String + let arrayTotalKB: Int64 + let arrayUsedKB: Int64 + let arrayFreeKB: Int64 + let disks: [DiskInfo] + let caches: [DiskInfo] + let containers: [ContainerInfo] + let virtualMachines: [VMInfo] + let ups: UPSInfo? + + static let demo = ServerSnapshot( + hostname: "Tower", release: "7.3.2", kernel: "6.x", uptime: "12 天 8 小时", + cpuBrand: "Demo CPU", cpuPercent: 18.4, cpuCores: 8, cpuThreads: 16, + cpuCorePercents: [12, 22, 8, 31, 17, 19, 9, 28, 11, 24, 16, 21, 7, 34, 13, 23], + cpuTemperature: 42, cpuPowerWatts: 36, memoryPercent: 43.2, + memoryAvailableBytes: 36 * 1_073_741_824, memoryTotalBytes: 64 * 1_073_741_824, + memoryUsedBytes: 28 * 1_073_741_824, memoryFreeBytes: 4 * 1_073_741_824, + memoryActiveBytes: 22 * 1_073_741_824, memoryBufferCacheBytes: 8 * 1_073_741_824, + swapTotalBytes: 8 * 1_073_741_824, swapUsedBytes: 512 * 1_048_576, arrayState: "STARTED", + arrayTotalKB: 24_000_000_000, arrayUsedKB: 13_200_000_000, arrayFreeKB: 10_800_000_000, + disks: [DiskInfo(id: "disk1", name: "disk1", sizeKB: 8_000_000_000, usedKB: 4_200_000_000, freeKB: 3_800_000_000, temperature: 35, status: "DISK_OK", errors: 0)], + caches: [], + containers: [ + ContainerInfo(id: "demo-nginx", name: "reverse-proxy", image: "nginx:stable", state: .healthy, status: "Up 2 days", ports: "8080 → 80/tcp", iconURL: nil, webUIURL: nil, templatePath: "/boot/config/plugins/dockerMan/templates-user/my-nginx.xml", updateAvailable: false), + ContainerInfo(id: "demo-worker", name: "demo-worker", image: "example/worker:latest", state: .stopped, status: "Exited (1)", ports: "无公开端口", iconURL: nil, webUIURL: nil, templatePath: "", updateAvailable: true) + ], + virtualMachines: [VMInfo(id: "demo-vm", name: "Ubuntu", state: .healthy)], + ups: UPSInfo(name: "UPS", model: "Demo 1500VA", status: "ONLINE", chargePercent: 100, runtimeSeconds: 2400, batteryHealth: "Good", inputVoltage: 230, outputVoltage: 230, loadPercent: 23, nominalPowerWatts: 900, currentPowerWatts: 207) + ) +} + +enum ContainerAction: String, Sendable { + case start, stop, updateContainer +} + +struct OperationRecord: Identifiable, Codable, Sendable { + let id: UUID + let title: String + let detail: String + let date: Date + let succeeded: Bool +} + +enum AppError: LocalizedError { + case invalidURL + case invalidResponse + case http(Int) + case api(String) + case emptyData + + var errorDescription: String? { + switch self { + case .invalidURL: "服务器地址必须以 http:// 或 https:// 开头" + case .invalidResponse: "服务器返回了无法识别的响应" + case .http(401), .http(403): "API Key 无效或权限不足" + case .http(let code): "Unraid API 返回 HTTP \(code)" + case .api(let message): message + case .emptyData: "Unraid API 返回数据为空" + } + } +} + +extension Int64 { + var storageText: String { + ByteCountFormatter.string(fromByteCount: self * 1024, countStyle: .binary) + } +} diff --git a/ios/UnraidManagerIOS/Sources/SystemViews.swift b/ios/UnraidManagerIOS/Sources/SystemViews.swift new file mode 100644 index 0000000..666b018 --- /dev/null +++ b/ios/UnraidManagerIOS/Sources/SystemViews.swift @@ -0,0 +1,114 @@ +import SwiftUI + +struct HealthDetailView: View { + let snapshot: ServerSnapshot + private var checks: [(String, String, Bool)] { + let allDisks = snapshot.disks + snapshot.caches + let diskErrors = allDisks.reduce(0) { $0 + $1.errors } + let hottest = allDisks.compactMap(\.temperature).max() + let stopped = snapshot.containers.filter { $0.state == .stopped }.count + return [ + ("阵列状态", snapshot.arrayState, snapshot.arrayState.uppercased() == "STARTED"), + ("磁盘健康", diskErrors == 0 ? "未发现 I/O 错误" : "\(diskErrors) 个 I/O 错误", diskErrors == 0), + ("温度", hottest.map { "最高 \($0)℃" } ?? "没有温度数据", (hottest ?? 0) < 50), + ("存储容量", "已使用 \(Int(snapshot.arrayTotalKB > 0 ? Double(snapshot.arrayUsedKB) / Double(snapshot.arrayTotalKB) * 100 : 0))%", snapshot.arrayTotalKB == 0 || Double(snapshot.arrayUsedKB) / Double(snapshot.arrayTotalKB) < 0.85), + ("CPU 负载", "\(Int(snapshot.cpuPercent))%", snapshot.cpuPercent < 80), + ("内存压力", "\(Int(snapshot.memoryPercent))%", snapshot.memoryPercent < 85), + ("Docker", stopped == 0 ? "全部运行" : "\(stopped) 个容器停止", stopped == 0), + ("UPS", snapshot.ups.map { "\($0.status) · \($0.chargePercent)%" } ?? "未检测到 UPS", snapshot.ups?.status.lowercased().contains("battery") != true) + ] + } + private var score: Int { max(0, 100 - checks.filter { !$0.2 }.count * 10) } + var body: some View { + List { + Section { HStack { VStack(alignment: .leading) { Text("健康评分").foregroundStyle(.secondary); Text("\(score)").font(.system(size: 52, weight: .bold)); Text(score >= 90 ? "运行稳定" : "需要关注").font(.headline) }; Spacer(); Gauge(value: Double(score), in: 0...100) { EmptyView() }.gaugeStyle(.accessoryCircular).tint(score >= 90 ? .green : .orange).scaleEffect(1.5) } } + Section("检查项目") { ForEach(Array(checks.enumerated()), id: \.offset) { _, check in HStack { Image(systemName: check.2 ? "checkmark.circle.fill" : "exclamationmark.triangle.fill").foregroundStyle(check.2 ? .green : .orange); VStack(alignment: .leading) { Text(check.0).font(.headline); Text(check.1).font(.caption).foregroundStyle(.secondary) }; Spacer() } } } + }.navigationTitle("服务器健康") + } +} + +struct CPUDetailView: View { + let snapshot: ServerSnapshot + var body: some View { + List { + Section { + MetricGauge(title: "整体负载", value: snapshot.cpuPercent, color: .orange) + LabeledContent("型号", value: snapshot.cpuBrand) + LabeledContent("拓扑", value: "\(snapshot.cpuCores) 核心 · \(snapshot.cpuThreads) 线程") + if let temp = snapshot.cpuTemperature { LabeledContent("温度", value: oneDecimal(temp) + "℃") } + if let power = snapshot.cpuPowerWatts { LabeledContent("功耗", value: oneDecimal(power) + " W") } + } + Section("逻辑 CPU") { if snapshot.cpuCorePercents.isEmpty { Text("当前 API 只返回总负载").foregroundStyle(.secondary) } else { ForEach(Array(snapshot.cpuCorePercents.enumerated()), id: \.offset) { index, value in VStack(alignment: .leading) { HStack { Text("CPU \(index)"); Spacer(); Text("\(value, specifier: "%.1f")%").foregroundStyle(.secondary) }; ProgressView(value: value, total: 100).tint(value >= 85 ? .red : .orange) } } } } + }.navigationTitle("处理器") + } + private func oneDecimal(_ value: Double) -> String { value.formatted(.number.precision(.fractionLength(1))) } +} + +struct MemoryDetailView: View { + let snapshot: ServerSnapshot + var body: some View { + List { + Section { MetricGauge(title: "内存占用", value: snapshot.memoryPercent, color: .blue) } + Section("内存明细") { ByteRow("总计", snapshot.memoryTotalBytes); ByteRow("已使用", snapshot.memoryUsedBytes); ByteRow("活动", snapshot.memoryActiveBytes); ByteRow("缓冲/缓存", snapshot.memoryBufferCacheBytes); ByteRow("可用", snapshot.memoryAvailableBytes); ByteRow("空闲", snapshot.memoryFreeBytes) } + Section("Swap") { ByteRow("已使用", snapshot.swapUsedBytes); ByteRow("总计", snapshot.swapTotalBytes) } + }.navigationTitle("内存") + } + @ViewBuilder private func ByteRow(_ title: String, _ bytes: Int64) -> some View { LabeledContent(title, value: ByteCountFormatter.string(fromByteCount: bytes, countStyle: .binary)) } +} + +struct StorageDetailView: View { + let snapshot: ServerSnapshot + var body: some View { + List { + Section("阵列") { LabeledContent("状态", value: snapshot.arrayState); LabeledContent("总容量", value: snapshot.arrayTotalKB.storageText); LabeledContent("已使用", value: snapshot.arrayUsedKB.storageText); LabeledContent("可用", value: snapshot.arrayFreeKB.storageText) } + DiskSection(title: "数据盘", disks: snapshot.disks) + DiskSection(title: "缓存池", disks: snapshot.caches) + }.navigationTitle("存储") + } +} + +private struct DiskSection: View { + let title: String, disks: [DiskInfo] + var body: some View { Section(title) { if disks.isEmpty { Text("无数据").foregroundStyle(.secondary) } else { ForEach(disks) { disk in NavigationLink { DiskDetailView(disk: disk) } label: { VStack(alignment: .leading) { HStack { Text(disk.name).font(.headline); Spacer(); if let temp = disk.temperature { Text("\(temp)℃") } }; Text("\(disk.usedKB.storageText) / \(disk.sizeKB.storageText) · \(disk.status)").font(.caption).foregroundStyle(disk.errors > 0 ? .red : .secondary) } } } } } } +} + +private struct DiskDetailView: View { + let disk: DiskInfo + var body: some View { List { Section { LabeledContent("状态", value: disk.status); LabeledContent("温度", value: disk.temperature.map { "\($0)℃" } ?? "—"); LabeledContent("I/O 错误", value: "\(disk.errors)") }; Section("容量") { LabeledContent("总计", value: disk.sizeKB.storageText); LabeledContent("已使用", value: disk.usedKB.storageText); LabeledContent("可用", value: disk.freeKB.storageText); ProgressView(value: disk.sizeKB > 0 ? Double(disk.usedKB) / Double(disk.sizeKB) : 0) } }.navigationTitle(disk.name) } +} + +struct UPSDetailView: View { + let ups: UPSInfo? + var body: some View { Group { if let ups { List { Section { MetricGauge(title: "电池电量", value: Double(ups.chargePercent), color: .green); LabeledContent("状态", value: ups.status); LabeledContent("电池健康", value: ups.batteryHealth); LabeledContent("预计续航", value: duration(ups.runtimeSeconds)) }; Section("设备") { LabeledContent("名称", value: ups.name); LabeledContent("型号", value: ups.model) }; Section("电力") { LabeledContent("输入电压", value: oneDecimal(ups.inputVoltage) + " V"); LabeledContent("输出电压", value: oneDecimal(ups.outputVoltage) + " V"); LabeledContent("负载", value: "\(ups.loadPercent)%"); if let value = ups.currentPowerWatts { LabeledContent("当前功耗", value: oneDecimal(value) + " W") }; if let value = ups.nominalPowerWatts { LabeledContent("额定功率", value: "\(value) W") } } } } else { ContentUnavailableView("未检测到 UPS", systemImage: "battery.0percent", description: Text("请确认 Unraid UPS 服务已经启用")) } }.navigationTitle("UPS") } + private func duration(_ seconds: Int) -> String { "\(seconds / 3600) 小时 \((seconds % 3600) / 60) 分" } + private func oneDecimal(_ value: Double) -> String { value.formatted(.number.precision(.fractionLength(1))) } +} + +private struct MetricGauge: View { + let title: String, value: Double, color: Color + var body: some View { VStack(alignment: .leading, spacing: 10) { HStack { Text(title).font(.headline); Spacer(); Text("\(value, specifier: "%.1f")%").font(.title2.bold()) }; ProgressView(value: value, total: 100).tint(value >= 90 ? .red : color) } } +} + +struct VMListView: View { + @EnvironmentObject private var store: AppStore + var body: some View { Group { if let vms = store.snapshot?.virtualMachines, !vms.isEmpty { List(vms) { vm in NavigationLink { VMDetailView(vm: vm) } label: { HStack { Image(systemName: "desktopcomputer").foregroundStyle(vm.state == .healthy ? .green : .secondary); VStack(alignment: .leading) { Text(vm.name).font(.headline); Text(vm.state == .healthy ? "运行中" : "已停止").font(.caption).foregroundStyle(.secondary) } } } } } else { ContentUnavailableView("没有虚拟机", systemImage: "desktopcomputer") } }.navigationTitle("虚拟机").refreshable { await store.refresh() } } +} + +private struct VMDetailView: View { + let vm: VMInfo + var body: some View { List { Section { LabeledContent("名称", value: vm.name); LabeledContent("状态", value: vm.state == .healthy ? "运行中" : "已停止"); LabeledContent("ID", value: vm.id) }; Section { Label("iOS 版本当前仅提供 VM 只读状态,不发送关机、重启或配置修改。", systemImage: "lock.shield") } }.navigationTitle(vm.name) } +} + +struct OperationHistoryView: View { + @EnvironmentObject private var store: AppStore + var body: some View { List { if store.operations.isEmpty { ContentUnavailableView("没有操作记录", systemImage: "clock.arrow.circlepath") } else { ForEach(store.operations) { item in VStack(alignment: .leading, spacing: 4) { HStack { Image(systemName: item.succeeded ? "checkmark.circle.fill" : "xmark.circle.fill").foregroundStyle(item.succeeded ? .green : .red); Text(item.title).font(.headline); Spacer(); Text(item.date, style: .relative).font(.caption).foregroundStyle(.secondary) }; Text(item.detail).font(.caption).foregroundStyle(.secondary) } } } }.navigationTitle("操作历史").toolbar { if !store.operations.isEmpty { Button("清空", role: .destructive) { store.clearOperations() } } } } +} + +struct ContainerLogsView: View { + @EnvironmentObject private var store: AppStore + let container: ContainerInfo + @State private var lines: [String] = [] + @State private var error: String? + var body: some View { ScrollView { LazyVStack(alignment: .leading, spacing: 5) { ForEach(Array(lines.enumerated()), id: \.offset) { _, line in Text(line).font(.system(.caption, design: .monospaced)).textSelection(.enabled).frame(maxWidth: .infinity, alignment: .leading) } }.padding() }.background(Color.black).foregroundStyle(Color.green.opacity(0.9)).navigationTitle("日志").toolbar { Button { Task { await load() } } label: { Image(systemName: "arrow.clockwise") } }.task { await load() }.alert("读取日志失败", isPresented: Binding(get: { error != nil }, set: { if !$0 { error = nil } })) { Button("好", role: .cancel) {} } message: { Text(error ?? "") } } + private func load() async { do { lines = try await store.logs(for: container) } catch { self.error = error.localizedDescription } } +} diff --git a/ios/UnraidManagerIOS/Sources/UnraidAPIClient.swift b/ios/UnraidManagerIOS/Sources/UnraidAPIClient.swift new file mode 100644 index 0000000..d20427a --- /dev/null +++ b/ios/UnraidManagerIOS/Sources/UnraidAPIClient.swift @@ -0,0 +1,260 @@ +import Foundation + +actor UnraidAPIClient { + private let session: URLSession + + init(session: URLSession = .shared) { + self.session = session + } + + func fetchSnapshot(configuration: ServerConfiguration) async throws -> ServerSnapshot { + let root: [String: Any] + do { + root = try await execute(configuration: configuration, query: Self.dashboardQuery) + } catch { + root = try await execute(configuration: configuration, query: Self.compatibleDashboardQuery) + } + guard let data = root["data"] as? [String: Any] else { throw AppError.emptyData } + var ups = try? await fetchUPS(configuration: configuration) + if ups == nil, !configuration.upsBridgeURL.isEmpty { + ups = try? await fetchUPSBridge(configuration: configuration) + } + return try parseSnapshot(data, serverURL: configuration.normalizedURL, ups: ups) + } + + func fetchContainerLogs(configuration: ServerConfiguration, containerID: String, tail: Int = 160) async throws -> [String] { + let query = """ + query ContainerLogs($id: PrefixedID!, $tail: Int!) { + docker { logs(id: $id, tail: $tail) { lines { timestamp message } cursor } } + } + """ + let root = try await execute(configuration: configuration, query: query, variables: ["id": containerID, "tail": min(max(tail, 20), 500)]) + let lines = ((root["data"] as? [String: Any])?.object("docker").object("logs").array("lines")) ?? [] + return lines.map { item in + let stamp = String(item.string("timestamp").suffix(8)) + let message = Self.redact(item.string("message")) + return [stamp, message].filter { !$0.isEmpty }.joined(separator: " ") + } + } + + func checkContainerUpdates(configuration: ServerConfiguration) async throws -> [String: ContainerUpdateState] { + let query = "query CheckDockerUpdates { docker { containerUpdateStatuses { name updateStatus } } }" + let root = try await execute(configuration: configuration, query: query) + let items = ((root["data"] as? [String: Any])?.object("docker").array("containerUpdateStatuses")) ?? [] + return Dictionary(uniqueKeysWithValues: items.compactMap { item in + let name = item.string("name") + guard !name.isEmpty else { return nil } + let state: ContainerUpdateState = switch item.string("updateStatus") { + case "UP_TO_DATE": .upToDate + case "UPDATE_AVAILABLE": .available + case "REBUILD_READY": .rebuildReady + default: .unknown + } + return (name, state) + }) + } + + func perform(configuration: ServerConfiguration, containerID: String, action: ContainerAction) async throws { + let field = action.rawValue + let mutation = """ + mutation ContainerAction($id: PrefixedID!) { + docker { \(field)(id: $id) { id state status } } + } + """ + _ = try await execute(configuration: configuration, query: mutation, variables: ["id": containerID]) + } + + private func fetchUPS(configuration: ServerConfiguration) async throws -> UPSInfo? { + let query = """ + query UnraidManagerUpsStatus { + upsConfiguration { service } + upsDevices { id name model status battery { chargeLevel estimatedRuntime health } power { inputVoltage outputVoltage loadPercentage nominalPower currentPower } } + } + """ + let root = try await execute(configuration: configuration, query: query) + guard let data = root["data"] as? [String: Any], let device = data.array("upsDevices").first else { return nil } + let battery = device.object("battery"), power = device.object("power") + return UPSInfo(name: device.string("name", fallback: "UPS"), model: device.string("model"), status: device.string("status", fallback: "Unknown"), chargePercent: battery.int("chargeLevel"), runtimeSeconds: battery.int("estimatedRuntime"), batteryHealth: battery.string("health", fallback: "Unknown"), inputVoltage: power.double("inputVoltage"), outputVoltage: power.double("outputVoltage"), loadPercent: power.int("loadPercentage"), nominalPowerWatts: power.optionalInt("nominalPower"), currentPowerWatts: power.optionalDouble("currentPower")) + } + + private func fetchUPSBridge(configuration: ServerConfiguration) async throws -> UPSInfo { + guard let url = URL(string: configuration.upsBridgeURL), url.scheme == "http" || url.scheme == "https" else { throw AppError.invalidURL } + var request = URLRequest(url: url) + request.timeoutInterval = 8 + request.setValue("application/json", forHTTPHeaderField: "Accept") + request.setValue(configuration.apiKey, forHTTPHeaderField: "x-api-key") + request.setValue("Unraid-Manager-iOS/0.2.0", forHTTPHeaderField: "User-Agent") + let (data, response) = try await session.data(for: request) + guard let http = response as? HTTPURLResponse, (200...299).contains(http.statusCode) else { throw AppError.api("UPS Bridge 连接失败") } + guard let root = try JSONSerialization.jsonObject(with: data) as? [String: Any] else { throw AppError.invalidResponse } + let battery = root.object("battery"), power = root.object("power") + return UPSInfo(name: root.string("name", fallback: "UPS"), model: root.string("model"), status: root.string("status", fallback: "Unknown"), chargePercent: battery["chargeLevel"] == nil ? root.int("chargePercent") : battery.int("chargeLevel"), runtimeSeconds: battery["estimatedRuntime"] == nil ? root.int("estimatedRuntimeSeconds") : battery.int("estimatedRuntime"), batteryHealth: battery.string("health", fallback: root.string("batteryHealth", fallback: "Unknown")), inputVoltage: power["inputVoltage"] == nil ? root.double("inputVoltage") : power.double("inputVoltage"), outputVoltage: power["outputVoltage"] == nil ? root.double("outputVoltage") : power.double("outputVoltage"), loadPercent: power["loadPercentage"] == nil ? root.int("loadPercent") : power.int("loadPercentage"), nominalPowerWatts: power.optionalInt("nominalPower"), currentPowerWatts: power.optionalDouble("currentPower")) + } + + func restart(configuration: ServerConfiguration, containerID: String) async throws { + try await perform(configuration: configuration, containerID: containerID, action: .stop) + for _ in 0..<10 { + try await Task.sleep(for: .seconds(1)) + let snapshot = try await fetchSnapshot(configuration: configuration) + if snapshot.containers.first(where: { $0.id == containerID })?.state == .stopped { break } + } + try await perform(configuration: configuration, containerID: containerID, action: .start) + } + + private func execute(configuration: ServerConfiguration, query: String, variables: [String: Any] = [:]) async throws -> [String: Any] { + guard !configuration.apiKey.isEmpty else { throw AppError.api("请填写统一 Unraid API Key") } + guard var components = URLComponents(string: configuration.normalizedURL), + components.scheme == "http" || components.scheme == "https" else { throw AppError.invalidURL } + if !components.path.hasSuffix("/graphql") { + components.path = components.path.trimmingCharacters(in: CharacterSet(charactersIn: "/")) + "/graphql" + if !components.path.hasPrefix("/") { components.path = "/" + components.path } + } + guard let url = components.url else { throw AppError.invalidURL } + + var request = URLRequest(url: url) + request.httpMethod = "POST" + request.timeoutInterval = 20 + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + request.setValue("application/json", forHTTPHeaderField: "Accept") + request.setValue(configuration.apiKey, forHTTPHeaderField: "x-api-key") + request.setValue("Unraid-Manager-iOS/0.2.0", forHTTPHeaderField: "User-Agent") + request.httpBody = try JSONSerialization.data(withJSONObject: ["query": query, "variables": variables]) + + let (body, response) = try await session.data(for: request) + guard let http = response as? HTTPURLResponse else { throw AppError.invalidResponse } + guard (200...299).contains(http.statusCode) else { throw AppError.http(http.statusCode) } + guard let root = try JSONSerialization.jsonObject(with: body) as? [String: Any] else { throw AppError.invalidResponse } + if let first = (root["errors"] as? [[String: Any]])?.first, + let message = first["message"] as? String { throw AppError.api(message) } + return root + } + + private func parseSnapshot(_ data: [String: Any], serverURL: String, ups: UPSInfo?) throws -> ServerSnapshot { + let info = data.object("info"), os = info.object("os"), cpu = info.object("cpu") + let cpuPackages = cpu.object("packages") + let metrics = data.object("metrics"), cpuMetrics = metrics.object("cpu"), memory = metrics.object("memory") + let array = data.object("array"), capacity = array.object("capacity").object("kilobytes") + let docker = data.object("docker"), vms = data.object("vms") + return ServerSnapshot( + hostname: os.string("hostname", fallback: "Unraid"), release: os.string("release", fallback: "未知版本"), + kernel: os.string("kernel"), uptime: os.string("uptime"), cpuBrand: cpu.string("brand"), + cpuPercent: cpuMetrics.double("percentTotal"), cpuCores: cpu.int("cores"), cpuThreads: cpu.int("threads"), + cpuCorePercents: cpuMetrics.array("cpus").map { $0.double("percentTotal") }, + cpuTemperature: cpuPackages.firstNumber("temp"), cpuPowerWatts: cpuPackages.optionalDouble("totalPower"), memoryPercent: memory.double("percentTotal"), + memoryAvailableBytes: memory.int64("available"), memoryTotalBytes: memory.int64("total"), memoryUsedBytes: memory.int64("used"), memoryFreeBytes: memory.int64("free"), memoryActiveBytes: memory.int64("active"), memoryBufferCacheBytes: memory.int64("buffcache"), swapTotalBytes: memory.int64("swapTotal"), swapUsedBytes: memory.int64("swapUsed"), arrayState: array.string("state", fallback: "UNKNOWN"), + arrayTotalKB: capacity.int64("total"), arrayUsedKB: capacity.int64("used"), arrayFreeKB: capacity.int64("free"), + disks: parseDisks(array.array("disks")), caches: parseDisks(array.array("caches")), + containers: parseContainers(docker.array("containers"), serverURL: serverURL), + virtualMachines: vms.array("domains").enumerated().map { index, item in + let state: HealthState = item.string("state").uppercased() == "RUNNING" ? .healthy : .stopped + return VMInfo(id: item.string("id", fallback: "vm-\(index)"), name: item.string("name", fallback: "VM"), state: state) + }, ups: ups + ) + } + + private func parseDisks(_ items: [[String: Any]]) -> [DiskInfo] { + items.enumerated().map { index, item in + DiskInfo(id: item.string("device", fallback: "disk-\(index)"), name: item.string("name", fallback: "disk"), + sizeKB: item.int64("size"), usedKB: item.int64("fsUsed"), freeKB: item.int64("fsFree"), + temperature: item.optionalInt("temp"), status: item.string("status", fallback: "UNKNOWN"), errors: item.int64("numErrors")) + } + } + + private func parseContainers(_ items: [[String: Any]], serverURL: String) -> [ContainerInfo] { + items.enumerated().map { index, item in + let rawState = item.string("state").uppercased() + let state: HealthState = rawState == "RUNNING" ? .healthy : (rawState == "PAUSED" ? .warning : .stopped) + let names = item["names"] as? [String] + return ContainerInfo( + id: item.string("id", fallback: "container-\(index)"), name: (names?.first ?? "container-\(index)").trimmingCharacters(in: CharacterSet(charactersIn: "/")), + image: item.string("image", fallback: "未知镜像"), state: state, + status: item.string("status", fallback: rawState), ports: item.string("lanIpPorts", fallback: "无公开端口"), + iconURL: resolveURL(item.flexibleString("iconUrl"), serverURL: serverURL), + webUIURL: resolveURL(item.flexibleString("webUiUrl"), serverURL: serverURL), + templatePath: item.string("templatePath"), + updateAvailable: item["isUpdateAvailable"] as? Bool ?? false + ) + }.sorted { ($0.state == .healthy ? 0 : 1, $0.name.lowercased()) < ($1.state == .healthy ? 0 : 1, $1.name.lowercased()) } + } + + private func resolveURL(_ value: String, serverURL: String) -> URL? { + guard !value.isEmpty else { return nil } + if let url = URL(string: value), url.scheme != nil { return url } + guard let base = URL(string: serverURL) else { return nil } + return URL(string: value, relativeTo: base)?.absoluteURL + } + + private static let dashboardQuery = """ + query UnraidManagerDashboard { + info { os { hostname release uptime kernel } cpu { brand cores threads packages { totalPower temp } } } + metrics { cpu { percentTotal cpus { percentTotal } } memory { total used free available active buffcache percentTotal swapTotal swapUsed } } + array { + state capacity { kilobytes { free used total } } + disks { name device size status temp fsFree fsUsed fsType numErrors } + caches { name device size status temp fsFree fsUsed fsType numErrors } + } + docker { containers { id names image imageId state status lanIpPorts autoStart isUpdateAvailable templatePath iconUrl webUiUrl } } + vms { domains { id name state } } + } + """ + + private static let compatibleDashboardQuery = dashboardQuery + .replacingOccurrences(of: " packages { totalPower temp }", with: "") + .replacingOccurrences(of: " cpus { percentTotal }", with: "") + .replacingOccurrences(of: " active buffcache", with: "") + .replacingOccurrences(of: " swapTotal swapUsed", with: "") + .replacingOccurrences(of: " iconUrl webUiUrl", with: "") + + private static func redact(_ text: String) -> String { + let patterns = ["(?i)(authorization:|x-api-key:|api[_-]?key=|token=|password=)\\s*[^\\s]+"] + return patterns.reduce(text) { value, pattern in + guard let regex = try? NSRegularExpression(pattern: pattern) else { return value } + return regex.stringByReplacingMatches(in: value, range: NSRange(value.startIndex..., in: value), withTemplate: "$1 [REDACTED]") + } + } +} + +private extension Dictionary where Key == String, Value == Any { + func object(_ key: String) -> [String: Any] { self[key] as? [String: Any] ?? [:] } + func array(_ key: String) -> [[String: Any]] { self[key] as? [[String: Any]] ?? [] } + func string(_ key: String, fallback: String = "") -> String { + if let value = self[key] as? String { return value } + if let value = self[key] as? NSNumber { return value.stringValue } + return fallback + } + func flexibleString(_ key: String) -> String { + if let value = self[key] as? String { return value.trimmingCharacters(in: .whitespacesAndNewlines) } + return (self[key] as? [String])?.last(where: { !$0.isEmpty }) ?? "" + } + func double(_ key: String) -> Double { + if let value = self[key] as? NSNumber { return value.doubleValue } + return Double(string(key)) ?? 0 + } + func optionalDouble(_ key: String) -> Double? { + guard self[key] != nil, !(self[key] is NSNull) else { return nil } + if let value = self[key] as? NSNumber { return value.doubleValue } + return Double(string(key)) + } + func int(_ key: String) -> Int { + if let value = self[key] as? NSNumber { return value.intValue } + return Int(string(key)) ?? 0 + } + func int64(_ key: String) -> Int64 { + if let value = self[key] as? NSNumber { return value.int64Value } + return Int64(string(key)) ?? 0 + } + func optionalInt(_ key: String) -> Int? { + guard self[key] != nil, !(self[key] is NSNull) else { return nil } + if let value = self[key] as? NSNumber { return value.intValue } + return Int(string(key)) + } + func firstNumber(_ key: String) -> Double? { + if let values = self[key] as? [NSNumber] { return values.first?.doubleValue } + if let values = self[key] as? [[String: Any]] { + for item in values { + if let value = item.optionalDouble("value") ?? item.optionalDouble("current") { return value } + } + } + return optionalDouble(key) + } +} diff --git a/ios/UnraidManagerIOS/Sources/UnraidManagerApp.swift b/ios/UnraidManagerIOS/Sources/UnraidManagerApp.swift new file mode 100644 index 0000000..3b6d0e9 --- /dev/null +++ b/ios/UnraidManagerIOS/Sources/UnraidManagerApp.swift @@ -0,0 +1,14 @@ +import SwiftUI + +@main +struct UnraidManagerApp: App { + @StateObject private var store = AppStore() + + var body: some Scene { + WindowGroup { + RootView() + .environmentObject(store) + .tint(Color(red: 0.96, green: 0.35, blue: 0.12)) + } + } +} diff --git a/ios/UnraidManagerIOS/Sources/Views.swift b/ios/UnraidManagerIOS/Sources/Views.swift new file mode 100644 index 0000000..5e7397a --- /dev/null +++ b/ios/UnraidManagerIOS/Sources/Views.swift @@ -0,0 +1,233 @@ +import SwiftUI + +struct RootView: View { + @EnvironmentObject private var store: AppStore + + var body: some View { + TabView { + NavigationStack { DashboardView() } + .tabItem { Label("概览", systemImage: "gauge.with.dots.needle.67percent") } + NavigationStack { DockerView() } + .tabItem { Label("Docker", systemImage: "shippingbox") } + NavigationStack { VMListView() } + .tabItem { Label("虚拟机", systemImage: "desktopcomputer") } + NavigationStack { FileBrowserView() } + .tabItem { Label("文件", systemImage: "folder") } + NavigationStack { SettingsView() } + .tabItem { Label("设置", systemImage: "gearshape") } + } + .task { if store.snapshot == nil { await store.refresh() } } + .sheet(isPresented: $store.showConfiguration) { ConfigurationView() } + .alert("连接失败", isPresented: Binding(get: { store.errorMessage != nil }, set: { if !$0 { store.errorMessage = nil } })) { + Button("好", role: .cancel) { store.errorMessage = nil } + } message: { Text(store.errorMessage ?? "未知错误") } + .overlay { if store.isLoading { ProgressView().padding(24).background(.regularMaterial, in: RoundedRectangle(cornerRadius: 16)) } } + .preferredColorScheme(store.colorSchemePreference == "dark" ? .dark : store.colorSchemePreference == "light" ? .light : nil) + .task { + while !Task.isCancelled { + try? await Task.sleep(for: .seconds(15)) + if store.autoRefresh { await store.refresh() } + } + } + } +} + +struct DashboardView: View { + @EnvironmentObject private var store: AppStore + + var body: some View { + Group { + if let snapshot = store.snapshot { + ScrollView { + VStack(alignment: .leading, spacing: 16) { + VStack(alignment: .leading, spacing: 5) { + Text(snapshot.hostname).font(.largeTitle.bold()) + Text("Unraid \(snapshot.release) · \(snapshot.uptime)").foregroundStyle(.secondary) + } + HStack(spacing: 12) { + NavigationLink { CPUDetailView(snapshot: snapshot) } label: { MetricCard(title: "CPU", value: snapshot.cpuPercent, detail: snapshot.cpuBrand) }.buttonStyle(.plain) + NavigationLink { MemoryDetailView(snapshot: snapshot) } label: { MetricCard(title: "内存", value: snapshot.memoryPercent, detail: "可用 \(ByteCountFormatter.string(fromByteCount: snapshot.memoryAvailableBytes, countStyle: .binary))") }.buttonStyle(.plain) + } + NavigationLink { StorageDetailView(snapshot: snapshot) } label: { ArrayCard(snapshot: snapshot) }.buttonStyle(.plain) + NavigationLink { HealthDetailView(snapshot: snapshot) } label: { SummaryRow(title: "健康检查", value: "查看评分与告警", icon: "heart.text.square.fill") }.buttonStyle(.plain) + NavigationLink { UPSDetailView(ups: snapshot.ups) } label: { SummaryRow(title: "UPS", value: snapshot.ups.map { "\($0.status) · \($0.chargePercent)%" } ?? "未检测到", icon: "battery.100percent.bolt") }.buttonStyle(.plain) + SummaryRow(title: "Docker", value: "\(snapshot.containers.filter { $0.state == .healthy }.count) / \(snapshot.containers.count) 运行", icon: "shippingbox.fill") + SummaryRow(title: "虚拟机", value: "\(snapshot.virtualMachines.filter { $0.state == .healthy }.count) / \(snapshot.virtualMachines.count) 运行", icon: "desktopcomputer") + if !snapshot.disks.isEmpty { + Text("磁盘").font(.headline) + ForEach(snapshot.disks) { disk in DiskRow(disk: disk) } + } + }.padding() + } + .refreshable { await store.refresh() } + } else { + ContentUnavailableView("尚未连接服务器", systemImage: "server.rack", description: Text("请在设置中填写服务器地址和 API Key")) + } + } + .navigationTitle(store.configuration.name) + .toolbar { Button { Task { await store.refresh() } } label: { Image(systemName: "arrow.clockwise") } } + } +} + +private struct MetricCard: View { + let title: String + let value: Double + let detail: String + var body: some View { + VStack(alignment: .leading, spacing: 9) { + Text(title).font(.headline) + Text(value, format: .number.precision(.fractionLength(1))).font(.system(size: 30, weight: .bold)) + Text("%").foregroundStyle(.secondary) + ProgressView(value: min(max(value / 100, 0), 1)).tint(value > 85 ? .red : .orange) + Text(detail).font(.caption).foregroundStyle(.secondary).lineLimit(1) + }.padding().frame(maxWidth: .infinity, alignment: .leading).background(.secondary.opacity(0.1), in: RoundedRectangle(cornerRadius: 16)) + } +} + +private struct ArrayCard: View { + let snapshot: ServerSnapshot + var fraction: Double { snapshot.arrayTotalKB > 0 ? Double(snapshot.arrayUsedKB) / Double(snapshot.arrayTotalKB) : 0 } + var body: some View { + VStack(alignment: .leading, spacing: 10) { + HStack { Label("存储阵列", systemImage: "externaldrive.fill").font(.headline); Spacer(); Text(snapshot.arrayState).font(.caption.bold()).foregroundStyle(snapshot.arrayState == "STARTED" ? .green : .orange) } + ProgressView(value: fraction) + HStack { Text("已用 \(snapshot.arrayUsedKB.storageText)"); Spacer(); Text("共 \(snapshot.arrayTotalKB.storageText)") }.font(.caption).foregroundStyle(.secondary) + }.padding().background(.secondary.opacity(0.1), in: RoundedRectangle(cornerRadius: 16)) + } +} + +private struct SummaryRow: View { + let title: String, value: String, icon: String + var body: some View { HStack { Image(systemName: icon).frame(width: 28).foregroundStyle(.orange); Text(title).font(.headline); Spacer(); Text(value).foregroundStyle(.secondary) }.padding().background(.secondary.opacity(0.08), in: RoundedRectangle(cornerRadius: 14)) } +} + +private struct DiskRow: View { + let disk: DiskInfo + var body: some View { + HStack { + Image(systemName: disk.errors > 0 ? "externaldrive.badge.exclamationmark" : "externaldrive") + VStack(alignment: .leading) { Text(disk.name).font(.headline); Text("\(disk.usedKB.storageText) / \(disk.sizeKB.storageText)").font(.caption).foregroundStyle(.secondary) } + Spacer() + if let temperature = disk.temperature { Text("\(temperature)℃").foregroundStyle(temperature >= 50 ? .red : .secondary) } + }.padding(.vertical, 4) + } +} + +struct DockerView: View { + @EnvironmentObject private var store: AppStore + @State private var search = "" + var containers: [ContainerInfo] { store.snapshot?.containers.filter { search.isEmpty || $0.name.localizedCaseInsensitiveContains(search) || $0.image.localizedCaseInsensitiveContains(search) } ?? [] } + var body: some View { + Group { + if containers.isEmpty { ContentUnavailableView("没有容器", systemImage: "shippingbox") } + else { List(containers) { container in NavigationLink { ContainerDetailView(container: container) } label: { ContainerRow(container: container) } } } + } + .navigationTitle("Docker") + .searchable(text: $search, prompt: "搜索名称或镜像") + .refreshable { await store.refresh() } + .toolbar { Button("检查更新") { Task { await store.checkContainerUpdates() } } } + } +} + +private struct ContainerRow: View { + let container: ContainerInfo + var body: some View { + HStack(spacing: 12) { + AsyncImage(url: container.iconURL) { image in image.resizable().scaledToFit() } placeholder: { Image(systemName: "shippingbox.fill").foregroundStyle(.orange) }.frame(width: 38, height: 38) + VStack(alignment: .leading, spacing: 3) { Text(container.name).font(.headline); Text(container.image).font(.caption).foregroundStyle(.secondary).lineLimit(1); Text(container.status).font(.caption2).foregroundStyle(container.state == .healthy ? .green : .secondary) } + Spacer() + if container.updateAvailable || container.updateState == .available { Image(systemName: "arrow.down.circle.fill").foregroundStyle(.orange) } + } + } +} + +struct ContainerDetailView: View { + @EnvironmentObject private var store: AppStore + let container: ContainerInfo + @State private var pendingOperation: ContainerOperation? + @StateObject private var liveStats = ContainerStatsViewModel() + var body: some View { + List { + Section("状态") { LabeledContent("镜像", value: container.image); LabeledContent("状态", value: container.status); LabeledContent("端口", value: container.ports) } + Section("实时指标") { + if let stats = liveStats.stats { + LabeledContent("CPU", value: stats.cpuPercent.formatted(.number.precision(.fractionLength(1))) + "%") + LabeledContent("内存", value: stats.memoryUsage) + LabeledContent("内存占比", value: stats.memoryPercent.formatted(.number.precision(.fractionLength(1))) + "%") + LabeledContent("网络 I/O", value: stats.networkIO) + LabeledContent("磁盘 I/O", value: stats.blockIO) + } + Text(liveStats.status).font(.caption).foregroundStyle(.secondary) + } + Section("镜像更新") { LabeledContent("检查状态", value: container.updateState.label); if !container.templatePath.isEmpty && (container.updateAvailable || container.updateState == .available || container.updateState == .rebuildReady) { Button("更新并重建容器") { pendingOperation = .update } } else if container.templatePath.isEmpty { Text("缺少 DockerMan 模板,已禁用直接更新。").font(.caption).foregroundStyle(.secondary) } } + if let webUIURL = container.webUIURL { Section { Link(destination: webUIURL) { Label("打开 WebUI", systemImage: "safari") } } } + Section { NavigationLink { ContainerLogsView(container: container) } label: { Label("查看最近日志", systemImage: "terminal") } } + Section("安全操作") { + if container.state == .healthy { + Button("停止容器", role: .destructive) { pendingOperation = .stop } + Button("重启容器") { pendingOperation = .restart } + } else { Button("启动容器") { pendingOperation = .start } } + } + } + .navigationTitle(container.name) + .task { liveStats.connect(configuration: store.configuration, containerID: container.id) } + .onDisappear { liveStats.disconnect() } + .confirmationDialog("确认\(pendingOperation?.rawValue ?? "操作") \(container.name)?", isPresented: Binding(get: { pendingOperation != nil }, set: { if !$0 { pendingOperation = nil } }), titleVisibility: .visible) { + if let operation = pendingOperation { Button("确认\(operation.rawValue)", role: operation == .stop ? .destructive : nil) { pendingOperation = nil; Task { await store.perform(operation, on: container) } } } + Button("取消", role: .cancel) { pendingOperation = nil } + } message: { Text("操作将立即发送到 Unraid,完成后会重新读取容器状态。") } + } +} + +struct SettingsView: View { + @EnvironmentObject private var store: AppStore + var body: some View { + List { + Section("服务器") { LabeledContent("名称", value: store.configuration.name); LabeledContent("地址", value: store.configuration.mockMode ? "演示模式" : store.configuration.url); Button("修改连接设置") { store.showConfiguration = true } } + Section("文件管理") { LabeledContent("XFileManager", value: store.configuration.fileManagerURL.isEmpty ? "未配置" : store.configuration.fileManagerURL); LabeledContent("初始目录", value: store.configuration.fileManagerRootPath.isEmpty ? "/" : store.configuration.fileManagerRootPath) } + Section("安全") { Label("API Key 保存在 iOS Keychain", systemImage: "key.fill"); Label("TLS 证书由系统验证", systemImage: "checkmark.shield.fill") } + Section("刷新与外观") { + Toggle("每 15 秒自动刷新", isOn: $store.autoRefresh).onChange(of: store.autoRefresh) { store.savePreferences() } + Picker("外观", selection: $store.colorSchemePreference) { Text("跟随系统").tag("system"); Text("浅色").tag("light"); Text("深色").tag("dark") }.onChange(of: store.colorSchemePreference) { store.savePreferences() } + } + Section("记录") { NavigationLink { OperationHistoryView() } label: { Label("操作历史", systemImage: "clock.arrow.circlepath") } } + Section("关于") { LabeledContent("iOS 客户端", value: "0.2.0"); Text("不包含分析、广告或遥测 SDK。") } + }.navigationTitle("设置") + } +} + +struct ConfigurationView: View { + @EnvironmentObject private var store: AppStore + @Environment(\.dismiss) private var dismiss + @State private var draft = ServerConfiguration() + var body: some View { + NavigationStack { + Form { + Section("Unraid 服务器") { + TextField("显示名称", text: $draft.name) + TextField("https://tower.example.com", text: $draft.url) + SecureField("统一 Unraid API Key", text: $draft.apiKey) + } + Section { + Toggle("演示模式", isOn: $draft.mockMode) + } footer: { + Text("推荐权限范围:role:viewer,docker:update。HTTPS 服务器必须使用系统信任的有效证书。") + } + Section("XFileManager(可选)") { + TextField("http://tower.local:38876", text: $draft.fileManagerURL) + TextField("用户名", text: $draft.fileManagerUsername) + SecureField("密码", text: $draft.fileManagerPassword) + TextField("限制访问的初始目录", text: $draft.fileManagerRootPath) + } + Section("UPS Bridge(可选)") { + TextField("https://example.com/bigfeng-ups/status", text: $draft.upsBridgeURL) + } + } + .navigationTitle("连接设置") + .toolbar { + ToolbarItem(placement: .cancellationAction) { if store.isConfigured { Button("取消") { dismiss() } } } + ToolbarItem(placement: .confirmationAction) { Button("保存并验证") { Task { if await store.save(configuration: draft) { dismiss() } } }.disabled(!draft.mockMode && (draft.url.isEmpty || draft.apiKey.isEmpty)) } + } + .onAppear { draft = store.configuration } + }.interactiveDismissDisabled(!store.isConfigured) + } +} diff --git a/ios/UnraidManagerIOS/Sources/XFileManagerClient.swift b/ios/UnraidManagerIOS/Sources/XFileManagerClient.swift new file mode 100644 index 0000000..41eb375 --- /dev/null +++ b/ios/UnraidManagerIOS/Sources/XFileManagerClient.swift @@ -0,0 +1,161 @@ +import Foundation + +struct RemoteFileEntry: Identifiable, Sendable { + var id: String { path } + let name: String + let path: String + let isDirectory: Bool + let isLink: Bool + let sizeBytes: Int64 + let modified: Date? +} + +struct RemoteShareLink: Sendable { + let url: URL + let token: String +} + +actor XFileManagerClient { + private let session = URLSession.shared + private var token: String? + private var sessionIdentity = "" + + func list(configuration: ServerConfiguration, path: String) async throws -> [RemoteFileEntry] { + let safePath = try withinRoot(path, root: configuration.fileManagerRootPath) + let data = try await authorized(configuration: configuration, path: "/api/files/list", query: [URLQueryItem(name: "path", value: safePath), URLQueryItem(name: "limit", value: "500"), URLQueryItem(name: "offset", value: "0")]) + let value = try JSONSerialization.jsonObject(with: data) + let rawItems: [[String: Any]] + if let items = value as? [[String: Any]] { rawItems = items } + else if let root = value as? [String: Any] { rawItems = (root["items"] as? [[String: Any]]) ?? (root["files"] as? [[String: Any]]) ?? [] } + else { throw AppError.invalidResponse } + return rawItems.compactMap { item in + let name = (item["Name"] as? String) ?? (item["name"] as? String) ?? "" + guard !name.isEmpty, name != ".", name != ".." else { return nil } + let fullPath = (item["FullPath"] as? String) ?? (item["path"] as? String) ?? join(safePath, name) + guard (try? withinRoot(fullPath, root: configuration.fileManagerRootPath)) != nil else { return nil } + let seconds = ((item["ModTime"] as? NSNumber) ?? (item["modTime"] as? NSNumber))?.doubleValue + return RemoteFileEntry(name: name, path: normalize(fullPath), isDirectory: (item["IsDir"] as? Bool) ?? (item["isDir"] as? Bool) ?? false, isLink: (item["IsLink"] as? Bool) ?? (item["isLink"] as? Bool) ?? false, sizeBytes: ((item["Size"] as? NSNumber) ?? (item["size"] as? NSNumber))?.int64Value ?? 0, modified: seconds.map { Date(timeIntervalSince1970: $0 > 10_000_000_000 ? $0 / 1000 : $0) }) + }.sorted { $0.isDirectory != $1.isDirectory ? $0.isDirectory : $0.name.localizedCaseInsensitiveCompare($1.name) == .orderedAscending } + } + + func createDirectory(configuration: ServerConfiguration, parent: String, name: String) async throws { + try validateName(name) + _ = try await authorizedJSON(configuration: configuration, path: "/api/files/mkdir", method: "POST", body: ["path": try withinRoot(parent, root: configuration.fileManagerRootPath), "name": name]) + } + + func rename(configuration: ServerConfiguration, entryPath: String, newName: String) async throws { + try validateName(newName) + _ = try await authorizedJSON(configuration: configuration, path: "/api/files/rename", method: "POST", body: ["oldPath": try withinRoot(entryPath, root: configuration.fileManagerRootPath), "newName": newName]) + } + + func delete(configuration: ServerConfiguration, entryPath: String) async throws { + let target = try withinRoot(entryPath, root: configuration.fileManagerRootPath) + guard target != normalize(configuration.fileManagerRootPath) else { throw AppError.api("不能删除文件管理根目录") } + _ = try await authorizedJSON(configuration: configuration, path: "/api/files/delete", method: "POST", body: ["path": target]) + } + + func download(configuration: ServerConfiguration, entry: RemoteFileEntry) async throws -> URL { + let target = try withinRoot(entry.path, root: configuration.fileManagerRootPath) + let data = try await authorized(configuration: configuration, path: "/api/files/download", query: [URLQueryItem(name: "path", value: target)]) + let directory = FileManager.default.temporaryDirectory.appending(path: "UnraidManager", directoryHint: .isDirectory) + try FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true) + let output = directory.appending(path: entry.name) + try data.write(to: output, options: .atomic) + return output + } + + func textPreview(configuration: ServerConfiguration, entry: RemoteFileEntry) async throws -> String { + let target = try withinRoot(entry.path, root: configuration.fileManagerRootPath) + let data = try await authorized(configuration: configuration, path: "/api/files/download", query: [URLQueryItem(name: "path", value: target), URLQueryItem(name: "inline", value: "true")]) + let prefix = data.prefix(1_048_576) + return String(data: prefix, encoding: .utf8) ?? String(data: prefix, encoding: .unicode) ?? "无法解码文本" + } + + func upload(configuration: ServerConfiguration, parent: String, fileURL: URL) async throws { + let parent = try withinRoot(parent, root: configuration.fileManagerRootPath) + try validateName(fileURL.lastPathComponent) + let boundary = "Boundary-\(UUID().uuidString)" + let bodyURL = FileManager.default.temporaryDirectory.appending(path: "upload-\(UUID().uuidString).multipart") + guard FileManager.default.createFile(atPath: bodyURL.path, contents: nil) else { throw AppError.api("无法准备上传临时文件") } + defer { try? FileManager.default.removeItem(at: bodyURL) } + let output = try FileHandle(forWritingTo: bodyURL) + defer { try? output.close() } + try output.write(contentsOf: "--\(boundary)\r\nContent-Disposition: form-data; name=\"path\"\r\n\r\n\(parent)\r\n".data(using: .utf8)!) + try output.write(contentsOf: "--\(boundary)\r\nContent-Disposition: form-data; name=\"files\"; filename=\"\(fileURL.lastPathComponent)\"\r\nContent-Type: application/octet-stream\r\n\r\n".data(using: .utf8)!) + let input = try FileHandle(forReadingFrom: fileURL) + defer { try? input.close() } + while let chunk = try input.read(upToCount: 1_048_576), !chunk.isEmpty { try output.write(contentsOf: chunk) } + try output.write(contentsOf: "\r\n--\(boundary)--\r\n".data(using: .utf8)!) + try output.synchronize() + _ = try await authorizedUpload(configuration: configuration, path: "/api/files/upload", bodyURL: bodyURL, contentType: "multipart/form-data; boundary=\(boundary)") + } + + func createShareLink(configuration: ServerConfiguration, entry: RemoteFileEntry, expireHours: Int = 24) async throws -> RemoteShareLink { + let data = try await authorizedJSON(configuration: configuration, path: "/api/files/share", method: "POST", body: ["path": try withinRoot(entry.path, root: configuration.fileManagerRootPath), "expire_hours": expireHours]) + guard let root = try JSONSerialization.jsonObject(with: data) as? [String: Any] else { throw AppError.invalidResponse } + let share = (root["share"] as? [String: Any]) ?? root + let token = share["token"] as? String ?? "" + let raw = (share["share_url"] as? String) ?? (token.isEmpty ? "" : "/s/\(token)") + guard !raw.isEmpty, let base = URL(string: configuration.fileManagerURL), let url = URL(string: raw, relativeTo: base)?.absoluteURL else { throw AppError.api("XFileManager 没有返回分享链接") } + return RemoteShareLink(url: url, token: token) + } + + private func authorizedJSON(configuration: ServerConfiguration, path: String, method: String, body: [String: Any]) async throws -> Data { + try await authorized(configuration: configuration, path: path, method: method, body: JSONSerialization.data(withJSONObject: body), contentType: "application/json") + } + + private func authorizedUpload(configuration: ServerConfiguration, path: String, bodyURL: URL, contentType: String, retry: Bool = true) async throws -> Data { + let accessToken = try await authenticate(configuration) + var request = try request(configuration: configuration, path: path) + request.httpMethod = "POST" + request.setValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization") + request.setValue(contentType, forHTTPHeaderField: "Content-Type") + let (data, response) = try await session.upload(for: request, fromFile: bodyURL) + guard let http = response as? HTTPURLResponse else { throw AppError.invalidResponse } + if http.statusCode == 401, retry { token = nil; return try await authorizedUpload(configuration: configuration, path: path, bodyURL: bodyURL, contentType: contentType, retry: false) } + guard (200...299).contains(http.statusCode) else { throw AppError.api("XFileManager 上传失败(HTTP \(http.statusCode))") } + return data + } + + private func authorized(configuration: ServerConfiguration, path: String, query: [URLQueryItem] = [], method: String = "GET", body: Data? = nil, contentType: String? = nil, retry: Bool = true) async throws -> Data { + let accessToken = try await authenticate(configuration) + var request = try request(configuration: configuration, path: path, query: query) + request.httpMethod = method + request.httpBody = body + request.setValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization") + if let contentType { request.setValue(contentType, forHTTPHeaderField: "Content-Type") } + let (data, response) = try await session.data(for: request) + guard let http = response as? HTTPURLResponse else { throw AppError.invalidResponse } + if http.statusCode == 401, retry { token = nil; return try await authorized(configuration: configuration, path: path, query: query, method: method, body: body, contentType: contentType, retry: false) } + guard (200...299).contains(http.statusCode) else { throw AppError.api("XFileManager 操作失败(HTTP \(http.statusCode))") } + return data + } + + private func authenticate(_ configuration: ServerConfiguration) async throws -> String { + let identity = "\(configuration.fileManagerURL)\0\(configuration.fileManagerUsername)\0\(configuration.fileManagerPassword)" + if identity == sessionIdentity, let token { return token } + guard !configuration.fileManagerUsername.isEmpty, !configuration.fileManagerPassword.isEmpty else { throw AppError.api("请填写 XFileManager 用户名和密码") } + var request = try request(configuration: configuration, path: "/api/auth/login") + request.httpMethod = "POST" + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + request.httpBody = try JSONSerialization.data(withJSONObject: ["username": configuration.fileManagerUsername, "password": configuration.fileManagerPassword]) + let (data, response) = try await session.data(for: request) + guard let http = response as? HTTPURLResponse, (200...299).contains(http.statusCode), let root = try JSONSerialization.jsonObject(with: data) as? [String: Any], root["success"] as? Bool == true, let value = root["token"] as? String, !value.isEmpty else { throw AppError.api("XFileManager 登录失败,请检查地址和凭据") } + token = value; sessionIdentity = identity + return value + } + + private func request(configuration: ServerConfiguration, path: String, query: [URLQueryItem] = []) throws -> URLRequest { + guard var components = URLComponents(string: configuration.fileManagerURL), components.scheme == "http" || components.scheme == "https" else { throw AppError.api("请填写完整的 XFileManager 地址") } + components.path = components.path.trimmingCharacters(in: CharacterSet(charactersIn: "/")) + path + if !components.path.hasPrefix("/") { components.path = "/" + components.path } + components.queryItems = query + guard let url = components.url else { throw AppError.invalidURL } + var request = URLRequest(url: url); request.timeoutInterval = 90; request.setValue("Unraid-Manager-iOS/0.2.0", forHTTPHeaderField: "User-Agent"); return request + } + + private func normalize(_ value: String) -> String { value.replacingOccurrences(of: "\\", with: "/").split(separator: "/").joined(separator: "/") } + private func join(_ parent: String, _ child: String) -> String { [normalize(parent), normalize(child)].filter { !$0.isEmpty }.joined(separator: "/") } + private func withinRoot(_ value: String, root: String) throws -> String { let value = normalize(value), root = normalize(root); guard root.isEmpty || value == root || value.hasPrefix(root + "/") else { throw AppError.api("已阻止访问文件管理根目录之外的路径") }; return value } + private func validateName(_ value: String) throws { guard !value.isEmpty, value != ".", value != "..", !value.contains("/"), !value.contains("\\"), !value.contains("\0") else { throw AppError.api("文件名包含不允许的字符") } } +} diff --git a/ios/dist/SHA256SUMS b/ios/dist/SHA256SUMS new file mode 100644 index 0000000..eeec772 --- /dev/null +++ b/ios/dist/SHA256SUMS @@ -0,0 +1 @@ +c8587a036b824eaa3ff388355a86f8260252392fd13ac4a5657f68d1bc9fca35 UnraidManager-0.2.0-unsigned.ipa diff --git a/ios/dist/UnraidManager-0.2.0-unsigned.ipa b/ios/dist/UnraidManager-0.2.0-unsigned.ipa new file mode 100644 index 0000000000000000000000000000000000000000..7d91cc7c4bcec08d87c0e8fdd32b718dae1b6188 GIT binary patch literal 410911 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 z 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%0D=||lp`~Q|K6T# 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

f3B~` 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