Linux tsuru-no-tsurugi 5.15.0-186-generic #196-Ubuntu SMP Sat Jun 20 16:09:34 UTC 2026 x86_64
Apache/2.4.52 (Ubuntu)
Server IP : 192.168.0.18 & Your IP : 216.73.216.68
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
lib /
python3 /
dist-packages /
uaclient /
cli /
Delete
Unzip
Name
Size
Permission
Date
Action
__pycache__
[ DIR ]
drwxr-xr-x
2026-07-18 06:45
__init__.py
9.28
KB
-rw-r--r--
2026-04-08 03:24
api.py
2.4
KB
-rw-r--r--
2026-04-08 03:24
attach.py
5.48
KB
-rw-r--r--
2026-04-08 03:24
auto_attach.py
958
B
-rw-r--r--
2026-04-08 03:24
cli_util.py
8.08
KB
-rw-r--r--
2026-04-08 03:24
collect_logs.py
1.73
KB
-rw-r--r--
2026-07-06 22:36
commands.py
3.68
KB
-rw-r--r--
2026-04-08 03:24
config.py
10.72
KB
-rw-r--r--
2026-04-08 03:24
cve.py
6.73
KB
-rw-r--r--
2026-04-08 03:24
cves.py
3.78
KB
-rw-r--r--
2026-04-08 03:24
detach.py
3.38
KB
-rw-r--r--
2026-04-08 03:24
disable.py
10.65
KB
-rw-r--r--
2026-04-08 03:24
enable.py
18.81
KB
-rw-r--r--
2026-04-08 03:24
fix.py
28.63
KB
-rw-r--r--
2026-04-08 03:24
formatter.py
8.75
KB
-rw-r--r--
2026-04-08 03:24
help.py
1.67
KB
-rw-r--r--
2026-04-08 03:24
parser.py
2.72
KB
-rw-r--r--
2026-04-08 03:24
refresh.py
2.42
KB
-rw-r--r--
2026-04-08 03:24
security_status.py
2.79
KB
-rw-r--r--
2026-04-08 03:24
status.py
2.37
KB
-rw-r--r--
2026-04-08 03:24
system.py
1.05
KB
-rw-r--r--
2026-04-08 03:24
Save
Rename
import argparse from typing import Callable, Iterable, Optional, Union from uaclient import messages from uaclient.cli.parser import HelpCategory class ProArgument: def __init__( self, long_name: str, help: str, short_name: Optional[str] = None, **kwargs ): self.names = ( (long_name,) if short_name is None else (short_name, long_name) ) self.help = help self.additional_args = kwargs def register( self, target: Union[argparse.ArgumentParser, argparse._ArgumentGroup] ): target.add_argument( *self.names, help=self.help, **self.additional_args ) class ProArgumentMutuallyExclusiveGroup: def __init__( self, required: bool = False, arguments: Iterable[ProArgument] = (), ): self.required = required self.arguments = arguments class ProArgumentGroup: def __init__( self, title: Optional[str] = None, description: Optional[str] = None, arguments: Iterable[ProArgument] = (), mutually_exclusive_groups: Iterable[ ProArgumentMutuallyExclusiveGroup ] = (), ): self.title = title self.description = description self.arguments = arguments self.mutually_exclusive_groups = mutually_exclusive_groups def register(self, parser: argparse.ArgumentParser): target = ( parser ) # type: Union[argparse.ArgumentParser, argparse._ArgumentGroup] if self.title: target = parser.add_argument_group(self.title, self.description) for argument in self.arguments: argument.register(target) for group in self.mutually_exclusive_groups: new_group = target.add_mutually_exclusive_group( required=group.required ) for argument in group.arguments: argument.register(new_group) class ProCommand: def __init__( self, name: str, help: str, description: str, action: Callable = lambda *args, **kwargs: None, preserve_description: bool = False, argument_groups: Iterable[ProArgumentGroup] = (), subcommands: Iterable["ProCommand"] = (), help_category: Optional[HelpCategory] = None, help_position: int = 0, ): self.name = name self.help = help self.description = description self.action = action self.preserve_description = preserve_description self.argument_groups = argument_groups self.subcommands = subcommands self.help_category = help_category self.help_position = help_position def register(self, subparsers: argparse._SubParsersAction): self.parser = subparsers.add_parser( self.name, help=self.help, description=self.description, ) if self.preserve_description: self.parser.formatter_class = argparse.RawDescriptionHelpFormatter if self.help_category: self.parser.add_help_entry( category=self.help_category, name=self.name, help_string=self.help, position=self.help_position, ) for argument_group in self.argument_groups: argument_group.register(self.parser) self.parser.set_defaults(action=self.action) if self.subcommands: subparsers = self.parser.add_subparsers( title=messages.CLI_AVAILABLE_COMMANDS, dest="command", ) for command in self.subcommands: command.register(subparsers)