blob: 100dc5192a94c3fc6e7607afca8b83f2fff1608d [file] [log] [blame] [raw]
#!/usr/bin/env python3
"""
Webhook服务器启动脚本
独立运行Webhook消息广播服务器
"""
import asyncio
import logging
import sys
from pathlib import Path
# 添加src目录到Python路径
project_root = Path(__file__).parent.parent
sys.path.insert(0, str(project_root / "src"))
from claude_agent.webhook.server import WebhookServer
from claude_agent.webhook.models import WebhookConfig
from claude_agent.utils.config import get_config_manager
def setup_logging():
"""设置日志"""
logging.basicConfig(
level=logging.INFO,
format='[%(asctime)s] %(levelname)s %(name)s: %(message)s',
handlers=[
logging.StreamHandler(),
logging.FileHandler('webhook_server.log')
]
)
async def main():
"""主函数"""
try:
# 设置日志
setup_logging()
logger = logging.getLogger(__name__)
# 获取配置
config_name = sys.argv[1] if len(sys.argv) > 1 else "default"
config_manager = get_config_manager(config_name)
webhook_config_dict = config_manager.get_webhook_config()
if not webhook_config_dict.get('enabled', False):
logger.error("Webhook功能未启用,请检查配置文件")
return
# 获取服务器配置
server_config = webhook_config_dict.get('server', {})
# 创建Webhook配置
webhook_config = WebhookConfig(
server_host=server_config.get('host', '0.0.0.0'),
server_port=server_config.get('port', 8080),
auth_token=webhook_config_dict.get('auth_token', 'your-webhook-auth-token-here')
)
if webhook_config.auth_token == 'your-webhook-auth-token-here':
logger.error("请配置有效的认证Token")
return
# 创建并启动服务器
server = WebhookServer(webhook_config)
logger.info(f"启动Webhook服务器: {webhook_config.server_host}:{webhook_config.server_port}")
logger.info(f"认证Token: {webhook_config.auth_token[:8]}...")
# 启动服务器
await server.start_server()
except KeyboardInterrupt:
logger.info("收到中断信号,正在关闭服务器...")
except Exception as e:
logger.error(f"服务器启动失败: {e}")
import traceback
logger.error(traceback.format_exc())
if __name__ == "__main__":
asyncio.run(main())