feat: split simadmin status replies and hide urls
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
#[priority: 999]
|
||||
#[platform: qq,qb,wx,wb,tg,tb,fs,we,web,wxmp]
|
||||
#[open_source: true]
|
||||
#[version: 1.3.2]
|
||||
#[version: 1.3.3]
|
||||
#[public: false]
|
||||
#[price: 0]
|
||||
#[description: 管理员专用:兼容多个 SimAdmin 实例,支持多级菜单配置管理、状态查询和短信发送。配置桶 otto/simadmin_instances。]
|
||||
@@ -36,6 +36,7 @@ import re
|
||||
import sys
|
||||
import traceback
|
||||
import urllib.error
|
||||
import urllib.parse
|
||||
import urllib.request
|
||||
|
||||
import middleware
|
||||
@@ -216,12 +217,20 @@ def save_instances(instances):
|
||||
middleware.bucketSet(BUCKET, CONFIG_KEY, json.dumps(normalized, ensure_ascii=False, indent=2))
|
||||
|
||||
|
||||
def display_host(url):
|
||||
try:
|
||||
parsed = urllib.parse.urlparse(str(url or ""))
|
||||
return parsed.hostname or str(url or "-")
|
||||
except Exception:
|
||||
return str(url or "-")
|
||||
|
||||
|
||||
def instance_brief(item, idx=None):
|
||||
prefix = "" if idx is None else "%s. " % idx
|
||||
state = "启用" if item.get("enabled") else "禁用"
|
||||
token = mask_secret(item.get("token")) or "未设置"
|
||||
return "%s%s [%s]\n %s timeout=%ss token=%s" % (
|
||||
prefix, item["name"], state, item["base_url"], item["timeout"], token
|
||||
return "%s%s [%s]\n 主机:%s timeout=%ss token=%s" % (
|
||||
prefix, item["name"], state, display_host(item.get("base_url")), item["timeout"], token
|
||||
)
|
||||
|
||||
|
||||
@@ -586,7 +595,12 @@ def menu_restart_all(sender, action_name=None):
|
||||
def handle_status(sender, message):
|
||||
instances = load_instances()
|
||||
parts = message.split(None, 1)
|
||||
selected = find_instances(instances, parts[1].strip() if len(parts) > 1 else "")
|
||||
target = parts[1].strip() if len(parts) > 1 else ""
|
||||
selected = find_instances(instances, target)
|
||||
if target in ("", "全部", "all", "ALL", "*") and len(selected) > 1:
|
||||
for item in selected:
|
||||
reply(sender, format_instance_status(item))
|
||||
return
|
||||
reply(sender, "\n\n".join(format_instance_status(x) for x in selected))
|
||||
|
||||
|
||||
|
||||
+18
-4
@@ -12,7 +12,7 @@
|
||||
#[priority: 999]
|
||||
#[platform: qq,qb,wx,wb,tg,tb,fs,we,web,wxmp]
|
||||
#[open_source: true]
|
||||
#[version: 1.3.2]
|
||||
#[version: 1.3.3]
|
||||
#[public: false]
|
||||
#[price: 0]
|
||||
#[description: 管理员专用:兼容多个 SimAdmin 实例,支持多级菜单配置管理、状态查询和短信发送。配置桶 otto/simadmin_instances。]
|
||||
@@ -36,6 +36,7 @@ import re
|
||||
import sys
|
||||
import traceback
|
||||
import urllib.error
|
||||
import urllib.parse
|
||||
import urllib.request
|
||||
|
||||
import middleware
|
||||
@@ -216,12 +217,20 @@ def save_instances(instances):
|
||||
middleware.bucketSet(BUCKET, CONFIG_KEY, json.dumps(normalized, ensure_ascii=False, indent=2))
|
||||
|
||||
|
||||
def display_host(url):
|
||||
try:
|
||||
parsed = urllib.parse.urlparse(str(url or ""))
|
||||
return parsed.hostname or str(url or "-")
|
||||
except Exception:
|
||||
return str(url or "-")
|
||||
|
||||
|
||||
def instance_brief(item, idx=None):
|
||||
prefix = "" if idx is None else "%s. " % idx
|
||||
state = "启用" if item.get("enabled") else "禁用"
|
||||
token = mask_secret(item.get("token")) or "未设置"
|
||||
return "%s%s [%s]\n %s timeout=%ss token=%s" % (
|
||||
prefix, item["name"], state, item["base_url"], item["timeout"], token
|
||||
return "%s%s [%s]\n 主机:%s timeout=%ss token=%s" % (
|
||||
prefix, item["name"], state, display_host(item.get("base_url")), item["timeout"], token
|
||||
)
|
||||
|
||||
|
||||
@@ -586,7 +595,12 @@ def menu_restart_all(sender, action_name=None):
|
||||
def handle_status(sender, message):
|
||||
instances = load_instances()
|
||||
parts = message.split(None, 1)
|
||||
selected = find_instances(instances, parts[1].strip() if len(parts) > 1 else "")
|
||||
target = parts[1].strip() if len(parts) > 1 else ""
|
||||
selected = find_instances(instances, target)
|
||||
if target in ("", "全部", "all", "ALL", "*") and len(selected) > 1:
|
||||
for item in selected:
|
||||
reply(sender, format_instance_status(item))
|
||||
return
|
||||
reply(sender, "\n\n".join(format_instance_status(x) for x in selected))
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user