Working development server (no encryption now)
This commit is contained in:
6
dragonion_server/cli/__init__.py
Normal file
6
dragonion_server/cli/__init__.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from .common import cli
|
||||
|
||||
|
||||
__all__ = [
|
||||
'cli'
|
||||
]
|
||||
1
dragonion_server/cli/cmd/__init__.py
Normal file
1
dragonion_server/cli/cmd/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
pass
|
||||
1
dragonion_server/cli/cmd/service/__init__.py
Normal file
1
dragonion_server/cli/cmd/service/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
pass
|
||||
37
dragonion_server/cli/cmd/service/remove.py
Normal file
37
dragonion_server/cli/cmd/service/remove.py
Normal file
@@ -0,0 +1,37 @@
|
||||
import os
|
||||
|
||||
import click
|
||||
|
||||
from dragonion_server.utils.config import db
|
||||
from dragonion_server.common import console
|
||||
|
||||
|
||||
class ServiceRemoveCommand(click.Command):
|
||||
def __init__(self):
|
||||
super().__init__(
|
||||
name='remove',
|
||||
callback=self.callback,
|
||||
params=[
|
||||
click.Option(
|
||||
('--name', '-n'),
|
||||
required=True,
|
||||
prompt=True,
|
||||
type=str,
|
||||
help='Name of service to write to'
|
||||
)
|
||||
]
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def callback(name: str):
|
||||
try:
|
||||
del db.services[name]
|
||||
if os.path.isfile(f'{name}.auth'):
|
||||
os.remove(f'{name}.auth')
|
||||
|
||||
print(f'Removed service {name}')
|
||||
except KeyError:
|
||||
print(f'Service "{name}" does not exist in this storage')
|
||||
except Exception as e:
|
||||
assert e
|
||||
console.print_exception(show_locals=True)
|
||||
37
dragonion_server/cli/cmd/service/run.py
Normal file
37
dragonion_server/cli/cmd/service/run.py
Normal file
@@ -0,0 +1,37 @@
|
||||
import click
|
||||
|
||||
from dragonion_server.modules.server import run
|
||||
from dragonion_server.common import console
|
||||
|
||||
|
||||
class ServiceRunCommand(click.Command):
|
||||
def __init__(self):
|
||||
super().__init__(
|
||||
name='run',
|
||||
callback=self.callback,
|
||||
params=[
|
||||
click.Option(
|
||||
('--name', '-n'),
|
||||
required=True,
|
||||
prompt=True,
|
||||
type=str,
|
||||
help='Name of service to write to'
|
||||
),
|
||||
click.Option(
|
||||
('--port', '-p'),
|
||||
required=False,
|
||||
prompt=True,
|
||||
prompt_required=False,
|
||||
type=int,
|
||||
help='Port to start service on'
|
||||
)
|
||||
]
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def callback(name: str, port: int | None):
|
||||
try:
|
||||
run(name, port)
|
||||
except Exception as e:
|
||||
assert e
|
||||
console.print_exception(show_locals=True)
|
||||
14
dragonion_server/cli/cmd/service/service.py
Normal file
14
dragonion_server/cli/cmd/service/service.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from ...utils import ModuleGroup
|
||||
from .write import ServiceWriteCommand
|
||||
from .run import ServiceRunCommand
|
||||
from .remove import ServiceRemoveCommand
|
||||
|
||||
|
||||
service_group = ModuleGroup(
|
||||
name='service',
|
||||
commands={
|
||||
'write': ServiceWriteCommand(),
|
||||
'run': ServiceRunCommand(),
|
||||
'remove': ServiceRemoveCommand()
|
||||
}
|
||||
)
|
||||
37
dragonion_server/cli/cmd/service/write.py
Normal file
37
dragonion_server/cli/cmd/service/write.py
Normal file
@@ -0,0 +1,37 @@
|
||||
import click
|
||||
|
||||
from dragonion_server.utils.onion import Onion
|
||||
from dragonion_server.common import console
|
||||
|
||||
|
||||
class ServiceWriteCommand(click.Command):
|
||||
def __init__(self):
|
||||
super().__init__(
|
||||
name='write',
|
||||
callback=self.callback,
|
||||
params=[
|
||||
click.Option(
|
||||
('--name', '-n'),
|
||||
required=True,
|
||||
prompt=True,
|
||||
type=str,
|
||||
help='Name of service to write to'
|
||||
),
|
||||
click.Option(
|
||||
('--port', '-p'),
|
||||
required=True,
|
||||
prompt=True,
|
||||
type=int,
|
||||
help='Port to start service on'
|
||||
)
|
||||
]
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def callback(name: str, port: int):
|
||||
try:
|
||||
Onion.write_onion_service(name, port)
|
||||
print(f'Written service "{name}" info')
|
||||
except Exception as e:
|
||||
assert e
|
||||
console.print_exception(show_locals=True)
|
||||
10
dragonion_server/cli/common.py
Normal file
10
dragonion_server/cli/common.py
Normal file
@@ -0,0 +1,10 @@
|
||||
import click
|
||||
from .cmd.service.service import service_group
|
||||
|
||||
|
||||
cli = click.CommandCollection(
|
||||
name='dragonion-server',
|
||||
sources=[
|
||||
service_group()
|
||||
]
|
||||
)
|
||||
6
dragonion_server/cli/utils/__init__.py
Normal file
6
dragonion_server/cli/utils/__init__.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from .groups import ModuleGroup
|
||||
|
||||
|
||||
__all__ = [
|
||||
'ModuleGroup'
|
||||
]
|
||||
18
dragonion_server/cli/utils/groups.py
Normal file
18
dragonion_server/cli/utils/groups.py
Normal file
@@ -0,0 +1,18 @@
|
||||
import click
|
||||
import typing as t
|
||||
|
||||
|
||||
class ModuleGroup(click.Group):
|
||||
def __init__(
|
||||
self,
|
||||
name: t.Optional[str] = None,
|
||||
commands: t.Optional[
|
||||
t.Union[t.Dict[str, click.Command], t.Sequence[click.Command]]
|
||||
] = None,
|
||||
**attrs: t.Any,
|
||||
) -> None:
|
||||
new_commands = dict()
|
||||
for command_key in commands.keys():
|
||||
new_commands[f'{name}-{command_key}'] = commands[command_key]
|
||||
|
||||
super().__init__(name, new_commands, **attrs)
|
||||
Reference in New Issue
Block a user