Merge pull request #58 from CKylinMC/feat/impl-napcat-token
feat: add napcat token verifypull/61/head
commit
f9d780fc14
15
main.py
15
main.py
|
|
@ -1,6 +1,7 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
import sys
|
import sys
|
||||||
import json
|
import json
|
||||||
|
import http
|
||||||
import websockets as Server
|
import websockets as Server
|
||||||
from src.logger import logger
|
from src.logger import logger
|
||||||
from src.recv_handler.message_handler import message_handler
|
from src.recv_handler.message_handler import message_handler
|
||||||
|
|
@ -49,10 +50,22 @@ async def main():
|
||||||
message_send_instance.maibot_router = router
|
message_send_instance.maibot_router = router
|
||||||
_ = await asyncio.gather(napcat_server(), mmc_start_com(), message_process(), check_timeout_response())
|
_ = await asyncio.gather(napcat_server(), mmc_start_com(), message_process(), check_timeout_response())
|
||||||
|
|
||||||
|
def check_napcat_server_token(conn, request):
|
||||||
|
token = global_config.napcat_server.token
|
||||||
|
if not token or token.strip() == "":
|
||||||
|
return None
|
||||||
|
auth_header = request.headers.get("Authorization")
|
||||||
|
if auth_header != f"Bearer {token}":
|
||||||
|
return Server.Response(
|
||||||
|
status=http.HTTPStatus.UNAUTHORIZED,
|
||||||
|
headers=Server.Headers([("Content-Type", "text/plain")]),
|
||||||
|
body=b"Unauthorized\n"
|
||||||
|
)
|
||||||
|
return None
|
||||||
|
|
||||||
async def napcat_server():
|
async def napcat_server():
|
||||||
logger.info("正在启动adapter...")
|
logger.info("正在启动adapter...")
|
||||||
async with Server.serve(message_recv, global_config.napcat_server.host, global_config.napcat_server.port, max_size=2**26) as server:
|
async with Server.serve(message_recv, global_config.napcat_server.host, global_config.napcat_server.port, max_size=2**26, process_request=check_napcat_server_token) as server:
|
||||||
logger.info(
|
logger.info(
|
||||||
f"Adapter已启动,监听地址: ws://{global_config.napcat_server.host}:{global_config.napcat_server.port}"
|
f"Adapter已启动,监听地址: ws://{global_config.napcat_server.host}:{global_config.napcat_server.port}"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,9 @@ class NapcatServerConfig(ConfigBase):
|
||||||
port: int = 8095
|
port: int = 8095
|
||||||
"""Napcat服务端的端口号"""
|
"""Napcat服务端的端口号"""
|
||||||
|
|
||||||
|
token: str = ""
|
||||||
|
"""Napcat服务端的访问令牌,若无则留空"""
|
||||||
|
|
||||||
heartbeat_interval: int = 30
|
heartbeat_interval: int = 30
|
||||||
"""Napcat心跳间隔时间,单位为秒"""
|
"""Napcat心跳间隔时间,单位为秒"""
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ nickname = ""
|
||||||
[napcat_server] # Napcat连接的ws服务设置
|
[napcat_server] # Napcat连接的ws服务设置
|
||||||
host = "localhost" # Napcat设定的主机地址
|
host = "localhost" # Napcat设定的主机地址
|
||||||
port = 8095 # Napcat设定的端口
|
port = 8095 # Napcat设定的端口
|
||||||
|
token = "" # Napcat设定的访问令牌,若无则留空
|
||||||
heartbeat_interval = 30 # 与Napcat设置的心跳相同(按秒计)
|
heartbeat_interval = 30 # 与Napcat设置的心跳相同(按秒计)
|
||||||
|
|
||||||
[maibot_server] # 连接麦麦的ws服务设置
|
[maibot_server] # 连接麦麦的ws服务设置
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue