mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 01:00:29 +08:00
structly validation
This commit is contained in:
parent
5495f70564
commit
7667834b6d
@ -138,7 +138,7 @@ class Storage:
|
||||
|
||||
def __filter(self, items: list[str]) -> Generator[str, None, None]:
|
||||
for item in sorted(map(str.strip, items)):
|
||||
if not item.startswith(".__") and item != "lost+found":
|
||||
if not item.startswith(".") and item != "lost+found":
|
||||
yield item
|
||||
|
||||
def get_image_by_name(self, name: str) -> Image:
|
||||
|
||||
@ -48,8 +48,6 @@ def valid_msd_image_name(arg: Any) -> str:
|
||||
raise_error(arg, name)
|
||||
for (index, part) in enumerate(list(parts)):
|
||||
parts[index] = valid_printable_filename(part, name=name)
|
||||
if part.startswith(".__") or part == "lost+found":
|
||||
raise_error(part, name)
|
||||
return "/".join(parts)
|
||||
|
||||
|
||||
|
||||
@ -78,7 +78,12 @@ def valid_printable_filename(arg: Any, name: str="") -> str:
|
||||
|
||||
arg = valid_stripped_string_not_empty(arg, name)
|
||||
|
||||
if "/" in arg or "\0" in arg or arg in [".", ".."]:
|
||||
if (
|
||||
"/" in arg
|
||||
or "\0" in arg
|
||||
or arg.startswith(".")
|
||||
or arg == "lost+found"
|
||||
):
|
||||
raise_error(arg, name)
|
||||
|
||||
arg = "".join(
|
||||
|
||||
@ -72,20 +72,12 @@ def test_fail__valid_atx_button(arg: Any) -> None:
|
||||
("\n" + "x" * 1000, "x" * 255),
|
||||
("test", "test"),
|
||||
("test test [test] #test$", "test test [test] #test$"),
|
||||
(".test", ".test"),
|
||||
("..test", "..test"),
|
||||
("..тест..", "..тест.."),
|
||||
("..те\\ст..", "..те\\ст.."),
|
||||
(".....", "....."),
|
||||
(".....txt", ".....txt"),
|
||||
(" .. .", ".. ."),
|
||||
("..\n.", ".._."),
|
||||
("test/", "test"),
|
||||
("/test", "test"),
|
||||
("foo/bar.iso", "foo/bar.iso"),
|
||||
("//foo//bar.iso", "foo/bar.iso"),
|
||||
("foo/lost-found/bar.iso", "foo/lost-found/bar.iso"),
|
||||
("/bar.iso/", "bar.iso"),
|
||||
("test/", "test"),
|
||||
("/test", "test"),
|
||||
("foo/bar.iso", "foo/bar.iso"),
|
||||
("//foo//bar.iso", "foo/bar.iso"),
|
||||
("foo/lost-found/bar.iso", "foo/lost-found/bar.iso"),
|
||||
("/bar.iso/", "bar.iso"),
|
||||
|
||||
])
|
||||
def test_ok__valid_msd_image_name(arg: Any, retval: str) -> None:
|
||||
@ -104,12 +96,13 @@ def test_ok__valid_msd_image_name(arg: Any, retval: str) -> None:
|
||||
"/ ..",
|
||||
".. /",
|
||||
"/.. /",
|
||||
".test",
|
||||
"foo/../bar.iso",
|
||||
"foo/./foo.iso",
|
||||
"foo/lost+found/bar.iso",
|
||||
"../bar.iso",
|
||||
"/../bar.iso",
|
||||
"foo/.__bar.iso",
|
||||
"foo/.bar.iso",
|
||||
"",
|
||||
" ",
|
||||
None,
|
||||
|
||||
@ -86,18 +86,10 @@ def test_fail__valid_abs_path__dir(arg: Any) -> None:
|
||||
("dsl-4.11.rc1.iso", "dsl-4.11.rc1.iso"),
|
||||
("systemrescuecd-x86-5.3.1.iso", "systemrescuecd-x86-5.3.1.iso"),
|
||||
("ubuntu-16.04.5-desktop-i386.iso", "ubuntu-16.04.5-desktop-i386.iso"),
|
||||
(" тест(){}[ \t].iso\t", "тест(){}[ _].iso"),
|
||||
("\n" + "x" * 1000, "x" * 255),
|
||||
("test", "test"),
|
||||
("test test [test] #test$", "test test [test] #test$"),
|
||||
(".test", ".test"),
|
||||
("..test", "..test"),
|
||||
("..тест..", "..тест.."),
|
||||
("..те\\ст..", "..те\\ст.."),
|
||||
(".....", "....."),
|
||||
(".....txt", ".....txt"),
|
||||
(" .. .", ".. ."),
|
||||
("..\n.", ".._."),
|
||||
(" тест(){}[ \t].iso\t", "тест(){}[ _].iso"),
|
||||
("\n" + "x" * 1000, "x" * 255),
|
||||
("test", "test"),
|
||||
("test test [test] #test$", "test test [test] #test$"),
|
||||
])
|
||||
def test_ok__valid_printable_filename(arg: Any, retval: str) -> None:
|
||||
assert valid_printable_filename(arg) == retval
|
||||
@ -110,6 +102,7 @@ def test_ok__valid_printable_filename(arg: Any, retval: str) -> None:
|
||||
"test/",
|
||||
"/test",
|
||||
"../test",
|
||||
".test",
|
||||
"./.",
|
||||
"../.",
|
||||
"./..",
|
||||
@ -117,6 +110,7 @@ def test_ok__valid_printable_filename(arg: Any, retval: str) -> None:
|
||||
"/ ..",
|
||||
".. /",
|
||||
"/.. /",
|
||||
"lost+found",
|
||||
"",
|
||||
" ",
|
||||
None,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user