完成aptss对接

This commit is contained in:
2026-02-19 18:35:41 +08:00
parent 44a55249db
commit 69d9c23cff
7 changed files with 297 additions and 133 deletions

View File

@@ -2,18 +2,77 @@
# 检查是否提供了至少一个参数
if [[ $# -eq 0 ]]; then
echo "错误:未提供命令参数。用法: $0 aptss <子命令> [参数...]"
echo "错误:未提供命令参数。用法: $0 [aptss|ssinstall] <子命令> [参数...]"
exit 1
fi
# 严格验证第一个参数必须是 "aptss"
if [[ "$1" != "aptss" ]]; then
echo "拒绝执行:仅允许执行 'aptss' 命令。收到的第一个参数: '$1'"
# 获取第一个参数
first_arg="$1"
# 根据第一个参数决定执行哪个命令
if [[ "$first_arg" == "ssinstall" ]]; then
# 执行 ssinstall 命令(跳过第一个参数)
/usr/bin/ssinstall "${@:2}" 2>&1
exit_code=$?
elif [[ "$first_arg" == "aptss" ]]; then
# 检查是否为 remove 子命令(第二个参数)
if [[ "$2" == "remove" ]]; then
# 获取要卸载的软件包名称(第三个参数及以后)
packages="${@:3}"
# 检查可用的对话框程序
if command -v garma &> /dev/null; then
# 使用 garma 询问确认
garma --question \
--title="确认卸载" \
--text="正在准备卸载: $packages\n若这是您下达的卸载指令请选择确认继续卸载" \
--ok-label="确认卸载" \
--cancel-label="取消" \
--width=400
if [[ $? -eq 0 ]]; then
# 用户确认,执行卸载
/usr/bin/aptss "${@:2}" -y 2>&1
exit_code=$?
else
# 用户取消
echo "操作已取消"
exit 0
fi
elif command -v zenity &> /dev/null; then
# 使用 zenity 询问确认
zenity --question \
--title="确认卸载" \
--text="正在准备卸载: $packages\n\n若这是您下达的卸载指令请选择确认继续卸载" \
--ok-label="确认卸载" \
--cancel-label="取消" \
--width=400
if [[ $? -eq 0 ]]; then
# 用户确认,执行卸载
/usr/bin/aptss "${@:2}" -y 2>&1
exit_code=$?
else
# 用户取消
echo "操作已取消"
exit 0
fi
else
# 既没有 garma 也没有 zenity拒绝卸载
echo "错误:未找到 garma 或 zenity无法显示确认对话框。卸载操作已拒绝。"
exit 1
fi
else
# 非 remove 命令,直接执行
/usr/bin/aptss "${@:2}" 2>&1
exit_code=$?
fi
else
# 其他情况,拒绝执行
echo "拒绝执行:仅允许执行 'aptss' 或 'ssinstall' 命令。收到的第一个参数: '$first_arg'"
exit 1
fi
# 执行 aptss 命令(跳过第一个参数 "aptss"
/usr/bin/aptss "${@:2}" 2>&1
exit_code=$?
exit $exit_code