Compare commits

...
4 Commits
4 changed files with 18 additions and 11 deletions
+4 -2
View File
@@ -61,10 +61,12 @@ doc = """\
Usage: Usage:
cista [-c <confdir>] [-l <host>] [--import-droppy] [--dev] [<path>] cista [-c <confdir>] [-l <host>] [--import-droppy] [--dev] [<path>]
cista [-c <confdir>] --user <name> [--privileged] [--password] cista [-c <confdir>] --user <name> [--privileged] [--password]
cista --version
Options: Options:
-c CONFDIR Custom config directory -c CONFDIR Custom config directory
-l LISTEN-ADDR Listen on -l, --listen LISTEN-ADDR
Listen on
:8989 (localhost port, plain http) :8989 (localhost port, plain http)
<addr>:3000 (bind another address, port) <addr>:3000 (bind another address, port)
/path/to/unix.sock (unix socket) /path/to/unix.sock (unix socket)
@@ -117,7 +119,7 @@ def _main():
args = docopt(doc) args = docopt(doc)
if args["--user"]: if args["--user"]:
return _user(args) return _user(args)
listen = args["-l"] listen = args["--listen"]
# Validate arguments first # Validate arguments first
if args["<path>"]: if args["<path>"]:
path = Path(args["<path>"]).resolve() path = Path(args["<path>"]).resolve()
+1 -6
View File
@@ -62,11 +62,6 @@ def parse_listen(listen):
return "http://localhost", {"unix": unix.as_posix()} return "http://localhost", {"unix": unix.as_posix()}
host, port = ep["host"], ep["port"] host, port = ep["host"], ep["port"]
# When binding all interfaces, use single_listener=False for Sanic
if len(endpoints) > 1: if len(endpoints) > 1:
return f"http://localhost:{port}", { return f"http://localhost:{port}", {"host": host, "port": port}
"host": host,
"port": port,
"single_listener": False,
}
return f"http://{host}:{port}", {"host": host, "port": port} return f"http://{host}:{port}", {"host": host, "port": port}
+12 -2
View File
@@ -48,6 +48,8 @@ async def get_client() -> httpx.AsyncClient:
global _client global _client
if _client is None or _client.is_closed: if _client is None or _client.is_closed:
_client = httpx.AsyncClient(timeout=1.0) _client = httpx.AsyncClient(timeout=1.0)
if "user-agent" in _client.headers:
del _client.headers["user-agent"] # No httpx UA
return _client return _client
@@ -171,10 +173,10 @@ async def proxy_auth_request(request):
"upgrade", "upgrade",
"proxy-authorization", "proxy-authorization",
"proxy-authenticate", "proxy-authenticate",
"forwarded",
"x-forwarded-for", "x-forwarded-for",
"x-forwarded-host", "x-forwarded-host",
"x-forwarded-proto", "x-forwarded-proto",
"forwarded",
} }
headers = [ headers = [
@@ -182,9 +184,17 @@ async def proxy_auth_request(request):
for key, value in request.headers.items() for key, value in request.headers.items()
if key.lower() not in skip_headers if key.lower() not in skip_headers
] ]
headers.append(("x-forwarded-for", request.client_ip))
# Set Forwarded headers (strip IPv6 brackets for x-forwarded-for)
headers.append(("x-forwarded-for", request.client_ip.strip("[]")))
headers.append(("x-forwarded-host", request.host)) headers.append(("x-forwarded-host", request.host))
headers.append(("x-forwarded-proto", request.scheme)) headers.append(("x-forwarded-proto", request.scheme))
headers.append(
(
"forwarded",
f"by=cista;for={request.client_ip};host={request.host};proto={request.scheme}",
)
)
try: try:
async with client.stream( async with client.stream(
+1 -1
View File
@@ -134,7 +134,7 @@ def find_dev_tool() -> list[str]:
Raises RuntimeError if no runtime is found. Raises RuntimeError if no runtime is found.
""" """
dev_args = { dev_args = {
"deno": ("run", "dev", "--"), "deno": ("run", "-A", "npm:vite"),
"npm": ("--silent", "run", "dev", "--"), "npm": ("--silent", "run", "dev", "--"),
"bun": ("run", "dev", "--"), "bun": ("run", "dev", "--"),
} }