Skip to content

Commit

Permalink
refactor: 💡 只暴露rpc端口提供调用
Browse files Browse the repository at this point in the history
  • Loading branch information
danni-cool committed Jul 18, 2024
1 parent 84d8c56 commit 94825e2
Show file tree
Hide file tree
Showing 17 changed files with 45 additions and 342 deletions.
4 changes: 1 addition & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# wechatbot-provider-windows
这是一个可以使用 docker 部署的 pc 版微信,对外暴露了 rpc 调用的钩子。
当然你也可以 fork 项目继续完善代码用 http 实现,该项目集成了一个小型的 fastapi 服务端。


# 免责声明
Expand Down Expand Up @@ -46,7 +45,6 @@ docker pull dannicool/wechatbot-provider-windows
docker run -itd \
-p 13389:3389 \
-p 10086:10086 \
-p 10087:10087 \
-v install:/root/res/install \
--ulimit nofile=8192 \
--name DESKTOP \
Expand All @@ -67,7 +65,7 @@ docker run -itd \

2.点击 2.WeChatSetup,**安装 wechat 应用**,并登录

3.点击 3.StartService,启动python程序,转为守护运行状态,这里可能第一次闪退后要运行第二次才能成功
3.点击 3.StartService,启动python程序暴露rpc地址,程序转为守护运行状态

后续日常重启后,只要点击桌面 wechat 图标登陆后 重复步骤 3 即可

Expand Down
13 changes: 0 additions & 13 deletions common/dir.py

This file was deleted.

38 changes: 0 additions & 38 deletions common/log.py

This file was deleted.

20 changes: 0 additions & 20 deletions config.py

This file was deleted.

71 changes: 43 additions & 28 deletions main.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import signal
import argparse
import logging
from config import global_data
from fastapi import FastAPI
from router import get_routers
from service import runBot, resetBot
import ctypes
import os
import signal
import atexit
import time

global sdk
# 配置日志记录,将日志写入到 app.log 文件中
logging.basicConfig(
level=logging.INFO,
Expand All @@ -16,30 +16,45 @@
]
)

def parse_args():
parser = argparse.ArgumentParser(description="通过参数指定启动微信机器人协议,不同协议支持的api不同")
parser.add_argument('--provider', type=str, default='win', help='默认 web 协议,也可使用 win 协议')
return parser.parse_args()

def startFastApi():
app = FastAPI()
app.include_router(get_routers())
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8888)
def cleanup():
global sdk
# 退出 SDK
if sdk:
sdk.WxDestroySDK()
os._exit(-1)

def registerCleanup():
atexit.register(cleanup)
signal.signal(signal.SIGINT, cleanup)

def run():
logging.info(f'SDK 初始化成功,rpc调用地址为:tcp://0.0.0.0:10086')
try:
while True:
time.sleep(1)
except Exception as e:
logging.error('%s', e)
cleanup()

def initialize_sdk():
global sdk
sdkPath = os.path.abspath(os.path.dirname(__file__))
# 加载 sdk.dll (需要绝对路径)
sdk = ctypes.cdll.LoadLibrary(f"{sdkPath}/sdk/sdk.dll")
# 退出的时候停止消息接收,防止资源占用
registerCleanup()
# 初始化
sdk.WxInitSDK(True, 10086)
logging.info('SDK 初始化...')

def main():
args = parse_args()
global_data['provider'] = args.provider
logging.info(f"当前启动的是{global_data['provider']}协议")

# 运行应用
if __name__ == "__main__":
runBot(logging)

from threading import Thread
Thread(target=startFastApi).start()

signal.signal(signal.SIGINT, resetBot)
while True:
try:
initialize_sdk()
run()
except Exception as e:
logging.error('主循环异常: %s', e)
time.sleep(5) # 等待一段时间后重启

if __name__ == "__main__":
main()
24 changes: 0 additions & 24 deletions model/__init__.py

This file was deleted.

16 changes: 0 additions & 16 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,16 +0,0 @@
asyncio==3.4.3
certifi==2024.7.4
cffi==1.16.0
charset-normalizer==3.3.2
grpcio==1.65.1
grpcio-tools==1.65.1
idna==3.7
protobuf==5.27.2
pycparser==2.22
pynng==0.8.0
requests==2.32.3
setuptools==71.0.1
sniffio==1.3.1
urllib3==2.2.2
wcferry==39.2.4.0
websockets==12.0
16 changes: 0 additions & 16 deletions router/__init__.py

This file was deleted.

14 changes: 0 additions & 14 deletions router/get_info.py

This file was deleted.

27 changes: 0 additions & 27 deletions router/send_message.py

This file was deleted.

Binary file added sdk/sdk.dll
Binary file not shown.
Binary file added sdk/spy.dll
Binary file not shown.
Binary file added sdk/spy_debug.dll
Binary file not shown.
Binary file added sdk/spy_dev.dll
Binary file not shown.
106 changes: 0 additions & 106 deletions service/__init__.py

This file was deleted.

Loading

0 comments on commit 94825e2

Please sign in to comment.