还原 Dashboard 默认凭据与示例配置

- 恢复后台 config.toml 中的默认管理员账号与 webhook token
- 恢复 DashboardServer 中的默认账号兜底逻辑
- 同步还原后台 README 的默认登录说明
This commit is contained in:
liuwei
2026-05-06 14:49:55 +08:00
parent 88f426e7e7
commit f17f1f7bf0
3 changed files with 14 additions and 36 deletions

View File

@@ -97,12 +97,11 @@ ABOT 管理后台是一个集成于主程序的 Web 应用,用于管理和监
管理后台随主程序自动启动,默认访问地址为:`http://服务器IP:8888` 管理后台随主程序自动启动,默认访问地址为:`http://服务器IP:8888`
默认示例配置位于 [config.toml](/d:/learn/abot/admin/dashboard/config.toml:1),公开仓库中已改为占位值。 默认登录凭据:
- 用户名admin
- 密码admin123
正式部署前请务必完成以下操作: 建议首次登录后立即修改默认密码,确保系统安全。
1. 修改管理员账号与密码
2. 配置独立的 `secret_key`
3. 替换 webhook token
## 注意事项 ## 注意事项

View File

@@ -3,19 +3,14 @@ host = "0.0.0.0"
port = 8888 port = 8888
[auth] [auth]
# 公开仓库中仅保留示例占位值: username = "admin"
# 1. 请在首次部署前改成你自己的管理员账号; password = "admin123"
# 2. 更推荐通过环境变量或独立未跟踪配置覆盖;
# 3. 不再在仓库中保留弱口令,降低开源发布时的误用风险。
username = "please_change_me"
password = "please_change_me"
[trendradar_webhook] [trendradar_webhook]
# 是否启用 TrendRadar webhook 适配接口 # 是否启用 TrendRadar webhook 适配接口
enabled = true enabled = true
# 固定 token建议配置支持请求头 X-Webhook-Token / query token / payload.token 三种传法 # 固定 token建议配置支持请求头 X-Webhook-Token / query token / payload.token 三种传法
# 开源仓库中仅保留占位值,正式环境务必替换为高强度随机串。 token = "watHcBbQIxtmyqGRSHKeTDRVjkHOceiRfFytUkQUwmV"
token = "please_change_me"
# 默认推送目标群(可配置多个) # 默认推送目标群(可配置多个)
default_group_ids = [] default_group_ids = []
# 是否允许 payload 覆盖目标群(开启后可通过 target_group_ids/group_id 指定) # 是否允许 payload 覆盖目标群(开启后可通过 target_group_ids/group_id 指定)

View File

@@ -32,13 +32,6 @@ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '.
class DashboardServer: class DashboardServer:
"""统计看板服务器""" """统计看板服务器"""
# 公开仓库默认占位值:
# 1. 不再把 admin / admin123 这类弱口令作为代码级兜底;
# 2. 当用户未显式配置后台账号时,系统仍可启动,但会强烈提示其先完成配置;
# 3. 这里保留固定占位串,主要用于避免 None/空串把旧逻辑带偏。
SAFE_PLACEHOLDER_USERNAME = "please_change_me"
SAFE_PLACEHOLDER_PASSWORD = "please_change_me"
def __init__(self, host: str = None, port: int = None, def __init__(self, host: str = None, port: int = None,
username: str = None, password: str = None, username: str = None, password: str = None,
robot_instance=None): robot_instance=None):
@@ -48,8 +41,8 @@ class DashboardServer:
# 优先使用传入的参数,其次使用配置文件中的参数 # 优先使用传入的参数,其次使用配置文件中的参数
self.host = host or self.config.get("server", {}).get("host", "0.0.0.0") self.host = host or self.config.get("server", {}).get("host", "0.0.0.0")
self.port = port or self.config.get("server", {}).get("port", 8888) self.port = port or self.config.get("server", {}).get("port", 8888)
self.username = username or self.config.get("auth", {}).get("username", self.SAFE_PLACEHOLDER_USERNAME) self.username = username or self.config.get("auth", {}).get("username", "admin")
self.password = password or self.config.get("auth", {}).get("password", self.SAFE_PLACEHOLDER_PASSWORD) self.password = password or self.config.get("auth", {}).get("password", "admin123")
self.LOG = logger self.LOG = logger
self.LOG.info(f"Dashboard配置加载完成: 服务器将运行在 {self.host}:{self.port}") self.LOG.info(f"Dashboard配置加载完成: 服务器将运行在 {self.host}:{self.port}")
@@ -136,29 +129,20 @@ class DashboardServer:
with open(config_path, 'r', encoding='utf-8') as f: with open(config_path, 'r', encoding='utf-8') as f:
return toml.load(f) return toml.load(f)
else: else:
# 如果配置文件不存在,创建安全占位配置 # 如果配置文件不存在,创建默认配置
# 1. 公开仓库不再自动落地弱口令;
# 2. 保留最小可运行结构,避免因为缺文件直接崩溃;
# 3. 部署者看到占位值后,会更自然地完成首次替换。
default_config = { default_config = {
"server": {"host": "0.0.0.0", "port": 8888}, "server": {"host": "0.0.0.0", "port": 8888},
"auth": { "auth": {"username": "admin", "password": "admin123"}
"username": self.SAFE_PLACEHOLDER_USERNAME,
"password": self.SAFE_PLACEHOLDER_PASSWORD,
}
} }
with open(config_path, 'w', encoding='utf-8') as f: with open(config_path, 'w', encoding='utf-8') as f:
toml.dump(default_config, f) toml.dump(default_config, f)
return default_config return default_config
except Exception as e: except Exception as e:
self.LOG.error(f"加载Dashboard配置文件失败: {e}") self.LOG.error(f"加载Dashboard配置文件失败: {e}")
# 返回默认配置兜底,但仍坚持使用安全占位值。 # 返回默认配置
return { return {
"server": {"host": "0.0.0.0", "port": 8888}, "server": {"host": "0.0.0.0", "port": 8888},
"auth": { "auth": {"username": "admin", "password": "admin123"}
"username": self.SAFE_PLACEHOLDER_USERNAME,
"password": self.SAFE_PLACEHOLDER_PASSWORD,
}
} }
def _create_app(self) -> Flask: def _create_app(self) -> Flask: