Improve master authorization logs and web remote desktop cursor

This commit is contained in:
yuanyuanxiang
2026-05-04 14:02:35 +02:00
parent 92f3df8464
commit 773c78ac0f
16 changed files with 248 additions and 122 deletions

View File

@@ -4,100 +4,101 @@
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
GHOST_SRC="${1:-$SCRIPT_DIR/build/bin/ghost}"
GHOST_DST="/usr/local/bin/ghost"
PLIST_DST="/Library/LaunchDaemons/com.ghost.client.plist"
APP_DIR="/Applications/GhostClient.app"
APP_BIN="$APP_DIR/Contents/MacOS/ghost"
echo "=== Ghost Client 安装程序 ==="
echo "源文件: $GHOST_SRC"
echo "=== GhostClient 安装程序 ==="
echo ""
# 检查源文件
if [ ! -f "$GHOST_SRC" ]; then
echo ""
echo "错误: 找不到 $GHOST_SRC"
echo ""
echo "请先编译: ./build.sh"
echo ""
echo "或指定路径: $0 <ghost可执行文件路径>"
exit 1
fi
echo "源文件: $GHOST_SRC"
echo ""
set -e
# 1. 停止旧服务(只停止安装目录的,不影响调试目录)
echo "[1/6] 停止旧服务..."
sudo launchctl unload "$PLIST_DST" 2>/dev/null || true
sudo pkill -9 -f "$GHOST_DST" 2>/dev/null || true
# 1. 停止旧进程
echo "[1/6] 停止旧进程..."
pkill -9 -f "$APP_BIN" 2>/dev/null || true
# 2. 复制程序
echo "[2/6] 安装程序到 $GHOST_DST..."
sudo cp "$GHOST_SRC" "$GHOST_DST"
sudo chmod +x "$GHOST_DST"
# 2. 重置系统权限(关键步骤!避免权限缓存导致空白桌面)
echo "[2/6] 重置系统权限..."
echo " (这会清除屏幕录制和辅助功能的旧授权,需要重新授权)"
tccutil reset ScreenCapture 2>/dev/null || true
tccutil reset Accessibility 2>/dev/null || true
# 3. 清除隔离属性
echo "[3/6] 清除隔离属性..."
sudo xattr -cr "$GHOST_DST"
# 3. 创建应用程序包
echo "[3/6] 创建应用程序..."
sudo rm -rf "$APP_DIR"
sudo mkdir -p "$APP_DIR/Contents/MacOS"
sudo mkdir -p "$APP_DIR/Contents/Resources"
# 4. 签名
echo "[4/6] 签名程序..."
sudo codesign --force --deep --sign - "$GHOST_DST"
# 复制 ghost 到 app bundle 内部
sudo cp "$GHOST_SRC" "$APP_BIN"
sudo chmod +x "$APP_BIN"
# 5. 创建 launchd plist
echo "[5/6] 创建 launchd 服务..."
sudo tee "$PLIST_DST" > /dev/null << 'EOF'
# 创建 Info.plist
sudo tee "$APP_DIR/Contents/Info.plist" > /dev/null << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<key>CFBundleExecutable</key>
<string>ghost</string>
<key>CFBundleIdentifier</key>
<string>com.ghost.client</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/ghost</string>
</array>
<key>RunAtLoad</key>
<key>CFBundleName</key>
<string>GhostClient</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSUIElement</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/var/log/ghost.log</string>
<key>StandardErrorPath</key>
<string>/var/log/ghost.log</string>
</dict>
</plist>
EOF
sudo chown root:wheel "$PLIST_DST"
sudo chmod 644 "$PLIST_DST"
# 4. 清除隔离属性
echo "[4/6] 清除隔离属性..."
sudo xattr -cr "$APP_DIR"
# 6. 完成
echo "[6/6] 安装完成!"
# 5. 签名应用
echo "[5/6] 签名应用..."
sudo codesign --force --deep --sign - "$APP_DIR"
# 6. 添加到登录项(开机自启)
echo "[6/7] 添加到登录项..."
osascript -e 'tell application "System Events" to delete login item "GhostClient"' 2>/dev/null || true
osascript -e 'tell application "System Events" to make login item at end with properties {path:"/Applications/GhostClient.app", hidden:true}' 2>/dev/null && echo " 已添加开机自启" || echo " 添加失败,请手动添加"
# 7. 完成
echo "[7/7] 安装完成!"
echo ""
echo "========================================"
echo "重要: 首次运行需要授权系统权限"
echo " 下一步: 授权系统权限"
echo "========================================"
echo ""
echo "请执行以下步骤:"
echo "1. 启动应用 (会自动弹出权限请求):"
echo ""
echo "1. 手动运行以触发权限请求:"
echo " $GHOST_DST"
echo " open /Applications/GhostClient.app"
echo ""
echo "2. 授权后按 Ctrl+C 停止程序(权限需重启生效)"
echo "2. 授权以下权限 (在系统设置中勾选 GhostClient):"
echo " - 屏幕录制: 允许捕获屏幕画面"
echo " - 辅助功能: 允许控制鼠标键盘"
echo ""
echo "3. 启动服务:"
echo " sudo launchctl load $PLIST_DST"
echo "3. 授权后重启应用:"
echo ""
echo "如未弹出授权对话框,手动添加:"
echo " 系统设置 > 隐私与安全性 > 屏幕录制 > 添加 ghost"
echo " 系统设置 > 隐私与安全性 > 辅助功能 > 添加 ghost"
echo " pkill -f GhostClient && open /Applications/GhostClient.app"
echo ""
echo "常用命令:"
echo " 启动: sudo launchctl start com.ghost.client"
echo " 停止: sudo launchctl stop com.ghost.client"
echo " 卸载: sudo launchctl unload $PLIST_DST"
echo " 日志: tail -f /var/log/ghost.log"
echo "4. 查看日志确认运行状态:"
echo ""
echo " tail -f /tmp/ghost.log"
echo ""
echo "========================================"
echo ""

View File

@@ -1,31 +1,32 @@
#!/bin/bash
# macOS Ghost Client 卸载脚本
echo "=== Ghost Client 卸载程序 ==="
APP_DIR="/Applications/GhostClient.app"
# 1. 停止并卸载 launchd 服务
echo "[1/4] 停止服务..."
sudo launchctl unload /Library/LaunchDaemons/com.ghost.client.plist 2>/dev/null
launchctl unload ~/Library/LaunchAgents/com.ghost.client.plist 2>/dev/null
# 2. 杀死残留进程
echo "[2/4] 终止进程..."
sudo pkill -9 -f "/usr/local/bin/ghost" 2>/dev/null
# 3. 删除文件
echo "[3/4] 删除文件..."
sudo rm -f /Library/LaunchDaemons/com.ghost.client.plist
rm -f ~/Library/LaunchAgents/com.ghost.client.plist
sudo rm -f /usr/local/bin/ghost
rm -rf ~/.config/ghost
sudo rm -f /var/log/ghost.log
# 4. 完成
echo "[4/4] 卸载完成!"
echo "=== GhostClient 卸载程序 ==="
echo ""
echo "注意: 系统权限(屏幕录制/辅助功能)未重置。"
# 1. 停止进程
echo "[1/3] 停止进程..."
pkill -9 -f "$APP_DIR" 2>/dev/null || true
# 2. 删除文件
echo "[2/3] 删除文件..."
sudo rm -rf "$APP_DIR"
rm -rf ~/.config/ghost 2>/dev/null || true
rm -f /tmp/ghost.log 2>/dev/null || true
# 3. 移除登录项
echo "[3/4] 移除登录项..."
osascript -e 'tell application "System Events" to delete login item "GhostClient"' 2>/dev/null || true
# 4. 重置系统权限
echo "[4/4] 重置系统权限..."
tccutil reset ScreenCapture 2>/dev/null || true
tccutil reset Accessibility 2>/dev/null || true
echo ""
echo "========================================"
echo " 卸载完成"
echo "========================================"
echo ""
echo "如需重置系统权限(会影响所有应用),请手动执行:"
echo " tccutil reset ScreenCapture"
echo " tccutil reset Accessibility"
echo " tccutil reset SystemPolicyAllFiles"