Add --hide-ui-dir-config command line flag

Adds `--hide-ui-dir-config` flag to disable editing directory configs from the web UI. This can be set to prevent users from setting the directory to somewhere they shouldn't, for public (or semi-public) interfaces.

Directories are still read from config.json, so the server admin can still set them in the web UI and then relaunch with the hide flag, or edit the config manually.

Also:
- fix OptionInfo `component_args` keyword argument not being read if `component` isn't also set
- ensure that hidden settings aren't still read from the web UI (otherwise they could still be changed by tampering with the interface)
This commit is contained in:
EyeDeck
2022-09-11 16:00:42 -04:00
parent cacd14bee8
commit 29a2933e23
2 changed files with 21 additions and 14 deletions

View File

@@ -661,19 +661,20 @@ def create_ui(txt2img, img2img, run_extras, run_pnginfo):
info = opts.data_labels[key]
t = type(info.default)
args = info.component_args() if callable(info.component_args) else info.component_args
if info.component is not None:
args = info.component_args() if callable(info.component_args) else info.component_args
item = info.component(label=info.label, value=fun, **(args or {}))
comp = info.component
elif t == str:
item = gr.Textbox(label=info.label, value=fun, lines=1)
comp = gr.Textbox
elif t == int:
item = gr.Number(label=info.label, value=fun)
comp = gr.Number
elif t == bool:
item = gr.Checkbox(label=info.label, value=fun)
comp = gr.Checkbox
else:
raise Exception(f'bad options item type: {str(t)} for key {key}')
return item
return comp(label=info.label, value=fun, **(args or {}))
components = []
keys = list(opts.data_labels.keys())
@@ -684,6 +685,10 @@ def create_ui(txt2img, img2img, run_extras, run_pnginfo):
up = []
for key, value, comp in zip(opts.data_labels.keys(), args, components):
comp_args = opts.data_labels[key].component_args
if comp_args and isinstance(comp_args, dict) and comp_args.get('visible') is False:
continue
opts.data[key] = value
up.append(comp.update(value=value))