# CasePower **Repository Path**: tianyouwuai/case-power ## Basic Information - **Project Name**: CasePower - **Description**: 用于服务器和虚拟化电源远程管理 - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-03 - **Last Updated**: 2026-10-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Case远程电源 安卓原生 APP,通过服务器**远程管理接口(BMC / iDRAC / iLO)**远程开关机, 并在物理机运行 ESXi 时管理其上的虚拟机。 ## 功能 - **物理机电源控制**:开机 / 优雅关机 / 强制关机 / 重启 / 断电再开机 - **状态实时跟进**:点击开关机后自动轮询,状态变化并达到目标即停止请求 - **虚拟机管理(ESXi / Proxmox VE)**:列出虚拟机、开机/关机/重启 - ESXi:显示 VMware Tools 状态,据此判断能否优雅关机 - PVE:支持 QEMU 虚拟机与 LXC 容器,API Token 认证 - **虚拟化保护**:有虚拟机运行时自动锁定物理机的关机/重启按钮 - **启动验证**:调用系统指纹/人脸/锁屏密码(60 秒内免重复验证) - **应用内更新**:启动时检查 Gitee 发行版,有新版本提示下载 - 自动接口探测:首次连接依次尝试已知接口,成功后记住方案 ## 支持的机型 | 类型 | 实测机型 | 管理地址 | 说明 | | --- | --- | --- | --- | | Dell iDRAC | T430 | `https://192.168.88.251:9981` | 传统 Web + Redfish | | 浪潮 BMC (AMI MegaRAC) | NP5570M4 | `http://192.168.88.250` | REST / RPC 自动探测 | | 惠普 iLO | — | `https://192.168.168.250` | Redfish(iLO4/iLO5) | | 技嘉 / Avocent BMC | — | `https://192.168.168.251:8883` | Avocent MergePoint,`/data` 接口 | | 自定义 Web | 任意 | — | 抓包后手动填接口 | > 手机需能访问服务器管理网段。iDRAC / iLO 多为自签名证书,请勾选「忽略 HTTPS 证书校验」。 ## 虚拟机平台配置 在服务器编辑页开启「虚拟化」后选择平台: **VMware ESXi** - 地址:ESXi 主机(默认 443 端口,可省略) - 用户名 / 密码:ESXi 登录账号 **Proxmox VE**(默认 8006 端口,地址可只填 IP) - 推荐使用 **API Token**(无需 CSRF,适合程序调用): PVE 界面 → `数据中心 → 权限 → API 令牌` → 添加(取消勾选"特权分离"或授予相应权限) - 填写方式: - 用户名:`user@realm!tokenid`(如 `root@pam!app`) - 密码:Token 弹窗中显示的**密钥**(只显示一次) - 若 Token 只读,需额外授予 `VM.PowerMgmt` 权限才能开关机 ## 构建 ```bash # 调试包 ./gradlew assembleDebug # app/build/outputs/apk/debug/app-debug.apk # 正式包(需签名密钥库) ./gradlew assembleRelease # app/build/outputs/apk/release/app-release.apk ``` - 环境:JDK 17、Android Gradle Plugin 8.1.4、minSdk 23 / targetSdk 34 - 签名密钥库:`app/casepower.jks`(alias `casepower`,密码见 `app/build.gradle.kts`),**不纳入版本库** - 新环境重新生成: ```bash keytool -genkeypair -v -keystore app/casepower.jks -alias casepower \ -keyalg RSA -keysize 2048 -validity 10950 -dname "CN=Case Power, O=Case, C=CN" ``` ## 应用内更新 - 发行版地址: - 接口:`GET https://gitee.com/api/v5/repos/tianyouwuai/case-power/releases/latest` - 仓库若为**私有**,需在 `net/UpdateChecker.kt` 的 `ACCESS_TOKEN` 填入 Gitee 个人访问令牌 发布新版本: 1. 修改 `app/build.gradle.kts` 中的 `versionCode` / `versionName` 2. `./gradlew assembleRelease` 3. 打 tag(如 `v1.0.2`)并在 Gitee 创建发行版,上传 `app-release.apk` 作为附件 ## 目录结构 ``` app/src/main/java/com/wake/serverctl/ ├── model/ Server.kt(服务器配置)、Vm.kt(虚拟机)、Power.kt、UpdateInfo.kt ├── data/ ServerStore.kt(本地存储) ├── net/ HttpSession.kt(Cookie/CSRF/自签名证书)、EsxiSession.kt(vSphere SOAP)、 │ PveSession.kt(Proxmox REST)、UpdateChecker.kt ├── bmc/ IdracClient.kt、AmiClient.kt、RedfishClient.kt、AvocentClient.kt、CustomClient.kt ├── vm/ VmService.kt(平台分发)、EsxiClient.kt、PveClient.kt └── ui/ MainActivity、ServerEditActivity、ControlActivity、 AppLock.kt(系统验证)、StatePoller.kt(状态跟进) ``` ## 注意 - 密码以明文保存在本机 SharedPreferences 中,请勿在不可信设备上使用 - 「强制关机 / 断电再开机」会直接断电,可能造成数据丢失,请优先使用「优雅关机」 - 虚拟机「优雅关机」依赖 VMware Tools,未安装时会自动降级为强制断电,APP 会在确认框中提示 - 排查问题:`adb logcat -s WakeCtl:D`