生成器默认监听 0.0.0.0,局域网/手机可直接打开
- serve.py:--host 默认改 0.0.0.0;启动时列出所有网卡地址(0.0.0.0 不能直接点开); --host 127.0.0.1 仍是「只给本机」的收紧方式,README 说明公共网络用它。 - 改单线程为 ThreadingTCPServer:上传几 MB 的图会占住连接,单线程时 iframe 预览 和其它请求都得排队。 - 写接口加同源校验(Origin 与 Host 比对,无 Origin 放行):挡住同网段里「另一个网页 借访客浏览器发写请求」,curl / 脚本不受影响。 - index.html:提示文案不再写死 127.0.0.1,改用 location.host —— 用局域网地址打开时 不该反过来提示「请用 127.0.0.1 打开」。 - mock_s3.py 加 --host(默认仍回环),便于在别的设备上联调。
This commit is contained in:
@@ -149,20 +149,29 @@ class MockS3(BaseHTTPRequestHandler):
|
||||
self.end_headers()
|
||||
|
||||
|
||||
def spin(port=0):
|
||||
"""起在后台线程,返回 (server, endpoint)。port=0 让系统挑空闲端口。"""
|
||||
srv = ThreadingHTTPServer(("127.0.0.1", port), MockS3)
|
||||
def spin(port=0, host="127.0.0.1"):
|
||||
"""起在后台线程,返回 (server, endpoint)。port=0 让系统挑空闲端口。
|
||||
|
||||
host 默认只给本机用;如果生成器是在别的设备上打开的(局域网访问),
|
||||
要把这里改成 0.0.0.0,并在面板里把 Endpoint 填成本机 IP。
|
||||
"""
|
||||
srv = ThreadingHTTPServer((host, port), MockS3)
|
||||
threading.Thread(target=srv.serve_forever, daemon=True).start()
|
||||
return srv, "http://127.0.0.1:%d" % srv.server_address[1]
|
||||
shown = "127.0.0.1" if host in ("0.0.0.0", "::") else host
|
||||
return srv, "http://%s:%d" % (shown, srv.server_address[1])
|
||||
|
||||
|
||||
def main():
|
||||
ap = argparse.ArgumentParser(description="TamaBox 主题生成器用的假 S3")
|
||||
ap.add_argument("--port", type=int, default=9900)
|
||||
ap.add_argument("--host", default="127.0.0.1",
|
||||
help="监听地址,默认 127.0.0.1;生成器在别的设备上打开时用 0.0.0.0")
|
||||
args = ap.parse_args()
|
||||
srv, endpoint = spin(args.port)
|
||||
srv, endpoint = spin(args.port, args.host)
|
||||
print("假 S3 已启动:%s" % endpoint)
|
||||
print(" 桶名 %s,Access Key 随意(写 BADKEY 会返回 SignatureDoesNotMatch)" % BUCKET)
|
||||
if args.host in ("0.0.0.0", "::"):
|
||||
print(" 局域网设备访问时,面板里的 Endpoint 填 http://<本机IP>:%d" % args.port)
|
||||
print("Ctrl+C 停止")
|
||||
try:
|
||||
threading.Event().wait()
|
||||
|
||||
Reference in New Issue
Block a user