aboutsummaryrefslogtreecommitdiff
path: root/tool/modules
diff options
context:
space:
mode:
Diffstat (limited to 'tool/modules')
-rw-r--r--tool/modules/config.py11
-rwxr-xr-xtool/modules/nginx.py15
-rw-r--r--tool/modules/setup.py4
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)