host_config

This commit is contained in:
Zsolt Ero
2024-02-23 17:44:01 +01:00
parent edb076a71a
commit 08ba9efe88
3 changed files with 48 additions and 7 deletions

View File

@@ -1 +1,4 @@
SSH_PASSWD=x SSH_PASSWD= # Leave it empty if you use SSH keys
DOMAIN_DIRECT=direct.openfreemap.org # Domain to server directly, without CloudFlare
DOMAIN_CF=tiles.openfreemap.org # Domain via CloudFlare, using origin certificates
SKIP_PLANET=false # Set to true to skip the full planet download. Useful for testing.

View File

@@ -1,4 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import json
import sys
import click import click
from dotenv import dotenv_values from dotenv import dotenv_values
@@ -11,7 +13,7 @@ from ssh_lib.nginx import certbot, nginx
from ssh_lib.pkg_base import pkg_base, pkg_upgrade from ssh_lib.pkg_base import pkg_base, pkg_upgrade
from ssh_lib.planetiler import planetiler from ssh_lib.planetiler import planetiler
from ssh_lib.rclone import rclone from ssh_lib.rclone import rclone
from ssh_lib.utils import add_user, enable_sudo, put, put_dir, sudo_cmd from ssh_lib.utils import add_user, enable_sudo, put, put_dir, put_str, sudo_cmd
def prepare_shared(c): def prepare_shared(c):
@@ -87,6 +89,26 @@ def prepare_tile_gen(c):
c.sudo('chown ofm:ofm -R /data/ofm/tile_gen/bin') c.sudo('chown ofm:ofm -R /data/ofm/tile_gen/bin')
def upload_http_host_config(c):
domain_direct = dotenv_values(f'{CONFIG_DIR}/.env').get('DOMAIN_DIRECT1', '').strip()
domain_cf = dotenv_values(f'{CONFIG_DIR}/.env').get('DOMAIN_CF', '').strip()
skip_planet = (
dotenv_values(f'{CONFIG_DIR}/.env').get('SKIP_PLANET', '').lower().strip() == 'true'
)
if not (domain_direct or domain_cf):
sys.exit('Please specify DOMAIN_DIRECT or DOMAIN_CF in config/.env')
host_config = {
'domain_direct': domain_direct,
'domain_cf': domain_cf,
'skip_planet': skip_planet,
}
host_config_str = json.dumps(host_config, indent=2, ensure_ascii=False)
put_str(c, '/data/ofm/config/http_host.json', host_config_str)
def prepare_http_host(c): def prepare_http_host(c):
nginx(c) nginx(c)
certbot(c) certbot(c)
@@ -141,7 +163,7 @@ def install_benchmark(c):
def get_connection(hostname, user, port): def get_connection(hostname, user, port):
ssh_passwd = dotenv_values(f'{CONFIG_DIR}/.env').get('SSH_PASSWD') ssh_passwd = dotenv_values(f'{CONFIG_DIR}/.env').get('SSH_PASSWD', '').strip()
if ssh_passwd: if ssh_passwd:
print('Using SSH password') print('Using SSH password')
@@ -185,7 +207,9 @@ def http_host_once(hostname, user, port):
c = get_connection(hostname, user, port) c = get_connection(hostname, user, port)
prepare_shared(c) prepare_shared(c)
upload_http_host_config(c)
prepare_http_host(c) prepare_http_host(c)
run_http_host_sync(c) run_http_host_sync(c)
@@ -198,7 +222,9 @@ def http_host_autoupdate(hostname, user, port):
c = get_connection(hostname, user, port) c = get_connection(hostname, user, port)
prepare_shared(c) prepare_shared(c)
upload_http_host_config(c)
prepare_http_host(c) prepare_http_host(c)
add_http_host_cron(c) add_http_host_cron(c)
@@ -218,9 +244,11 @@ def tile_gen(hostname, user, port):
@common_options @common_options
def debug(hostname, user, port): def debug(hostname, user, port):
c = get_connection(hostname, user, port) c = get_connection(hostname, user, port)
install_benchmark(c) prepare_http_host(c)
# upload_https_host_files(c)
# run_http_host_sync(c) upload_http_host_config(c)
upload_https_host_files(c)
run_http_host_sync(c)
if __name__ == '__main__': if __name__ == '__main__':

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import datetime import datetime
import json
import subprocess import subprocess
import sys import sys
from pathlib import Path from pathlib import Path
@@ -184,7 +185,9 @@ def sync(ctx):
download_done = False download_done = False
download_done += ctx.invoke(download_tileset, area='monaco') download_done += ctx.invoke(download_tileset, area='monaco')
download_done += ctx.invoke(download_tileset, area='planet')
if not host_config.get('skip_planet'):
download_done += ctx.invoke(download_tileset, area='planet')
if download_done: if download_done:
ctx.invoke(mount) ctx.invoke(mount)
@@ -198,4 +201,11 @@ def sync(ctx):
if __name__ == '__main__': if __name__ == '__main__':
try:
with open('/data/ofm/config/http_host.json') as fp:
host_config = json.load(fp)
except Exception:
host_config = {}
print(host_config)
cli() cli()