Allow a fixed loopback port in blogger-auth
Supports web-application OAuth clients with a pre-registered http://127.0.0.1:<port> redirect URI; desktop clients keep the random port default. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+8
-1
@@ -95,6 +95,13 @@ def build_parser() -> argparse.ArgumentParser:
|
|||||||
"--client-secret", default=None, help="OAuth client secret (default: BLOGGER_CLIENT_SECRET)"
|
"--client-secret", default=None, help="OAuth client secret (default: BLOGGER_CLIENT_SECRET)"
|
||||||
)
|
)
|
||||||
auth.add_argument("--timeout", type=int, default=300, help="seconds to wait for the browser consent")
|
auth.add_argument("--timeout", type=int, default=300, help="seconds to wait for the browser consent")
|
||||||
|
auth.add_argument(
|
||||||
|
"--port",
|
||||||
|
type=int,
|
||||||
|
default=0,
|
||||||
|
help="fixed loopback port (0 = random). Use with a *web application* OAuth client whose "
|
||||||
|
"authorized redirect URI is registered as http://127.0.0.1:<port>",
|
||||||
|
)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
|
||||||
@@ -191,7 +198,7 @@ def cmd_blogger_auth(args: argparse.Namespace, settings: Settings) -> int:
|
|||||||
def log_message(self, *_args: object) -> None: # keep the terminal clean
|
def log_message(self, *_args: object) -> None: # keep the terminal clean
|
||||||
pass
|
pass
|
||||||
|
|
||||||
server = HTTPServer(("127.0.0.1", 0), Handler)
|
server = HTTPServer(("127.0.0.1", args.port), Handler)
|
||||||
port = server.server_address[1]
|
port = server.server_address[1]
|
||||||
redirect_uri = f"http://127.0.0.1:{port}"
|
redirect_uri = f"http://127.0.0.1:{port}"
|
||||||
threading.Thread(target=server.serve_forever, daemon=True).start()
|
threading.Thread(target=server.serve_forever, daemon=True).start()
|
||||||
|
|||||||
Reference in New Issue
Block a user