mirror of
https://git.pleroma.social/pleroma/relay.git
synced 2025-04-20 01:26:43 +00:00
various cli changes
* ensure database file is correctly named in docker container * add `--skip-questions` option to setup command * ask to proceed with setup if private key already exists
This commit is contained in:
parent
7064adb000
commit
71de40dfca
1 changed files with 122 additions and 120 deletions
|
@ -1,11 +1,10 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import Crypto
|
|
||||||
import aputils
|
import aputils
|
||||||
import asyncio
|
import asyncio
|
||||||
import click
|
import click
|
||||||
|
import json
|
||||||
import os
|
import os
|
||||||
import platform
|
|
||||||
import typing
|
import typing
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
@ -40,14 +39,36 @@ def cli(ctx: click.Context, config: Path | None) -> None:
|
||||||
if IS_DOCKER:
|
if IS_DOCKER:
|
||||||
config = Path("/data/relay.yaml")
|
config = Path("/data/relay.yaml")
|
||||||
|
|
||||||
|
# The database was named "relay.jsonld" even though it's an sqlite file. Fix it.
|
||||||
|
db = Path('/data/relay.sqlite3')
|
||||||
|
wrongdb = Path('/data/relay.jsonld')
|
||||||
|
|
||||||
|
if wrongdb.exists() and not db.exists():
|
||||||
|
try:
|
||||||
|
with wrongdb.open('rb') as fd:
|
||||||
|
json.load(fd)
|
||||||
|
|
||||||
|
except json.JSONDecodeError:
|
||||||
|
wrongdb.rename(db)
|
||||||
|
|
||||||
ctx.obj = Application(config)
|
ctx.obj = Application(config)
|
||||||
|
|
||||||
|
|
||||||
@cli.command('setup')
|
@cli.command('setup')
|
||||||
|
@click.option('--skip-questions', '-s', is_flag = True, help = 'Just setup the database')
|
||||||
@click.pass_context
|
@click.pass_context
|
||||||
def cli_setup(ctx: click.Context) -> None:
|
def cli_setup(ctx: click.Context, skip_questions: bool) -> None:
|
||||||
'Generate a new config and create the database'
|
'Generate a new config and create the database'
|
||||||
|
|
||||||
|
if ctx.obj.signer is not None:
|
||||||
|
if not click.prompt('The database is already setup. Are you sure you want to continue?'):
|
||||||
|
return
|
||||||
|
|
||||||
|
if skip_questions and ctx.obj.config.domain.endswith('example.com'):
|
||||||
|
click.echo('You cannot skip the questions if the relay is not configured yet')
|
||||||
|
return
|
||||||
|
|
||||||
|
if not skip_questions:
|
||||||
while True:
|
while True:
|
||||||
ctx.obj.config.domain = click.prompt(
|
ctx.obj.config.domain = click.prompt(
|
||||||
'What domain will the relay be hosted on?',
|
'What domain will the relay be hosted on?',
|
||||||
|
@ -179,34 +200,15 @@ def cli_setup(ctx: click.Context) -> None:
|
||||||
def cli_run(ctx: click.Context, dev: bool = False) -> None:
|
def cli_run(ctx: click.Context, dev: bool = False) -> None:
|
||||||
'Run the relay'
|
'Run the relay'
|
||||||
|
|
||||||
if ctx.obj.config.domain.endswith('example.com') or not ctx.obj.signer:
|
if ctx.obj.config.domain.endswith('example.com') or ctx.obj.signer is None:
|
||||||
if not IS_DOCKER:
|
if not IS_DOCKER:
|
||||||
click.echo(
|
click.echo('Relay is not set up. Please run "activityrelay setup".')
|
||||||
'Relay is not set up. Please edit your relay config or run "activityrelay setup".'
|
|
||||||
)
|
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
cli_setup.callback() # type: ignore
|
cli_setup.callback() # type: ignore
|
||||||
return
|
return
|
||||||
|
|
||||||
vers_split = platform.python_version().split('.')
|
|
||||||
pip_command = 'pip3 uninstall pycrypto && pip3 install pycryptodome'
|
|
||||||
|
|
||||||
if Crypto.__version__ == '2.6.1':
|
|
||||||
if int(vers_split[1]) > 7:
|
|
||||||
click.echo(
|
|
||||||
'Error: PyCrypto is broken on Python 3.8+. Please replace it with pycryptodome ' +
|
|
||||||
'before running again. Exiting...'
|
|
||||||
)
|
|
||||||
|
|
||||||
click.echo(pip_command)
|
|
||||||
return
|
|
||||||
|
|
||||||
click.echo('Warning: PyCrypto is old and should be replaced with pycryptodome')
|
|
||||||
click.echo(pip_command)
|
|
||||||
return
|
|
||||||
|
|
||||||
ctx.obj['dev'] = dev
|
ctx.obj['dev'] = dev
|
||||||
ctx.obj.run()
|
ctx.obj.run()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue