feat: Sentinel 支持自定义 API 路径前缀 (base_path)
- 节点编辑对话框新增「API 路径前缀」字段 (默认 /SenSu) - 后端保存/读取 base_path - API 响应包含 base_path 供前端回显 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -109,6 +109,7 @@ class Plugin(PluginWebMixin):
|
|||||||
result.append({
|
result.append({
|
||||||
"id": n.get("id", ""), "name": n.get("name", ""), "url": n.get("url", ""),
|
"id": n.get("id", ""), "name": n.get("name", ""), "url": n.get("url", ""),
|
||||||
"notes": n.get("notes", ""),
|
"notes": n.get("notes", ""),
|
||||||
|
"base_path": n.get("base_path", "/SenSu"),
|
||||||
"enabled": n.get("enabled", True),
|
"enabled": n.get("enabled", True),
|
||||||
"online": c.get("online", False),
|
"online": c.get("online", False),
|
||||||
"system": c.get("system", {}),
|
"system": c.get("system", {}),
|
||||||
@@ -130,6 +131,7 @@ class Plugin(PluginWebMixin):
|
|||||||
"name": data.get("name", "").strip(),
|
"name": data.get("name", "").strip(),
|
||||||
"url": data.get("url", "").strip().rstrip("/"),
|
"url": data.get("url", "").strip().rstrip("/"),
|
||||||
"api_key": data.get("api_key", "").strip(),
|
"api_key": data.get("api_key", "").strip(),
|
||||||
|
"base_path": data.get("base_path", "/SenSu").strip() or "/SenSu",
|
||||||
"notes": data.get("notes", "").strip(),
|
"notes": data.get("notes", "").strip(),
|
||||||
"enabled": data.get("enabled", True),
|
"enabled": data.get("enabled", True),
|
||||||
}
|
}
|
||||||
@@ -233,6 +235,7 @@ class Plugin(PluginWebMixin):
|
|||||||
result.append({
|
result.append({
|
||||||
"id": n.get("id", ""), "name": n.get("name", ""), "url": n.get("url", ""),
|
"id": n.get("id", ""), "name": n.get("name", ""), "url": n.get("url", ""),
|
||||||
"notes": n.get("notes", ""),
|
"notes": n.get("notes", ""),
|
||||||
|
"base_path": n.get("base_path", "/SenSu"),
|
||||||
"enabled": n.get("enabled", True),
|
"enabled": n.get("enabled", True),
|
||||||
"online": c.get("online", False),
|
"online": c.get("online", False),
|
||||||
"system": c.get("system", {}),
|
"system": c.get("system", {}),
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
<div class="form-row"><label>名称 *</label><input id="edit-name" placeholder="例如: OnePlus 15"></div>
|
<div class="form-row"><label>名称 *</label><input id="edit-name" placeholder="例如: OnePlus 15"></div>
|
||||||
<div class="form-row"><label>URL *</label><input id="edit-url" placeholder="http://192.168.1.100:4200"></div>
|
<div class="form-row"><label>URL *</label><input id="edit-url" placeholder="http://192.168.1.100:4200"></div>
|
||||||
<div class="form-row"><label>API Key</label><input id="edit-key" placeholder="sk-..."></div>
|
<div class="form-row"><label>API Key</label><input id="edit-key" placeholder="sk-..."></div>
|
||||||
|
<div class="form-row"><label>API 路径前缀</label><input id="edit-base" placeholder="/SenSu" value="/SenSu"></div>
|
||||||
<div class="form-row"><label>备注</label><textarea id="edit-notes" rows="2" placeholder="设备位置、用途等..."></textarea></div>
|
<div class="form-row"><label>备注</label><textarea id="edit-notes" rows="2" placeholder="设备位置、用途等..."></textarea></div>
|
||||||
<div style="display:flex;gap:8px;justify-content:flex-end;margin-top:16px">
|
<div style="display:flex;gap:8px;justify-content:flex-end;margin-top:16px">
|
||||||
<button class="btn btn-outlined" onclick="testConn()">测试连接</button>
|
<button class="btn btn-outlined" onclick="testConn()">测试连接</button>
|
||||||
@@ -238,6 +239,7 @@
|
|||||||
document.getElementById("edit-name").value = "";
|
document.getElementById("edit-name").value = "";
|
||||||
document.getElementById("edit-url").value = "http://";
|
document.getElementById("edit-url").value = "http://";
|
||||||
document.getElementById("edit-key").value = "";
|
document.getElementById("edit-key").value = "";
|
||||||
|
document.getElementById("edit-base").value = "/SenSu";
|
||||||
document.getElementById("edit-notes").value = "";
|
document.getElementById("edit-notes").value = "";
|
||||||
document.getElementById("test-result").innerHTML = "";
|
document.getElementById("test-result").innerHTML = "";
|
||||||
document.getElementById("edit-dialog").style.display = "flex";
|
document.getElementById("edit-dialog").style.display = "flex";
|
||||||
@@ -250,6 +252,7 @@
|
|||||||
document.getElementById("edit-name").value = n.name||"";
|
document.getElementById("edit-name").value = n.name||"";
|
||||||
document.getElementById("edit-url").value = n.url||"";
|
document.getElementById("edit-url").value = n.url||"";
|
||||||
document.getElementById("edit-key").value = n.api_key||"";
|
document.getElementById("edit-key").value = n.api_key||"";
|
||||||
|
document.getElementById("edit-base").value = n.base_path||"/SenSu";
|
||||||
document.getElementById("edit-notes").value = n.notes||"";
|
document.getElementById("edit-notes").value = n.notes||"";
|
||||||
document.getElementById("test-result").innerHTML = "";
|
document.getElementById("test-result").innerHTML = "";
|
||||||
document.getElementById("edit-dialog").style.display = "flex";
|
document.getElementById("edit-dialog").style.display = "flex";
|
||||||
@@ -263,6 +266,7 @@
|
|||||||
name: document.getElementById("edit-name").value.trim(),
|
name: document.getElementById("edit-name").value.trim(),
|
||||||
url: document.getElementById("edit-url").value.trim(),
|
url: document.getElementById("edit-url").value.trim(),
|
||||||
api_key: document.getElementById("edit-key").value.trim(),
|
api_key: document.getElementById("edit-key").value.trim(),
|
||||||
|
base_path: document.getElementById("edit-base").value.trim() || "/SenSu",
|
||||||
notes: document.getElementById("edit-notes").value.trim()
|
notes: document.getElementById("edit-notes").value.trim()
|
||||||
};
|
};
|
||||||
if(!data.name||!data.url){ alert("名称和 URL 不能为空"); return; }
|
if(!data.name||!data.url){ alert("名称和 URL 不能为空"); return; }
|
||||||
|
|||||||
Reference in New Issue
Block a user