OXIESEC PANEL
- Current Dir:
/
/
snap
/
certbot
/
4737
/
lib
/
python3.12
/
site-packages
/
certbot_apache
/
_internal
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
06/12/2025 06:19:48 PM
rwxr-xr-x
📄
__init__.py
29 bytes
06/12/2025 06:19:39 PM
rw-r--r--
📁
__pycache__
-
06/12/2025 06:19:48 PM
rwxr-xr-x
📄
apache_util.py
7.39 KB
06/12/2025 06:19:39 PM
rw-r--r--
📄
apacheparser.py
7.88 KB
06/12/2025 06:19:39 PM
rw-r--r--
📄
assertions.py
5.75 KB
06/12/2025 06:19:39 PM
rw-r--r--
📁
augeas_lens
-
06/12/2025 06:19:48 PM
rwxr-xr-x
📄
augeasparser.py
20.62 KB
06/12/2025 06:19:39 PM
rw-r--r--
📄
configurator.py
110.05 KB
06/12/2025 06:19:39 PM
rw-r--r--
📄
constants.py
3.78 KB
06/12/2025 06:19:39 PM
rw-r--r--
📄
display_ops.py
4.47 KB
06/12/2025 06:19:39 PM
rw-r--r--
📄
dualparser.py
14.7 KB
06/12/2025 06:19:39 PM
rw-r--r--
📄
entrypoint.py
2.9 KB
06/12/2025 06:19:39 PM
rw-r--r--
📄
http_01.py
8.27 KB
06/12/2025 06:19:39 PM
rw-r--r--
📄
interfaces.py
22.29 KB
06/12/2025 06:19:39 PM
rw-r--r--
📄
obj.py
9.06 KB
06/12/2025 06:19:39 PM
rw-r--r--
📄
override_alpine.py
694 bytes
06/12/2025 06:19:39 PM
rw-r--r--
📄
override_arch.py
676 bytes
06/12/2025 06:19:39 PM
rw-r--r--
📄
override_centos.py
4.59 KB
06/12/2025 06:19:39 PM
rw-r--r--
📄
override_darwin.py
604 bytes
06/12/2025 06:19:39 PM
rw-r--r--
📄
override_debian.py
5.16 KB
06/12/2025 06:19:39 PM
rw-r--r--
📄
override_fedora.py
3.38 KB
06/12/2025 06:19:39 PM
rw-r--r--
📄
override_gentoo.py
2.37 KB
06/12/2025 06:19:39 PM
rw-r--r--
📄
override_suse.py
670 bytes
06/12/2025 06:19:39 PM
rw-r--r--
📄
override_void.py
681 bytes
06/12/2025 06:19:39 PM
rw-r--r--
📄
parser.py
35.95 KB
06/12/2025 06:19:39 PM
rw-r--r--
📄
parsernode_util.py
5.69 KB
06/12/2025 06:19:39 PM
rw-r--r--
📁
tests
-
06/12/2025 06:19:48 PM
rwxr-xr-x
📁
tls_configs
-
06/12/2025 06:19:48 PM
rwxr-xr-x
Editing: apacheparser.py
Close
""" apacheconfig implementation of the ParserNode interfaces """ from typing import Any from typing import Iterable from typing import List from typing import Optional from typing import Tuple from certbot_apache._internal import assertions from certbot_apache._internal import interfaces from certbot_apache._internal import parsernode_util as util from certbot_apache._internal.interfaces import ParserNode class ApacheParserNode(interfaces.ParserNode): """ apacheconfig implementation of ParserNode interface. Expects metadata `ac_ast` to be passed in, where `ac_ast` is the AST provided by parsing the equivalent configuration text using the apacheconfig library. """ def __init__(self, **kwargs: Any) -> None: # pylint: disable=unused-variable ancestor, dirty, filepath, metadata = util.parsernode_kwargs(kwargs) super().__init__(**kwargs) self.ancestor = ancestor self.filepath = filepath self.dirty = dirty self.metadata = metadata self._raw: Any = self.metadata["ac_ast"] def save(self, msg: str) -> None: pass # pragma: no cover def find_ancestors(self, name: str) -> List["ApacheParserNode"]: # pylint: disable=unused-variable """Find ancestor BlockNodes with a given name""" return [ApacheBlockNode(name=assertions.PASS, parameters=assertions.PASS, ancestor=self, filepath=assertions.PASS, metadata=self.metadata)] class ApacheCommentNode(ApacheParserNode): """ apacheconfig implementation of CommentNode interface """ def __init__(self, **kwargs: Any) -> None: comment, kwargs = util.commentnode_kwargs(kwargs) super().__init__(**kwargs) self.comment = comment def __eq__(self, other: Any) -> bool: if isinstance(other, self.__class__): return (self.comment == other.comment and self.dirty == other.dirty and self.ancestor == other.ancestor and self.metadata == other.metadata and self.filepath == other.filepath) return False # pragma: no cover class ApacheDirectiveNode(ApacheParserNode): """ apacheconfig implementation of DirectiveNode interface """ def __init__(self, **kwargs: Any) -> None: name, parameters, enabled, kwargs = util.directivenode_kwargs(kwargs) super().__init__(**kwargs) self.name = name self.parameters = parameters self.enabled = enabled self.include: Optional[str] = None def __eq__(self, other: Any) -> bool: if isinstance(other, self.__class__): return (self.name == other.name and self.filepath == other.filepath and self.parameters == other.parameters and self.enabled == other.enabled and self.dirty == other.dirty and self.ancestor == other.ancestor and self.metadata == other.metadata) return False # pragma: no cover def set_parameters(self, _parameters: Iterable[str]) -> None: """Sets the parameters for DirectiveNode""" return # pragma: no cover class ApacheBlockNode(ApacheDirectiveNode): """ apacheconfig implementation of BlockNode interface """ def __init__(self, **kwargs: Any) -> None: super().__init__(**kwargs) self.children: Tuple[ApacheParserNode, ...] = () def __eq__(self, other: Any) -> bool: if isinstance(other, self.__class__): return (self.name == other.name and self.filepath == other.filepath and self.parameters == other.parameters and self.children == other.children and self.enabled == other.enabled and self.dirty == other.dirty and self.ancestor == other.ancestor and self.metadata == other.metadata) return False # pragma: no cover # pylint: disable=unused-argument def add_child_block(self, name: str, parameters: Optional[List[str]] = None, position: Optional[int] = None) -> "ApacheBlockNode": # pragma: no cover """Adds a new BlockNode to the sequence of children""" new_block = ApacheBlockNode(name=assertions.PASS, parameters=assertions.PASS, ancestor=self, filepath=assertions.PASS, metadata=self.metadata) self.children += (new_block,) return new_block # pylint: disable=unused-argument def add_child_directive(self, name: str, parameters: Optional[List[str]] = None, position: Optional[int] = None ) -> ApacheDirectiveNode: # pragma: no cover """Adds a new DirectiveNode to the sequence of children""" new_dir = ApacheDirectiveNode(name=assertions.PASS, parameters=assertions.PASS, ancestor=self, filepath=assertions.PASS, metadata=self.metadata) self.children += (new_dir,) return new_dir # pylint: disable=unused-argument def add_child_comment( self, name: str, parameters: Optional[int] = None, position: Optional[int] = None ) -> ApacheCommentNode: # pragma: no cover """Adds a new CommentNode to the sequence of children""" new_comment = ApacheCommentNode(comment=assertions.PASS, ancestor=self, filepath=assertions.PASS, metadata=self.metadata) self.children += (new_comment,) return new_comment def find_blocks(self, name: str, exclude: bool = True) -> List["ApacheBlockNode"]: # pylint: disable=unused-argument """Recursive search of BlockNodes from the sequence of children""" return [ApacheBlockNode(name=assertions.PASS, parameters=assertions.PASS, ancestor=self, filepath=assertions.PASS, metadata=self.metadata)] def find_directives(self, name: str, exclude: bool = True) -> List[ApacheDirectiveNode]: # pylint: disable=unused-argument """Recursive search of DirectiveNodes from the sequence of children""" return [ApacheDirectiveNode(name=assertions.PASS, parameters=assertions.PASS, ancestor=self, filepath=assertions.PASS, metadata=self.metadata)] # pylint: disable=unused-argument def find_comments(self, comment: str, exact: bool = False) -> List[ApacheCommentNode]: """Recursive search of DirectiveNodes from the sequence of children""" return [ApacheCommentNode(comment=assertions.PASS, # pragma: no cover ancestor=self, filepath=assertions.PASS, metadata=self.metadata)] def delete_child(self, child: ParserNode) -> None: """Deletes a ParserNode from the sequence of children""" return # pragma: no cover def unsaved_files(self) -> List[str]: """Returns a list of unsaved filepaths""" return [assertions.PASS] # pragma: no cover def parsed_paths(self) -> List[str]: """Returns a list of parsed configuration file paths""" return [assertions.PASS] interfaces.CommentNode.register(ApacheCommentNode) interfaces.DirectiveNode.register(ApacheDirectiveNode) interfaces.BlockNode.register(ApacheBlockNode)