Skip to content

Commit

Permalink
warning WebUI is installed under a dot directory
Browse files Browse the repository at this point in the history
  • Loading branch information
w-e-w committed Oct 24, 2024
1 parent 984b952 commit e568ea5
Showing 1 changed file with 38 additions and 0 deletions.
38 changes: 38 additions & 0 deletions webui.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,42 @@ def api_only():
)


def warning_if_invalid_install_dir():
"""
Shows a warning if the webui is installed under a path that contains a leading dot in any of its parent directories.
Gradio '/file=' route will block access to files that have a leading dot in the path segments.
We use this route to serve files such as JavaScript and CSS to the webpage,
if those files are blocked, the webpage will not function properly.
See https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/13292
This is a security feature was added to Gradio 3.32.0 and is removed in later versions,
this function replicates Gradio file access blocking logic.
This check should be removed when it's no longer applicable.
"""
from pathlib import Path

def abspath(path):
"""modified from Gradio 3.41.2 gradio.utils.abspath()"""
if path.is_absolute():
return path
is_symlink = path.is_symlink() or any(parent.is_symlink() for parent in path.parents)
if is_symlink or path == path.resolve():
return Path.cwd() / path
else:
return path.resolve()
webui_root = Path(__file__).parent
if any(part.startswith(".") for part in abspath(webui_root).parts):
print(f'''{"!"*25} Warning {"!"*25}
WebUI is installed in a directory that has a leading dot (.) in one of its parent directories.
This will prevent WebUI from functioning properly.
Please move the installation to a different directory.
Current path: "{webui_root}"
For more information see: https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/13292
{"!"*25} Warning {"!"*25}''')


def webui():
from modules.shared_cmd_options import cmd_opts

Expand All @@ -53,6 +89,8 @@ def webui():

from modules import shared, ui_tempdir, script_callbacks, ui, progress, ui_extra_networks

warning_if_invalid_install_dir()

while 1:
if shared.opts.clean_temp_dir_at_start:
ui_tempdir.cleanup_tmpdr()
Expand Down

0 comments on commit e568ea5

Please sign in to comment.