Skip to content

Commit

Permalink
Warn if WebUI is installed under a dot directory (#16584)
Browse files Browse the repository at this point in the history
  • Loading branch information
w-e-w authored Oct 30, 2024
1 parent aa52408 commit 91de919
Showing 1 changed file with 40 additions and 0 deletions.
40 changes: 40 additions & 0 deletions webui.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,44 @@ 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 packaging.version import parse
from pathlib import Path
import gradio

if parse('3.32.0') <= parse(gradio.__version__) < parse('4'):

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)
return Path.cwd() / path if (is_symlink or path == path.resolve()) else 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 +91,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 91de919

Please sign in to comment.