Complete sshd
This commit is contained in:
46
packages/sshecret-sshd/src/sshecret_sshd/cli.py
Normal file
46
packages/sshecret-sshd/src/sshecret_sshd/cli.py
Normal file
@ -0,0 +1,46 @@
|
||||
"""CLI app."""
|
||||
import logging
|
||||
import asyncio
|
||||
import sys
|
||||
from pydantic_settings import CliApp
|
||||
|
||||
from .settings import ServerSettings
|
||||
from .ssh_server import start_server
|
||||
|
||||
LOG = logging.getLogger()
|
||||
|
||||
handler = logging.StreamHandler()
|
||||
formatter = logging.Formatter("%(created)f:%(levelname)s:%(name)s:%(module)s:%(message)s")
|
||||
|
||||
handler.setFormatter(formatter)
|
||||
LOG.addHandler(handler)
|
||||
LOG.setLevel(logging.INFO)
|
||||
|
||||
|
||||
def cli(args: list[str] | None = None) -> None:
|
||||
"""Run CLI app."""
|
||||
try:
|
||||
settings = ServerSettings()
|
||||
except Exception:
|
||||
print("One or more settings could not be resolved.")
|
||||
CliApp.run(ServerSettings, ["--help"])
|
||||
sys.exit(1)
|
||||
|
||||
if settings.debug:
|
||||
LOG.setLevel(logging.DEBUG)
|
||||
|
||||
loop = asyncio.new_event_loop()
|
||||
loop.run_until_complete(start_server(settings))
|
||||
|
||||
print(f"Starting SSH server: {settings.listen_address}:{settings.port}")
|
||||
try:
|
||||
loop.run_forever()
|
||||
except KeyboardInterrupt:
|
||||
print("\nCtrl-C received. Exiting.")
|
||||
sys.exit()
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
"""Run CLI app."""
|
||||
cli()
|
||||
Reference in New Issue
Block a user