Skip to content

Commit 532938b

Browse files
--disable-api-nodes now sets CSP header to force frontend offline. (#10829)
1 parent ecb683b commit 532938b

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

comfy/cli_args.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ class PerformanceFeature(enum.Enum):
160160
parser.add_argument("--disable-metadata", action="store_true", help="Disable saving prompt metadata in files.")
161161
parser.add_argument("--disable-all-custom-nodes", action="store_true", help="Disable loading all custom nodes.")
162162
parser.add_argument("--whitelist-custom-nodes", type=str, nargs='+', default=[], help="Specify custom node folders to load even when --disable-all-custom-nodes is enabled.")
163-
parser.add_argument("--disable-api-nodes", action="store_true", help="Disable loading all api nodes.")
163+
parser.add_argument("--disable-api-nodes", action="store_true", help="Disable loading all api nodes. Also prevents the frontend from communicating with the internet.")
164164

165165
parser.add_argument("--multi-user", action="store_true", help="Enables per-user storage.")
166166

server.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,22 @@ async def origin_only_middleware(request: web.Request, handler):
164164

165165
return origin_only_middleware
166166

167+
168+
def create_block_external_middleware():
169+
@web.middleware
170+
async def block_external_middleware(request: web.Request, handler):
171+
if request.method == "OPTIONS":
172+
# Pre-flight request. Reply successfully:
173+
response = web.Response()
174+
else:
175+
response = await handler(request)
176+
177+
response.headers['Content-Security-Policy'] = "default-src 'self'; script-src 'self' 'unsafe-inline' blob:; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; font-src 'self'; connect-src 'self'; frame-src 'self'; object-src 'self';"
178+
return response
179+
180+
return block_external_middleware
181+
182+
167183
class PromptServer():
168184
def __init__(self, loop):
169185
PromptServer.instance = self
@@ -193,6 +209,9 @@ def __init__(self, loop):
193209
else:
194210
middlewares.append(create_origin_only_middleware())
195211

212+
if args.disable_api_nodes:
213+
middlewares.append(create_block_external_middleware())
214+
196215
max_upload_size = round(args.max_upload_size * 1024 * 1024)
197216
self.app = web.Application(client_max_size=max_upload_size, middlewares=middlewares)
198217
self.sockets = dict()

0 commit comments

Comments
 (0)