diff options
Diffstat (limited to 'tool/modules')
-rw-r--r-- | tool/modules/config.py | 11 | ||||
-rwxr-xr-x | tool/modules/nginx.py | 15 | ||||
-rw-r--r-- | tool/modules/setup.py | 4 |
3 files changed, 22 insertions, 8 deletions
diff --git a/tool/modules/config.py b/tool/modules/config.py index 534ce30..40b20d1 100644 --- a/tool/modules/config.py +++ b/tool/modules/config.py @@ -1,10 +1,11 @@ -import pwd -import grp import os import typing +import uuid from rich.prompt import Prompt from .path import config_file_path +def generate_uuid(): + return str(uuid.uuid4()) class ConfigVar: def __init__(self, name: str, description: str, default_value_generator: typing.Callable[[], str] | str, /, default_value_for_ask=str | None): @@ -48,6 +49,12 @@ config_var_list: list = [ "github token for fetching todos", "Please input your github token for fetching todos"), ConfigVar("CRUPEST_GITHUB_TODO_COUNT", "github todo count", "Please input your github todo count", 10), + ConfigVar("CRUPEST_GITHUB_TODO_COUNT", + "github todo count", "Please input your github todo count", 10), + ConfigVar("CRUPEST_V2RAY_TOKEN", + "v2ray user id", generate_uuid), + ConfigVar("CRUPEST_V2RAY_PATH", + "v2ray path, which will be prefixed by _", generate_uuid), ] config_var_name_set = set([config_var.name for config_var in config_var_list]) diff --git a/tool/modules/nginx.py b/tool/modules/nginx.py index 4f77acd..db350a7 100755 --- a/tool/modules/nginx.py +++ b/tool/modules/nginx.py @@ -50,7 +50,7 @@ def list_domains(domain: str) -> list: return [domain, *list_subdomains(domain)] -def generate_nginx_config(domain: str, dest: str) -> None: +def generate_nginx_config(domain: str, original_config, dest: str) -> None: if not isdir(dest): raise ValueError('dest must be a directory') # copy ssl.conf and https-redirect.conf which need no variable substitution @@ -58,12 +58,19 @@ def generate_nginx_config(domain: str, dest: str) -> None: src = join(nginx_template_dir, filename) dst = join(dest, filename) shutil.copyfile(src, dst) - config = {"CRUPEST_DOMAIN": domain} + config = { + "CRUPEST_DOMAIN": domain, + "CRUPEST_V2RAY_TOKEN": original_config["CRUPEST_V2RAY_TOKEN"], + "CRUPEST_V2RAY_PATH": original_config["CRUPEST_V2RAY_PATH"] + } # generate ssl.conf with open(join(dest, 'ssl.conf'), 'w') as f: f.write(ssl_template.generate(config)) # generate root.conf with open(join(dest, f'{domain}.conf'), 'w') as f: + root_config = config.copy() + root_config["CRUPEST_V2RAY_TOKEN"] = config["CRUPEST_V2RAY_TOKEN"] + root_config["CRUPEST_V2RAY_PATH"] = config["CRUPEST_V2RAY_PATH"] f.write(root_template.generate(config)) # generate nginx config for each site sites: list = server["sites"] @@ -113,7 +120,7 @@ def restart_nginx(force=False) -> bool: return True -def nginx(domain: str, /, console) -> None: +def nginx(domain: str, config, /, console) -> None: bad_files = check_nginx_config_dir(nginx_config_dir, domain) if len(bad_files) > 0: console.print( @@ -133,7 +140,7 @@ def nginx(domain: str, /, console) -> None: os.mkdir(nginx_config_dir) console.print( f"Nginx config directory created at [magenta]{nginx_config_dir}[/]", style="green") - generate_nginx_config(domain, dest=nginx_config_dir) + generate_nginx_config(domain, config, dest=nginx_config_dir) console.print("Nginx config generated.", style="green") if restart_nginx(): console.print('Nginx restarted.', style="green") diff --git a/tool/modules/setup.py b/tool/modules/setup.py index 0e802c4..4e91302 100644 --- a/tool/modules/setup.py +++ b/tool/modules/setup.py @@ -143,7 +143,7 @@ def template_generate(console): "Great! Check the config file and see you next time!", style="green") to_gen = False - domain = config["CRUPEST_DOMAIN"] + domain = get_domain() if to_gen: console.print( @@ -186,7 +186,7 @@ def template_generate(console): to_gen_nginx_conf = Confirm.ask("[yellow]It seems you have already generated nginx config. Do you want to overwrite it?[/]", default=False, console=console) if to_gen_nginx_conf: - nginx(domain, console) + nginx(domain, config, console) data_dir_check(domain, console) |