|
1 | 1 | from logging import getLogger |
2 | 2 | from pathlib import Path |
3 | | -from typing import Any, Union |
| 3 | +from typing import Any, List, Union |
4 | 4 |
|
5 | 5 | import typer |
6 | 6 | from rich import print |
@@ -60,6 +60,7 @@ def _run( |
60 | 60 | command: str, |
61 | 61 | app: Union[str, None] = None, |
62 | 62 | proxy_headers: bool = False, |
| 63 | + forwarded_allow_ips: Union[str, None] = None, |
63 | 64 | ) -> None: |
64 | 65 | try: |
65 | 66 | use_uvicorn_app = get_import_string(path=path, app_name=app) |
@@ -97,6 +98,7 @@ def _run( |
97 | 98 | workers=workers, |
98 | 99 | root_path=root_path, |
99 | 100 | proxy_headers=proxy_headers, |
| 101 | + forwarded_allow_ips=forwarded_allow_ips, |
100 | 102 | ) |
101 | 103 |
|
102 | 104 |
|
@@ -145,6 +147,12 @@ def dev( |
145 | 147 | help="Enable/Disable X-Forwarded-Proto, X-Forwarded-For, X-Forwarded-Port to populate remote address info." |
146 | 148 | ), |
147 | 149 | ] = True, |
| 150 | + forwarded_allow_ips: Annotated[ |
| 151 | + Union[str, None], |
| 152 | + typer.Option( |
| 153 | + help="Comma separated list of IP Addresses to trust with proxy headers. The literal '*' means trust everything." |
| 154 | + ), |
| 155 | + ] = None, |
148 | 156 | ) -> Any: |
149 | 157 | """ |
150 | 158 | Run a [bold]FastAPI[/bold] app in [yellow]development[/yellow] mode. 🧪 |
@@ -180,6 +188,7 @@ def dev( |
180 | 188 | app=app, |
181 | 189 | command="dev", |
182 | 190 | proxy_headers=proxy_headers, |
| 191 | + forwarded_allow_ips=forwarded_allow_ips, |
183 | 192 | ) |
184 | 193 |
|
185 | 194 |
|
@@ -234,6 +243,12 @@ def run( |
234 | 243 | help="Enable/Disable X-Forwarded-Proto, X-Forwarded-For, X-Forwarded-Port to populate remote address info." |
235 | 244 | ), |
236 | 245 | ] = True, |
| 246 | + forwarded_allow_ips: Annotated[ |
| 247 | + Union[str, None], |
| 248 | + typer.Option( |
| 249 | + help="Comma separated list of IP Addresses to trust with proxy headers. The literal '*' means trust everything." |
| 250 | + ), |
| 251 | + ] = None, |
237 | 252 | ) -> Any: |
238 | 253 | """ |
239 | 254 | Run a [bold]FastAPI[/bold] app in [green]production[/green] mode. 🚀 |
@@ -270,6 +285,7 @@ def run( |
270 | 285 | app=app, |
271 | 286 | command="run", |
272 | 287 | proxy_headers=proxy_headers, |
| 288 | + forwarded_allow_ips=forwarded_allow_ips, |
273 | 289 | ) |
274 | 290 |
|
275 | 291 |
|
|
0 commit comments