修复: ZeroTermux 下 _local_ip 拿不到局域网 IP (UDP广播被禁) -> 改连服务端地址选路由; 新手机 aria2 反向拉实测通过
This commit is contained in:
+1
-1
@@ -8,7 +8,7 @@ dcb31e74e0a6ee8073337fc4fb2acf99 usr/share/7z-encrypt/config.py
|
||||
21062e04f8c7f4471881a39c489dfa73 usr/share/7z-encrypt/metadata.py
|
||||
3478ac8277b4b1a38694ad0cc8cdbcdb usr/share/7z-encrypt/splitter.py
|
||||
b90b8c950f99e1439bc273f50a2ee0a6 usr/share/7z-encrypt/state.py
|
||||
d5f5f2c428e022bf19d1d98bc7659d1a usr/share/7z-encrypt/transfer.py
|
||||
795881c32c496161290920ae34bf74f1 usr/share/7z-encrypt/transfer.py
|
||||
67d4b90265abf5a72af959f66679dd0f usr/share/7z-encrypt/tui.py
|
||||
198943ad7a94f6ba0995cf2d326f66d4 usr/share/doc/7z-encrypt-client/changelog.gz
|
||||
fadf3972cc61c7c76d0ccc20b29a804c usr/share/doc/7z-encrypt-client/copyright
|
||||
|
||||
+10
-4
@@ -375,12 +375,16 @@ class TransferClient:
|
||||
return httpd, pull_token
|
||||
|
||||
@staticmethod
|
||||
def _local_ip() -> str:
|
||||
"""局域网 IP: UDP connect 拿本地出口地址"""
|
||||
def _local_ip(server_host: str) -> str:
|
||||
"""局域网 IP: 连服务端地址选路由拿本地出口 IP (Android 禁 UDP 广播)
|
||||
|
||||
ZeroTermux/PRoot 下 UDP connect 到广播地址会 PermissionError,
|
||||
改连真实服务端地址 (同网段) 取 getsockname。
|
||||
"""
|
||||
import socket
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
try:
|
||||
s.connect(("10.255.255.255", 1))
|
||||
s.connect((server_host, 1))
|
||||
return s.getsockname()[0]
|
||||
except OSError:
|
||||
return "127.0.0.1"
|
||||
@@ -393,10 +397,12 @@ class TransferClient:
|
||||
成功返回 True; 服务端无 aria2/拉取失败返回 False (调用方回退逐卷 PUT)。
|
||||
"""
|
||||
import secrets
|
||||
import urllib.parse as up
|
||||
server_host = up.urlparse(self.base_url).hostname or "127.0.0.1"
|
||||
httpd, pull_token = self._serve_chunks(
|
||||
transfer_id, chunk_files, secrets.token_hex(8))
|
||||
try:
|
||||
base_url = f"http://{self._local_ip()}:{httpd.server_address[1]}"
|
||||
base_url = f"http://{self._local_ip(server_host)}:{httpd.server_address[1]}"
|
||||
code, payload = self._request(
|
||||
"POST", f"/api/transfer/{transfer_id}/pull",
|
||||
json_body={"base_url": base_url, "token": pull_token},
|
||||
|
||||
+10
-4
@@ -375,12 +375,16 @@ class TransferClient:
|
||||
return httpd, pull_token
|
||||
|
||||
@staticmethod
|
||||
def _local_ip() -> str:
|
||||
"""局域网 IP: UDP connect 拿本地出口地址"""
|
||||
def _local_ip(server_host: str) -> str:
|
||||
"""局域网 IP: 连服务端地址选路由拿本地出口 IP (Android 禁 UDP 广播)
|
||||
|
||||
ZeroTermux/PRoot 下 UDP connect 到广播地址会 PermissionError,
|
||||
改连真实服务端地址 (同网段) 取 getsockname。
|
||||
"""
|
||||
import socket
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
try:
|
||||
s.connect(("10.255.255.255", 1))
|
||||
s.connect((server_host, 1))
|
||||
return s.getsockname()[0]
|
||||
except OSError:
|
||||
return "127.0.0.1"
|
||||
@@ -393,10 +397,12 @@ class TransferClient:
|
||||
成功返回 True; 服务端无 aria2/拉取失败返回 False (调用方回退逐卷 PUT)。
|
||||
"""
|
||||
import secrets
|
||||
import urllib.parse as up
|
||||
server_host = up.urlparse(self.base_url).hostname or "127.0.0.1"
|
||||
httpd, pull_token = self._serve_chunks(
|
||||
transfer_id, chunk_files, secrets.token_hex(8))
|
||||
try:
|
||||
base_url = f"http://{self._local_ip()}:{httpd.server_address[1]}"
|
||||
base_url = f"http://{self._local_ip(server_host)}:{httpd.server_address[1]}"
|
||||
code, payload = self._request(
|
||||
"POST", f"/api/transfer/{transfer_id}/pull",
|
||||
json_body={"base_url": base_url, "token": pull_token},
|
||||
|
||||
Reference in New Issue
Block a user