diff --git a/Dockerfile b/Dockerfile index fa1f918..a00d7b3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,25 +1,21 @@ FROM ghcr.io/sagernet/sing-box:v1.10.7 AS sing-box -FROM golang:1.23.1-alpine3.20 AS golang +FROM golang:1.23.5-alpine3.21 AS go-builder + +WORKDIR /app + +COPY xray-geosite/. /app + +RUN go build -o geosite-compiler FROM python:3.10.16-alpine3.21 COPY --from=sing-box /usr/local/bin/sing-box /bin/sing-box -COPY --from=golang /usr/local/go /usr/local/go - -ENV GOROOT=/usr/local/go - -ENV PATH="/usr/local/go/bin:${PATH}" +COPY --from=go-builder /app/geosite-compiler /bin/geosite-compiler RUN pip install --no-cache-dir tldextract -COPY xray-geosite /app/xray-geosite - -WORKDIR /app/xray-geosite - -RUN go mod download - WORKDIR /app COPY convert.py /app/convert.py diff --git a/convert.py b/convert.py index 44af615..38b66b4 100755 --- a/convert.py +++ b/convert.py @@ -307,8 +307,7 @@ def generate_srs_subnets(input_file, output_json_directory='JSON', compiled_outp print(f"Compile error {output_file_path}: {e}") def prepare_dat_domains(domains_or_dirs, output_name): - compiler_directory = 'xray-geosite' - output_lists_directory = os.path.join(compiler_directory, 'data') + output_lists_directory = 'data' os.makedirs(output_lists_directory, exist_ok=True) @@ -330,19 +329,13 @@ def prepare_dat_domains(domains_or_dirs, output_name): with open(output_file_path, 'w', encoding='utf-8') as file: file.writelines(f"{name}\n" for name in extracted_domains) -def generate_dat_domains(compiled_output_directory='DAT'): - working_directory = os.getcwd() - compiler_directory = os.path.join(working_directory, 'xray-geosite') - data_path = os.path.join(compiler_directory, 'data') - output_directory = os.path.abspath(compiled_output_directory) - - os.makedirs(compiled_output_directory, exist_ok=True) +def generate_dat_domains(output_name='geosite.dat', output_directory='DAT'): + os.makedirs(output_directory, exist_ok=True) try: subprocess.run( - ["go", "run", compiler_directory, f"--datapath={data_path}", "--outputname=geosite.dat", f"--outputdir={output_directory}"], - check=True, - cwd=compiler_directory + ["geosite-compiler", f"-outputname={output_name}", f"-outputdir={output_directory}"], + check=True ) except subprocess.CalledProcessError as e: print(f"Compile error geosite.dat: {e}")