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