fix: manage_scheduled_task + search_web 注入 + 删除 LM Studio

- manage_scheduled_task: INSERT 加 user_id='', 检查 psql 退出码
- search_web: 用 python json.dumps 构造请求体(防止注入)
- 删除 lmstudio.rs / LmStudioConfig,仅保留 DeepSeek
- config.json 移除 lmstudio 段
This commit is contained in:
2026-06-02 13:51:46 +08:00
parent 7ab5052642
commit a549bd3b2f
8 changed files with 29 additions and 226 deletions
@@ -15,23 +15,30 @@ case "$ACTION" in
add)
[ -z "$CMD" ] && echo '{"error":"add 需要 command 参数"}' && exit 0
psql "$DB_URL" -v name="$NAME" -v desc="$DESC" -v cmd="$CMD" -v interval="$INTERVAL" << 'SQL'
INSERT INTO scheduled_tasks (id, name, description, command, interval_seconds, enabled, next_run_at)
VALUES (gen_random_uuid(), :'name', :'desc', :'cmd', :interval, true, NOW() + interval ':interval seconds')
INSERT INTO scheduled_tasks (id, name, description, command, interval_seconds, enabled, user_id, next_run_at)
VALUES (gen_random_uuid(), :'name', :'desc', :'cmd', :interval, true, '', NOW() + interval ':interval seconds')
ON CONFLICT (name) DO UPDATE SET command=EXCLUDED.command, interval_seconds=EXCLUDED.interval_seconds, enabled=true, description=EXCLUDED.description
SQL
echo '{"ok":true,"action":"add","name":"'"$NAME"'"}'
if [ $? -eq 0 ]; then
echo '{"ok":true,"action":"add","name":"'"$NAME"'"}'
else
echo '{"error":"添加失败"}'
fi
;;
delete)
psql "$DB_URL" -v name="$NAME" -c "DELETE FROM scheduled_tasks WHERE name = :'name'" 2>/dev/null
echo '{"ok":true,"action":"delete","name":"'"$NAME"'"}'
psql "$DB_URL" -v name="$NAME" -c "DELETE FROM scheduled_tasks WHERE name = :'name'" 2>/dev/null && \
echo '{"ok":true,"action":"delete","name":"'"$NAME"'"}' || \
echo '{"error":"删除失败"}'
;;
enable)
psql "$DB_URL" -v name="$NAME" -c "UPDATE scheduled_tasks SET enabled = true WHERE name = :'name'" 2>/dev/null
echo '{"ok":true,"action":"enable","name":"'"$NAME"'"}'
psql "$DB_URL" -v name="$NAME" -c "UPDATE scheduled_tasks SET enabled = true WHERE name = :'name'" 2>/dev/null && \
echo '{"ok":true,"action":"enable","name":"'"$NAME"'"}' || \
echo '{"error":"启用失败"}'
;;
disable)
psql "$DB_URL" -v name="$NAME" -c "UPDATE scheduled_tasks SET enabled = false WHERE name = :'name'" 2>/dev/null
echo '{"ok":true,"action":"disable","name":"'"$NAME"'"}'
psql "$DB_URL" -v name="$NAME" -c "UPDATE scheduled_tasks SET enabled = false WHERE name = :'name'" 2>/dev/null && \
echo '{"ok":true,"action":"disable","name":"'"$NAME"'"}' || \
echo '{"error":"禁用失败"}'
;;
*)
echo '{"error":"未知操作: '"$ACTION"'(支持: add, delete, enable, disable"}'
+10 -3
View File
@@ -9,9 +9,16 @@ COUNT=$(echo "$input" | python3 -c "import sys,json; print(json.load(sys.stdin).
API_KEY="${TAVILY_API_KEY}"
[ -z "$API_KEY" ] && echo '{"error":"请设置 TAVILY_API_KEY"}' && exit 0
RESP=$(curl -s -X POST "https://api.tavily.com/search" \
-H "Content-Type: application/json" \
-d "{\"api_key\":\"$API_KEY\",\"query\":\"$QUERY\",\"max_results\":$COUNT,\"include_answer\":true}")
export SEARCH_QUERY="$QUERY" SEARCH_COUNT="$COUNT"
RESP=$(python3 -c "
import urllib.request, json, os
key = os.environ['TAVILY_API_KEY']
query = os.environ['SEARCH_QUERY']
count = int(os.environ.get('SEARCH_COUNT', 5))
body = json.dumps({'api_key': key, 'query': query, 'max_results': count, 'include_answer': True}).encode()
req = urllib.request.Request('https://api.tavily.com/search', data=body, headers={'Content-Type': 'application/json'})
print(urllib.request.urlopen(req).read().decode())
" 2>/dev/null)
export RESP QUERY COUNT
python3 -c "