8000 feat: 减少内网的数据转发 · TTB-Network/python-openbmclapi@273d6ad · GitHub
[go: up one dir, main page]

Skip to content

Commit 273d6ad

Browse files
committed
feat: 减少内网的数据转发
1 parent 3571b5c commit 273d6ad

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

core/config.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ def cluster_up_failed_times(self) -> int:
103103
@property
104104
def cluster_up_failed_interval(self) -> datetime.timedelta: # 24 hours
105105
return datetime.timedelta(seconds=units.parse_time_units(self.get("advanced.cluster_up_failed_interval") or "24h"))
106+
107+
@property
108+
def bridge_web_application(self) -> bool:
109+
return self.get("advanced.bridge_web_application") or False
106110

107111
API_VERSION = "1.13.1"
108112
VERSION = "4.0.16"
@@ -121,6 +125,7 @@ def cluster_up_failed_interval(self) -> datetime.timedelta: # 24 hours
121125
"advanced.base_url": "https://openbmclapi.bangbang93.com",
122126
"advanced.bd_url": "https://bd.bangbang93.com",
123127
"advanced.storage_measure": False,
128+
"advanced.bridge_web_application": False,
124129
"web.port": 6543,
125130
"web.public_port": 6543,
126131
"web.proxy": False,

core/web.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import tianxiu2b2t.anyio.streams.proxy as streams_proxy
1212
from tianxiu2b2t.anyio import concurrency
1313
from tianxiu2b2t.utils import runtime
14+
from tianxiu2b2t.http.asgi import ASGIApplicationBridge
1415

1516
from . import utils, abc
1617
from .logger import logger
@@ -118,7 +119,7 @@ async def pub_listener(
118119
)
119120

120121
tls_listener = streams.AutoTLSListener(
121-
streams_proxy.ProxyProtocolV2Listener(
122+
streams_proxy.ProxyProtocolMixedListener(
122123
streams.FixedSocketListener(
123124
listener
124125
),
@@ -131,7 +132,13 @@ async def serve(
131132
):
132133
async with listener:
133134
logger.tinfo("web.forward.pub_port", port=pub_port)
134-
await listener.serve(pub_handler)
135+
if not cfg.bridge_web_application:
136+
await listener.serve(pub_handler)
137+
return
138+
await ASGIApplicationBridge(
139+
app,
140+
listener,
141+
).serve()
135142

136143
async def pub_handler(
137144
sock: streams.BufferedByteStream,
@@ -253,6 +260,8 @@ async def setup(
253260
context.check_hostname = False
254261
context.hostname_checks_common_name = False
255262
context.verify_mode = ssl.CERT_NONE
263+
if cfg.bridge_web_application:
264+
context.set_alpn_protocols(["h2", "http/1.1"])
256265

257266
for domain in cert.domains:
258267
tls_listener.add_context(

requirements.txt

122 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)
0