Skip to content

Commit 3aed4e3

Browse files
authored
Merge pull request #282 from AmiyaBot/V6-dev
update 支持内网穿透
2 parents 91945ca + 2b2cb8d commit 3aed4e3

File tree

6 files changed

+36
-12
lines changed

6 files changed

+36
-12
lines changed

.github/publish.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v6.5.3
1+
v6.5.4

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
config/cos.yaml
1515
config/remote.yaml
16+
config/penetration.yaml
1617
main*.py
1718

1819
*.pyc

core/config/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
from .cos import cos_config
22
from .remote import remote_config
3+
from .penetration import penetration_config

core/config/penetration.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from dataclasses import dataclass, field
2+
from core.util import init_config_file
3+
4+
5+
@dataclass
6+
class Penetration:
7+
ports: dict = field(default_factory=dict)
8+
9+
10+
def init(file: str) -> Penetration:
11+
return init_config_file(file, Penetration)
12+
13+
14+
penetration_config = init('config/penetration.yaml')

core/database/bot.py

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
from amiyabot import AmiyaBot, KOOKBotInstance
22
from amiyabot.database import *
3-
from core.config import cos_config
3+
from core.config import cos_config, penetration_config
44
from core.database import config, is_mysql
55
from core.cosChainBuilder import COSQQGroupChainBuilder
66
from typing import Union
77

88
from amiyabot.adapters.tencent.qqGuild import qq_guild_shards
99
from amiyabot.adapters.tencent.qqGlobal import qq_global
10-
from amiyabot.adapters.tencent.qqGroup import qq_group, QQGroupChainBuilderOptions
10+
from amiyabot.adapters.tencent.qqGroup import qq_group, QQGroupChainBuilder, QQGroupChainBuilderOptions
1111
from amiyabot.adapters.cqhttp import cq_http
1212
from amiyabot.adapters.mirai import mirai_api_http
1313
from amiyabot.adapters.onebot.v11 import onebot11
@@ -103,21 +103,29 @@ def build_conf(cls, item):
103103
if item.adapter == 'qq_guild':
104104
conf['adapter'] = adapter(**shards, sandbox=bool(item.sandbox))
105105
else:
106-
opt = QQGroupChainBuilderOptions(
107-
item.host or '0.0.0.0', item.http_port or 8086, './resource/group_temp'
108-
)
106+
port = item.http_port or 8086
107+
opt = QQGroupChainBuilderOptions(item.host or '0.0.0.0', port, './resource/group_temp')
108+
109109
if cos_config.activate:
110110
conf['adapter'] = adapter(
111111
item.client_secret,
112112
default_chain_builder=COSQQGroupChainBuilder(opt),
113113
**shards,
114114
)
115115
else:
116-
conf['adapter'] = adapter(
117-
item.client_secret,
118-
default_chain_builder_options=opt,
119-
**shards,
120-
)
116+
117+
class PenetrationChainBuilder(QQGroupChainBuilder):
118+
@property
119+
def domain(self):
120+
return (
121+
penetration_config.ports[port] + '/resource'
122+
if port in penetration_config.ports
123+
else super().domain
124+
)
125+
126+
cb = PenetrationChainBuilder(opt)
127+
128+
conf['adapter'] = adapter(item.client_secret, default_chain_builder=cb, **shards)
121129

122130
if item.adapter == 'websocket':
123131
conf['adapter'] = test_instance(item.host, item.ws_port)

pluginsDev

0 commit comments

Comments
 (0)