#!/bin/sh
# rpcd 插件：暴露 luci.quicksilver ubus 对象供 LuCI 前端调用

. /usr/share/libubox/jshn.sh

EZ="/usr/share/quicksilver/quicksilver.sh"

case "$1" in
	list)
		cat <<-EOF
		{
			"status": {},
			"refresh": {},
			"login": { "account": "str", "password": "str" },
			"logout": {},
			"action": { "cmd": "str" },
			"log": { "lines": 200 }
		}
		EOF
		;;
	call)
		read -r input
		json_load "${input:-{}}" 2>/dev/null
		case "$2" in
			status)
				exec "$EZ" status
				;;
			refresh)
				exec "$EZ" refresh
				;;
			login)
				json_get_var _account account
				json_get_var _password password
				# 凭据经环境变量传递，避免泄漏到进程命令行
				EZ_ACCOUNT="$_account" EZ_PASSWORD="$_password" \
					exec "$EZ" rpc_login
				;;
			logout)
				exec "$EZ" rpc_logout
				;;
			action)
				json_get_var _cmd cmd
				case "$_cmd" in
					start|stop|restart|sync|core_update|ui_update|cancel)
						exec "$EZ" rpc_action "$_cmd"
						;;
					*)
						echo '{ "ok": false, "msg": "invalid cmd" }'
						;;
				esac
				;;
			log)
				json_get_var _lines lines
				exec "$EZ" log_tail "${_lines:-200}"
				;;
			*)
				echo '{ "ok": false, "msg": "unknown method" }'
				;;
		esac
		;;
esac
