From 0f563dc0308801c31cd37389f99d8f4788e956f7 Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Wed, 19 Nov 2025 18:14:14 +0300 Subject: [PATCH 01/28] Add .dockerignore --- .dockerignore | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..096960c3 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,9 @@ +.git +db +cert +*.log +Dockerfile +docker-compose.yml +.tmp +.idea +.vscode \ No newline at end of file From 4b9e34aea6e7ae7410b7e0ebe51c3b1a972bf0c7 Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Wed, 19 Nov 2025 18:52:53 +0300 Subject: [PATCH 02/28] Fixed errors in x-ui.sh --- x-ui.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x-ui.sh b/x-ui.sh index 4b0989eb..e1648e51 100644 --- a/x-ui.sh +++ b/x-ui.sh @@ -44,7 +44,7 @@ iplimit_log_path="${log_folder}/3xipl.log" iplimit_banned_log_path="${log_folder}/3xipl-banned.log" confirm() { - if [[ $# > 1 ]]; then + if [[ $# -gt 1 ]]; then echo && read -rp "$1 [Default $2]: " temp if [[ "${temp}" == "" ]]; then temp=$2 @@ -2022,7 +2022,7 @@ show_menu() { esac } -if [[ $# > 0 ]]; then +if [[ $# -gt 0 ]]; then case $1 in "start") check_install 0 && start 0 From 3a2988c06812605fda074f240a284ee6c7202c8d Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Sun, 23 Nov 2025 16:43:17 +0300 Subject: [PATCH 03/28] DRY: unified sh script for geodata update --- x-ui.sh | 42 +++++++++--------- xray-tools.sh | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 139 insertions(+), 20 deletions(-) create mode 100644 xray-tools.sh diff --git a/x-ui.sh b/x-ui.sh index e1648e51..d9112b50 100644 --- a/x-ui.sh +++ b/x-ui.sh @@ -6,6 +6,8 @@ blue='\033[0;34m' yellow='\033[0;33m' plain='\033[0m' +source xray-tools.sh + #Add some basic function here function LOGD() { echo -e "${yellow}[DEG] $* ${plain}" @@ -863,26 +865,26 @@ delete_ports() { fi } -update_all_geofiles() { - update_main_geofiles - update_ir_geofiles - update_ru_geofiles -} - -update_main_geofiles() { - wget -O geoip.dat https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat - wget -O geosite.dat https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat -} - -update_ir_geofiles() { - wget -O geoip_IR.dat https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat - wget -O geosite_IR.dat https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geosite.dat -} - -update_ru_geofiles() { - wget -O geoip_RU.dat https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geoip.dat - wget -O geosite_RU.dat https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geosite.dat -} +#update_all_geofiles() { +# update_main_geofiles +# update_ir_geofiles +# update_ru_geofiles +#} +# +#update_main_geofiles() { +# wget -O geoip.dat https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat +# wget -O geosite.dat https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat +#} +# +#update_ir_geofiles() { +# wget -O geoip_IR.dat https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat +# wget -O geosite_IR.dat https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geosite.dat +#} +# +#update_ru_geofiles() { +# wget -O geoip_RU.dat https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geoip.dat +# wget -O geosite_RU.dat https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geosite.dat +#} update_geo() { echo -e "${green}\t1.${plain} Loyalsoldier (geoip.dat, geosite.dat)" diff --git a/xray-tools.sh b/xray-tools.sh new file mode 100644 index 00000000..c28c8537 --- /dev/null +++ b/xray-tools.sh @@ -0,0 +1,117 @@ +#!/bin/sh + +update_all_geofiles() { + update_main_geofiles + update_ir_geofiles + update_ru_geofiles +} + +update_main_geofiles() { + wget -O geoip.dat https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat + wget -O geosite.dat https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat +} + +update_ir_geofiles() { + wget -O geoip_IR.dat https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat + wget -O geosite_IR.dat https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geosite.dat +} + +update_ru_geofiles() { + wget -O geoip_RU.dat https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geoip.dat + wget -O geosite_RU.dat https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geosite.dat +} + +update_geodata_in_docker() { + WORKDIR="$1" + OLD_DIR=$(pwd) + trap 'cd "$OLD_DIR"' EXIT + + echo "[$(date)] Running update_geodata" + + if [ ! -d "$WORKDIR" ]; then + mkdir -p "$WORKDIR" + fi + cd "$WORKDIR" + + update_all_geofiles + echo "[$(date)] All geo files have been updated successfully!" +} + + +update_xray_core() { + TARGETARCH="$1" + WORKDIR="$2" + XRAY_VERSION="$3" + + OLD_DIR=$(pwd) + trap 'cd "$OLD_DIR"' EXIT + + echo "[$(date)] Running update_xray_core" + + case $1 in + amd64) + ARCH="64" + FNAME="amd64" + ;; + i386) + ARCH="32" + FNAME="i386" + ;; + armv8 | arm64 | aarch64) + ARCH="arm64-v8a" + FNAME="arm64" + ;; + armv7 | arm | arm32) + ARCH="arm32-v7a" + FNAME="arm32" + ;; + armv6) + ARCH="arm32-v6" + FNAME="armv6" + ;; + *) + ARCH="64" + FNAME="amd64" + ;; + esac + + if [ ! -d "$WORKDIR" ]; then + mkdir -p "$WORKDIR" + fi + cd "$WORKDIR" + + wget -q "https://github.com/XTLS/Xray-core/releases/download/${XRAY_VERSION}/Xray-linux-${ARCH}.zip" + unzip "Xray-linux-${ARCH}.zip" -d ./xray-unzip + cp ./xray-unzip/xray ./"xray-linux-${FNAME}" + rm -r xray-unzip + rm "Xray-linux-${ARCH}.zip" + } + +# --- dispatcher: вызываем функции по имени ТОЛЬКО если скрипт запущен как файл --- +# Предполагаем, что файл называется xray-updates.sh +if [ "${0##*/}" = "xray-tools.sh" ]; then + cmd="$1" + shift || true + + case "$cmd" in + update_xray_core) + # args: TARGETARCH WORKDIR XRAY_VERSION + update_xray_core "$@" + ;; + update_geodata_in_docker) + # args: WORKDIR + update_geodata_in_docker "$@" + ;; + ""|help|-h|--help) + echo "Usage:" + echo " $0 update_xray_core TARGETARCH WORKDIR XRAY_VERSION" + echo " $0 update_geodata_in_docker WORKDIR" + exit 1 + ;; + *) + echo "Unknown command: $cmd" >&2 + echo "Try: $0 help" >&2 + exit 1 + ;; + esac +fi \ No newline at end of file From e1058b1eafc413b4a953bd6a5c34e0a39c8051d5 Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Sun, 23 Nov 2025 17:16:16 +0300 Subject: [PATCH 04/28] Integrated unified sh scripts into docker build system + some cache updates --- .dockerignore | 4 +++- DockerEntrypoint.sh | 2 +- Dockerfile | 35 +++++++++++++++++++++++++++-------- docker-compose.yml | 8 +++++--- xray-tools.sh | 10 +++++----- 5 files changed, 41 insertions(+), 18 deletions(-) diff --git a/.dockerignore b/.dockerignore index 096960c3..99bb78cc 100644 --- a/.dockerignore +++ b/.dockerignore @@ -6,4 +6,6 @@ Dockerfile docker-compose.yml .tmp .idea -.vscode \ No newline at end of file +.vscode +LICENSE +README.* \ No newline at end of file diff --git a/DockerEntrypoint.sh b/DockerEntrypoint.sh index 7511d2ea..277026b8 100644 --- a/DockerEntrypoint.sh +++ b/DockerEntrypoint.sh @@ -1,7 +1,7 @@ #!/bin/sh # Start fail2ban -[ $XUI_ENABLE_FAIL2BAN == "true" ] && fail2ban-client -x start +[ "$XUI_ENABLE_FAIL2BAN" = "true" ] && fail2ban-client -x start # Run x-ui exec /app/x-ui diff --git a/Dockerfile b/Dockerfile index cddc945c..e3d04a17 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,27 +2,44 @@ # Stage: Builder # ======================================================== FROM golang:1.25-alpine AS builder + WORKDIR /app -ARG TARGETARCH RUN apk --no-cache --update add \ build-base \ - gcc \ - wget \ - unzip + gcc + +# docker CACHE +COPY go.mod go.sum ./ +RUN go mod download COPY . . ENV CGO_ENABLED=1 ENV CGO_CFLAGS="-D_LARGEFILE64_SOURCE" RUN go build -ldflags "-w -s" -o build/x-ui main.go -RUN ./DockerInit.sh "$TARGETARCH" + +# ======================================================== +# Stage: Xray downloader +# ======================================================== +FROM alpine AS xray-downloader + +ARG TARGETARCH +ARG XRAY_VERSION + +WORKDIR /app +RUN apk add --no-cache wget unzip + +COPY xray-tools.sh . +RUN chmod +x /app/xray-tools.sh +RUN ./xray-tools.sh install_xray_core "$TARGETARCH" "/app/bin" "$XRAY_VERSION" +RUN ./xray-tools.sh update_geodata_in_docker "/app/bin" # ======================================================== # Stage: Final Image of 3x-ui # ======================================================== FROM alpine -ENV TZ=Asia/Tehran + WORKDIR /app RUN apk add --no-cache --update \ @@ -31,9 +48,11 @@ RUN apk add --no-cache --update \ fail2ban \ bash +COPY DockerEntrypoint.sh /app/ COPY --from=builder /app/build/ /app/ -COPY --from=builder /app/DockerEntrypoint.sh /app/ +#COPY --from=builder /app/DockerEntrypoint.sh /app/ COPY --from=builder /app/x-ui.sh /usr/bin/x-ui +COPY --from=xray-downloader /app/bin /app/bin # Configure fail2ban @@ -51,5 +70,5 @@ RUN chmod +x \ ENV XUI_ENABLE_FAIL2BAN="true" EXPOSE 2053 VOLUME [ "/etc/x-ui" ] -CMD [ "./x-ui" ] +#CMD [ "./x-ui" ] ENTRYPOINT [ "/app/DockerEntrypoint.sh" ] diff --git a/docker-compose.yml b/docker-compose.yml index 198df198..53f96a97 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,15 +2,17 @@ services: 3xui: build: context: . - dockerfile: ./Dockerfile + args: + XRAY_VERSION: "v25.10.15" + GEOUPDATE_CRON_SCHEDULE: "0 */6 * * *" container_name: 3xui_app - # hostname: yourhostname <- optional volumes: - $PWD/db/:/etc/x-ui/ - $PWD/cert/:/root/cert/ environment: + TZ: "Asia/Tehran" XRAY_VMESS_AEAD_FORCED: "false" XUI_ENABLE_FAIL2BAN: "true" tty: true network_mode: host - restart: unless-stopped + restart: unless-stopped \ No newline at end of file diff --git a/xray-tools.sh b/xray-tools.sh index c28c8537..a2ddd682 100644 --- a/xray-tools.sh +++ b/xray-tools.sh @@ -38,7 +38,7 @@ update_geodata_in_docker() { } -update_xray_core() { +install_xray_core() { TARGETARCH="$1" WORKDIR="$2" XRAY_VERSION="$3" @@ -46,7 +46,7 @@ update_xray_core() { OLD_DIR=$(pwd) trap 'cd "$OLD_DIR"' EXIT - echo "[$(date)] Running update_xray_core" + echo "[$(date)] Running install_xray_core" case $1 in amd64) @@ -94,9 +94,9 @@ if [ "${0##*/}" = "xray-tools.sh" ]; then shift || true case "$cmd" in - update_xray_core) + install_xray_core) # args: TARGETARCH WORKDIR XRAY_VERSION - update_xray_core "$@" + install_xray_core "$@" ;; update_geodata_in_docker) # args: WORKDIR @@ -104,7 +104,7 @@ if [ "${0##*/}" = "xray-tools.sh" ]; then ;; ""|help|-h|--help) echo "Usage:" - echo " $0 update_xray_core TARGETARCH WORKDIR XRAY_VERSION" + echo " $0 install_xray_core TARGETARCH WORKDIR XRAY_VERSION" echo " $0 update_geodata_in_docker WORKDIR" exit 1 ;; From 1012636d35f193732d0bb2fa38574cd24dfc0973 Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Sun, 23 Nov 2025 17:30:52 +0300 Subject: [PATCH 05/28] Quick docker refactoring --- Dockerfile | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index e3d04a17..56e6a3d2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ FROM golang:1.25-alpine AS builder WORKDIR /app -RUN apk --no-cache --update add \ +RUN apk add --no-cache \ build-base \ gcc @@ -28,12 +28,12 @@ ARG TARGETARCH ARG XRAY_VERSION WORKDIR /app -RUN apk add --no-cache wget unzip +RUN apk add --no-cache wget unzip && mkdir -p /app/bin COPY xray-tools.sh . -RUN chmod +x /app/xray-tools.sh -RUN ./xray-tools.sh install_xray_core "$TARGETARCH" "/app/bin" "$XRAY_VERSION" -RUN ./xray-tools.sh update_geodata_in_docker "/app/bin" +RUN chmod +x /app/xray-tools.sh && \ + ./xray-tools.sh install_xray_core "$TARGETARCH" "/app/bin" "$XRAY_VERSION" && \ + ./xray-tools.sh update_geodata_in_docker "/app/bin" # ======================================================== # Stage: Final Image of 3x-ui @@ -42,7 +42,7 @@ FROM alpine WORKDIR /app -RUN apk add --no-cache --update \ +RUN apk add --no-cache \ ca-certificates \ tzdata \ fail2ban \ @@ -50,7 +50,6 @@ RUN apk add --no-cache --update \ COPY DockerEntrypoint.sh /app/ COPY --from=builder /app/build/ /app/ -#COPY --from=builder /app/DockerEntrypoint.sh /app/ COPY --from=builder /app/x-ui.sh /usr/bin/x-ui COPY --from=xray-downloader /app/bin /app/bin @@ -70,5 +69,5 @@ RUN chmod +x \ ENV XUI_ENABLE_FAIL2BAN="true" EXPOSE 2053 VOLUME [ "/etc/x-ui" ] -#CMD [ "./x-ui" ] + ENTRYPOINT [ "/app/DockerEntrypoint.sh" ] From 4b8275f15f8c689c8ec8667a7fa268b57d3a61cc Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Tue, 25 Nov 2025 00:05:40 +0300 Subject: [PATCH 06/28] Docker crom runner: cron works and restarts the main container, but shared volume still not in use --- DockerInit.sh | 40 ---------------- Dockerfile | 2 +- docker-compose.yml | 46 ++++++++++++++++-- docker-cron-runner/Dockerfile | 15 ++++++ docker-cron-runner/entrypoint.sh | 48 +++++++++++++++++++ .../xray-tools.sh | 0 x-ui.sh | 2 +- 7 files changed, 108 insertions(+), 45 deletions(-) delete mode 100755 DockerInit.sh create mode 100644 docker-cron-runner/Dockerfile create mode 100644 docker-cron-runner/entrypoint.sh rename xray-tools.sh => docker-cron-runner/xray-tools.sh (100%) diff --git a/DockerInit.sh b/DockerInit.sh deleted file mode 100755 index fb603fb8..00000000 --- a/DockerInit.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh -case $1 in - amd64) - ARCH="64" - FNAME="amd64" - ;; - i386) - ARCH="32" - FNAME="i386" - ;; - armv8 | arm64 | aarch64) - ARCH="arm64-v8a" - FNAME="arm64" - ;; - armv7 | arm | arm32) - ARCH="arm32-v7a" - FNAME="arm32" - ;; - armv6) - ARCH="arm32-v6" - FNAME="armv6" - ;; - *) - ARCH="64" - FNAME="amd64" - ;; -esac -mkdir -p build/bin -cd build/bin -wget -q "https://github.com/XTLS/Xray-core/releases/download/v25.10.15/Xray-linux-${ARCH}.zip" -unzip "Xray-linux-${ARCH}.zip" -rm -f "Xray-linux-${ARCH}.zip" geoip.dat geosite.dat -mv xray "xray-linux-${FNAME}" -wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat -wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat -wget -q -O geoip_IR.dat https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat -wget -q -O geosite_IR.dat https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geosite.dat -wget -q -O geoip_RU.dat https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geoip.dat -wget -q -O geosite_RU.dat https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geosite.dat -cd ../../ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 56e6a3d2..20c092bf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -30,7 +30,7 @@ ARG XRAY_VERSION WORKDIR /app RUN apk add --no-cache wget unzip && mkdir -p /app/bin -COPY xray-tools.sh . +COPY docker-cron-runner/xray-tools.sh . RUN chmod +x /app/xray-tools.sh && \ ./xray-tools.sh install_xray_core "$TARGETARCH" "/app/bin" "$XRAY_VERSION" && \ ./xray-tools.sh update_geodata_in_docker "/app/bin" diff --git a/docker-compose.yml b/docker-compose.yml index 53f96a97..b9227d73 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,18 +1,58 @@ services: - 3xui: + 3x-ui: build: context: . args: XRAY_VERSION: "v25.10.15" - GEOUPDATE_CRON_SCHEDULE: "0 */6 * * *" container_name: 3xui_app volumes: - $PWD/db/:/etc/x-ui/ - $PWD/cert/:/root/cert/ + - $PWD/geodata/:/opt/geodata/ environment: TZ: "Asia/Tehran" XRAY_VMESS_AEAD_FORCED: "false" XUI_ENABLE_FAIL2BAN: "true" tty: true network_mode: host - restart: unless-stopped \ No newline at end of file + restart: unless-stopped + depends_on: + - geodata-cron + + docker-proxy: + image: tecnativa/docker-socket-proxy + container_name: docker_proxy + restart: unless-stopped + environment: + - CONTAINERS=1 + - POST=1 + - ALLOW_RESTARTS=1 + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + networks: + - docker-internal + + geodata-cron: + build: + context: docker-cron-runner + container_name: geodata_cron + restart: unless-stopped + depends_on: + - docker-proxy + environment: + DOCKER_PROXY_URL: "http://docker-proxy:2375" + TARGET_CONTAINER_NAME: "3xui_app" + # Расписание в формате crond (пример: каждые 6 часов) + # CRON_SCHEDULE: "0 */6 * * *" +# CRON_SCHEDULE: "*/1 * * * *" + CRON_SCHEDULE: "0 */6 * * *" + SHARED_VOLUME_PATH: "/opt/geodata" + volumes: + - $PWD/geodata/:/opt/geodata/ + - ./xray-tools.sh:/usr/local/bin/xray-tools.sh:ro + networks: + - docker-internal + +networks: + docker-internal: + driver: bridge \ No newline at end of file diff --git a/docker-cron-runner/Dockerfile b/docker-cron-runner/Dockerfile new file mode 100644 index 00000000..77f069e0 --- /dev/null +++ b/docker-cron-runner/Dockerfile @@ -0,0 +1,15 @@ +FROM alpine:3.20 + +WORKDIR app +COPY xray-tools.sh . +# Нужные утилиты: curl + bash (если xray-tools.sh написан под bash) +RUN apk add --no-cache curl bash ca-certificates tzdata + +# Копируем entrypoint +COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh +RUN chmod +x xray-tools.sh + + +# cron внутри alpine использует crond (busybox) +CMD ["/entrypoint.sh"] \ No newline at end of file diff --git a/docker-cron-runner/entrypoint.sh b/docker-cron-runner/entrypoint.sh new file mode 100644 index 00000000..f580f647 --- /dev/null +++ b/docker-cron-runner/entrypoint.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env sh +set -e + +: "${CRON_SCHEDULE:=0 */6 * * *}" +: "${DOCKER_PROXY_URL:?DOCKER_PROXY_URL is required}" +: "${TARGET_CONTAINER_NAME:?TARGET_CONTAINER_NAME is required}" +: "${SHARED_VOLUME_PATH:?SHARED_VOLUME_PATH is required}" + +# Скрипт, который будет исполняться по крону +CRON_JOB_SCRIPT="/usr/local/bin/run_update_and_restart.sh" + +cat > "$CRON_JOB_SCRIPT" << 'EOF' +#!/usr/bin/env sh +set -e + +echo "[$(date)] Starting geodata update..." + +# Обновление геоданных +/app/xray-tools.sh update_geodata_in_docker "${SHARED_VOLUME_PATH}" + +echo "[$(date)] Geodata update finished, restarting container..." + +# Рестарт контейнера через Docker Socket Proxy +curl -s -X POST \ + "${DOCKER_PROXY_URL}/containers/${TARGET_CONTAINER_NAME}/restart" \ + -o /dev/null -w "%{http_code}\n" + +echo "[$(date)] Restart request sent." +EOF + +chmod +x "$CRON_JOB_SCRIPT" + +# Создаём кронтаб +# Важный момент: переменные окружения надо прокинуть в cron. +CRON_ENV_FILE="/env.sh" +env | grep -v '^CRON_SCHEDULE=' | sed 's/^/export /' > "$CRON_ENV_FILE" + +# crond не тянет env напрямую, поэтому в крон-строке source env-файла +echo "${CRON_SCHEDULE} . ${CRON_ENV_FILE} && ${CRON_JOB_SCRIPT} >> /var/log/cron.log 2>&1" > /etc/crontabs/root + +echo "Starting crond with schedule: ${CRON_SCHEDULE}" +mkdir -p /var/log +touch /var/log/cron.log + +bash $CRON_JOB_SCRIPT + +# Запускаем crond в foreground +exec crond -f -l 2 \ No newline at end of file diff --git a/xray-tools.sh b/docker-cron-runner/xray-tools.sh similarity index 100% rename from xray-tools.sh rename to docker-cron-runner/xray-tools.sh diff --git a/x-ui.sh b/x-ui.sh index d9112b50..f56eca35 100644 --- a/x-ui.sh +++ b/x-ui.sh @@ -6,7 +6,7 @@ blue='\033[0;34m' yellow='\033[0;33m' plain='\033[0m' -source xray-tools.sh +source docker-cron-runner/xray-tools.sh #Add some basic function here function LOGD() { From 67d4142c3ad9ec3912efa1b60745c96d70c4480a Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Tue, 25 Nov 2025 02:10:02 +0300 Subject: [PATCH 07/28] Used shared volume + system optimization --- DockerEntrypoint.sh | 7 +++++ Dockerfile | 18 ----------- docker-compose.yml | 18 +++++------ docker-cron-runner/Dockerfile | 34 ++++++++++++++------- docker-cron-runner/cron-job-script.sh | 23 ++++++++++++++ docker-cron-runner/entrypoint.sh | 43 +++++++-------------------- 6 files changed, 73 insertions(+), 70 deletions(-) create mode 100644 docker-cron-runner/cron-job-script.sh diff --git a/DockerEntrypoint.sh b/DockerEntrypoint.sh index 277026b8..95c86869 100644 --- a/DockerEntrypoint.sh +++ b/DockerEntrypoint.sh @@ -1,5 +1,12 @@ #!/bin/sh +FINISH_FILE="$GEODATA_DIR/cron-job-finished.txt" + +while [ ! -f "$FINISH_FILE" ]; do + echo "Still waiting... (looking for $FINISH_FILE)" + sleep 10 +done + # Start fail2ban [ "$XUI_ENABLE_FAIL2BAN" = "true" ] && fail2ban-client -x start diff --git a/Dockerfile b/Dockerfile index 20c092bf..ab861c8c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,22 +19,6 @@ ENV CGO_ENABLED=1 ENV CGO_CFLAGS="-D_LARGEFILE64_SOURCE" RUN go build -ldflags "-w -s" -o build/x-ui main.go -# ======================================================== -# Stage: Xray downloader -# ======================================================== -FROM alpine AS xray-downloader - -ARG TARGETARCH -ARG XRAY_VERSION - -WORKDIR /app -RUN apk add --no-cache wget unzip && mkdir -p /app/bin - -COPY docker-cron-runner/xray-tools.sh . -RUN chmod +x /app/xray-tools.sh && \ - ./xray-tools.sh install_xray_core "$TARGETARCH" "/app/bin" "$XRAY_VERSION" && \ - ./xray-tools.sh update_geodata_in_docker "/app/bin" - # ======================================================== # Stage: Final Image of 3x-ui # ======================================================== @@ -51,8 +35,6 @@ RUN apk add --no-cache \ COPY DockerEntrypoint.sh /app/ COPY --from=builder /app/build/ /app/ COPY --from=builder /app/x-ui.sh /usr/bin/x-ui -COPY --from=xray-downloader /app/bin /app/bin - # Configure fail2ban RUN rm -f /etc/fail2ban/jail.d/alpine-ssh.conf \ diff --git a/docker-compose.yml b/docker-compose.yml index b9227d73..a9d69373 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,17 +2,16 @@ services: 3x-ui: build: context: . - args: - XRAY_VERSION: "v25.10.15" container_name: 3xui_app volumes: - $PWD/db/:/etc/x-ui/ - $PWD/cert/:/root/cert/ - - $PWD/geodata/:/opt/geodata/ + - $PWD/geodata/:/app/bin environment: TZ: "Asia/Tehran" XRAY_VMESS_AEAD_FORCED: "false" XUI_ENABLE_FAIL2BAN: "true" + GEODATA_DIR: "/app/bin" tty: true network_mode: host restart: unless-stopped @@ -35,21 +34,22 @@ services: geodata-cron: build: context: docker-cron-runner + args: + XRAY_VERSION: "v25.10.15" + XRAY_BUILD_DIR: "/app/xray" container_name: geodata_cron restart: unless-stopped depends_on: - docker-proxy environment: + TZ: "UTC" DOCKER_PROXY_URL: "http://docker-proxy:2375" TARGET_CONTAINER_NAME: "3xui_app" - # Расписание в формате crond (пример: каждые 6 часов) - # CRON_SCHEDULE: "0 */6 * * *" -# CRON_SCHEDULE: "*/1 * * * *" +# CRON_SCHEDULE: "*/5 * * * *" CRON_SCHEDULE: "0 */6 * * *" - SHARED_VOLUME_PATH: "/opt/geodata" + SHARED_VOLUME_PATH: "/app/bin" volumes: - - $PWD/geodata/:/opt/geodata/ - - ./xray-tools.sh:/usr/local/bin/xray-tools.sh:ro + - $PWD/geodata/:/app/bin/ networks: - docker-internal diff --git a/docker-cron-runner/Dockerfile b/docker-cron-runner/Dockerfile index 77f069e0..b3c1fcc8 100644 --- a/docker-cron-runner/Dockerfile +++ b/docker-cron-runner/Dockerfile @@ -1,15 +1,29 @@ FROM alpine:3.20 -WORKDIR app -COPY xray-tools.sh . -# Нужные утилиты: curl + bash (если xray-tools.sh написан под bash) -RUN apk add --no-cache curl bash ca-certificates tzdata +ARG TARGETARCH +ARG XRAY_VERSION +ARG XRAY_BUILD_DIR -# Копируем entrypoint -COPY entrypoint.sh /entrypoint.sh -RUN chmod +x /entrypoint.sh -RUN chmod +x xray-tools.sh +WORKDIR /app + +RUN apk add --no-cache \ + wget \ + unzip \ + curl \ + bash \ + ca-certificates \ + tzdata -# cron внутри alpine использует crond (busybox) -CMD ["/entrypoint.sh"] \ No newline at end of file +COPY xray-tools.sh entrypoint.sh cron-job-script.sh ./ + +#RUN mkdir -p "$XRAY_BUILD_DIR" +RUN chmod +x /app/xray-tools.sh /app/entrypoint.sh /app/cron-job-script.sh \ + && mkdir -p "$XRAY_BUILD_DIR" \ + && ./xray-tools.sh install_xray_core "$TARGETARCH" "$XRAY_BUILD_DIR" "$XRAY_VERSION" \ + && ./xray-tools.sh update_geodata_in_docker "$XRAY_BUILD_DIR" + +ENV XRAY_BUILD_DIR=${XRAY_BUILD_DIR} + +#CMD ["/app/entrypoint.sh"] \ +ENTRYPOINT ["/app/entrypoint.sh"] \ No newline at end of file diff --git a/docker-cron-runner/cron-job-script.sh b/docker-cron-runner/cron-job-script.sh new file mode 100644 index 00000000..ec2eff8b --- /dev/null +++ b/docker-cron-runner/cron-job-script.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env sh +set -eu + +echo "[$(date)] Starting geodata update..." + +FINISHED_FLAG="${SHARED_VOLUME_PATH}/cron-job-finished.txt" + +if [ -f "$FINISHED_FLAG" ]; then + rm -f "$FINISHED_FLAG" +fi + +/app/xray-tools.sh update_geodata_in_docker "${SHARED_VOLUME_PATH}" +touch "$FINISHED_FLAG" + +echo "[$(date)] Geodata update finished, restarting container..." + +HTTP_CODE=$( + curl -s -X POST \ + "${DOCKER_PROXY_URL}/containers/${TARGET_CONTAINER_NAME}/restart" \ + -o /dev/null -w "%{http_code}" +) + +echo "[$(date)] Restart request sent, HTTP status: ${HTTP_CODE}" \ No newline at end of file diff --git a/docker-cron-runner/entrypoint.sh b/docker-cron-runner/entrypoint.sh index f580f647..9d4cc001 100644 --- a/docker-cron-runner/entrypoint.sh +++ b/docker-cron-runner/entrypoint.sh @@ -1,48 +1,25 @@ #!/usr/bin/env sh -set -e + +set -eu : "${CRON_SCHEDULE:=0 */6 * * *}" : "${DOCKER_PROXY_URL:?DOCKER_PROXY_URL is required}" -: "${TARGET_CONTAINER_NAME:?TARGET_CONTAINER_NAME is required}" +: "${TARGET_CONTAINER_NAME:?TARGET_CONTAINER_NAME is required}" # required for cron-job-script.sh for container restart : "${SHARED_VOLUME_PATH:?SHARED_VOLUME_PATH is required}" -# Скрипт, который будет исполняться по крону -CRON_JOB_SCRIPT="/usr/local/bin/run_update_and_restart.sh" - -cat > "$CRON_JOB_SCRIPT" << 'EOF' -#!/usr/bin/env sh -set -e - -echo "[$(date)] Starting geodata update..." - -# Обновление геоданных -/app/xray-tools.sh update_geodata_in_docker "${SHARED_VOLUME_PATH}" - -echo "[$(date)] Geodata update finished, restarting container..." - -# Рестарт контейнера через Docker Socket Proxy -curl -s -X POST \ - "${DOCKER_PROXY_URL}/containers/${TARGET_CONTAINER_NAME}/restart" \ - -o /dev/null -w "%{http_code}\n" - -echo "[$(date)] Restart request sent." -EOF - -chmod +x "$CRON_JOB_SCRIPT" - -# Создаём кронтаб -# Важный момент: переменные окружения надо прокинуть в cron. CRON_ENV_FILE="/env.sh" -env | grep -v '^CRON_SCHEDULE=' | sed 's/^/export /' > "$CRON_ENV_FILE" -# crond не тянет env напрямую, поэтому в крон-строке source env-файла -echo "${CRON_SCHEDULE} . ${CRON_ENV_FILE} && ${CRON_JOB_SCRIPT} >> /var/log/cron.log 2>&1" > /etc/crontabs/root +env | grep -v '^CRON_SCHEDULE=' | sed 's/^/export /' > "$CRON_ENV_FILE" +echo "${CRON_SCHEDULE} . ${CRON_ENV_FILE} && /app/cron-job-script.sh >> /var/log/cron.log 2>&1" > /etc/crontabs/root echo "Starting crond with schedule: ${CRON_SCHEDULE}" + mkdir -p /var/log touch /var/log/cron.log -bash $CRON_JOB_SCRIPT +mkdir -p "$SHARED_VOLUME_PATH" +cp -r "$XRAY_BUILD_DIR"/* "$SHARED_VOLUME_PATH"/ + +touch "$SHARED_VOLUME_PATH/cron-job-finished.txt" # cron job execution imitation -# Запускаем crond в foreground exec crond -f -l 2 \ No newline at end of file From c4c5aee9acea0c7dec44c8653e5badd374de307a Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Thu, 27 Nov 2025 13:47:41 +0300 Subject: [PATCH 08/28] docker update --- .gitignore | 3 +++ docker-compose.yml | 5 +++-- docker-cron-runner/xray-tools.sh | 28 ++++++++++++++-------------- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index 8fa4eeb0..69b9c69d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# shared volume +geodata/ + # Ignore editor and IDE settings .idea/ .vscode/ diff --git a/docker-compose.yml b/docker-compose.yml index a9d69373..2c70c4f8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -42,11 +42,12 @@ services: depends_on: - docker-proxy environment: + ENABLE_CRON_UPDATE: "true" TZ: "UTC" DOCKER_PROXY_URL: "http://docker-proxy:2375" TARGET_CONTAINER_NAME: "3xui_app" -# CRON_SCHEDULE: "*/5 * * * *" - CRON_SCHEDULE: "0 */6 * * *" + CRON_SCHEDULE: "*/1 * * * *" +# CRON_SCHEDULE: "0 */6 * * *" SHARED_VOLUME_PATH: "/app/bin" volumes: - $PWD/geodata/:/app/bin/ diff --git a/docker-cron-runner/xray-tools.sh b/docker-cron-runner/xray-tools.sh index a2ddd682..caf1dc92 100644 --- a/docker-cron-runner/xray-tools.sh +++ b/docker-cron-runner/xray-tools.sh @@ -2,8 +2,8 @@ update_all_geofiles() { update_main_geofiles - update_ir_geofiles - update_ru_geofiles +# update_ir_geofiles +# update_ru_geofiles } update_main_geofiles() { @@ -22,16 +22,16 @@ update_ru_geofiles() { } update_geodata_in_docker() { - WORKDIR="$1" + XRAYDIR="$1" OLD_DIR=$(pwd) trap 'cd "$OLD_DIR"' EXIT echo "[$(date)] Running update_geodata" - if [ ! -d "$WORKDIR" ]; then - mkdir -p "$WORKDIR" + if [ ! -d "$XRAYDIR" ]; then + mkdir -p "$XRAYDIR" fi - cd "$WORKDIR" + cd "$XRAYDIR" update_all_geofiles echo "[$(date)] All geo files have been updated successfully!" @@ -40,7 +40,7 @@ update_geodata_in_docker() { install_xray_core() { TARGETARCH="$1" - WORKDIR="$2" + XRAYDIR="$2" XRAY_VERSION="$3" OLD_DIR=$(pwd) @@ -75,10 +75,10 @@ install_xray_core() { ;; esac - if [ ! -d "$WORKDIR" ]; then - mkdir -p "$WORKDIR" + if [ ! -d "$XRAYDIR" ]; then + mkdir -p "$XRAYDIR" fi - cd "$WORKDIR" + cd "$XRAYDIR" wget -q "https://github.com/XTLS/Xray-core/releases/download/${XRAY_VERSION}/Xray-linux-${ARCH}.zip" unzip "Xray-linux-${ARCH}.zip" -d ./xray-unzip @@ -95,17 +95,17 @@ if [ "${0##*/}" = "xray-tools.sh" ]; then case "$cmd" in install_xray_core) - # args: TARGETARCH WORKDIR XRAY_VERSION + # args: TARGETARCH XRAYDIR XRAY_VERSION install_xray_core "$@" ;; update_geodata_in_docker) - # args: WORKDIR + # args: XRAYDIR update_geodata_in_docker "$@" ;; ""|help|-h|--help) echo "Usage:" - echo " $0 install_xray_core TARGETARCH WORKDIR XRAY_VERSION" - echo " $0 update_geodata_in_docker WORKDIR" + echo " $0 install_xray_core TARGETARCH XRAYDIR XRAY_VERSION" + echo " $0 update_geodata_in_docker XRAYDIR" exit 1 ;; *) From 11031dad004a835eacc7cd0587336c7e8874354e Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Thu, 27 Nov 2025 14:20:54 +0300 Subject: [PATCH 09/28] Code refactoring --- docker-compose.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 2c70c4f8..99c7231b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -46,8 +46,7 @@ services: TZ: "UTC" DOCKER_PROXY_URL: "http://docker-proxy:2375" TARGET_CONTAINER_NAME: "3xui_app" - CRON_SCHEDULE: "*/1 * * * *" -# CRON_SCHEDULE: "0 */6 * * *" + CRON_SCHEDULE: "0 */6 * * *" SHARED_VOLUME_PATH: "/app/bin" volumes: - $PWD/geodata/:/app/bin/ From c7e9018e716e624212b338d38b4e24b2ebb12505 Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Thu, 27 Nov 2025 14:22:01 +0300 Subject: [PATCH 10/28] Updated bash script: safe file replace system now saves it from rewrite if the downloaded file is empty --- docker-cron-runner/xray-tools.sh | 60 +++++++++++++++++++++++++++----- 1 file changed, 52 insertions(+), 8 deletions(-) diff --git a/docker-cron-runner/xray-tools.sh b/docker-cron-runner/xray-tools.sh index caf1dc92..8eafd937 100644 --- a/docker-cron-runner/xray-tools.sh +++ b/docker-cron-runner/xray-tools.sh @@ -1,24 +1,65 @@ #!/bin/sh +safe_download_and_update() { + url="$1" + dest="$2" + + # Create a temporary file + tmp=$(mktemp "${dest}.XXXXXX") || return 1 + + # Download file into a temporary location + if wget -q -O "$tmp" "$url"; then + # Check that the downloaded file is not empty + if [ -s "$tmp" ]; then + # Atomically replace the destination file + mv "$tmp" "$dest" + echo "[OK] Downloaded: $dest" + else + echo "[ERR] Downloaded file is empty: $url" + rm -f "$tmp" + return 1 + fi + else + echo "[ERR] Failed to download: $url" + rm -f "$tmp" + return 1 + fi +} + update_all_geofiles() { update_main_geofiles -# update_ir_geofiles -# update_ru_geofiles + update_ir_geofiles + update_ru_geofiles } update_main_geofiles() { - wget -O geoip.dat https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat - wget -O geosite.dat https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat + safe_download_and_update \ + "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat" \ + "geoip.dat" + + safe_download_and_update \ + "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat" \ + "geosite.dat" } update_ir_geofiles() { - wget -O geoip_IR.dat https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat - wget -O geosite_IR.dat https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geosite.dat + safe_download_and_update \ + "https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat" \ + "geoip_IR.dat" + + safe_download_and_update \ + "https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geosite.dat" \ + "geosite_IR.dat" } update_ru_geofiles() { - wget -O geoip_RU.dat https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geoip.dat - wget -O geosite_RU.dat https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geosite.dat + safe_download_and_update \ + "https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geoip.dat" \ + "geoip_RU.dat" + + safe_download_and_update \ + "https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geosite.dat" \ + "geosite_RU.dat" } update_geodata_in_docker() { @@ -102,6 +143,9 @@ if [ "${0##*/}" = "xray-tools.sh" ]; then # args: XRAYDIR update_geodata_in_docker "$@" ;; + update_all_geofiles) + update_all_geofiles + ;; ""|help|-h|--help) echo "Usage:" echo " $0 install_xray_core TARGETARCH XRAYDIR XRAY_VERSION" From 0430fa83500005a6d9d3df45fe1d6e85418907b0 Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Thu, 27 Nov 2025 23:49:10 +0300 Subject: [PATCH 11/28] Removed unused env from docker --- docker-compose.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 99c7231b..dc0b966c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -42,7 +42,6 @@ services: depends_on: - docker-proxy environment: - ENABLE_CRON_UPDATE: "true" TZ: "UTC" DOCKER_PROXY_URL: "http://docker-proxy:2375" TARGET_CONTAINER_NAME: "3xui_app" From 6b6818efa41a78f8803ee2ccd1a1af14cea79b05 Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Fri, 28 Nov 2025 00:09:10 +0300 Subject: [PATCH 12/28] Refactoring --- docker-cron-runner/xray-tools.sh | 2 -- x-ui.sh | 21 --------------------- 2 files changed, 23 deletions(-) diff --git a/docker-cron-runner/xray-tools.sh b/docker-cron-runner/xray-tools.sh index 8eafd937..5765f330 100644 --- a/docker-cron-runner/xray-tools.sh +++ b/docker-cron-runner/xray-tools.sh @@ -128,8 +128,6 @@ install_xray_core() { rm "Xray-linux-${ARCH}.zip" } -# --- dispatcher: вызываем функции по имени ТОЛЬКО если скрипт запущен как файл --- -# Предполагаем, что файл называется xray-updates.sh if [ "${0##*/}" = "xray-tools.sh" ]; then cmd="$1" shift || true diff --git a/x-ui.sh b/x-ui.sh index f56eca35..d9ad9621 100644 --- a/x-ui.sh +++ b/x-ui.sh @@ -865,27 +865,6 @@ delete_ports() { fi } -#update_all_geofiles() { -# update_main_geofiles -# update_ir_geofiles -# update_ru_geofiles -#} -# -#update_main_geofiles() { -# wget -O geoip.dat https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat -# wget -O geosite.dat https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat -#} -# -#update_ir_geofiles() { -# wget -O geoip_IR.dat https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat -# wget -O geosite_IR.dat https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geosite.dat -#} -# -#update_ru_geofiles() { -# wget -O geoip_RU.dat https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geoip.dat -# wget -O geosite_RU.dat https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geosite.dat -#} - update_geo() { echo -e "${green}\t1.${plain} Loyalsoldier (geoip.dat, geosite.dat)" echo -e "${green}\t2.${plain} chocolate4u (geoip_IR.dat, geosite_IR.dat)" From ba07e15695c5f9dd5f5d09b49fcbef0a2e7d29c5 Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Wed, 3 Dec 2025 20:33:43 +0300 Subject: [PATCH 13/28] add timeout mechanism and better error handling --- DockerEntrypoint.sh | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/DockerEntrypoint.sh b/DockerEntrypoint.sh index 95c86869..81d9fd58 100644 --- a/DockerEntrypoint.sh +++ b/DockerEntrypoint.sh @@ -2,11 +2,22 @@ FINISH_FILE="$GEODATA_DIR/cron-job-finished.txt" -while [ ! -f "$FINISH_FILE" ]; do - echo "Still waiting... (looking for $FINISH_FILE)" - sleep 10 +MAX_WAIT=300 # 5 minutes +ELAPSED=0 +INTERVAL=10 + +while [ ! -f "$FINISH_FILE" ] && [ $ELAPSED -lt $MAX_WAIT ]; do + echo "Still waiting for geodata initialization... ($ELAPSED/$MAX_WAIT seconds)" + sleep $INTERVAL + ELAPSED=$((ELAPSED + INTERVAL)) done +if [ ! -f "$FINISH_FILE" ]; then + echo "ERROR: Geodata initialization timed out after $MAX_WAIT seconds" + echo "Container startup aborted." + exit 1 +fi + # Start fail2ban [ "$XUI_ENABLE_FAIL2BAN" = "true" ] && fail2ban-client -x start From 20ca19233aba318910acc27efa21db6aceaca46b Mon Sep 17 00:00:00 2001 From: nagibator_archivator Date: Wed, 3 Dec 2025 20:45:57 +0300 Subject: [PATCH 14/28] Update docker-cron-runner/xray-tools.sh Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docker-cron-runner/xray-tools.sh | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/docker-cron-runner/xray-tools.sh b/docker-cron-runner/xray-tools.sh index 5765f330..13456e28 100644 --- a/docker-cron-runner/xray-tools.sh +++ b/docker-cron-runner/xray-tools.sh @@ -122,11 +122,28 @@ install_xray_core() { cd "$XRAYDIR" wget -q "https://github.com/XTLS/Xray-core/releases/download/${XRAY_VERSION}/Xray-linux-${ARCH}.zip" - unzip "Xray-linux-${ARCH}.zip" -d ./xray-unzip + + # Validate the downloaded zip file + if [ ! -f "Xray-linux-${ARCH}.zip" ] || [ ! -s "Xray-linux-${ARCH}.zip" ]; then + echo "[ERR] Failed to download Xray-core zip or file is empty" + cd "$OLD_DIR" + return 1 + fi + + unzip -q "Xray-linux-${ARCH}.zip" -d ./xray-unzip + + # Validate the extracted xray binary + if [ ! -f "./xray-unzip/xray" ] || [ ! -s "./xray-unzip/xray" ]; then + echo "[ERR] Failed to extract xray binary" + rm -rf ./xray-unzip + rm -f "Xray-linux-${ARCH}.zip" + cd "$OLD_DIR" + return 1 + fi + cp ./xray-unzip/xray ./"xray-linux-${FNAME}" rm -r xray-unzip rm "Xray-linux-${ARCH}.zip" - } if [ "${0##*/}" = "xray-tools.sh" ]; then cmd="$1" From fcf86063f34679e49bca016245ca6cdc5b45e034 Mon Sep 17 00:00:00 2001 From: nagibator_archivator Date: Wed, 3 Dec 2025 20:47:51 +0300 Subject: [PATCH 15/28] Update docker-compose.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index dc0b966c..0fa748c1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -35,7 +35,7 @@ services: build: context: docker-cron-runner args: - XRAY_VERSION: "v25.10.15" + XRAY_VERSION: "${XRAY_VERSION:-v25.10.15}" XRAY_BUILD_DIR: "/app/xray" container_name: geodata_cron restart: unless-stopped From e9757350f340e677127aeff1093fc2dd55c63c61 Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Wed, 3 Dec 2025 20:55:05 +0300 Subject: [PATCH 16/28] fixed copilot suggestion --- docker-cron-runner/xray-tools.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/docker-cron-runner/xray-tools.sh b/docker-cron-runner/xray-tools.sh index 13456e28..9e439255 100644 --- a/docker-cron-runner/xray-tools.sh +++ b/docker-cron-runner/xray-tools.sh @@ -144,6 +144,7 @@ install_xray_core() { cp ./xray-unzip/xray ./"xray-linux-${FNAME}" rm -r xray-unzip rm "Xray-linux-${ARCH}.zip" +} if [ "${0##*/}" = "xray-tools.sh" ]; then cmd="$1" From 8cadbb90571a012770d921563b4c25f67b4ba7f5 Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Sat, 13 Dec 2025 18:40:37 +0300 Subject: [PATCH 17/28] Refactored xray-tools.sh --- docker-cron-runner/xray-tools.sh | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/docker-cron-runner/xray-tools.sh b/docker-cron-runner/xray-tools.sh index 9e439255..a91e5949 100644 --- a/docker-cron-runner/xray-tools.sh +++ b/docker-cron-runner/xray-tools.sh @@ -126,24 +126,20 @@ install_xray_core() { # Validate the downloaded zip file if [ ! -f "Xray-linux-${ARCH}.zip" ] || [ ! -s "Xray-linux-${ARCH}.zip" ]; then echo "[ERR] Failed to download Xray-core zip or file is empty" - cd "$OLD_DIR" - return 1 + exit 1 fi unzip -q "Xray-linux-${ARCH}.zip" -d ./xray-unzip # Validate the extracted xray binary - if [ ! -f "./xray-unzip/xray" ] || [ ! -s "./xray-unzip/xray" ]; then - echo "[ERR] Failed to extract xray binary" - rm -rf ./xray-unzip - rm -f "Xray-linux-${ARCH}.zip" - cd "$OLD_DIR" - return 1 + if [ -f "./xray-unzip/xray" ]; then + cp ./xray-unzip/xray ./"xray-linux-${FNAME}" + rm -r xray-unzip + rm "Xray-linux-${ARCH}.zip" + else + echo "[ERR] Failed to extract xray binary" + exit 1 fi - - cp ./xray-unzip/xray ./"xray-linux-${FNAME}" - rm -r xray-unzip - rm "Xray-linux-${ARCH}.zip" } if [ "${0##*/}" = "xray-tools.sh" ]; then From 5bd52eff0ccf3833db814418df3be75a981e1f70 Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Mon, 15 Dec 2025 15:30:20 +0300 Subject: [PATCH 18/28] Refactored entrypoint for 3xui container --- DockerEntrypoint.sh | 7 +++---- docker-compose.yml | 1 + 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/DockerEntrypoint.sh b/DockerEntrypoint.sh index 81d9fd58..7256f980 100644 --- a/DockerEntrypoint.sh +++ b/DockerEntrypoint.sh @@ -2,18 +2,17 @@ FINISH_FILE="$GEODATA_DIR/cron-job-finished.txt" -MAX_WAIT=300 # 5 minutes ELAPSED=0 INTERVAL=10 -while [ ! -f "$FINISH_FILE" ] && [ $ELAPSED -lt $MAX_WAIT ]; do - echo "Still waiting for geodata initialization... ($ELAPSED/$MAX_WAIT seconds)" +while [ ! -f "$FINISH_FILE" ] && [ "$ELAPSED" -lt "$MAX_GEODATA_DIR_WAIT" ]; do + echo "Waiting for geodata initialization... ($ELAPSED/$MAX_GEODATA_DIR_WAIT seconds)" sleep $INTERVAL ELAPSED=$((ELAPSED + INTERVAL)) done if [ ! -f "$FINISH_FILE" ]; then - echo "ERROR: Geodata initialization timed out after $MAX_WAIT seconds" + echo "ERROR: Geodata initialization timed out after $MAX_GEODATA_DIR_WAIT seconds" echo "Container startup aborted." exit 1 fi diff --git a/docker-compose.yml b/docker-compose.yml index 0fa748c1..1ef55861 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,6 +12,7 @@ services: XRAY_VMESS_AEAD_FORCED: "false" XUI_ENABLE_FAIL2BAN: "true" GEODATA_DIR: "/app/bin" + MAX_GEODATA_DIR_WAIT: 300 #5 minutes tty: true network_mode: host restart: unless-stopped From e301c15cef8aec33b418c78f3271da7cd6eef7d4 Mon Sep 17 00:00:00 2001 From: nagibator_archivator Date: Mon, 15 Dec 2025 15:53:00 +0300 Subject: [PATCH 19/28] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docker-cron-runner/xray-tools.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-cron-runner/xray-tools.sh b/docker-cron-runner/xray-tools.sh index a91e5949..35ec12b6 100644 --- a/docker-cron-runner/xray-tools.sh +++ b/docker-cron-runner/xray-tools.sh @@ -162,7 +162,7 @@ if [ "${0##*/}" = "xray-tools.sh" ]; then echo "Usage:" echo " $0 install_xray_core TARGETARCH XRAYDIR XRAY_VERSION" echo " $0 update_geodata_in_docker XRAYDIR" - exit 1 + exit 0 ;; *) echo "Unknown command: $cmd" >&2 From dd1beaaabaa29222ebbc9ee9a4801a92ce937813 Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Mon, 15 Dec 2025 17:09:46 +0300 Subject: [PATCH 20/28] is not requiered anymore, add extra check for --- DockerEntrypoint.sh | 10 ++++++++++ docker-compose.yml | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/DockerEntrypoint.sh b/DockerEntrypoint.sh index 7256f980..cb907616 100644 --- a/DockerEntrypoint.sh +++ b/DockerEntrypoint.sh @@ -1,5 +1,15 @@ #!/bin/sh +if [ -z "$GEODATA_DIR" ]; then + echo "ERROR: GEODATA_DIR environment variable is not set" + exit 1 +fi + +if [ -z "$MAX_GEODATA_DIR_WAIT" ]; then + echo "WARNING: MAX_GEODATA_DIR_WAIT environment variable is not set, using default MAX_GEODATA_DIR_WAIT=300" + MAX_GEODATA_DIR_WAIT=300 +fi + FINISH_FILE="$GEODATA_DIR/cron-job-finished.txt" ELAPSED=0 diff --git a/docker-compose.yml b/docker-compose.yml index 1ef55861..137ac605 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,7 +12,7 @@ services: XRAY_VMESS_AEAD_FORCED: "false" XUI_ENABLE_FAIL2BAN: "true" GEODATA_DIR: "/app/bin" - MAX_GEODATA_DIR_WAIT: 300 #5 minutes + MAX_GEODATA_DIR_WAIT: 300 # 5 minutes tty: true network_mode: host restart: unless-stopped From 64d2f15be2e1cd0fac029e05a2796f575ad8f5de Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Mon, 15 Dec 2025 17:20:24 +0300 Subject: [PATCH 21/28] Refactored previous commit --- DockerEntrypoint.sh | 18 ++++++------------ docker-compose.yml | 1 - 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/DockerEntrypoint.sh b/DockerEntrypoint.sh index cb907616..455c3211 100644 --- a/DockerEntrypoint.sh +++ b/DockerEntrypoint.sh @@ -1,24 +1,18 @@ #!/bin/sh -if [ -z "$GEODATA_DIR" ]; then - echo "ERROR: GEODATA_DIR environment variable is not set" - exit 1 -fi +set -eu -if [ -z "$MAX_GEODATA_DIR_WAIT" ]; then - echo "WARNING: MAX_GEODATA_DIR_WAIT environment variable is not set, using default MAX_GEODATA_DIR_WAIT=300" - MAX_GEODATA_DIR_WAIT=300 -fi +: "${MAX_GEODATA_DIR_WAIT:=30}" +: "${WAIT_INTERVAL:=10}" +: "${GEODATA_DIR:?GEODATA_DIR is required}" FINISH_FILE="$GEODATA_DIR/cron-job-finished.txt" - ELAPSED=0 -INTERVAL=10 while [ ! -f "$FINISH_FILE" ] && [ "$ELAPSED" -lt "$MAX_GEODATA_DIR_WAIT" ]; do echo "Waiting for geodata initialization... ($ELAPSED/$MAX_GEODATA_DIR_WAIT seconds)" - sleep $INTERVAL - ELAPSED=$((ELAPSED + INTERVAL)) + sleep $WAIT_INTERVAL + ELAPSED=$((ELAPSED + WAIT_INTERVAL)) done if [ ! -f "$FINISH_FILE" ]; then diff --git a/docker-compose.yml b/docker-compose.yml index 137ac605..0fa748c1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,7 +12,6 @@ services: XRAY_VMESS_AEAD_FORCED: "false" XUI_ENABLE_FAIL2BAN: "true" GEODATA_DIR: "/app/bin" - MAX_GEODATA_DIR_WAIT: 300 # 5 minutes tty: true network_mode: host restart: unless-stopped From b8dc7b2c714e51f847070127a83ad1e21ab44870 Mon Sep 17 00:00:00 2001 From: nagibator_archivator Date: Mon, 15 Dec 2025 17:36:24 +0300 Subject: [PATCH 22/28] Update docker-cron-runner/Dockerfile Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docker-cron-runner/Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/docker-cron-runner/Dockerfile b/docker-cron-runner/Dockerfile index b3c1fcc8..224dca41 100644 --- a/docker-cron-runner/Dockerfile +++ b/docker-cron-runner/Dockerfile @@ -17,7 +17,6 @@ RUN apk add --no-cache \ COPY xray-tools.sh entrypoint.sh cron-job-script.sh ./ -#RUN mkdir -p "$XRAY_BUILD_DIR" RUN chmod +x /app/xray-tools.sh /app/entrypoint.sh /app/cron-job-script.sh \ && mkdir -p "$XRAY_BUILD_DIR" \ && ./xray-tools.sh install_xray_core "$TARGETARCH" "$XRAY_BUILD_DIR" "$XRAY_VERSION" \ From d26c2a31fd5ac7bd832abe5afa88ffb42b71b7a9 Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Mon, 12 Jan 2026 18:24:33 +0300 Subject: [PATCH 23/28] . --- x-ui.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/x-ui.sh b/x-ui.sh index 426fb3aa..4c6f9dda 100644 --- a/x-ui.sh +++ b/x-ui.sh @@ -887,17 +887,17 @@ update_geo() { show_menu ;; 1) - update_main_geofiles + update_geofiles "main" echo -e "${green}Loyalsoldier datasets have been updated successfully!${plain}" restart ;; 2) - update_ir_geofiles + update_geofiles "IR" echo -e "${green}chocolate4u datasets have been updated successfully!${plain}" restart ;; 3) - update_ru_geofiles + update_geofiles "RU" echo -e "${green}runetfreedom datasets have been updated successfully!${plain}" restart ;; From 244d6b85441ffb766375b29779bc1819a321b70f Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Thu, 15 Jan 2026 21:26:44 +0300 Subject: [PATCH 24/28] Redesigned project structure: x-ui.sh -> lib --- lib/bbr.sh | 76 ++ lib/common.sh | 93 +++ lib/extras.sh | 142 ++++ lib/firewall.sh | 200 +++++ lib/geo.sh | 69 ++ lib/install.sh | 129 +++ lib/iplimit.sh | 398 +++++++++ lib/service.sh | 287 +++++++ lib/settings.sh | 132 +++ lib/ssl.sh | 628 ++++++++++++++ x-ui.sh | 2084 +---------------------------------------------- 11 files changed, 2186 insertions(+), 2052 deletions(-) create mode 100644 lib/bbr.sh create mode 100644 lib/common.sh create mode 100644 lib/extras.sh create mode 100644 lib/firewall.sh create mode 100644 lib/geo.sh create mode 100644 lib/install.sh create mode 100644 lib/iplimit.sh create mode 100644 lib/service.sh create mode 100644 lib/settings.sh create mode 100644 lib/ssl.sh diff --git a/lib/bbr.sh b/lib/bbr.sh new file mode 100644 index 00000000..d9ee9236 --- /dev/null +++ b/lib/bbr.sh @@ -0,0 +1,76 @@ +#!/bin/bash +# lib/bbr.sh - BBR TCP congestion control management + +# Include guard +[[ -n "${__X_UI_BBR_INCLUDED:-}" ]] && return 0 +__X_UI_BBR_INCLUDED=1 + +# Source dependencies +source "${LIB_DIR}/common.sh" + +bbr_menu() { + echo -e "${green}\t1.${plain} Enable BBR" + echo -e "${green}\t2.${plain} Disable BBR" + echo -e "${green}\t0.${plain} Back to Main Menu" + read -rp "Choose an option: " choice + case "$choice" in + 0) + show_menu + ;; + 1) + enable_bbr + bbr_menu + ;; + 2) + disable_bbr + bbr_menu + ;; + *) + echo -e "${red}Invalid option. Please select a valid number.${plain}\n" + bbr_menu + ;; + esac +} + +disable_bbr() { + + if ! grep -q "net.core.default_qdisc=fq" /etc/sysctl.conf || ! grep -q "net.ipv4.tcp_congestion_control=bbr" /etc/sysctl.conf; then + echo -e "${yellow}BBR is not currently enabled.${plain}" + before_show_menu + fi + + # Replace BBR with CUBIC configurations + sed -i 's/net.core.default_qdisc=fq/net.core.default_qdisc=pfifo_fast/' /etc/sysctl.conf + sed -i 's/net.ipv4.tcp_congestion_control=bbr/net.ipv4.tcp_congestion_control=cubic/' /etc/sysctl.conf + + # Apply changes + sysctl -p + + # Verify that BBR is replaced with CUBIC + if [[ $(sysctl net.ipv4.tcp_congestion_control | awk '{print $3}') == "cubic" ]]; then + echo -e "${green}BBR has been replaced with CUBIC successfully.${plain}" + else + echo -e "${red}Failed to replace BBR with CUBIC. Please check your system configuration.${plain}" + fi +} + +enable_bbr() { + if grep -q "net.core.default_qdisc=fq" /etc/sysctl.conf && grep -q "net.ipv4.tcp_congestion_control=bbr" /etc/sysctl.conf; then + echo -e "${green}BBR is already enabled!${plain}" + before_show_menu + fi + + # Enable BBR + echo "net.core.default_qdisc=fq" | tee -a /etc/sysctl.conf + echo "net.ipv4.tcp_congestion_control=bbr" | tee -a /etc/sysctl.conf + + # Apply changes + sysctl -p + + # Verify that BBR is enabled + if [[ $(sysctl net.ipv4.tcp_congestion_control | awk '{print $3}') == "bbr" ]]; then + echo -e "${green}BBR has been enabled successfully.${plain}" + else + echo -e "${red}Failed to enable BBR. Please check your system configuration.${plain}" + fi +} diff --git a/lib/common.sh b/lib/common.sh new file mode 100644 index 00000000..ca1cc80d --- /dev/null +++ b/lib/common.sh @@ -0,0 +1,93 @@ +#!/bin/bash +# lib/common.sh - Base library with colors, logging, helpers, and global variables + +# Include guard +[[ -n "${__X_UI_COMMON_INCLUDED:-}" ]] && return 0 +__X_UI_COMMON_INCLUDED=1 + +# Colors +red='\033[0;31m' +green='\033[0;32m' +blue='\033[0;34m' +yellow='\033[0;33m' +plain='\033[0m' + +# Logging functions +LOGD() { + echo -e "${yellow}[DEG] $* ${plain}" +} + +LOGE() { + echo -e "${red}[ERR] $* ${plain}" +} + +LOGI() { + echo -e "${green}[INF] $* ${plain}" +} + +# Simple helpers for domain/IP validation +is_ipv4() { + [[ "$1" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]] && return 0 || return 1 +} + +is_ipv6() { + [[ "$1" =~ : ]] && return 0 || return 1 +} + +is_ip() { + is_ipv4 "$1" || is_ipv6 "$1" +} + +is_domain() { + [[ "$1" =~ ^([A-Za-z0-9](-*[A-Za-z0-9])*\.)+[A-Za-z]{2,}$ ]] && return 0 || return 1 +} + +# Generate random string +gen_random_string() { + local length="$1" + local random_string=$(LC_ALL=C tr -dc 'a-zA-Z0-9' &2 + exit 1 +fi + +os_version="" +os_version=$(grep "^VERSION_ID" /etc/os-release | cut -d '=' -f2 | tr -d '"' | tr -d '.') + +# Declare global variables +xui_folder="${XUI_MAIN_FOLDER:=/usr/local/x-ui}" +xui_service="${XUI_SERVICE:=/etc/systemd/system}" +log_folder="${XUI_LOG_FOLDER:=/var/log/x-ui}" +mkdir -p "${log_folder}" +iplimit_log_path="${log_folder}/3xipl.log" +iplimit_banned_log_path="${log_folder}/3xipl-banned.log" diff --git a/lib/extras.sh b/lib/extras.sh new file mode 100644 index 00000000..b246f6aa --- /dev/null +++ b/lib/extras.sh @@ -0,0 +1,142 @@ +#!/bin/bash +# lib/extras.sh - Extra utilities (speedtest, SSH port forwarding) + +# Include guard +[[ -n "${__X_UI_EXTRAS_INCLUDED:-}" ]] && return 0 +__X_UI_EXTRAS_INCLUDED=1 + +# Source dependencies +source "${LIB_DIR}/common.sh" +source "${LIB_DIR}/service.sh" + +run_speedtest() { + # Check if Speedtest is already installed + if ! command -v speedtest &>/dev/null; then + # If not installed, determine installation method + if command -v snap &>/dev/null; then + # Use snap to install Speedtest + echo "Installing Speedtest using snap..." + snap install speedtest + else + # Fallback to using package managers + local pkg_manager="" + local speedtest_install_script="" + + if command -v dnf &>/dev/null; then + pkg_manager="dnf" + speedtest_install_script="https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.rpm.sh" + elif command -v yum &>/dev/null; then + pkg_manager="yum" + speedtest_install_script="https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.rpm.sh" + elif command -v apt-get &>/dev/null; then + pkg_manager="apt-get" + speedtest_install_script="https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh" + elif command -v apt &>/dev/null; then + pkg_manager="apt" + speedtest_install_script="https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh" + fi + + if [[ -z $pkg_manager ]]; then + echo "Error: Package manager not found. You may need to install Speedtest manually." + return 1 + else + echo "Installing Speedtest using $pkg_manager..." + curl -s $speedtest_install_script | bash + $pkg_manager install -y speedtest + fi + fi + fi + + speedtest +} + +SSH_port_forwarding() { + local URL_lists=( + "https://api4.ipify.org" + "https://ipv4.icanhazip.com" + "https://v4.api.ipinfo.io/ip" + "https://ipv4.myexternalip.com/raw" + "https://4.ident.me" + "https://check-host.net/ip" + ) + local server_ip="" + for ip_address in "${URL_lists[@]}"; do + server_ip=$(curl -s --max-time 3 "${ip_address}" 2>/dev/null | tr -d '[:space:]') + if [[ -n "${server_ip}" ]]; then + break + fi + done + local existing_webBasePath=$(${xui_folder}/x-ui setting -show true | grep -Eo 'webBasePath: .+' | awk '{print $2}') + local existing_port=$(${xui_folder}/x-ui setting -show true | grep -Eo 'port: .+' | awk '{print $2}') + local existing_listenIP=$(${xui_folder}/x-ui setting -getListen true | grep -Eo 'listenIP: .+' | awk '{print $2}') + local existing_cert=$(${xui_folder}/x-ui setting -getCert true | grep -Eo 'cert: .+' | awk '{print $2}') + local existing_key=$(${xui_folder}/x-ui setting -getCert true | grep -Eo 'key: .+' | awk '{print $2}') + + local config_listenIP="" + local listen_choice="" + + if [[ -n "$existing_cert" && -n "$existing_key" ]]; then + echo -e "${green}Panel is secure with SSL.${plain}" + before_show_menu + fi + if [[ -z "$existing_cert" && -z "$existing_key" && (-z "$existing_listenIP" || "$existing_listenIP" == "0.0.0.0") ]]; then + echo -e "\n${red}Warning: No Cert and Key found! The panel is not secure.${plain}" + echo "Please obtain a certificate or set up SSH port forwarding." + fi + + if [[ -n "$existing_listenIP" && "$existing_listenIP" != "0.0.0.0" && (-z "$existing_cert" && -z "$existing_key") ]]; then + echo -e "\n${green}Current SSH Port Forwarding Configuration:${plain}" + echo -e "Standard SSH command:" + echo -e "${yellow}ssh -L 2222:${existing_listenIP}:${existing_port} root@${server_ip}${plain}" + echo -e "\nIf using SSH key:" + echo -e "${yellow}ssh -i -L 2222:${existing_listenIP}:${existing_port} root@${server_ip}${plain}" + echo -e "\nAfter connecting, access the panel at:" + echo -e "${yellow}http://localhost:2222${existing_webBasePath}${plain}" + fi + + echo -e "\nChoose an option:" + echo -e "${green}1.${plain} Set listen IP" + echo -e "${green}2.${plain} Clear listen IP" + echo -e "${green}0.${plain} Back to Main Menu" + read -rp "Choose an option: " num + + case "$num" in + 1) + if [[ -z "$existing_listenIP" || "$existing_listenIP" == "0.0.0.0" ]]; then + echo -e "\nNo listenIP configured. Choose an option:" + echo -e "1. Use default IP (127.0.0.1)" + echo -e "2. Set a custom IP" + read -rp "Select an option (1 or 2): " listen_choice + + config_listenIP="127.0.0.1" + [[ "$listen_choice" == "2" ]] && read -rp "Enter custom IP to listen on: " config_listenIP + + ${xui_folder}/x-ui setting -listenIP "${config_listenIP}" >/dev/null 2>&1 + echo -e "${green}listen IP has been set to ${config_listenIP}.${plain}" + echo -e "\n${green}SSH Port Forwarding Configuration:${plain}" + echo -e "Standard SSH command:" + echo -e "${yellow}ssh -L 2222:${config_listenIP}:${existing_port} root@${server_ip}${plain}" + echo -e "\nIf using SSH key:" + echo -e "${yellow}ssh -i -L 2222:${config_listenIP}:${existing_port} root@${server_ip}${plain}" + echo -e "\nAfter connecting, access the panel at:" + echo -e "${yellow}http://localhost:2222${existing_webBasePath}${plain}" + restart + else + config_listenIP="${existing_listenIP}" + echo -e "${green}Current listen IP is already set to ${config_listenIP}.${plain}" + fi + ;; + 2) + ${xui_folder}/x-ui setting -listenIP 0.0.0.0 >/dev/null 2>&1 + echo -e "${green}Listen IP has been cleared.${plain}" + restart + ;; + 0) + show_menu + ;; + *) + echo -e "${red}Invalid option. Please select a valid number.${plain}\n" + SSH_port_forwarding + ;; + esac +} diff --git a/lib/firewall.sh b/lib/firewall.sh new file mode 100644 index 00000000..c1994b4b --- /dev/null +++ b/lib/firewall.sh @@ -0,0 +1,200 @@ +#!/bin/bash +# lib/firewall.sh - UFW firewall management + +# Include guard +[[ -n "${__X_UI_FIREWALL_INCLUDED:-}" ]] && return 0 +__X_UI_FIREWALL_INCLUDED=1 + +# Source dependencies +source "${LIB_DIR}/common.sh" + +firewall_menu() { + echo -e "${green}\t1.${plain} ${green}Install${plain} Firewall" + echo -e "${green}\t2.${plain} Port List [numbered]" + echo -e "${green}\t3.${plain} ${green}Open${plain} Ports" + echo -e "${green}\t4.${plain} ${red}Delete${plain} Ports from List" + echo -e "${green}\t5.${plain} ${green}Enable${plain} Firewall" + echo -e "${green}\t6.${plain} ${red}Disable${plain} Firewall" + echo -e "${green}\t7.${plain} Firewall Status" + echo -e "${green}\t0.${plain} Back to Main Menu" + read -rp "Choose an option: " choice + case "$choice" in + 0) + show_menu + ;; + 1) + install_firewall + firewall_menu + ;; + 2) + ufw status numbered + firewall_menu + ;; + 3) + open_ports + firewall_menu + ;; + 4) + delete_ports + firewall_menu + ;; + 5) + ufw enable + firewall_menu + ;; + 6) + ufw disable + firewall_menu + ;; + 7) + ufw status verbose + firewall_menu + ;; + *) + echo -e "${red}Invalid option. Please select a valid number.${plain}\n" + firewall_menu + ;; + esac +} + +install_firewall() { + if ! command -v ufw &>/dev/null; then + echo "ufw firewall is not installed. Installing now..." + apt-get update + apt-get install -y ufw + else + echo "ufw firewall is already installed" + fi + + # Check if the firewall is inactive + if ufw status | grep -q "Status: active"; then + echo "Firewall is already active" + else + echo "Activating firewall..." + # Open the necessary ports + ufw allow ssh + ufw allow http + ufw allow https + ufw allow 2053/tcp #webPort + ufw allow 2096/tcp #subport + + # Enable the firewall + ufw --force enable + fi +} + +open_ports() { + # Prompt the user to enter the ports they want to open + read -rp "Enter the ports you want to open (e.g. 80,443,2053 or range 400-500): " ports + + # Check if the input is valid + if ! [[ $ports =~ ^([0-9]+|[0-9]+-[0-9]+)(,([0-9]+|[0-9]+-[0-9]+))*$ ]]; then + echo "Error: Invalid input. Please enter a comma-separated list of ports or a range of ports (e.g. 80,443,2053 or 400-500)." >&2 + exit 1 + fi + + # Open the specified ports using ufw + IFS=',' read -ra PORT_LIST <<<"$ports" + for port in "${PORT_LIST[@]}"; do + if [[ $port == *-* ]]; then + # Split the range into start and end ports + start_port=$(echo $port | cut -d'-' -f1) + end_port=$(echo $port | cut -d'-' -f2) + # Open the port range + ufw allow $start_port:$end_port/tcp + ufw allow $start_port:$end_port/udp + else + # Open the single port + ufw allow "$port" + fi + done + + # Confirm that the ports are opened + echo "Opened the specified ports:" + for port in "${PORT_LIST[@]}"; do + if [[ $port == *-* ]]; then + start_port=$(echo $port | cut -d'-' -f1) + end_port=$(echo $port | cut -d'-' -f2) + # Check if the port range has been successfully opened + (ufw status | grep -q "$start_port:$end_port") && echo "$start_port-$end_port" + else + # Check if the individual port has been successfully opened + (ufw status | grep -q "$port") && echo "$port" + fi + done +} + +delete_ports() { + # Display current rules with numbers + echo "Current UFW rules:" + ufw status numbered + + # Ask the user how they want to delete rules + echo "Do you want to delete rules by:" + echo "1) Rule numbers" + echo "2) Ports" + read -rp "Enter your choice (1 or 2): " choice + + if [[ $choice -eq 1 ]]; then + # Deleting by rule numbers + read -rp "Enter the rule numbers you want to delete (1, 2, etc.): " rule_numbers + + # Validate the input + if ! [[ $rule_numbers =~ ^([0-9]+)(,[0-9]+)*$ ]]; then + echo "Error: Invalid input. Please enter a comma-separated list of rule numbers." >&2 + exit 1 + fi + + # Split numbers into an array + IFS=',' read -ra RULE_NUMBERS <<<"$rule_numbers" + for rule_number in "${RULE_NUMBERS[@]}"; do + # Delete the rule by number + ufw delete "$rule_number" || echo "Failed to delete rule number $rule_number" + done + + echo "Selected rules have been deleted." + + elif [[ $choice -eq 2 ]]; then + # Deleting by ports + read -rp "Enter the ports you want to delete (e.g. 80,443,2053 or range 400-500): " ports + + # Validate the input + if ! [[ $ports =~ ^([0-9]+|[0-9]+-[0-9]+)(,([0-9]+|[0-9]+-[0-9]+))*$ ]]; then + echo "Error: Invalid input. Please enter a comma-separated list of ports or a range of ports (e.g. 80,443,2053 or 400-500)." >&2 + exit 1 + fi + + # Split ports into an array + IFS=',' read -ra PORT_LIST <<<"$ports" + for port in "${PORT_LIST[@]}"; do + if [[ $port == *-* ]]; then + # Split the port range + start_port=$(echo $port | cut -d'-' -f1) + end_port=$(echo $port | cut -d'-' -f2) + # Delete the port range + ufw delete allow $start_port:$end_port/tcp + ufw delete allow $start_port:$end_port/udp + else + # Delete a single port + ufw delete allow "$port" + fi + done + + # Confirmation of deletion + echo "Deleted the specified ports:" + for port in "${PORT_LIST[@]}"; do + if [[ $port == *-* ]]; then + start_port=$(echo $port | cut -d'-' -f1) + end_port=$(echo $port | cut -d'-' -f2) + # Check if the port range has been deleted + (ufw status | grep -q "$start_port:$end_port") || echo "$start_port-$end_port" + else + # Check if the individual port has been deleted + (ufw status | grep -q "$port") || echo "$port" + fi + done + else + echo "${red}Error:${plain} Invalid choice. Please enter 1 or 2." >&2 + exit 1 + fi +} diff --git a/lib/geo.sh b/lib/geo.sh new file mode 100644 index 00000000..0280d691 --- /dev/null +++ b/lib/geo.sh @@ -0,0 +1,69 @@ +#!/bin/bash +# lib/geo.sh - Geo files management + +# Include guard +[[ -n "${__X_UI_GEO_INCLUDED:-}" ]] && return 0 +__X_UI_GEO_INCLUDED=1 + +# Source dependencies +source "${LIB_DIR}/common.sh" +source "${LIB_DIR}/service.sh" + +update_all_geofiles() { + update_geofiles "main" + update_geofiles "IR" + update_geofiles "RU" +} + +update_geofiles() { + case "${1}" in + "main") dat_files=(geoip geosite); dat_source="Loyalsoldier/v2ray-rules-dat";; + "IR") dat_files=(geoip_IR geosite_IR); dat_source="chocolate4u/Iran-v2ray-rules" ;; + "RU") dat_files=(geoip_RU geosite_RU); dat_source="runetfreedom/russia-v2ray-rules-dat";; + esac + for dat in "${dat_files[@]}"; do + curl -fLRo ${xui_folder}/bin/${dat}.dat -z ${xui_folder}/bin/${dat}.dat \ + https://github.com/${dat_source}/releases/latest/download/${dat%%_}.dat + done +} + +update_geo() { + echo -e "${green}\t1.${plain} Loyalsoldier (geoip.dat, geosite.dat)" + echo -e "${green}\t2.${plain} chocolate4u (geoip_IR.dat, geosite_IR.dat)" + echo -e "${green}\t3.${plain} runetfreedom (geoip_RU.dat, geosite_RU.dat)" + echo -e "${green}\t4.${plain} All" + echo -e "${green}\t0.${plain} Back to Main Menu" + read -rp "Choose an option: " choice + + case "$choice" in + 0) + show_menu + ;; + 1) + update_geofiles "main" + echo -e "${green}Loyalsoldier datasets have been updated successfully!${plain}" + restart + ;; + 2) + update_geofiles "IR" + echo -e "${green}chocolate4u datasets have been updated successfully!${plain}" + restart + ;; + 3) + update_geofiles "RU" + echo -e "${green}runetfreedom datasets have been updated successfully!${plain}" + restart + ;; + 4) + update_all_geofiles + echo -e "${green}All geo files have been updated successfully!${plain}" + restart + ;; + *) + echo -e "${red}Invalid option. Please select a valid number.${plain}\n" + update_geo + ;; + esac + + before_show_menu +} diff --git a/lib/install.sh b/lib/install.sh new file mode 100644 index 00000000..f7e5b2f9 --- /dev/null +++ b/lib/install.sh @@ -0,0 +1,129 @@ +#!/bin/bash +# lib/install.sh - Install, update, and uninstall functions + +# Include guard +[[ -n "${__X_UI_INSTALL_INCLUDED:-}" ]] && return 0 +__X_UI_INSTALL_INCLUDED=1 + +# Source dependencies +source "${LIB_DIR}/common.sh" +source "${LIB_DIR}/service.sh" + +install() { + bash <(curl -Ls https://raw.githubusercontent.com/MHSanaei/3x-ui/main/install.sh) + if [[ $? == 0 ]]; then + if [[ $# == 0 ]]; then + start + else + start 0 + fi + fi +} + +update() { + confirm "This function will update all x-ui components to the latest version, and the data will not be lost. Do you want to continue?" "y" + if [[ $? != 0 ]]; then + LOGE "Cancelled" + if [[ $# == 0 ]]; then + before_show_menu + fi + return 0 + fi + bash <(curl -Ls https://raw.githubusercontent.com/MHSanaei/3x-ui/main/update.sh) + if [[ $? == 0 ]]; then + LOGI "Update is complete, Panel has automatically restarted " + before_show_menu + fi +} + +update_menu() { + echo -e "${yellow}Updating Menu${plain}" + confirm "This function will update the menu to the latest changes." "y" + if [[ $? != 0 ]]; then + LOGE "Cancelled" + if [[ $# == 0 ]]; then + before_show_menu + fi + return 0 + fi + + curl -fLRo /usr/bin/x-ui https://raw.githubusercontent.com/MHSanaei/3x-ui/main/x-ui.sh + chmod +x ${xui_folder}/x-ui.sh + chmod +x /usr/bin/x-ui + + if [[ $? == 0 ]]; then + echo -e "${green}Update successful. The panel has automatically restarted.${plain}" + exit 0 + else + echo -e "${red}Failed to update the menu.${plain}" + return 1 + fi +} + +legacy_version() { + echo -n "Enter the panel version (like 2.4.0):" + read -r tag_version + + if [ -z "$tag_version" ]; then + echo "Panel version cannot be empty. Exiting." + exit 1 + fi + # Use the entered panel version in the download link + install_command="bash <(curl -Ls "https://raw.githubusercontent.com/mhsanaei/3x-ui/v$tag_version/install.sh") v$tag_version" + + echo "Downloading and installing panel version $tag_version..." + eval $install_command +} + +# Function to handle the deletion of the script file +delete_script() { + rm "$0" # Remove the script file itself + exit 1 +} + +uninstall() { + confirm "Are you sure you want to uninstall the panel? xray will also uninstalled!" "n" + if [[ $? != 0 ]]; then + if [[ $# == 0 ]]; then + show_menu + fi + return 0 + fi + + if [[ $release == "alpine" ]]; then + rc-service x-ui stop + rc-update del x-ui + rm /etc/init.d/x-ui -f + else + systemctl stop x-ui + systemctl disable x-ui + rm ${xui_service}/x-ui.service -f + systemctl daemon-reload + systemctl reset-failed + fi + + rm /etc/x-ui/ -rf + rm ${xui_folder}/ -rf + + echo "" + echo -e "Uninstalled Successfully.\n" + echo "If you need to install this panel again, you can use below command:" + echo -e "${green}bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)${plain}" + echo "" + # Trap the SIGTERM signal + trap delete_script SIGTERM + delete_script +} + +update_shell() { + curl -fLRo /usr/bin/x-ui -z /usr/bin/x-ui https://github.com/MHSanaei/3x-ui/raw/main/x-ui.sh + if [[ $? != 0 ]]; then + echo "" + LOGE "Failed to download script, Please check whether the machine can connect Github" + before_show_menu + else + chmod +x /usr/bin/x-ui + LOGI "Upgrade script succeeded, Please rerun the script" + before_show_menu + fi +} diff --git a/lib/iplimit.sh b/lib/iplimit.sh new file mode 100644 index 00000000..1fdd2d08 --- /dev/null +++ b/lib/iplimit.sh @@ -0,0 +1,398 @@ +#!/bin/bash +# lib/iplimit.sh - Fail2ban IP limiting management + +# Include guard +[[ -n "${__X_UI_IPLIMIT_INCLUDED:-}" ]] && return 0 +__X_UI_IPLIMIT_INCLUDED=1 + +# Source dependencies +source "${LIB_DIR}/common.sh" +source "${LIB_DIR}/service.sh" + +ip_validation() { + ipv6_regex="^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$" + ipv4_regex="^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)$" +} + +iplimit_main() { + echo -e "\n${green}\t1.${plain} Install Fail2ban and configure IP Limit" + echo -e "${green}\t2.${plain} Change Ban Duration" + echo -e "${green}\t3.${plain} Unban Everyone" + echo -e "${green}\t4.${plain} Ban Logs" + echo -e "${green}\t5.${plain} Ban an IP Address" + echo -e "${green}\t6.${plain} Unban an IP Address" + echo -e "${green}\t7.${plain} Real-Time Logs" + echo -e "${green}\t8.${plain} Service Status" + echo -e "${green}\t9.${plain} Service Restart" + echo -e "${green}\t10.${plain} Uninstall Fail2ban and IP Limit" + echo -e "${green}\t0.${plain} Back to Main Menu" + read -rp "Choose an option: " choice + case "$choice" in + 0) + show_menu + ;; + 1) + confirm "Proceed with installation of Fail2ban & IP Limit?" "y" + if [[ $? == 0 ]]; then + install_iplimit + else + iplimit_main + fi + ;; + 2) + read -rp "Please enter new Ban Duration in Minutes [default 30]: " NUM + if [[ $NUM =~ ^[0-9]+$ ]]; then + create_iplimit_jails ${NUM} + if [[ $release == "alpine" ]]; then + rc-service fail2ban restart + else + systemctl restart fail2ban + fi + else + echo -e "${red}${NUM} is not a number! Please, try again.${plain}" + fi + iplimit_main + ;; + 3) + confirm "Proceed with Unbanning everyone from IP Limit jail?" "y" + if [[ $? == 0 ]]; then + fail2ban-client reload --restart --unban 3x-ipl + truncate -s 0 "${iplimit_banned_log_path}" + echo -e "${green}All users Unbanned successfully.${plain}" + iplimit_main + else + echo -e "${yellow}Cancelled.${plain}" + fi + iplimit_main + ;; + 4) + show_banlog + iplimit_main + ;; + 5) + read -rp "Enter the IP address you want to ban: " ban_ip + ip_validation + if [[ $ban_ip =~ $ipv4_regex || $ban_ip =~ $ipv6_regex ]]; then + fail2ban-client set 3x-ipl banip "$ban_ip" + echo -e "${green}IP Address ${ban_ip} has been banned successfully.${plain}" + else + echo -e "${red}Invalid IP address format! Please try again.${plain}" + fi + iplimit_main + ;; + 6) + read -rp "Enter the IP address you want to unban: " unban_ip + ip_validation + if [[ $unban_ip =~ $ipv4_regex || $unban_ip =~ $ipv6_regex ]]; then + fail2ban-client set 3x-ipl unbanip "$unban_ip" + echo -e "${green}IP Address ${unban_ip} has been unbanned successfully.${plain}" + else + echo -e "${red}Invalid IP address format! Please try again.${plain}" + fi + iplimit_main + ;; + 7) + tail -f /var/log/fail2ban.log + iplimit_main + ;; + 8) + service fail2ban status + iplimit_main + ;; + 9) + if [[ $release == "alpine" ]]; then + rc-service fail2ban restart + else + systemctl restart fail2ban + fi + iplimit_main + ;; + 10) + remove_iplimit + iplimit_main + ;; + *) + echo -e "${red}Invalid option. Please select a valid number.${plain}\n" + iplimit_main + ;; + esac +} + +install_iplimit() { + if ! command -v fail2ban-client &>/dev/null; then + echo -e "${green}Fail2ban is not installed. Installing now...!${plain}\n" + + # Check the OS and install necessary packages + case "${release}" in + ubuntu) + apt-get update + if [[ "${os_version}" -ge 24 ]]; then + apt-get install python3-pip -y + python3 -m pip install pyasynchat --break-system-packages + fi + apt-get install fail2ban -y + ;; + debian) + apt-get update + if [ "$os_version" -ge 12 ]; then + apt-get install -y python3-systemd + fi + apt-get install -y fail2ban + ;; + armbian) + apt-get update && apt-get install fail2ban -y + ;; + fedora | amzn | virtuozzo | rhel | almalinux | rocky | ol) + dnf -y update && dnf -y install fail2ban + ;; + centos) + if [[ "${VERSION_ID}" =~ ^7 ]]; then + yum update -y && yum install epel-release -y + yum -y install fail2ban + else + dnf -y update && dnf -y install fail2ban + fi + ;; + arch | manjaro | parch) + pacman -Syu --noconfirm fail2ban + ;; + alpine) + apk add fail2ban + ;; + *) + echo -e "${red}Unsupported operating system. Please check the script and install the necessary packages manually.${plain}\n" + exit 1 + ;; + esac + + if ! command -v fail2ban-client &>/dev/null; then + echo -e "${red}Fail2ban installation failed.${plain}\n" + exit 1 + fi + + echo -e "${green}Fail2ban installed successfully!${plain}\n" + else + echo -e "${yellow}Fail2ban is already installed.${plain}\n" + fi + + echo -e "${green}Configuring IP Limit...${plain}\n" + + # make sure there's no conflict for jail files + iplimit_remove_conflicts + + # Check if log file exists + if ! test -f "${iplimit_banned_log_path}"; then + touch ${iplimit_banned_log_path} + fi + + # Check if service log file exists so fail2ban won't return error + if ! test -f "${iplimit_log_path}"; then + touch ${iplimit_log_path} + fi + + # Create the iplimit jail files + # we didn't pass the bantime here to use the default value + create_iplimit_jails + + # Launching fail2ban + if [[ $release == "alpine" ]]; then + if [[ $(rc-service fail2ban status | grep -F 'status: started' -c) == 0 ]]; then + rc-service fail2ban start + else + rc-service fail2ban restart + fi + rc-update add fail2ban + else + if ! systemctl is-active --quiet fail2ban; then + systemctl start fail2ban + else + systemctl restart fail2ban + fi + systemctl enable fail2ban + fi + + echo -e "${green}IP Limit installed and configured successfully!${plain}\n" + before_show_menu +} + +remove_iplimit() { + echo -e "${green}\t1.${plain} Only remove IP Limit configurations" + echo -e "${green}\t2.${plain} Uninstall Fail2ban and IP Limit" + echo -e "${green}\t0.${plain} Back to Main Menu" + read -rp "Choose an option: " num + case "$num" in + 1) + rm -f /etc/fail2ban/filter.d/3x-ipl.conf + rm -f /etc/fail2ban/action.d/3x-ipl.conf + rm -f /etc/fail2ban/jail.d/3x-ipl.conf + if [[ $release == "alpine" ]]; then + rc-service fail2ban restart + else + systemctl restart fail2ban + fi + echo -e "${green}IP Limit removed successfully!${plain}\n" + before_show_menu + ;; + 2) + rm -rf /etc/fail2ban + if [[ $release == "alpine" ]]; then + rc-service fail2ban stop + else + systemctl stop fail2ban + fi + case "${release}" in + ubuntu | debian | armbian) + apt-get remove -y fail2ban + apt-get purge -y fail2ban -y + apt-get autoremove -y + ;; + fedora | amzn | virtuozzo | rhel | almalinux | rocky | ol) + dnf remove fail2ban -y + dnf autoremove -y + ;; + centos) + if [[ "${VERSION_ID}" =~ ^7 ]]; then + yum remove fail2ban -y + yum autoremove -y + else + dnf remove fail2ban -y + dnf autoremove -y + fi + ;; + arch | manjaro | parch) + pacman -Rns --noconfirm fail2ban + ;; + alpine) + apk del fail2ban + ;; + *) + echo -e "${red}Unsupported operating system. Please uninstall Fail2ban manually.${plain}\n" + exit 1 + ;; + esac + echo -e "${green}Fail2ban and IP Limit removed successfully!${plain}\n" + before_show_menu + ;; + 0) + show_menu + ;; + *) + echo -e "${red}Invalid option. Please select a valid number.${plain}\n" + remove_iplimit + ;; + esac +} + +show_banlog() { + local system_log="/var/log/fail2ban.log" + + echo -e "${green}Checking ban logs...${plain}\n" + + if [[ $release == "alpine" ]]; then + if [[ $(rc-service fail2ban status | grep -F 'status: started' -c) == 0 ]]; then + echo -e "${red}Fail2ban service is not running!${plain}\n" + return 1 + fi + else + if ! systemctl is-active --quiet fail2ban; then + echo -e "${red}Fail2ban service is not running!${plain}\n" + return 1 + fi + fi + + if [[ -f "$system_log" ]]; then + echo -e "${green}Recent system ban activities from fail2ban.log:${plain}" + grep "3x-ipl" "$system_log" | grep -E "Ban|Unban" | tail -n 10 || echo -e "${yellow}No recent system ban activities found${plain}" + echo "" + fi + + if [[ -f "${iplimit_banned_log_path}" ]]; then + echo -e "${green}3X-IPL ban log entries:${plain}" + if [[ -s "${iplimit_banned_log_path}" ]]; then + grep -v "INIT" "${iplimit_banned_log_path}" | tail -n 10 || echo -e "${yellow}No ban entries found${plain}" + else + echo -e "${yellow}Ban log file is empty${plain}" + fi + else + echo -e "${red}Ban log file not found at: ${iplimit_banned_log_path}${plain}" + fi + + echo -e "\n${green}Current jail status:${plain}" + fail2ban-client status 3x-ipl || echo -e "${yellow}Unable to get jail status${plain}" +} + +create_iplimit_jails() { + # Use default bantime if not passed => 30 minutes + local bantime="${1:-30}" + + # Uncomment 'allowipv6 = auto' in fail2ban.conf + sed -i 's/#allowipv6 = auto/allowipv6 = auto/g' /etc/fail2ban/fail2ban.conf + + # On Debian 12+ fail2ban's default backend should be changed to systemd + if [[ "${release}" == "debian" && ${os_version} -ge 12 ]]; then + sed -i '0,/action =/s/backend = auto/backend = systemd/' /etc/fail2ban/jail.conf + fi + + cat << EOF > /etc/fail2ban/jail.d/3x-ipl.conf +[3x-ipl] +enabled=true +backend=auto +filter=3x-ipl +action=3x-ipl +logpath=${iplimit_log_path} +maxretry=2 +findtime=32 +bantime=${bantime}m +EOF + + cat << EOF > /etc/fail2ban/filter.d/3x-ipl.conf +[Definition] +datepattern = ^%%Y/%%m/%%d %%H:%%M:%%S +failregex = \[LIMIT_IP\]\s*Email\s*=\s*.+\s*\|\|\s*SRC\s*=\s* +ignoreregex = +EOF + + cat << EOF > /etc/fail2ban/action.d/3x-ipl.conf +[INCLUDES] +before = iptables-allports.conf + +[Definition] +actionstart = -N f2b- + -A f2b- -j + -I -p -j f2b- + +actionstop = -D -p -j f2b- + + -X f2b- + +actioncheck = -n -L | grep -q 'f2b-[ \t]' + +actionban = -I f2b- 1 -s -j + echo "\$(date +"%%Y/%%m/%%d %%H:%%M:%%S") BAN [Email] = [IP] = banned for seconds." >> ${iplimit_banned_log_path} + +actionunban = -D f2b- -s -j + echo "\$(date +"%%Y/%%m/%%d %%H:%%M:%%S") UNBAN [Email] = [IP] = unbanned." >> ${iplimit_banned_log_path} + +[Init] +name = default +protocol = tcp +chain = INPUT +EOF + + echo -e "${green}Ip Limit jail files created with a bantime of ${bantime} minutes.${plain}" +} + +iplimit_remove_conflicts() { + local jail_files=( + /etc/fail2ban/jail.conf + /etc/fail2ban/jail.local + ) + + for file in "${jail_files[@]}"; do + # Check for [3x-ipl] config in jail file then remove it + if test -f "${file}" && grep -qw '3x-ipl' ${file}; then + sed -i "/\[3x-ipl\]/,/^$/d" ${file} + echo -e "${yellow}Removing conflicts of [3x-ipl] in jail (${file})!${plain}\n" + fi + done +} diff --git a/lib/service.sh b/lib/service.sh new file mode 100644 index 00000000..c1488300 --- /dev/null +++ b/lib/service.sh @@ -0,0 +1,287 @@ +#!/bin/bash +# lib/service.sh - Service control functions (start, stop, restart, status, enable, disable) + +# Include guard +[[ -n "${__X_UI_SERVICE_INCLUDED:-}" ]] && return 0 +__X_UI_SERVICE_INCLUDED=1 + +# Source dependencies +source "${LIB_DIR}/common.sh" + +# 0: running, 1: not running, 2: not installed +check_status() { + if [[ $release == "alpine" ]]; then + if [[ ! -f /etc/init.d/x-ui ]]; then + return 2 + fi + if [[ $(rc-service x-ui status | grep -F 'status: started' -c) == 1 ]]; then + return 0 + else + return 1 + fi + else + if [[ ! -f ${xui_service}/x-ui.service ]]; then + return 2 + fi + temp=$(systemctl status x-ui | grep Active | awk '{print $3}' | cut -d "(" -f2 | cut -d ")" -f1) + if [[ "${temp}" == "running" ]]; then + return 0 + else + return 1 + fi + fi +} + +check_enabled() { + if [[ $release == "alpine" ]]; then + if [[ $(rc-update show | grep -F 'x-ui' | grep default -c) == 1 ]]; then + return 0 + else + return 1 + fi + else + temp=$(systemctl is-enabled x-ui) + if [[ "${temp}" == "enabled" ]]; then + return 0 + else + return 1 + fi + fi +} + +check_uninstall() { + check_status + if [[ $? != 2 ]]; then + echo "" + LOGE "Panel installed, Please do not reinstall" + if [[ $# == 0 ]]; then + before_show_menu + fi + return 1 + else + return 0 + fi +} + +check_install() { + check_status + if [[ $? == 2 ]]; then + echo "" + LOGE "Please install the panel first" + if [[ $# == 0 ]]; then + before_show_menu + fi + return 1 + else + return 0 + fi +} + +show_status() { + check_status + case $? in + 0) + echo -e "Panel state: ${green}Running${plain}" + show_enable_status + ;; + 1) + echo -e "Panel state: ${yellow}Not Running${plain}" + show_enable_status + ;; + 2) + echo -e "Panel state: ${red}Not Installed${plain}" + ;; + esac + show_xray_status +} + +show_enable_status() { + check_enabled + if [[ $? == 0 ]]; then + echo -e "Start automatically: ${green}Yes${plain}" + else + echo -e "Start automatically: ${red}No${plain}" + fi +} + +check_xray_status() { + count=$(ps -ef | grep "xray-linux" | grep -v "grep" | wc -l) + if [[ count -ne 0 ]]; then + return 0 + else + return 1 + fi +} + +show_xray_status() { + check_xray_status + if [[ $? == 0 ]]; then + echo -e "xray state: ${green}Running${plain}" + else + echo -e "xray state: ${red}Not Running${plain}" + fi +} + +start() { + check_status + if [[ $? == 0 ]]; then + echo "" + LOGI "Panel is running, No need to start again, If you need to restart, please select restart" + else + if [[ $release == "alpine" ]]; then + rc-service x-ui start + else + systemctl start x-ui + fi + sleep 2 + check_status + if [[ $? == 0 ]]; then + LOGI "x-ui Started Successfully" + else + LOGE "panel Failed to start, Probably because it takes longer than two seconds to start, Please check the log information later" + fi + fi + + if [[ $# == 0 ]]; then + before_show_menu + fi +} + +stop() { + check_status + if [[ $? == 1 ]]; then + echo "" + LOGI "Panel stopped, No need to stop again!" + else + if [[ $release == "alpine" ]]; then + rc-service x-ui stop + else + systemctl stop x-ui + fi + sleep 2 + check_status + if [[ $? == 1 ]]; then + LOGI "x-ui and xray stopped successfully" + else + LOGE "Panel stop failed, Probably because the stop time exceeds two seconds, Please check the log information later" + fi + fi + + if [[ $# == 0 ]]; then + before_show_menu + fi +} + +restart() { + if [[ $release == "alpine" ]]; then + rc-service x-ui restart + else + systemctl restart x-ui + fi + sleep 2 + check_status + if [[ $? == 0 ]]; then + LOGI "x-ui and xray Restarted successfully" + else + LOGE "Panel restart failed, Probably because it takes longer than two seconds to start, Please check the log information later" + fi + if [[ $# == 0 ]]; then + before_show_menu + fi +} + +status() { + if [[ $release == "alpine" ]]; then + rc-service x-ui status + else + systemctl status x-ui -l + fi + if [[ $# == 0 ]]; then + before_show_menu + fi +} + +enable() { + if [[ $release == "alpine" ]]; then + rc-update add x-ui + else + systemctl enable x-ui + fi + if [[ $? == 0 ]]; then + LOGI "x-ui Set to boot automatically on startup successfully" + else + LOGE "x-ui Failed to set Autostart" + fi + + if [[ $# == 0 ]]; then + before_show_menu + fi +} + +disable() { + if [[ $release == "alpine" ]]; then + rc-update del x-ui + else + systemctl disable x-ui + fi + if [[ $? == 0 ]]; then + LOGI "x-ui Autostart Cancelled successfully" + else + LOGE "x-ui Failed to cancel autostart" + fi + + if [[ $# == 0 ]]; then + before_show_menu + fi +} + +show_log() { + if [[ $release == "alpine" ]]; then + echo -e "${green}\t1.${plain} Debug Log" + echo -e "${green}\t0.${plain} Back to Main Menu" + read -rp "Choose an option: " choice + + case "$choice" in + 0) + show_menu + ;; + 1) + grep -F 'x-ui[' /var/log/messages + if [[ $# == 0 ]]; then + before_show_menu + fi + ;; + *) + echo -e "${red}Invalid option. Please select a valid number.${plain}\n" + show_log + ;; + esac + else + echo -e "${green}\t1.${plain} Debug Log" + echo -e "${green}\t2.${plain} Clear All logs" + echo -e "${green}\t0.${plain} Back to Main Menu" + read -rp "Choose an option: " choice + + case "$choice" in + 0) + show_menu + ;; + 1) + journalctl -u x-ui -e --no-pager -f -p debug + if [[ $# == 0 ]]; then + before_show_menu + fi + ;; + 2) + sudo journalctl --rotate + sudo journalctl --vacuum-time=1s + echo "All Logs cleared." + restart + ;; + *) + echo -e "${red}Invalid option. Please select a valid number.${plain}\n" + show_log + ;; + esac + fi +} diff --git a/lib/settings.sh b/lib/settings.sh new file mode 100644 index 00000000..38ef3da2 --- /dev/null +++ b/lib/settings.sh @@ -0,0 +1,132 @@ +#!/bin/bash +# lib/settings.sh - Panel settings management + +# Include guard +[[ -n "${__X_UI_SETTINGS_INCLUDED:-}" ]] && return 0 +__X_UI_SETTINGS_INCLUDED=1 + +# Source dependencies +source "${LIB_DIR}/common.sh" +source "${LIB_DIR}/service.sh" +source "${LIB_DIR}/ssl.sh" + +reset_user() { + confirm "Are you sure to reset the username and password of the panel?" "n" + if [[ $? != 0 ]]; then + if [[ $# == 0 ]]; then + show_menu + fi + return 0 + fi + + read -rp "Please set the login username [default is a random username]: " config_account + [[ -z $config_account ]] && config_account=$(gen_random_string 10) + read -rp "Please set the login password [default is a random password]: " config_password + [[ -z $config_password ]] && config_password=$(gen_random_string 18) + + read -rp "Do you want to disable currently configured two-factor authentication? (y/n): " twoFactorConfirm + if [[ $twoFactorConfirm != "y" && $twoFactorConfirm != "Y" ]]; then + ${xui_folder}/x-ui setting -username ${config_account} -password ${config_password} -resetTwoFactor false >/dev/null 2>&1 + else + ${xui_folder}/x-ui setting -username ${config_account} -password ${config_password} -resetTwoFactor true >/dev/null 2>&1 + echo -e "Two factor authentication has been disabled." + fi + + echo -e "Panel login username has been reset to: ${green} ${config_account} ${plain}" + echo -e "Panel login password has been reset to: ${green} ${config_password} ${plain}" + echo -e "${green} Please use the new login username and password to access the X-UI panel. Also remember them! ${plain}" + confirm_restart +} + +reset_webbasepath() { + echo -e "${yellow}Resetting Web Base Path${plain}" + + read -rp "Are you sure you want to reset the web base path? (y/n): " confirm + if [[ $confirm != "y" && $confirm != "Y" ]]; then + echo -e "${yellow}Operation canceled.${plain}" + return + fi + + config_webBasePath=$(gen_random_string 18) + + # Apply the new web base path setting + ${xui_folder}/x-ui setting -webBasePath "${config_webBasePath}" >/dev/null 2>&1 + + echo -e "Web base path has been reset to: ${green}${config_webBasePath}${plain}" + echo -e "${green}Please use the new web base path to access the panel.${plain}" + restart +} + +reset_config() { + confirm "Are you sure you want to reset all panel settings, Account data will not be lost, Username and password will not change" "n" + if [[ $? != 0 ]]; then + if [[ $# == 0 ]]; then + show_menu + fi + return 0 + fi + ${xui_folder}/x-ui setting -reset + echo -e "All panel settings have been reset to default." + restart +} + +check_config() { + local info=$(${xui_folder}/x-ui setting -show true) + if [[ $? != 0 ]]; then + LOGE "get current settings error, please check logs" + show_menu + return + fi + LOGI "${info}" + + local existing_webBasePath=$(echo "$info" | grep -Eo 'webBasePath: .+' | awk '{print $2}') + local existing_port=$(echo "$info" | grep -Eo 'port: .+' | awk '{print $2}') + local existing_cert=$(${xui_folder}/x-ui setting -getCert true | grep 'cert:' | awk -F': ' '{print $2}' | tr -d '[:space:]') + local server_ip=$(curl -s --max-time 3 https://api.ipify.org) + if [ -z "$server_ip" ]; then + server_ip=$(curl -s --max-time 3 https://4.ident.me) + fi + + if [[ -n "$existing_cert" ]]; then + local domain=$(basename "$(dirname "$existing_cert")") + + if [[ "$domain" =~ ^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ]]; then + echo -e "${green}Access URL: https://${domain}:${existing_port}${existing_webBasePath}${plain}" + else + echo -e "${green}Access URL: https://${server_ip}:${existing_port}${existing_webBasePath}${plain}" + fi + else + echo -e "${red}⚠ WARNING: No SSL certificate configured!${plain}" + echo -e "${yellow}You can get a Let's Encrypt certificate for your IP address (valid ~6 days, auto-renews).${plain}" + read -rp "Generate SSL certificate for IP now? [y/N]: " gen_ssl + if [[ "$gen_ssl" == "y" || "$gen_ssl" == "Y" ]]; then + stop >/dev/null 2>&1 + ssl_cert_issue_for_ip + if [[ $? -eq 0 ]]; then + echo -e "${green}Access URL: https://${server_ip}:${existing_port}${existing_webBasePath}${plain}" + # ssl_cert_issue_for_ip already restarts the panel, but ensure it's running + start >/dev/null 2>&1 + else + LOGE "IP certificate setup failed." + echo -e "${yellow}You can try again via option 18 (SSL Certificate Management).${plain}" + start >/dev/null 2>&1 + fi + else + echo -e "${yellow}Access URL: http://${server_ip}:${existing_port}${existing_webBasePath}${plain}" + echo -e "${yellow}For security, please configure SSL certificate using option 18 (SSL Certificate Management)${plain}" + fi + fi +} + +set_port() { + echo -n "Enter port number[1-65535]: " + read -r port + if [[ -z "${port}" ]]; then + LOGD "Cancelled" + before_show_menu + else + ${xui_folder}/x-ui setting -port ${port} + echo -e "The port is set, Please restart the panel now, and use the new port ${green}${port}${plain} to access web panel" + confirm_restart + fi +} diff --git a/lib/ssl.sh b/lib/ssl.sh new file mode 100644 index 00000000..5ba2bb19 --- /dev/null +++ b/lib/ssl.sh @@ -0,0 +1,628 @@ +#!/bin/bash +# lib/ssl.sh - SSL certificate management (acme.sh, Let's Encrypt, Cloudflare) + +# Include guard +[[ -n "${__X_UI_SSL_INCLUDED:-}" ]] && return 0 +__X_UI_SSL_INCLUDED=1 + +# Source dependencies +source "${LIB_DIR}/common.sh" +source "${LIB_DIR}/service.sh" + +install_acme() { + # Check if acme.sh is already installed + if command -v ~/.acme.sh/acme.sh &>/dev/null; then + LOGI "acme.sh is already installed." + return 0 + fi + + LOGI "Installing acme.sh..." + cd ~ || return 1 # Ensure you can change to the home directory + + curl -s https://get.acme.sh | sh + if [ $? -ne 0 ]; then + LOGE "Installation of acme.sh failed." + return 1 + else + LOGI "Installation of acme.sh succeeded." + fi + + return 0 +} + +ssl_cert_issue_main() { + echo -e "${green}\t1.${plain} Get SSL (Domain)" + echo -e "${green}\t2.${plain} Revoke" + echo -e "${green}\t3.${plain} Force Renew" + echo -e "${green}\t4.${plain} Show Existing Domains" + echo -e "${green}\t5.${plain} Set Cert paths for the panel" + echo -e "${green}\t6.${plain} Get SSL for IP Address (6-day cert, auto-renews)" + echo -e "${green}\t0.${plain} Back to Main Menu" + + read -rp "Choose an option: " choice + case "$choice" in + 0) + show_menu + ;; + 1) + ssl_cert_issue + ssl_cert_issue_main + ;; + 2) + local domains=$(find /root/cert/ -mindepth 1 -maxdepth 1 -type d -exec basename {} \;) + if [ -z "$domains" ]; then + echo "No certificates found to revoke." + else + echo "Existing domains:" + echo "$domains" + read -rp "Please enter a domain from the list to revoke the certificate: " domain + if echo "$domains" | grep -qw "$domain"; then + ~/.acme.sh/acme.sh --revoke -d ${domain} + LOGI "Certificate revoked for domain: $domain" + else + echo "Invalid domain entered." + fi + fi + ssl_cert_issue_main + ;; + 3) + local domains=$(find /root/cert/ -mindepth 1 -maxdepth 1 -type d -exec basename {} \;) + if [ -z "$domains" ]; then + echo "No certificates found to renew." + else + echo "Existing domains:" + echo "$domains" + read -rp "Please enter a domain from the list to renew the SSL certificate: " domain + if echo "$domains" | grep -qw "$domain"; then + ~/.acme.sh/acme.sh --renew -d ${domain} --force + LOGI "Certificate forcefully renewed for domain: $domain" + else + echo "Invalid domain entered." + fi + fi + ssl_cert_issue_main + ;; + 4) + local domains=$(find /root/cert/ -mindepth 1 -maxdepth 1 -type d -exec basename {} \;) + if [ -z "$domains" ]; then + echo "No certificates found." + else + echo "Existing domains and their paths:" + for domain in $domains; do + local cert_path="/root/cert/${domain}/fullchain.pem" + local key_path="/root/cert/${domain}/privkey.pem" + if [[ -f "${cert_path}" && -f "${key_path}" ]]; then + echo -e "Domain: ${domain}" + echo -e "\tCertificate Path: ${cert_path}" + echo -e "\tPrivate Key Path: ${key_path}" + else + echo -e "Domain: ${domain} - Certificate or Key missing." + fi + done + fi + ssl_cert_issue_main + ;; + 5) + local domains=$(find /root/cert/ -mindepth 1 -maxdepth 1 -type d -exec basename {} \;) + if [ -z "$domains" ]; then + echo "No certificates found." + else + echo "Available domains:" + echo "$domains" + read -rp "Please choose a domain to set the panel paths: " domain + + if echo "$domains" | grep -qw "$domain"; then + local webCertFile="/root/cert/${domain}/fullchain.pem" + local webKeyFile="/root/cert/${domain}/privkey.pem" + + if [[ -f "${webCertFile}" && -f "${webKeyFile}" ]]; then + ${xui_folder}/x-ui cert -webCert "$webCertFile" -webCertKey "$webKeyFile" + echo "Panel paths set for domain: $domain" + echo " - Certificate File: $webCertFile" + echo " - Private Key File: $webKeyFile" + restart + else + echo "Certificate or private key not found for domain: $domain." + fi + else + echo "Invalid domain entered." + fi + fi + ssl_cert_issue_main + ;; + 6) + echo -e "${yellow}Let's Encrypt SSL Certificate for IP Address${plain}" + echo -e "This will obtain a certificate for your server's IP using the shortlived profile." + echo -e "${yellow}Certificate valid for ~6 days, auto-renews via acme.sh cron job.${plain}" + echo -e "${yellow}Port 80 must be open and accessible from the internet.${plain}" + confirm "Do you want to proceed?" "y" + if [[ $? == 0 ]]; then + ssl_cert_issue_for_ip + fi + ssl_cert_issue_main + ;; + + *) + echo -e "${red}Invalid option. Please select a valid number.${plain}\n" + ssl_cert_issue_main + ;; + esac +} + +ssl_cert_issue_for_ip() { + LOGI "Starting automatic SSL certificate generation for server IP..." + LOGI "Using Let's Encrypt shortlived profile (~6 days validity, auto-renews)" + + local existing_webBasePath=$(${xui_folder}/x-ui setting -show true | grep -Eo 'webBasePath: .+' | awk '{print $2}') + local existing_port=$(${xui_folder}/x-ui setting -show true | grep -Eo 'port: .+' | awk '{print $2}') + + # Get server IP + local server_ip=$(curl -s --max-time 3 https://api.ipify.org) + if [ -z "$server_ip" ]; then + server_ip=$(curl -s --max-time 3 https://4.ident.me) + fi + + if [ -z "$server_ip" ]; then + LOGE "Failed to get server IP address" + return 1 + fi + + LOGI "Server IP detected: ${server_ip}" + + # Ask for optional IPv6 + local ipv6_addr="" + read -rp "Do you have an IPv6 address to include? (leave empty to skip): " ipv6_addr + ipv6_addr="${ipv6_addr// /}" # Trim whitespace + + # check for acme.sh first + if ! command -v ~/.acme.sh/acme.sh &>/dev/null; then + LOGI "acme.sh not found, installing..." + install_acme + if [ $? -ne 0 ]; then + LOGE "Failed to install acme.sh" + return 1 + fi + fi + + # install socat + case "${release}" in + ubuntu | debian | armbian) + apt-get update >/dev/null 2>&1 && apt-get install socat -y >/dev/null 2>&1 + ;; + fedora | amzn | virtuozzo | rhel | almalinux | rocky | ol) + dnf -y update >/dev/null 2>&1 && dnf -y install socat >/dev/null 2>&1 + ;; + centos) + if [[ "${VERSION_ID}" =~ ^7 ]]; then + yum -y update >/dev/null 2>&1 && yum -y install socat >/dev/null 2>&1 + else + dnf -y update >/dev/null 2>&1 && dnf -y install socat >/dev/null 2>&1 + fi + ;; + arch | manjaro | parch) + pacman -Sy --noconfirm socat >/dev/null 2>&1 + ;; + opensuse-tumbleweed | opensuse-leap) + zypper refresh >/dev/null 2>&1 && zypper -q install -y socat >/dev/null 2>&1 + ;; + alpine) + apk add socat curl openssl >/dev/null 2>&1 + ;; + *) + LOGW "Unsupported OS for automatic socat installation" + ;; + esac + + # Create certificate directory + certPath="/root/cert/ip" + mkdir -p "$certPath" + + # Build domain arguments + local domain_args="-d ${server_ip}" + if [[ -n "$ipv6_addr" ]] && is_ipv6 "$ipv6_addr"; then + domain_args="${domain_args} -d ${ipv6_addr}" + LOGI "Including IPv6 address: ${ipv6_addr}" + fi + + # Use port 80 for certificate issuance + local WebPort=80 + LOGI "Using port ${WebPort} to issue certificate for IP: ${server_ip}" + LOGI "Make sure port ${WebPort} is open and not in use..." + + # Reload command - restarts panel after renewal + local reloadCmd="systemctl restart x-ui 2>/dev/null || rc-service x-ui restart 2>/dev/null" + + # issue the certificate for IP with shortlived profile + ~/.acme.sh/acme.sh --set-default-ca --server letsencrypt + ~/.acme.sh/acme.sh --issue \ + ${domain_args} \ + --standalone \ + --server letsencrypt \ + --certificate-profile shortlived \ + --days 6 \ + --httpport ${WebPort} \ + --force + + if [ $? -ne 0 ]; then + LOGE "Failed to issue certificate for IP: ${server_ip}" + LOGE "Make sure port ${WebPort} is open and the server is accessible from the internet" + # Cleanup acme.sh data for both IPv4 and IPv6 if specified + rm -rf ~/.acme.sh/${server_ip} 2>/dev/null + [[ -n "$ipv6_addr" ]] && rm -rf ~/.acme.sh/${ipv6_addr} 2>/dev/null + rm -rf ${certPath} 2>/dev/null + return 1 + else + LOGI "Certificate issued successfully for IP: ${server_ip}" + fi + + # Install the certificate + # Note: acme.sh may report "Reload error" and exit non-zero if reloadcmd fails, + # but the cert files are still installed. We check for files instead of exit code. + ~/.acme.sh/acme.sh --installcert -d ${server_ip} \ + --key-file "${certPath}/privkey.pem" \ + --fullchain-file "${certPath}/fullchain.pem" \ + --reloadcmd "${reloadCmd}" 2>&1 || true + + # Verify certificate files exist (don't rely on exit code - reloadcmd failure causes non-zero) + if [[ ! -f "${certPath}/fullchain.pem" || ! -f "${certPath}/privkey.pem" ]]; then + LOGE "Certificate files not found after installation" + # Cleanup acme.sh data for both IPv4 and IPv6 if specified + rm -rf ~/.acme.sh/${server_ip} 2>/dev/null + [[ -n "$ipv6_addr" ]] && rm -rf ~/.acme.sh/${ipv6_addr} 2>/dev/null + rm -rf ${certPath} 2>/dev/null + return 1 + fi + + LOGI "Certificate files installed successfully" + + # enable auto-renew + ~/.acme.sh/acme.sh --upgrade --auto-upgrade >/dev/null 2>&1 + chmod 600 $certPath/privkey.pem 2>/dev/null + chmod 644 $certPath/fullchain.pem 2>/dev/null + + # Set certificate paths for the panel + local webCertFile="${certPath}/fullchain.pem" + local webKeyFile="${certPath}/privkey.pem" + + if [[ -f "$webCertFile" && -f "$webKeyFile" ]]; then + ${xui_folder}/x-ui cert -webCert "$webCertFile" -webCertKey "$webKeyFile" + LOGI "Certificate configured for panel" + LOGI " - Certificate File: $webCertFile" + LOGI " - Private Key File: $webKeyFile" + LOGI " - Validity: ~6 days (auto-renews via acme.sh cron)" + echo -e "${green}Access URL: https://${server_ip}:${existing_port}${existing_webBasePath}${plain}" + LOGI "Panel will restart to apply SSL certificate..." + restart + return 0 + else + LOGE "Certificate files not found after installation" + return 1 + fi +} + +ssl_cert_issue() { + local existing_webBasePath=$(${xui_folder}/x-ui setting -show true | grep -Eo 'webBasePath: .+' | awk '{print $2}') + local existing_port=$(${xui_folder}/x-ui setting -show true | grep -Eo 'port: .+' | awk '{print $2}') + # check for acme.sh first + if ! command -v ~/.acme.sh/acme.sh &>/dev/null; then + echo "acme.sh could not be found. we will install it" + install_acme + if [ $? -ne 0 ]; then + LOGE "install acme failed, please check logs" + exit 1 + fi + fi + + # install socat + case "${release}" in + ubuntu | debian | armbian) + apt-get update >/dev/null 2>&1 && apt-get install socat -y >/dev/null 2>&1 + ;; + fedora | amzn | virtuozzo | rhel | almalinux | rocky | ol) + dnf -y update >/dev/null 2>&1 && dnf -y install socat >/dev/null 2>&1 + ;; + centos) + if [[ "${VERSION_ID}" =~ ^7 ]]; then + yum -y update >/dev/null 2>&1 && yum -y install socat >/dev/null 2>&1 + else + dnf -y update >/dev/null 2>&1 && dnf -y install socat >/dev/null 2>&1 + fi + ;; + arch | manjaro | parch) + pacman -Sy --noconfirm socat >/dev/null 2>&1 + ;; + opensuse-tumbleweed | opensuse-leap) + zypper refresh >/dev/null 2>&1 && zypper -q install -y socat >/dev/null 2>&1 + ;; + alpine) + apk add socat curl openssl >/dev/null 2>&1 + ;; + *) + LOGW "Unsupported OS for automatic socat installation" + ;; + esac + if [ $? -ne 0 ]; then + LOGE "install socat failed, please check logs" + exit 1 + else + LOGI "install socat succeed..." + fi + + # get the domain here, and we need to verify it + local domain="" + while true; do + read -rp "Please enter your domain name: " domain + domain="${domain// /}" # Trim whitespace + + if [[ -z "$domain" ]]; then + LOGE "Domain name cannot be empty. Please try again." + continue + fi + + if ! is_domain "$domain"; then + LOGE "Invalid domain format: ${domain}. Please enter a valid domain name." + continue + fi + + break + done + LOGD "Your domain is: ${domain}, checking it..." + + # check if there already exists a certificate + local currentCert=$(~/.acme.sh/acme.sh --list | tail -1 | awk '{print $1}') + if [ "${currentCert}" == "${domain}" ]; then + local certInfo=$(~/.acme.sh/acme.sh --list) + LOGE "System already has certificates for this domain. Cannot issue again. Current certificate details:" + LOGI "$certInfo" + exit 1 + else + LOGI "Your domain is ready for issuing certificates now..." + fi + + # create a directory for the certificate + certPath="/root/cert/${domain}" + if [ ! -d "$certPath" ]; then + mkdir -p "$certPath" + else + rm -rf "$certPath" + mkdir -p "$certPath" + fi + + # get the port number for the standalone server + local WebPort=80 + read -rp "Please choose which port to use (default is 80): " WebPort + if [[ ${WebPort} -gt 65535 || ${WebPort} -lt 1 ]]; then + LOGE "Your input ${WebPort} is invalid, will use default port 80." + WebPort=80 + fi + LOGI "Will use port: ${WebPort} to issue certificates. Please make sure this port is open." + + # issue the certificate + ~/.acme.sh/acme.sh --set-default-ca --server letsencrypt + ~/.acme.sh/acme.sh --issue -d ${domain} --listen-v6 --standalone --httpport ${WebPort} --force + if [ $? -ne 0 ]; then + LOGE "Issuing certificate failed, please check logs." + rm -rf ~/.acme.sh/${domain} + exit 1 + else + LOGE "Issuing certificate succeeded, installing certificates..." + fi + + reloadCmd="x-ui restart" + + LOGI "Default --reloadcmd for ACME is: ${yellow}x-ui restart" + LOGI "This command will run on every certificate issue and renew." + read -rp "Would you like to modify --reloadcmd for ACME? (y/n): " setReloadcmd + if [[ "$setReloadcmd" == "y" || "$setReloadcmd" == "Y" ]]; then + echo -e "\n${green}\t1.${plain} Preset: systemctl reload nginx ; x-ui restart" + echo -e "${green}\t2.${plain} Input your own command" + echo -e "${green}\t0.${plain} Keep default reloadcmd" + read -rp "Choose an option: " choice + case "$choice" in + 1) + LOGI "Reloadcmd is: systemctl reload nginx ; x-ui restart" + reloadCmd="systemctl reload nginx ; x-ui restart" + ;; + 2) + LOGD "It's recommended to put x-ui restart at the end, so it won't raise an error if other services fails" + read -rp "Please enter your reloadcmd (example: systemctl reload nginx ; x-ui restart): " reloadCmd + LOGI "Your reloadcmd is: ${reloadCmd}" + ;; + *) + LOGI "Keep default reloadcmd" + ;; + esac + fi + + # install the certificate + ~/.acme.sh/acme.sh --installcert -d ${domain} \ + --key-file /root/cert/${domain}/privkey.pem \ + --fullchain-file /root/cert/${domain}/fullchain.pem --reloadcmd "${reloadCmd}" + + if [ $? -ne 0 ]; then + LOGE "Installing certificate failed, exiting." + rm -rf ~/.acme.sh/${domain} + exit 1 + else + LOGI "Installing certificate succeeded, enabling auto renew..." + fi + + # enable auto-renew + ~/.acme.sh/acme.sh --upgrade --auto-upgrade + if [ $? -ne 0 ]; then + LOGE "Auto renew failed, certificate details:" + ls -lah cert/* + chmod 600 $certPath/privkey.pem + chmod 644 $certPath/fullchain.pem + exit 1 + else + LOGI "Auto renew succeeded, certificate details:" + ls -lah cert/* + chmod 600 $certPath/privkey.pem + chmod 644 $certPath/fullchain.pem + fi + + # Prompt user to set panel paths after successful certificate installation + read -rp "Would you like to set this certificate for the panel? (y/n): " setPanel + if [[ "$setPanel" == "y" || "$setPanel" == "Y" ]]; then + local webCertFile="/root/cert/${domain}/fullchain.pem" + local webKeyFile="/root/cert/${domain}/privkey.pem" + + if [[ -f "$webCertFile" && -f "$webKeyFile" ]]; then + ${xui_folder}/x-ui cert -webCert "$webCertFile" -webCertKey "$webKeyFile" + LOGI "Panel paths set for domain: $domain" + LOGI " - Certificate File: $webCertFile" + LOGI " - Private Key File: $webKeyFile" + echo -e "${green}Access URL: https://${domain}:${existing_port}${existing_webBasePath}${plain}" + restart + else + LOGE "Error: Certificate or private key file not found for domain: $domain." + fi + else + LOGI "Skipping panel path setting." + fi +} + +ssl_cert_issue_CF() { + local existing_webBasePath=$(${xui_folder}/x-ui setting -show true | grep -Eo 'webBasePath: .+' | awk '{print $2}') + local existing_port=$(${xui_folder}/x-ui setting -show true | grep -Eo 'port: .+' | awk '{print $2}') + LOGI "****** Instructions for Use ******" + LOGI "Follow the steps below to complete the process:" + LOGI "1. Cloudflare Registered E-mail." + LOGI "2. Cloudflare Global API Key." + LOGI "3. The Domain Name." + LOGI "4. Once the certificate is issued, you will be prompted to set the certificate for the panel (optional)." + LOGI "5. The script also supports automatic renewal of the SSL certificate after installation." + + confirm "Do you confirm the information and wish to proceed? [y/n]" "y" + + if [ $? -eq 0 ]; then + # Check for acme.sh first + if ! command -v ~/.acme.sh/acme.sh &>/dev/null; then + echo "acme.sh could not be found. We will install it." + install_acme + if [ $? -ne 0 ]; then + LOGE "Install acme failed, please check logs." + exit 1 + fi + fi + + CF_Domain="" + + LOGD "Please set a domain name:" + read -rp "Input your domain here: " CF_Domain + LOGD "Your domain name is set to: ${CF_Domain}" + + # Set up Cloudflare API details + CF_GlobalKey="" + CF_AccountEmail="" + LOGD "Please set the API key:" + read -rp "Input your key here: " CF_GlobalKey + LOGD "Your API key is: ${CF_GlobalKey}" + + LOGD "Please set up registered email:" + read -rp "Input your email here: " CF_AccountEmail + LOGD "Your registered email address is: ${CF_AccountEmail}" + + # Set the default CA to Let's Encrypt + ~/.acme.sh/acme.sh --set-default-ca --server letsencrypt + if [ $? -ne 0 ]; then + LOGE "Default CA, Let'sEncrypt fail, script exiting..." + exit 1 + fi + + export CF_Key="${CF_GlobalKey}" + export CF_Email="${CF_AccountEmail}" + + # Issue the certificate using Cloudflare DNS + ~/.acme.sh/acme.sh --issue --dns dns_cf -d ${CF_Domain} -d *.${CF_Domain} --log --force + if [ $? -ne 0 ]; then + LOGE "Certificate issuance failed, script exiting..." + exit 1 + else + LOGI "Certificate issued successfully, Installing..." + fi + + # Install the certificate + certPath="/root/cert/${CF_Domain}" + if [ -d "$certPath" ]; then + rm -rf ${certPath} + fi + + mkdir -p ${certPath} + if [ $? -ne 0 ]; then + LOGE "Failed to create directory: ${certPath}" + exit 1 + fi + + reloadCmd="x-ui restart" + + LOGI "Default --reloadcmd for ACME is: ${yellow}x-ui restart" + LOGI "This command will run on every certificate issue and renew." + read -rp "Would you like to modify --reloadcmd for ACME? (y/n): " setReloadcmd + if [[ "$setReloadcmd" == "y" || "$setReloadcmd" == "Y" ]]; then + echo -e "\n${green}\t1.${plain} Preset: systemctl reload nginx ; x-ui restart" + echo -e "${green}\t2.${plain} Input your own command" + echo -e "${green}\t0.${plain} Keep default reloadcmd" + read -rp "Choose an option: " choice + case "$choice" in + 1) + LOGI "Reloadcmd is: systemctl reload nginx ; x-ui restart" + reloadCmd="systemctl reload nginx ; x-ui restart" + ;; + 2) + LOGD "It's recommended to put x-ui restart at the end, so it won't raise an error if other services fails" + read -rp "Please enter your reloadcmd (example: systemctl reload nginx ; x-ui restart): " reloadCmd + LOGI "Your reloadcmd is: ${reloadCmd}" + ;; + *) + LOGI "Keep default reloadcmd" + ;; + esac + fi + ~/.acme.sh/acme.sh --installcert -d ${CF_Domain} -d *.${CF_Domain} \ + --key-file ${certPath}/privkey.pem \ + --fullchain-file ${certPath}/fullchain.pem --reloadcmd "${reloadCmd}" + + if [ $? -ne 0 ]; then + LOGE "Certificate installation failed, script exiting..." + exit 1 + else + LOGI "Certificate installed successfully, Turning on automatic updates..." + fi + + # Enable auto-update + ~/.acme.sh/acme.sh --upgrade --auto-upgrade + if [ $? -ne 0 ]; then + LOGE "Auto update setup failed, script exiting..." + exit 1 + else + LOGI "The certificate is installed and auto-renewal is turned on. Specific information is as follows:" + ls -lah ${certPath}/* + chmod 600 ${certPath}/privkey.pem + chmod 644 ${certPath}/fullchain.pem + fi + + # Prompt user to set panel paths after successful certificate installation + read -rp "Would you like to set this certificate for the panel? (y/n): " setPanel + if [[ "$setPanel" == "y" || "$setPanel" == "Y" ]]; then + local webCertFile="${certPath}/fullchain.pem" + local webKeyFile="${certPath}/privkey.pem" + + if [[ -f "$webCertFile" && -f "$webKeyFile" ]]; then + ${xui_folder}/x-ui cert -webCert "$webCertFile" -webCertKey "$webKeyFile" + LOGI "Panel paths set for domain: $CF_Domain" + LOGI " - Certificate File: $webCertFile" + LOGI " - Private Key File: $webKeyFile" + echo -e "${green}Access URL: https://${CF_Domain}:${existing_port}${existing_webBasePath}${plain}" + restart + else + LOGE "Error: Certificate or private key file not found for domain: $CF_Domain." + fi + else + LOGI "Skipping panel path setting." + fi + else + show_menu + fi +} diff --git a/x-ui.sh b/x-ui.sh index bdb48817..340d456a 100644 --- a/x-ui.sh +++ b/x-ui.sh @@ -1,80 +1,37 @@ #!/bin/bash +# x-ui.sh - 3X-UI Panel Management Script (Entrypoint) +# This is the main entrypoint that sources modular library files -red='\033[0;31m' -green='\033[0;32m' -blue='\033[0;34m' -yellow='\033[0;33m' -plain='\033[0m' +# Resolve the actual script location (handles symlinks) +#SCRIPT_PATH="$(readlink -f "$0" 2>/dev/null || realpath "$0" 2>/dev/null || echo "$0")" +#SCRIPT_DIR="$(dirname "$SCRIPT_PATH")" +#LIB_DIR="${SCRIPT_DIR}/lib" +# +## Fallback for installed location +#[[ ! -d "$LIB_DIR" ]] && LIB_DIR="/usr/local/x-ui/lib" -#Add some basic function here -function LOGD() { - echo -e "${yellow}[DEG] $* ${plain}" -} +LIB_DIR="${LIB_DIR:=/usr/local/x-ui/lib}" +# Export LIB_DIR for use by library files +export LIB_DIR -function LOGE() { - echo -e "${red}[ERR] $* ${plain}" -} +# Source all library files +source "${LIB_DIR}/common.sh" +source "${LIB_DIR}/service.sh" +source "${LIB_DIR}/ssl.sh" +source "${LIB_DIR}/settings.sh" +source "${LIB_DIR}/firewall.sh" +source "${LIB_DIR}/iplimit.sh" +source "${LIB_DIR}/bbr.sh" +source "${LIB_DIR}/geo.sh" +source "${LIB_DIR}/install.sh" +source "${LIB_DIR}/extras.sh" -function LOGI() { - echo -e "${green}[INF] $* ${plain}" -} - -# Simple helpers for domain/IP validation -is_ipv4() { - [[ "$1" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]] && return 0 || return 1 -} -is_ipv6() { - [[ "$1" =~ : ]] && return 0 || return 1 -} -is_ip() { - is_ipv4 "$1" || is_ipv6 "$1" -} -is_domain() { - [[ "$1" =~ ^([A-Za-z0-9](-*[A-Za-z0-9])*\.)+[A-Za-z]{2,}$ ]] && return 0 || return 1 -} - -# check root -[[ $EUID -ne 0 ]] && LOGE "ERROR: You must be root to run this script! \n" && exit 1 - -# Check OS and set release variable -if [[ -f /etc/os-release ]]; then - source /etc/os-release - release=$ID -elif [[ -f /usr/lib/os-release ]]; then - source /usr/lib/os-release - release=$ID -else - echo "Failed to check the system OS, please contact the author!" >&2 - exit 1 -fi +# Print OS info echo "The OS release is: $release" -os_version="" -os_version=$(grep "^VERSION_ID" /etc/os-release | cut -d '=' -f2 | tr -d '"' | tr -d '.') - -# Declare Variables -xui_folder="${XUI_MAIN_FOLDER:=/usr/local/x-ui}" -xui_service="${XUI_SERVICE:=/etc/systemd/system}" -log_folder="${XUI_LOG_FOLDER:=/var/log/x-ui}" -mkdir -p "${log_folder}" -iplimit_log_path="${log_folder}/3xipl.log" -iplimit_banned_log_path="${log_folder}/3xipl-banned.log" - -confirm() { - if [[ $# > 1 ]]; then - echo && read -rp "$1 [Default $2]: " temp - if [[ "${temp}" == "" ]]; then - temp=$2 - fi - else - read -rp "$1 [y/n]: " temp - fi - if [[ "${temp}" == "y" || "${temp}" == "Y" ]]; then - return 0 - else - return 1 - fi -} +#============================================================================= +# Menu Functions (kept in entrypoint to avoid circular dependencies) +#============================================================================= confirm_restart() { confirm "Restart the panel, Attention: Restarting the panel will also restart xray" "y" @@ -90,1987 +47,6 @@ before_show_menu() { show_menu } -install() { - bash <(curl -Ls https://raw.githubusercontent.com/MHSanaei/3x-ui/main/install.sh) - if [[ $? == 0 ]]; then - if [[ $# == 0 ]]; then - start - else - start 0 - fi - fi -} - -update() { - confirm "This function will update all x-ui components to the latest version, and the data will not be lost. Do you want to continue?" "y" - if [[ $? != 0 ]]; then - LOGE "Cancelled" - if [[ $# == 0 ]]; then - before_show_menu - fi - return 0 - fi - bash <(curl -Ls https://raw.githubusercontent.com/MHSanaei/3x-ui/main/update.sh) - if [[ $? == 0 ]]; then - LOGI "Update is complete, Panel has automatically restarted " - before_show_menu - fi -} - -update_menu() { - echo -e "${yellow}Updating Menu${plain}" - confirm "This function will update the menu to the latest changes." "y" - if [[ $? != 0 ]]; then - LOGE "Cancelled" - if [[ $# == 0 ]]; then - before_show_menu - fi - return 0 - fi - - curl -fLRo /usr/bin/x-ui https://raw.githubusercontent.com/MHSanaei/3x-ui/main/x-ui.sh - chmod +x ${xui_folder}/x-ui.sh - chmod +x /usr/bin/x-ui - - if [[ $? == 0 ]]; then - echo -e "${green}Update successful. The panel has automatically restarted.${plain}" - exit 0 - else - echo -e "${red}Failed to update the menu.${plain}" - return 1 - fi -} - -legacy_version() { - echo -n "Enter the panel version (like 2.4.0):" - read -r tag_version - - if [ -z "$tag_version" ]; then - echo "Panel version cannot be empty. Exiting." - exit 1 - fi - # Use the entered panel version in the download link - install_command="bash <(curl -Ls "https://raw.githubusercontent.com/mhsanaei/3x-ui/v$tag_version/install.sh") v$tag_version" - - echo "Downloading and installing panel version $tag_version..." - eval $install_command -} - -# Function to handle the deletion of the script file -delete_script() { - rm "$0" # Remove the script file itself - exit 1 -} - -uninstall() { - confirm "Are you sure you want to uninstall the panel? xray will also uninstalled!" "n" - if [[ $? != 0 ]]; then - if [[ $# == 0 ]]; then - show_menu - fi - return 0 - fi - - if [[ $release == "alpine" ]]; then - rc-service x-ui stop - rc-update del x-ui - rm /etc/init.d/x-ui -f - else - systemctl stop x-ui - systemctl disable x-ui - rm ${xui_service}/x-ui.service -f - systemctl daemon-reload - systemctl reset-failed - fi - - rm /etc/x-ui/ -rf - rm ${xui_folder}/ -rf - - echo "" - echo -e "Uninstalled Successfully.\n" - echo "If you need to install this panel again, you can use below command:" - echo -e "${green}bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)${plain}" - echo "" - # Trap the SIGTERM signal - trap delete_script SIGTERM - delete_script -} - -reset_user() { - confirm "Are you sure to reset the username and password of the panel?" "n" - if [[ $? != 0 ]]; then - if [[ $# == 0 ]]; then - show_menu - fi - return 0 - fi - - read -rp "Please set the login username [default is a random username]: " config_account - [[ -z $config_account ]] && config_account=$(gen_random_string 10) - read -rp "Please set the login password [default is a random password]: " config_password - [[ -z $config_password ]] && config_password=$(gen_random_string 18) - - read -rp "Do you want to disable currently configured two-factor authentication? (y/n): " twoFactorConfirm - if [[ $twoFactorConfirm != "y" && $twoFactorConfirm != "Y" ]]; then - ${xui_folder}/x-ui setting -username ${config_account} -password ${config_password} -resetTwoFactor false >/dev/null 2>&1 - else - ${xui_folder}/x-ui setting -username ${config_account} -password ${config_password} -resetTwoFactor true >/dev/null 2>&1 - echo -e "Two factor authentication has been disabled." - fi - - echo -e "Panel login username has been reset to: ${green} ${config_account} ${plain}" - echo -e "Panel login password has been reset to: ${green} ${config_password} ${plain}" - echo -e "${green} Please use the new login username and password to access the X-UI panel. Also remember them! ${plain}" - confirm_restart -} - -gen_random_string() { - local length="$1" - local random_string=$(LC_ALL=C tr -dc 'a-zA-Z0-9' /dev/null 2>&1 - - echo -e "Web base path has been reset to: ${green}${config_webBasePath}${plain}" - echo -e "${green}Please use the new web base path to access the panel.${plain}" - restart -} - -reset_config() { - confirm "Are you sure you want to reset all panel settings, Account data will not be lost, Username and password will not change" "n" - if [[ $? != 0 ]]; then - if [[ $# == 0 ]]; then - show_menu - fi - return 0 - fi - ${xui_folder}/x-ui setting -reset - echo -e "All panel settings have been reset to default." - restart -} - -check_config() { - local info=$(${xui_folder}/x-ui setting -show true) - if [[ $? != 0 ]]; then - LOGE "get current settings error, please check logs" - show_menu - return - fi - LOGI "${info}" - - local existing_webBasePath=$(echo "$info" | grep -Eo 'webBasePath: .+' | awk '{print $2}') - local existing_port=$(echo "$info" | grep -Eo 'port: .+' | awk '{print $2}') - local existing_cert=$(${xui_folder}/x-ui setting -getCert true | grep 'cert:' | awk -F': ' '{print $2}' | tr -d '[:space:]') - local server_ip=$(curl -s --max-time 3 https://api.ipify.org) - if [ -z "$server_ip" ]; then - server_ip=$(curl -s --max-time 3 https://4.ident.me) - fi - - if [[ -n "$existing_cert" ]]; then - local domain=$(basename "$(dirname "$existing_cert")") - - if [[ "$domain" =~ ^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ]]; then - echo -e "${green}Access URL: https://${domain}:${existing_port}${existing_webBasePath}${plain}" - else - echo -e "${green}Access URL: https://${server_ip}:${existing_port}${existing_webBasePath}${plain}" - fi - else - echo -e "${red}⚠ WARNING: No SSL certificate configured!${plain}" - echo -e "${yellow}You can get a Let's Encrypt certificate for your IP address (valid ~6 days, auto-renews).${plain}" - read -rp "Generate SSL certificate for IP now? [y/N]: " gen_ssl - if [[ "$gen_ssl" == "y" || "$gen_ssl" == "Y" ]]; then - stop >/dev/null 2>&1 - ssl_cert_issue_for_ip - if [[ $? -eq 0 ]]; then - echo -e "${green}Access URL: https://${server_ip}:${existing_port}${existing_webBasePath}${plain}" - # ssl_cert_issue_for_ip already restarts the panel, but ensure it's running - start >/dev/null 2>&1 - else - LOGE "IP certificate setup failed." - echo -e "${yellow}You can try again via option 18 (SSL Certificate Management).${plain}" - start >/dev/null 2>&1 - fi - else - echo -e "${yellow}Access URL: http://${server_ip}:${existing_port}${existing_webBasePath}${plain}" - echo -e "${yellow}For security, please configure SSL certificate using option 18 (SSL Certificate Management)${plain}" - fi - fi -} - -set_port() { - echo -n "Enter port number[1-65535]: " - read -r port - if [[ -z "${port}" ]]; then - LOGD "Cancelled" - before_show_menu - else - ${xui_folder}/x-ui setting -port ${port} - echo -e "The port is set, Please restart the panel now, and use the new port ${green}${port}${plain} to access web panel" - confirm_restart - fi -} - -start() { - check_status - if [[ $? == 0 ]]; then - echo "" - LOGI "Panel is running, No need to start again, If you need to restart, please select restart" - else - if [[ $release == "alpine" ]]; then - rc-service x-ui start - else - systemctl start x-ui - fi - sleep 2 - check_status - if [[ $? == 0 ]]; then - LOGI "x-ui Started Successfully" - else - LOGE "panel Failed to start, Probably because it takes longer than two seconds to start, Please check the log information later" - fi - fi - - if [[ $# == 0 ]]; then - before_show_menu - fi -} - -stop() { - check_status - if [[ $? == 1 ]]; then - echo "" - LOGI "Panel stopped, No need to stop again!" - else - if [[ $release == "alpine" ]]; then - rc-service x-ui stop - else - systemctl stop x-ui - fi - sleep 2 - check_status - if [[ $? == 1 ]]; then - LOGI "x-ui and xray stopped successfully" - else - LOGE "Panel stop failed, Probably because the stop time exceeds two seconds, Please check the log information later" - fi - fi - - if [[ $# == 0 ]]; then - before_show_menu - fi -} - -restart() { - if [[ $release == "alpine" ]]; then - rc-service x-ui restart - else - systemctl restart x-ui - fi - sleep 2 - check_status - if [[ $? == 0 ]]; then - LOGI "x-ui and xray Restarted successfully" - else - LOGE "Panel restart failed, Probably because it takes longer than two seconds to start, Please check the log information later" - fi - if [[ $# == 0 ]]; then - before_show_menu - fi -} - -status() { - if [[ $release == "alpine" ]]; then - rc-service x-ui status - else - systemctl status x-ui -l - fi - if [[ $# == 0 ]]; then - before_show_menu - fi -} - -enable() { - if [[ $release == "alpine" ]]; then - rc-update add x-ui - else - systemctl enable x-ui - fi - if [[ $? == 0 ]]; then - LOGI "x-ui Set to boot automatically on startup successfully" - else - LOGE "x-ui Failed to set Autostart" - fi - - if [[ $# == 0 ]]; then - before_show_menu - fi -} - -disable() { - if [[ $release == "alpine" ]]; then - rc-update del x-ui - else - systemctl disable x-ui - fi - if [[ $? == 0 ]]; then - LOGI "x-ui Autostart Cancelled successfully" - else - LOGE "x-ui Failed to cancel autostart" - fi - - if [[ $# == 0 ]]; then - before_show_menu - fi -} - -show_log() { - if [[ $release == "alpine" ]]; then - echo -e "${green}\t1.${plain} Debug Log" - echo -e "${green}\t0.${plain} Back to Main Menu" - read -rp "Choose an option: " choice - - case "$choice" in - 0) - show_menu - ;; - 1) - grep -F 'x-ui[' /var/log/messages - if [[ $# == 0 ]]; then - before_show_menu - fi - ;; - *) - echo -e "${red}Invalid option. Please select a valid number.${plain}\n" - show_log - ;; - esac - else - echo -e "${green}\t1.${plain} Debug Log" - echo -e "${green}\t2.${plain} Clear All logs" - echo -e "${green}\t0.${plain} Back to Main Menu" - read -rp "Choose an option: " choice - - case "$choice" in - 0) - show_menu - ;; - 1) - journalctl -u x-ui -e --no-pager -f -p debug - if [[ $# == 0 ]]; then - before_show_menu - fi - ;; - 2) - sudo journalctl --rotate - sudo journalctl --vacuum-time=1s - echo "All Logs cleared." - restart - ;; - *) - echo -e "${red}Invalid option. Please select a valid number.${plain}\n" - show_log - ;; - esac - fi -} - -bbr_menu() { - echo -e "${green}\t1.${plain} Enable BBR" - echo -e "${green}\t2.${plain} Disable BBR" - echo -e "${green}\t0.${plain} Back to Main Menu" - read -rp "Choose an option: " choice - case "$choice" in - 0) - show_menu - ;; - 1) - enable_bbr - bbr_menu - ;; - 2) - disable_bbr - bbr_menu - ;; - *) - echo -e "${red}Invalid option. Please select a valid number.${plain}\n" - bbr_menu - ;; - esac -} - -disable_bbr() { - - if ! grep -q "net.core.default_qdisc=fq" /etc/sysctl.conf || ! grep -q "net.ipv4.tcp_congestion_control=bbr" /etc/sysctl.conf; then - echo -e "${yellow}BBR is not currently enabled.${plain}" - before_show_menu - fi - - # Replace BBR with CUBIC configurations - sed -i 's/net.core.default_qdisc=fq/net.core.default_qdisc=pfifo_fast/' /etc/sysctl.conf - sed -i 's/net.ipv4.tcp_congestion_control=bbr/net.ipv4.tcp_congestion_control=cubic/' /etc/sysctl.conf - - # Apply changes - sysctl -p - - # Verify that BBR is replaced with CUBIC - if [[ $(sysctl net.ipv4.tcp_congestion_control | awk '{print $3}') == "cubic" ]]; then - echo -e "${green}BBR has been replaced with CUBIC successfully.${plain}" - else - echo -e "${red}Failed to replace BBR with CUBIC. Please check your system configuration.${plain}" - fi -} - -enable_bbr() { - if grep -q "net.core.default_qdisc=fq" /etc/sysctl.conf && grep -q "net.ipv4.tcp_congestion_control=bbr" /etc/sysctl.conf; then - echo -e "${green}BBR is already enabled!${plain}" - before_show_menu - fi - - # Enable BBR - echo "net.core.default_qdisc=fq" | tee -a /etc/sysctl.conf - echo "net.ipv4.tcp_congestion_control=bbr" | tee -a /etc/sysctl.conf - - # Apply changes - sysctl -p - - # Verify that BBR is enabled - if [[ $(sysctl net.ipv4.tcp_congestion_control | awk '{print $3}') == "bbr" ]]; then - echo -e "${green}BBR has been enabled successfully.${plain}" - else - echo -e "${red}Failed to enable BBR. Please check your system configuration.${plain}" - fi -} - -update_shell() { - curl -fLRo /usr/bin/x-ui -z /usr/bin/x-ui https://github.com/MHSanaei/3x-ui/raw/main/x-ui.sh - if [[ $? != 0 ]]; then - echo "" - LOGE "Failed to download script, Please check whether the machine can connect Github" - before_show_menu - else - chmod +x /usr/bin/x-ui - LOGI "Upgrade script succeeded, Please rerun the script" - before_show_menu - fi -} - -# 0: running, 1: not running, 2: not installed -check_status() { - if [[ $release == "alpine" ]]; then - if [[ ! -f /etc/init.d/x-ui ]]; then - return 2 - fi - if [[ $(rc-service x-ui status | grep -F 'status: started' -c) == 1 ]]; then - return 0 - else - return 1 - fi - else - if [[ ! -f ${xui_service}/x-ui.service ]]; then - return 2 - fi - temp=$(systemctl status x-ui | grep Active | awk '{print $3}' | cut -d "(" -f2 | cut -d ")" -f1) - if [[ "${temp}" == "running" ]]; then - return 0 - else - return 1 - fi - fi -} - -check_enabled() { - if [[ $release == "alpine" ]]; then - if [[ $(rc-update show | grep -F 'x-ui' | grep default -c) == 1 ]]; then - return 0 - else - return 1 - fi - else - temp=$(systemctl is-enabled x-ui) - if [[ "${temp}" == "enabled" ]]; then - return 0 - else - return 1 - fi - fi -} - -check_uninstall() { - check_status - if [[ $? != 2 ]]; then - echo "" - LOGE "Panel installed, Please do not reinstall" - if [[ $# == 0 ]]; then - before_show_menu - fi - return 1 - else - return 0 - fi -} - -check_install() { - check_status - if [[ $? == 2 ]]; then - echo "" - LOGE "Please install the panel first" - if [[ $# == 0 ]]; then - before_show_menu - fi - return 1 - else - return 0 - fi -} - -show_status() { - check_status - case $? in - 0) - echo -e "Panel state: ${green}Running${plain}" - show_enable_status - ;; - 1) - echo -e "Panel state: ${yellow}Not Running${plain}" - show_enable_status - ;; - 2) - echo -e "Panel state: ${red}Not Installed${plain}" - ;; - esac - show_xray_status -} - -show_enable_status() { - check_enabled - if [[ $? == 0 ]]; then - echo -e "Start automatically: ${green}Yes${plain}" - else - echo -e "Start automatically: ${red}No${plain}" - fi -} - -check_xray_status() { - count=$(ps -ef | grep "xray-linux" | grep -v "grep" | wc -l) - if [[ count -ne 0 ]]; then - return 0 - else - return 1 - fi -} - -show_xray_status() { - check_xray_status - if [[ $? == 0 ]]; then - echo -e "xray state: ${green}Running${plain}" - else - echo -e "xray state: ${red}Not Running${plain}" - fi -} - -firewall_menu() { - echo -e "${green}\t1.${plain} ${green}Install${plain} Firewall" - echo -e "${green}\t2.${plain} Port List [numbered]" - echo -e "${green}\t3.${plain} ${green}Open${plain} Ports" - echo -e "${green}\t4.${plain} ${red}Delete${plain} Ports from List" - echo -e "${green}\t5.${plain} ${green}Enable${plain} Firewall" - echo -e "${green}\t6.${plain} ${red}Disable${plain} Firewall" - echo -e "${green}\t7.${plain} Firewall Status" - echo -e "${green}\t0.${plain} Back to Main Menu" - read -rp "Choose an option: " choice - case "$choice" in - 0) - show_menu - ;; - 1) - install_firewall - firewall_menu - ;; - 2) - ufw status numbered - firewall_menu - ;; - 3) - open_ports - firewall_menu - ;; - 4) - delete_ports - firewall_menu - ;; - 5) - ufw enable - firewall_menu - ;; - 6) - ufw disable - firewall_menu - ;; - 7) - ufw status verbose - firewall_menu - ;; - *) - echo -e "${red}Invalid option. Please select a valid number.${plain}\n" - firewall_menu - ;; - esac -} - -install_firewall() { - if ! command -v ufw &>/dev/null; then - echo "ufw firewall is not installed. Installing now..." - apt-get update - apt-get install -y ufw - else - echo "ufw firewall is already installed" - fi - - # Check if the firewall is inactive - if ufw status | grep -q "Status: active"; then - echo "Firewall is already active" - else - echo "Activating firewall..." - # Open the necessary ports - ufw allow ssh - ufw allow http - ufw allow https - ufw allow 2053/tcp #webPort - ufw allow 2096/tcp #subport - - # Enable the firewall - ufw --force enable - fi -} - -open_ports() { - # Prompt the user to enter the ports they want to open - read -rp "Enter the ports you want to open (e.g. 80,443,2053 or range 400-500): " ports - - # Check if the input is valid - if ! [[ $ports =~ ^([0-9]+|[0-9]+-[0-9]+)(,([0-9]+|[0-9]+-[0-9]+))*$ ]]; then - echo "Error: Invalid input. Please enter a comma-separated list of ports or a range of ports (e.g. 80,443,2053 or 400-500)." >&2 - exit 1 - fi - - # Open the specified ports using ufw - IFS=',' read -ra PORT_LIST <<<"$ports" - for port in "${PORT_LIST[@]}"; do - if [[ $port == *-* ]]; then - # Split the range into start and end ports - start_port=$(echo $port | cut -d'-' -f1) - end_port=$(echo $port | cut -d'-' -f2) - # Open the port range - ufw allow $start_port:$end_port/tcp - ufw allow $start_port:$end_port/udp - else - # Open the single port - ufw allow "$port" - fi - done - - # Confirm that the ports are opened - echo "Opened the specified ports:" - for port in "${PORT_LIST[@]}"; do - if [[ $port == *-* ]]; then - start_port=$(echo $port | cut -d'-' -f1) - end_port=$(echo $port | cut -d'-' -f2) - # Check if the port range has been successfully opened - (ufw status | grep -q "$start_port:$end_port") && echo "$start_port-$end_port" - else - # Check if the individual port has been successfully opened - (ufw status | grep -q "$port") && echo "$port" - fi - done -} - -delete_ports() { - # Display current rules with numbers - echo "Current UFW rules:" - ufw status numbered - - # Ask the user how they want to delete rules - echo "Do you want to delete rules by:" - echo "1) Rule numbers" - echo "2) Ports" - read -rp "Enter your choice (1 or 2): " choice - - if [[ $choice -eq 1 ]]; then - # Deleting by rule numbers - read -rp "Enter the rule numbers you want to delete (1, 2, etc.): " rule_numbers - - # Validate the input - if ! [[ $rule_numbers =~ ^([0-9]+)(,[0-9]+)*$ ]]; then - echo "Error: Invalid input. Please enter a comma-separated list of rule numbers." >&2 - exit 1 - fi - - # Split numbers into an array - IFS=',' read -ra RULE_NUMBERS <<<"$rule_numbers" - for rule_number in "${RULE_NUMBERS[@]}"; do - # Delete the rule by number - ufw delete "$rule_number" || echo "Failed to delete rule number $rule_number" - done - - echo "Selected rules have been deleted." - - elif [[ $choice -eq 2 ]]; then - # Deleting by ports - read -rp "Enter the ports you want to delete (e.g. 80,443,2053 or range 400-500): " ports - - # Validate the input - if ! [[ $ports =~ ^([0-9]+|[0-9]+-[0-9]+)(,([0-9]+|[0-9]+-[0-9]+))*$ ]]; then - echo "Error: Invalid input. Please enter a comma-separated list of ports or a range of ports (e.g. 80,443,2053 or 400-500)." >&2 - exit 1 - fi - - # Split ports into an array - IFS=',' read -ra PORT_LIST <<<"$ports" - for port in "${PORT_LIST[@]}"; do - if [[ $port == *-* ]]; then - # Split the port range - start_port=$(echo $port | cut -d'-' -f1) - end_port=$(echo $port | cut -d'-' -f2) - # Delete the port range - ufw delete allow $start_port:$end_port/tcp - ufw delete allow $start_port:$end_port/udp - else - # Delete a single port - ufw delete allow "$port" - fi - done - - # Confirmation of deletion - echo "Deleted the specified ports:" - for port in "${PORT_LIST[@]}"; do - if [[ $port == *-* ]]; then - start_port=$(echo $port | cut -d'-' -f1) - end_port=$(echo $port | cut -d'-' -f2) - # Check if the port range has been deleted - (ufw status | grep -q "$start_port:$end_port") || echo "$start_port-$end_port" - else - # Check if the individual port has been deleted - (ufw status | grep -q "$port") || echo "$port" - fi - done - else - echo "${red}Error:${plain} Invalid choice. Please enter 1 or 2." >&2 - exit 1 - fi -} - -update_all_geofiles() { - update_geofiles "main" - update_geofiles "IR" - update_geofiles "RU" -} - -update_geofiles() { - case "${1}" in - "main") dat_files=(geoip geosite); dat_source="Loyalsoldier/v2ray-rules-dat";; - "IR") dat_files=(geoip_IR geosite_IR); dat_source="chocolate4u/Iran-v2ray-rules" ;; - "RU") dat_files=(geoip_RU geosite_RU); dat_source="runetfreedom/russia-v2ray-rules-dat";; - esac - for dat in "${dat_files[@]}"; do - curl -fLRo ${xui_folder}/bin/${dat}.dat -z ${xui_folder}/bin/${dat}.dat \ - https://github.com/${dat_source}/releases/latest/download/${dat%%_}.dat - done -} - -update_geo() { - echo -e "${green}\t1.${plain} Loyalsoldier (geoip.dat, geosite.dat)" - echo -e "${green}\t2.${plain} chocolate4u (geoip_IR.dat, geosite_IR.dat)" - echo -e "${green}\t3.${plain} runetfreedom (geoip_RU.dat, geosite_RU.dat)" - echo -e "${green}\t4.${plain} All" - echo -e "${green}\t0.${plain} Back to Main Menu" - read -rp "Choose an option: " choice - - case "$choice" in - 0) - show_menu - ;; - 1) - update_geofiles "main" - echo -e "${green}Loyalsoldier datasets have been updated successfully!${plain}" - restart - ;; - 2) - update_geofiles "IR" - echo -e "${green}chocolate4u datasets have been updated successfully!${plain}" - restart - ;; - 3) - update_geofiles "RU" - echo -e "${green}runetfreedom datasets have been updated successfully!${plain}" - restart - ;; - 4) - update_all_geofiles - echo -e "${green}All geo files have been updated successfully!${plain}" - restart - ;; - *) - echo -e "${red}Invalid option. Please select a valid number.${plain}\n" - update_geo - ;; - esac - - before_show_menu -} - -install_acme() { - # Check if acme.sh is already installed - if command -v ~/.acme.sh/acme.sh &>/dev/null; then - LOGI "acme.sh is already installed." - return 0 - fi - - LOGI "Installing acme.sh..." - cd ~ || return 1 # Ensure you can change to the home directory - - curl -s https://get.acme.sh | sh - if [ $? -ne 0 ]; then - LOGE "Installation of acme.sh failed." - return 1 - else - LOGI "Installation of acme.sh succeeded." - fi - - return 0 -} - -ssl_cert_issue_main() { - echo -e "${green}\t1.${plain} Get SSL (Domain)" - echo -e "${green}\t2.${plain} Revoke" - echo -e "${green}\t3.${plain} Force Renew" - echo -e "${green}\t4.${plain} Show Existing Domains" - echo -e "${green}\t5.${plain} Set Cert paths for the panel" - echo -e "${green}\t6.${plain} Get SSL for IP Address (6-day cert, auto-renews)" - echo -e "${green}\t0.${plain} Back to Main Menu" - - read -rp "Choose an option: " choice - case "$choice" in - 0) - show_menu - ;; - 1) - ssl_cert_issue - ssl_cert_issue_main - ;; - 2) - local domains=$(find /root/cert/ -mindepth 1 -maxdepth 1 -type d -exec basename {} \;) - if [ -z "$domains" ]; then - echo "No certificates found to revoke." - else - echo "Existing domains:" - echo "$domains" - read -rp "Please enter a domain from the list to revoke the certificate: " domain - if echo "$domains" | grep -qw "$domain"; then - ~/.acme.sh/acme.sh --revoke -d ${domain} - LOGI "Certificate revoked for domain: $domain" - else - echo "Invalid domain entered." - fi - fi - ssl_cert_issue_main - ;; - 3) - local domains=$(find /root/cert/ -mindepth 1 -maxdepth 1 -type d -exec basename {} \;) - if [ -z "$domains" ]; then - echo "No certificates found to renew." - else - echo "Existing domains:" - echo "$domains" - read -rp "Please enter a domain from the list to renew the SSL certificate: " domain - if echo "$domains" | grep -qw "$domain"; then - ~/.acme.sh/acme.sh --renew -d ${domain} --force - LOGI "Certificate forcefully renewed for domain: $domain" - else - echo "Invalid domain entered." - fi - fi - ssl_cert_issue_main - ;; - 4) - local domains=$(find /root/cert/ -mindepth 1 -maxdepth 1 -type d -exec basename {} \;) - if [ -z "$domains" ]; then - echo "No certificates found." - else - echo "Existing domains and their paths:" - for domain in $domains; do - local cert_path="/root/cert/${domain}/fullchain.pem" - local key_path="/root/cert/${domain}/privkey.pem" - if [[ -f "${cert_path}" && -f "${key_path}" ]]; then - echo -e "Domain: ${domain}" - echo -e "\tCertificate Path: ${cert_path}" - echo -e "\tPrivate Key Path: ${key_path}" - else - echo -e "Domain: ${domain} - Certificate or Key missing." - fi - done - fi - ssl_cert_issue_main - ;; - 5) - local domains=$(find /root/cert/ -mindepth 1 -maxdepth 1 -type d -exec basename {} \;) - if [ -z "$domains" ]; then - echo "No certificates found." - else - echo "Available domains:" - echo "$domains" - read -rp "Please choose a domain to set the panel paths: " domain - - if echo "$domains" | grep -qw "$domain"; then - local webCertFile="/root/cert/${domain}/fullchain.pem" - local webKeyFile="/root/cert/${domain}/privkey.pem" - - if [[ -f "${webCertFile}" && -f "${webKeyFile}" ]]; then - ${xui_folder}/x-ui cert -webCert "$webCertFile" -webCertKey "$webKeyFile" - echo "Panel paths set for domain: $domain" - echo " - Certificate File: $webCertFile" - echo " - Private Key File: $webKeyFile" - restart - else - echo "Certificate or private key not found for domain: $domain." - fi - else - echo "Invalid domain entered." - fi - fi - ssl_cert_issue_main - ;; - 6) - echo -e "${yellow}Let's Encrypt SSL Certificate for IP Address${plain}" - echo -e "This will obtain a certificate for your server's IP using the shortlived profile." - echo -e "${yellow}Certificate valid for ~6 days, auto-renews via acme.sh cron job.${plain}" - echo -e "${yellow}Port 80 must be open and accessible from the internet.${plain}" - confirm "Do you want to proceed?" "y" - if [[ $? == 0 ]]; then - ssl_cert_issue_for_ip - fi - ssl_cert_issue_main - ;; - - *) - echo -e "${red}Invalid option. Please select a valid number.${plain}\n" - ssl_cert_issue_main - ;; - esac -} - -ssl_cert_issue_for_ip() { - LOGI "Starting automatic SSL certificate generation for server IP..." - LOGI "Using Let's Encrypt shortlived profile (~6 days validity, auto-renews)" - - local existing_webBasePath=$(${xui_folder}/x-ui setting -show true | grep -Eo 'webBasePath: .+' | awk '{print $2}') - local existing_port=$(${xui_folder}/x-ui setting -show true | grep -Eo 'port: .+' | awk '{print $2}') - - # Get server IP - local server_ip=$(curl -s --max-time 3 https://api.ipify.org) - if [ -z "$server_ip" ]; then - server_ip=$(curl -s --max-time 3 https://4.ident.me) - fi - - if [ -z "$server_ip" ]; then - LOGE "Failed to get server IP address" - return 1 - fi - - LOGI "Server IP detected: ${server_ip}" - - # Ask for optional IPv6 - local ipv6_addr="" - read -rp "Do you have an IPv6 address to include? (leave empty to skip): " ipv6_addr - ipv6_addr="${ipv6_addr// /}" # Trim whitespace - - # check for acme.sh first - if ! command -v ~/.acme.sh/acme.sh &>/dev/null; then - LOGI "acme.sh not found, installing..." - install_acme - if [ $? -ne 0 ]; then - LOGE "Failed to install acme.sh" - return 1 - fi - fi - - # install socat - case "${release}" in - ubuntu | debian | armbian) - apt-get update >/dev/null 2>&1 && apt-get install socat -y >/dev/null 2>&1 - ;; - fedora | amzn | virtuozzo | rhel | almalinux | rocky | ol) - dnf -y update >/dev/null 2>&1 && dnf -y install socat >/dev/null 2>&1 - ;; - centos) - if [[ "${VERSION_ID}" =~ ^7 ]]; then - yum -y update >/dev/null 2>&1 && yum -y install socat >/dev/null 2>&1 - else - dnf -y update >/dev/null 2>&1 && dnf -y install socat >/dev/null 2>&1 - fi - ;; - arch | manjaro | parch) - pacman -Sy --noconfirm socat >/dev/null 2>&1 - ;; - opensuse-tumbleweed | opensuse-leap) - zypper refresh >/dev/null 2>&1 && zypper -q install -y socat >/dev/null 2>&1 - ;; - alpine) - apk add socat curl openssl >/dev/null 2>&1 - ;; - *) - LOGW "Unsupported OS for automatic socat installation" - ;; - esac - - # Create certificate directory - certPath="/root/cert/ip" - mkdir -p "$certPath" - - # Build domain arguments - local domain_args="-d ${server_ip}" - if [[ -n "$ipv6_addr" ]] && is_ipv6 "$ipv6_addr"; then - domain_args="${domain_args} -d ${ipv6_addr}" - LOGI "Including IPv6 address: ${ipv6_addr}" - fi - - # Use port 80 for certificate issuance - local WebPort=80 - LOGI "Using port ${WebPort} to issue certificate for IP: ${server_ip}" - LOGI "Make sure port ${WebPort} is open and not in use..." - - # Reload command - restarts panel after renewal - local reloadCmd="systemctl restart x-ui 2>/dev/null || rc-service x-ui restart 2>/dev/null" - - # issue the certificate for IP with shortlived profile - ~/.acme.sh/acme.sh --set-default-ca --server letsencrypt - ~/.acme.sh/acme.sh --issue \ - ${domain_args} \ - --standalone \ - --server letsencrypt \ - --certificate-profile shortlived \ - --days 6 \ - --httpport ${WebPort} \ - --force - - if [ $? -ne 0 ]; then - LOGE "Failed to issue certificate for IP: ${server_ip}" - LOGE "Make sure port ${WebPort} is open and the server is accessible from the internet" - # Cleanup acme.sh data for both IPv4 and IPv6 if specified - rm -rf ~/.acme.sh/${server_ip} 2>/dev/null - [[ -n "$ipv6_addr" ]] && rm -rf ~/.acme.sh/${ipv6_addr} 2>/dev/null - rm -rf ${certPath} 2>/dev/null - return 1 - else - LOGI "Certificate issued successfully for IP: ${server_ip}" - fi - - # Install the certificate - # Note: acme.sh may report "Reload error" and exit non-zero if reloadcmd fails, - # but the cert files are still installed. We check for files instead of exit code. - ~/.acme.sh/acme.sh --installcert -d ${server_ip} \ - --key-file "${certPath}/privkey.pem" \ - --fullchain-file "${certPath}/fullchain.pem" \ - --reloadcmd "${reloadCmd}" 2>&1 || true - - # Verify certificate files exist (don't rely on exit code - reloadcmd failure causes non-zero) - if [[ ! -f "${certPath}/fullchain.pem" || ! -f "${certPath}/privkey.pem" ]]; then - LOGE "Certificate files not found after installation" - # Cleanup acme.sh data for both IPv4 and IPv6 if specified - rm -rf ~/.acme.sh/${server_ip} 2>/dev/null - [[ -n "$ipv6_addr" ]] && rm -rf ~/.acme.sh/${ipv6_addr} 2>/dev/null - rm -rf ${certPath} 2>/dev/null - return 1 - fi - - LOGI "Certificate files installed successfully" - - # enable auto-renew - ~/.acme.sh/acme.sh --upgrade --auto-upgrade >/dev/null 2>&1 - chmod 600 $certPath/privkey.pem 2>/dev/null - chmod 644 $certPath/fullchain.pem 2>/dev/null - - # Set certificate paths for the panel - local webCertFile="${certPath}/fullchain.pem" - local webKeyFile="${certPath}/privkey.pem" - - if [[ -f "$webCertFile" && -f "$webKeyFile" ]]; then - ${xui_folder}/x-ui cert -webCert "$webCertFile" -webCertKey "$webKeyFile" - LOGI "Certificate configured for panel" - LOGI " - Certificate File: $webCertFile" - LOGI " - Private Key File: $webKeyFile" - LOGI " - Validity: ~6 days (auto-renews via acme.sh cron)" - echo -e "${green}Access URL: https://${server_ip}:${existing_port}${existing_webBasePath}${plain}" - LOGI "Panel will restart to apply SSL certificate..." - restart - return 0 - else - LOGE "Certificate files not found after installation" - return 1 - fi -} - -ssl_cert_issue() { - local existing_webBasePath=$(${xui_folder}/x-ui setting -show true | grep -Eo 'webBasePath: .+' | awk '{print $2}') - local existing_port=$(${xui_folder}/x-ui setting -show true | grep -Eo 'port: .+' | awk '{print $2}') - # check for acme.sh first - if ! command -v ~/.acme.sh/acme.sh &>/dev/null; then - echo "acme.sh could not be found. we will install it" - install_acme - if [ $? -ne 0 ]; then - LOGE "install acme failed, please check logs" - exit 1 - fi - fi - - # install socat - case "${release}" in - ubuntu | debian | armbian) - apt-get update >/dev/null 2>&1 && apt-get install socat -y >/dev/null 2>&1 - ;; - fedora | amzn | virtuozzo | rhel | almalinux | rocky | ol) - dnf -y update >/dev/null 2>&1 && dnf -y install socat >/dev/null 2>&1 - ;; - centos) - if [[ "${VERSION_ID}" =~ ^7 ]]; then - yum -y update >/dev/null 2>&1 && yum -y install socat >/dev/null 2>&1 - else - dnf -y update >/dev/null 2>&1 && dnf -y install socat >/dev/null 2>&1 - fi - ;; - arch | manjaro | parch) - pacman -Sy --noconfirm socat >/dev/null 2>&1 - ;; - opensuse-tumbleweed | opensuse-leap) - zypper refresh >/dev/null 2>&1 && zypper -q install -y socat >/dev/null 2>&1 - ;; - alpine) - apk add socat curl openssl >/dev/null 2>&1 - ;; - *) - LOGW "Unsupported OS for automatic socat installation" - ;; - esac - if [ $? -ne 0 ]; then - LOGE "install socat failed, please check logs" - exit 1 - else - LOGI "install socat succeed..." - fi - - # get the domain here, and we need to verify it - local domain="" - while true; do - read -rp "Please enter your domain name: " domain - domain="${domain// /}" # Trim whitespace - - if [[ -z "$domain" ]]; then - LOGE "Domain name cannot be empty. Please try again." - continue - fi - - if ! is_domain "$domain"; then - LOGE "Invalid domain format: ${domain}. Please enter a valid domain name." - continue - fi - - break - done - LOGD "Your domain is: ${domain}, checking it..." - - # check if there already exists a certificate - local currentCert=$(~/.acme.sh/acme.sh --list | tail -1 | awk '{print $1}') - if [ "${currentCert}" == "${domain}" ]; then - local certInfo=$(~/.acme.sh/acme.sh --list) - LOGE "System already has certificates for this domain. Cannot issue again. Current certificate details:" - LOGI "$certInfo" - exit 1 - else - LOGI "Your domain is ready for issuing certificates now..." - fi - - # create a directory for the certificate - certPath="/root/cert/${domain}" - if [ ! -d "$certPath" ]; then - mkdir -p "$certPath" - else - rm -rf "$certPath" - mkdir -p "$certPath" - fi - - # get the port number for the standalone server - local WebPort=80 - read -rp "Please choose which port to use (default is 80): " WebPort - if [[ ${WebPort} -gt 65535 || ${WebPort} -lt 1 ]]; then - LOGE "Your input ${WebPort} is invalid, will use default port 80." - WebPort=80 - fi - LOGI "Will use port: ${WebPort} to issue certificates. Please make sure this port is open." - - # issue the certificate - ~/.acme.sh/acme.sh --set-default-ca --server letsencrypt - ~/.acme.sh/acme.sh --issue -d ${domain} --listen-v6 --standalone --httpport ${WebPort} --force - if [ $? -ne 0 ]; then - LOGE "Issuing certificate failed, please check logs." - rm -rf ~/.acme.sh/${domain} - exit 1 - else - LOGE "Issuing certificate succeeded, installing certificates..." - fi - - reloadCmd="x-ui restart" - - LOGI "Default --reloadcmd for ACME is: ${yellow}x-ui restart" - LOGI "This command will run on every certificate issue and renew." - read -rp "Would you like to modify --reloadcmd for ACME? (y/n): " setReloadcmd - if [[ "$setReloadcmd" == "y" || "$setReloadcmd" == "Y" ]]; then - echo -e "\n${green}\t1.${plain} Preset: systemctl reload nginx ; x-ui restart" - echo -e "${green}\t2.${plain} Input your own command" - echo -e "${green}\t0.${plain} Keep default reloadcmd" - read -rp "Choose an option: " choice - case "$choice" in - 1) - LOGI "Reloadcmd is: systemctl reload nginx ; x-ui restart" - reloadCmd="systemctl reload nginx ; x-ui restart" - ;; - 2) - LOGD "It's recommended to put x-ui restart at the end, so it won't raise an error if other services fails" - read -rp "Please enter your reloadcmd (example: systemctl reload nginx ; x-ui restart): " reloadCmd - LOGI "Your reloadcmd is: ${reloadCmd}" - ;; - *) - LOGI "Keep default reloadcmd" - ;; - esac - fi - - # install the certificate - ~/.acme.sh/acme.sh --installcert -d ${domain} \ - --key-file /root/cert/${domain}/privkey.pem \ - --fullchain-file /root/cert/${domain}/fullchain.pem --reloadcmd "${reloadCmd}" - - if [ $? -ne 0 ]; then - LOGE "Installing certificate failed, exiting." - rm -rf ~/.acme.sh/${domain} - exit 1 - else - LOGI "Installing certificate succeeded, enabling auto renew..." - fi - - # enable auto-renew - ~/.acme.sh/acme.sh --upgrade --auto-upgrade - if [ $? -ne 0 ]; then - LOGE "Auto renew failed, certificate details:" - ls -lah cert/* - chmod 600 $certPath/privkey.pem - chmod 644 $certPath/fullchain.pem - exit 1 - else - LOGI "Auto renew succeeded, certificate details:" - ls -lah cert/* - chmod 600 $certPath/privkey.pem - chmod 644 $certPath/fullchain.pem - fi - - # Prompt user to set panel paths after successful certificate installation - read -rp "Would you like to set this certificate for the panel? (y/n): " setPanel - if [[ "$setPanel" == "y" || "$setPanel" == "Y" ]]; then - local webCertFile="/root/cert/${domain}/fullchain.pem" - local webKeyFile="/root/cert/${domain}/privkey.pem" - - if [[ -f "$webCertFile" && -f "$webKeyFile" ]]; then - ${xui_folder}/x-ui cert -webCert "$webCertFile" -webCertKey "$webKeyFile" - LOGI "Panel paths set for domain: $domain" - LOGI " - Certificate File: $webCertFile" - LOGI " - Private Key File: $webKeyFile" - echo -e "${green}Access URL: https://${domain}:${existing_port}${existing_webBasePath}${plain}" - restart - else - LOGE "Error: Certificate or private key file not found for domain: $domain." - fi - else - LOGI "Skipping panel path setting." - fi -} - -ssl_cert_issue_CF() { - local existing_webBasePath=$(${xui_folder}/x-ui setting -show true | grep -Eo 'webBasePath: .+' | awk '{print $2}') - local existing_port=$(${xui_folder}/x-ui setting -show true | grep -Eo 'port: .+' | awk '{print $2}') - LOGI "****** Instructions for Use ******" - LOGI "Follow the steps below to complete the process:" - LOGI "1. Cloudflare Registered E-mail." - LOGI "2. Cloudflare Global API Key." - LOGI "3. The Domain Name." - LOGI "4. Once the certificate is issued, you will be prompted to set the certificate for the panel (optional)." - LOGI "5. The script also supports automatic renewal of the SSL certificate after installation." - - confirm "Do you confirm the information and wish to proceed? [y/n]" "y" - - if [ $? -eq 0 ]; then - # Check for acme.sh first - if ! command -v ~/.acme.sh/acme.sh &>/dev/null; then - echo "acme.sh could not be found. We will install it." - install_acme - if [ $? -ne 0 ]; then - LOGE "Install acme failed, please check logs." - exit 1 - fi - fi - - CF_Domain="" - - LOGD "Please set a domain name:" - read -rp "Input your domain here: " CF_Domain - LOGD "Your domain name is set to: ${CF_Domain}" - - # Set up Cloudflare API details - CF_GlobalKey="" - CF_AccountEmail="" - LOGD "Please set the API key:" - read -rp "Input your key here: " CF_GlobalKey - LOGD "Your API key is: ${CF_GlobalKey}" - - LOGD "Please set up registered email:" - read -rp "Input your email here: " CF_AccountEmail - LOGD "Your registered email address is: ${CF_AccountEmail}" - - # Set the default CA to Let's Encrypt - ~/.acme.sh/acme.sh --set-default-ca --server letsencrypt - if [ $? -ne 0 ]; then - LOGE "Default CA, Let'sEncrypt fail, script exiting..." - exit 1 - fi - - export CF_Key="${CF_GlobalKey}" - export CF_Email="${CF_AccountEmail}" - - # Issue the certificate using Cloudflare DNS - ~/.acme.sh/acme.sh --issue --dns dns_cf -d ${CF_Domain} -d *.${CF_Domain} --log --force - if [ $? -ne 0 ]; then - LOGE "Certificate issuance failed, script exiting..." - exit 1 - else - LOGI "Certificate issued successfully, Installing..." - fi - - # Install the certificate - certPath="/root/cert/${CF_Domain}" - if [ -d "$certPath" ]; then - rm -rf ${certPath} - fi - - mkdir -p ${certPath} - if [ $? -ne 0 ]; then - LOGE "Failed to create directory: ${certPath}" - exit 1 - fi - - reloadCmd="x-ui restart" - - LOGI "Default --reloadcmd for ACME is: ${yellow}x-ui restart" - LOGI "This command will run on every certificate issue and renew." - read -rp "Would you like to modify --reloadcmd for ACME? (y/n): " setReloadcmd - if [[ "$setReloadcmd" == "y" || "$setReloadcmd" == "Y" ]]; then - echo -e "\n${green}\t1.${plain} Preset: systemctl reload nginx ; x-ui restart" - echo -e "${green}\t2.${plain} Input your own command" - echo -e "${green}\t0.${plain} Keep default reloadcmd" - read -rp "Choose an option: " choice - case "$choice" in - 1) - LOGI "Reloadcmd is: systemctl reload nginx ; x-ui restart" - reloadCmd="systemctl reload nginx ; x-ui restart" - ;; - 2) - LOGD "It's recommended to put x-ui restart at the end, so it won't raise an error if other services fails" - read -rp "Please enter your reloadcmd (example: systemctl reload nginx ; x-ui restart): " reloadCmd - LOGI "Your reloadcmd is: ${reloadCmd}" - ;; - *) - LOGI "Keep default reloadcmd" - ;; - esac - fi - ~/.acme.sh/acme.sh --installcert -d ${CF_Domain} -d *.${CF_Domain} \ - --key-file ${certPath}/privkey.pem \ - --fullchain-file ${certPath}/fullchain.pem --reloadcmd "${reloadCmd}" - - if [ $? -ne 0 ]; then - LOGE "Certificate installation failed, script exiting..." - exit 1 - else - LOGI "Certificate installed successfully, Turning on automatic updates..." - fi - - # Enable auto-update - ~/.acme.sh/acme.sh --upgrade --auto-upgrade - if [ $? -ne 0 ]; then - LOGE "Auto update setup failed, script exiting..." - exit 1 - else - LOGI "The certificate is installed and auto-renewal is turned on. Specific information is as follows:" - ls -lah ${certPath}/* - chmod 600 ${certPath}/privkey.pem - chmod 644 ${certPath}/fullchain.pem - fi - - # Prompt user to set panel paths after successful certificate installation - read -rp "Would you like to set this certificate for the panel? (y/n): " setPanel - if [[ "$setPanel" == "y" || "$setPanel" == "Y" ]]; then - local webCertFile="${certPath}/fullchain.pem" - local webKeyFile="${certPath}/privkey.pem" - - if [[ -f "$webCertFile" && -f "$webKeyFile" ]]; then - ${xui_folder}/x-ui cert -webCert "$webCertFile" -webCertKey "$webKeyFile" - LOGI "Panel paths set for domain: $CF_Domain" - LOGI " - Certificate File: $webCertFile" - LOGI " - Private Key File: $webKeyFile" - echo -e "${green}Access URL: https://${CF_Domain}:${existing_port}${existing_webBasePath}${plain}" - restart - else - LOGE "Error: Certificate or private key file not found for domain: $CF_Domain." - fi - else - LOGI "Skipping panel path setting." - fi - else - show_menu - fi -} - -run_speedtest() { - # Check if Speedtest is already installed - if ! command -v speedtest &>/dev/null; then - # If not installed, determine installation method - if command -v snap &>/dev/null; then - # Use snap to install Speedtest - echo "Installing Speedtest using snap..." - snap install speedtest - else - # Fallback to using package managers - local pkg_manager="" - local speedtest_install_script="" - - if command -v dnf &>/dev/null; then - pkg_manager="dnf" - speedtest_install_script="https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.rpm.sh" - elif command -v yum &>/dev/null; then - pkg_manager="yum" - speedtest_install_script="https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.rpm.sh" - elif command -v apt-get &>/dev/null; then - pkg_manager="apt-get" - speedtest_install_script="https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh" - elif command -v apt &>/dev/null; then - pkg_manager="apt" - speedtest_install_script="https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh" - fi - - if [[ -z $pkg_manager ]]; then - echo "Error: Package manager not found. You may need to install Speedtest manually." - return 1 - else - echo "Installing Speedtest using $pkg_manager..." - curl -s $speedtest_install_script | bash - $pkg_manager install -y speedtest - fi - fi - fi - - speedtest -} - - - -ip_validation() { - ipv6_regex="^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$" - ipv4_regex="^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)$" -} - -iplimit_main() { - echo -e "\n${green}\t1.${plain} Install Fail2ban and configure IP Limit" - echo -e "${green}\t2.${plain} Change Ban Duration" - echo -e "${green}\t3.${plain} Unban Everyone" - echo -e "${green}\t4.${plain} Ban Logs" - echo -e "${green}\t5.${plain} Ban an IP Address" - echo -e "${green}\t6.${plain} Unban an IP Address" - echo -e "${green}\t7.${plain} Real-Time Logs" - echo -e "${green}\t8.${plain} Service Status" - echo -e "${green}\t9.${plain} Service Restart" - echo -e "${green}\t10.${plain} Uninstall Fail2ban and IP Limit" - echo -e "${green}\t0.${plain} Back to Main Menu" - read -rp "Choose an option: " choice - case "$choice" in - 0) - show_menu - ;; - 1) - confirm "Proceed with installation of Fail2ban & IP Limit?" "y" - if [[ $? == 0 ]]; then - install_iplimit - else - iplimit_main - fi - ;; - 2) - read -rp "Please enter new Ban Duration in Minutes [default 30]: " NUM - if [[ $NUM =~ ^[0-9]+$ ]]; then - create_iplimit_jails ${NUM} - if [[ $release == "alpine" ]]; then - rc-service fail2ban restart - else - systemctl restart fail2ban - fi - else - echo -e "${red}${NUM} is not a number! Please, try again.${plain}" - fi - iplimit_main - ;; - 3) - confirm "Proceed with Unbanning everyone from IP Limit jail?" "y" - if [[ $? == 0 ]]; then - fail2ban-client reload --restart --unban 3x-ipl - truncate -s 0 "${iplimit_banned_log_path}" - echo -e "${green}All users Unbanned successfully.${plain}" - iplimit_main - else - echo -e "${yellow}Cancelled.${plain}" - fi - iplimit_main - ;; - 4) - show_banlog - iplimit_main - ;; - 5) - read -rp "Enter the IP address you want to ban: " ban_ip - ip_validation - if [[ $ban_ip =~ $ipv4_regex || $ban_ip =~ $ipv6_regex ]]; then - fail2ban-client set 3x-ipl banip "$ban_ip" - echo -e "${green}IP Address ${ban_ip} has been banned successfully.${plain}" - else - echo -e "${red}Invalid IP address format! Please try again.${plain}" - fi - iplimit_main - ;; - 6) - read -rp "Enter the IP address you want to unban: " unban_ip - ip_validation - if [[ $unban_ip =~ $ipv4_regex || $unban_ip =~ $ipv6_regex ]]; then - fail2ban-client set 3x-ipl unbanip "$unban_ip" - echo -e "${green}IP Address ${unban_ip} has been unbanned successfully.${plain}" - else - echo -e "${red}Invalid IP address format! Please try again.${plain}" - fi - iplimit_main - ;; - 7) - tail -f /var/log/fail2ban.log - iplimit_main - ;; - 8) - service fail2ban status - iplimit_main - ;; - 9) - if [[ $release == "alpine" ]]; then - rc-service fail2ban restart - else - systemctl restart fail2ban - fi - iplimit_main - ;; - 10) - remove_iplimit - iplimit_main - ;; - *) - echo -e "${red}Invalid option. Please select a valid number.${plain}\n" - iplimit_main - ;; - esac -} - -install_iplimit() { - if ! command -v fail2ban-client &>/dev/null; then - echo -e "${green}Fail2ban is not installed. Installing now...!${plain}\n" - - # Check the OS and install necessary packages - case "${release}" in - ubuntu) - apt-get update - if [[ "${os_version}" -ge 24 ]]; then - apt-get install python3-pip -y - python3 -m pip install pyasynchat --break-system-packages - fi - apt-get install fail2ban -y - ;; - debian) - apt-get update - if [ "$os_version" -ge 12 ]; then - apt-get install -y python3-systemd - fi - apt-get install -y fail2ban - ;; - armbian) - apt-get update && apt-get install fail2ban -y - ;; - fedora | amzn | virtuozzo | rhel | almalinux | rocky | ol) - dnf -y update && dnf -y install fail2ban - ;; - centos) - if [[ "${VERSION_ID}" =~ ^7 ]]; then - yum update -y && yum install epel-release -y - yum -y install fail2ban - else - dnf -y update && dnf -y install fail2ban - fi - ;; - arch | manjaro | parch) - pacman -Syu --noconfirm fail2ban - ;; - alpine) - apk add fail2ban - ;; - *) - echo -e "${red}Unsupported operating system. Please check the script and install the necessary packages manually.${plain}\n" - exit 1 - ;; - esac - - if ! command -v fail2ban-client &>/dev/null; then - echo -e "${red}Fail2ban installation failed.${plain}\n" - exit 1 - fi - - echo -e "${green}Fail2ban installed successfully!${plain}\n" - else - echo -e "${yellow}Fail2ban is already installed.${plain}\n" - fi - - echo -e "${green}Configuring IP Limit...${plain}\n" - - # make sure there's no conflict for jail files - iplimit_remove_conflicts - - # Check if log file exists - if ! test -f "${iplimit_banned_log_path}"; then - touch ${iplimit_banned_log_path} - fi - - # Check if service log file exists so fail2ban won't return error - if ! test -f "${iplimit_log_path}"; then - touch ${iplimit_log_path} - fi - - # Create the iplimit jail files - # we didn't pass the bantime here to use the default value - create_iplimit_jails - - # Launching fail2ban - if [[ $release == "alpine" ]]; then - if [[ $(rc-service fail2ban status | grep -F 'status: started' -c) == 0 ]]; then - rc-service fail2ban start - else - rc-service fail2ban restart - fi - rc-update add fail2ban - else - if ! systemctl is-active --quiet fail2ban; then - systemctl start fail2ban - else - systemctl restart fail2ban - fi - systemctl enable fail2ban - fi - - echo -e "${green}IP Limit installed and configured successfully!${plain}\n" - before_show_menu -} - -remove_iplimit() { - echo -e "${green}\t1.${plain} Only remove IP Limit configurations" - echo -e "${green}\t2.${plain} Uninstall Fail2ban and IP Limit" - echo -e "${green}\t0.${plain} Back to Main Menu" - read -rp "Choose an option: " num - case "$num" in - 1) - rm -f /etc/fail2ban/filter.d/3x-ipl.conf - rm -f /etc/fail2ban/action.d/3x-ipl.conf - rm -f /etc/fail2ban/jail.d/3x-ipl.conf - if [[ $release == "alpine" ]]; then - rc-service fail2ban restart - else - systemctl restart fail2ban - fi - echo -e "${green}IP Limit removed successfully!${plain}\n" - before_show_menu - ;; - 2) - rm -rf /etc/fail2ban - if [[ $release == "alpine" ]]; then - rc-service fail2ban stop - else - systemctl stop fail2ban - fi - case "${release}" in - ubuntu | debian | armbian) - apt-get remove -y fail2ban - apt-get purge -y fail2ban -y - apt-get autoremove -y - ;; - fedora | amzn | virtuozzo | rhel | almalinux | rocky | ol) - dnf remove fail2ban -y - dnf autoremove -y - ;; - centos) - if [[ "${VERSION_ID}" =~ ^7 ]]; then - yum remove fail2ban -y - yum autoremove -y - else - dnf remove fail2ban -y - dnf autoremove -y - fi - ;; - arch | manjaro | parch) - pacman -Rns --noconfirm fail2ban - ;; - alpine) - apk del fail2ban - ;; - *) - echo -e "${red}Unsupported operating system. Please uninstall Fail2ban manually.${plain}\n" - exit 1 - ;; - esac - echo -e "${green}Fail2ban and IP Limit removed successfully!${plain}\n" - before_show_menu - ;; - 0) - show_menu - ;; - *) - echo -e "${red}Invalid option. Please select a valid number.${plain}\n" - remove_iplimit - ;; - esac -} - -show_banlog() { - local system_log="/var/log/fail2ban.log" - - echo -e "${green}Checking ban logs...${plain}\n" - - if [[ $release == "alpine" ]]; then - if [[ $(rc-service fail2ban status | grep -F 'status: started' -c) == 0 ]]; then - echo -e "${red}Fail2ban service is not running!${plain}\n" - return 1 - fi - else - if ! systemctl is-active --quiet fail2ban; then - echo -e "${red}Fail2ban service is not running!${plain}\n" - return 1 - fi - fi - - if [[ -f "$system_log" ]]; then - echo -e "${green}Recent system ban activities from fail2ban.log:${plain}" - grep "3x-ipl" "$system_log" | grep -E "Ban|Unban" | tail -n 10 || echo -e "${yellow}No recent system ban activities found${plain}" - echo "" - fi - - if [[ -f "${iplimit_banned_log_path}" ]]; then - echo -e "${green}3X-IPL ban log entries:${plain}" - if [[ -s "${iplimit_banned_log_path}" ]]; then - grep -v "INIT" "${iplimit_banned_log_path}" | tail -n 10 || echo -e "${yellow}No ban entries found${plain}" - else - echo -e "${yellow}Ban log file is empty${plain}" - fi - else - echo -e "${red}Ban log file not found at: ${iplimit_banned_log_path}${plain}" - fi - - echo -e "\n${green}Current jail status:${plain}" - fail2ban-client status 3x-ipl || echo -e "${yellow}Unable to get jail status${plain}" -} - -create_iplimit_jails() { - # Use default bantime if not passed => 30 minutes - local bantime="${1:-30}" - - # Uncomment 'allowipv6 = auto' in fail2ban.conf - sed -i 's/#allowipv6 = auto/allowipv6 = auto/g' /etc/fail2ban/fail2ban.conf - - # On Debian 12+ fail2ban's default backend should be changed to systemd - if [[ "${release}" == "debian" && ${os_version} -ge 12 ]]; then - sed -i '0,/action =/s/backend = auto/backend = systemd/' /etc/fail2ban/jail.conf - fi - - cat << EOF > /etc/fail2ban/jail.d/3x-ipl.conf -[3x-ipl] -enabled=true -backend=auto -filter=3x-ipl -action=3x-ipl -logpath=${iplimit_log_path} -maxretry=2 -findtime=32 -bantime=${bantime}m -EOF - - cat << EOF > /etc/fail2ban/filter.d/3x-ipl.conf -[Definition] -datepattern = ^%%Y/%%m/%%d %%H:%%M:%%S -failregex = \[LIMIT_IP\]\s*Email\s*=\s*.+\s*\|\|\s*SRC\s*=\s* -ignoreregex = -EOF - - cat << EOF > /etc/fail2ban/action.d/3x-ipl.conf -[INCLUDES] -before = iptables-allports.conf - -[Definition] -actionstart = -N f2b- - -A f2b- -j - -I -p -j f2b- - -actionstop = -D -p -j f2b- - - -X f2b- - -actioncheck = -n -L | grep -q 'f2b-[ \t]' - -actionban = -I f2b- 1 -s -j - echo "\$(date +"%%Y/%%m/%%d %%H:%%M:%%S") BAN [Email] = [IP] = banned for seconds." >> ${iplimit_banned_log_path} - -actionunban = -D f2b- -s -j - echo "\$(date +"%%Y/%%m/%%d %%H:%%M:%%S") UNBAN [Email] = [IP] = unbanned." >> ${iplimit_banned_log_path} - -[Init] -name = default -protocol = tcp -chain = INPUT -EOF - - echo -e "${green}Ip Limit jail files created with a bantime of ${bantime} minutes.${plain}" -} - -iplimit_remove_conflicts() { - local jail_files=( - /etc/fail2ban/jail.conf - /etc/fail2ban/jail.local - ) - - for file in "${jail_files[@]}"; do - # Check for [3x-ipl] config in jail file then remove it - if test -f "${file}" && grep -qw '3x-ipl' ${file}; then - sed -i "/\[3x-ipl\]/,/^$/d" ${file} - echo -e "${yellow}Removing conflicts of [3x-ipl] in jail (${file})!${plain}\n" - fi - done -} - -SSH_port_forwarding() { - local URL_lists=( - "https://api4.ipify.org" - "https://ipv4.icanhazip.com" - "https://v4.api.ipinfo.io/ip" - "https://ipv4.myexternalip.com/raw" - "https://4.ident.me" - "https://check-host.net/ip" - ) - local server_ip="" - for ip_address in "${URL_lists[@]}"; do - server_ip=$(curl -s --max-time 3 "${ip_address}" 2>/dev/null | tr -d '[:space:]') - if [[ -n "${server_ip}" ]]; then - break - fi - done - local existing_webBasePath=$(${xui_folder}/x-ui setting -show true | grep -Eo 'webBasePath: .+' | awk '{print $2}') - local existing_port=$(${xui_folder}/x-ui setting -show true | grep -Eo 'port: .+' | awk '{print $2}') - local existing_listenIP=$(${xui_folder}/x-ui setting -getListen true | grep -Eo 'listenIP: .+' | awk '{print $2}') - local existing_cert=$(${xui_folder}/x-ui setting -getCert true | grep -Eo 'cert: .+' | awk '{print $2}') - local existing_key=$(${xui_folder}/x-ui setting -getCert true | grep -Eo 'key: .+' | awk '{print $2}') - - local config_listenIP="" - local listen_choice="" - - if [[ -n "$existing_cert" && -n "$existing_key" ]]; then - echo -e "${green}Panel is secure with SSL.${plain}" - before_show_menu - fi - if [[ -z "$existing_cert" && -z "$existing_key" && (-z "$existing_listenIP" || "$existing_listenIP" == "0.0.0.0") ]]; then - echo -e "\n${red}Warning: No Cert and Key found! The panel is not secure.${plain}" - echo "Please obtain a certificate or set up SSH port forwarding." - fi - - if [[ -n "$existing_listenIP" && "$existing_listenIP" != "0.0.0.0" && (-z "$existing_cert" && -z "$existing_key") ]]; then - echo -e "\n${green}Current SSH Port Forwarding Configuration:${plain}" - echo -e "Standard SSH command:" - echo -e "${yellow}ssh -L 2222:${existing_listenIP}:${existing_port} root@${server_ip}${plain}" - echo -e "\nIf using SSH key:" - echo -e "${yellow}ssh -i -L 2222:${existing_listenIP}:${existing_port} root@${server_ip}${plain}" - echo -e "\nAfter connecting, access the panel at:" - echo -e "${yellow}http://localhost:2222${existing_webBasePath}${plain}" - fi - - echo -e "\nChoose an option:" - echo -e "${green}1.${plain} Set listen IP" - echo -e "${green}2.${plain} Clear listen IP" - echo -e "${green}0.${plain} Back to Main Menu" - read -rp "Choose an option: " num - - case "$num" in - 1) - if [[ -z "$existing_listenIP" || "$existing_listenIP" == "0.0.0.0" ]]; then - echo -e "\nNo listenIP configured. Choose an option:" - echo -e "1. Use default IP (127.0.0.1)" - echo -e "2. Set a custom IP" - read -rp "Select an option (1 or 2): " listen_choice - - config_listenIP="127.0.0.1" - [[ "$listen_choice" == "2" ]] && read -rp "Enter custom IP to listen on: " config_listenIP - - ${xui_folder}/x-ui setting -listenIP "${config_listenIP}" >/dev/null 2>&1 - echo -e "${green}listen IP has been set to ${config_listenIP}.${plain}" - echo -e "\n${green}SSH Port Forwarding Configuration:${plain}" - echo -e "Standard SSH command:" - echo -e "${yellow}ssh -L 2222:${config_listenIP}:${existing_port} root@${server_ip}${plain}" - echo -e "\nIf using SSH key:" - echo -e "${yellow}ssh -i -L 2222:${config_listenIP}:${existing_port} root@${server_ip}${plain}" - echo -e "\nAfter connecting, access the panel at:" - echo -e "${yellow}http://localhost:2222${existing_webBasePath}${plain}" - restart - else - config_listenIP="${existing_listenIP}" - echo -e "${green}Current listen IP is already set to ${config_listenIP}.${plain}" - fi - ;; - 2) - ${xui_folder}/x-ui setting -listenIP 0.0.0.0 >/dev/null 2>&1 - echo -e "${green}Listen IP has been cleared.${plain}" - restart - ;; - 0) - show_menu - ;; - *) - echo -e "${red}Invalid option. Please select a valid number.${plain}\n" - SSH_port_forwarding - ;; - esac -} - show_usage() { echo -e "┌────────────────────────────────────────────────────────────────┐ │ ${blue}x-ui control menu usages (subcommands):${plain} │ @@ -2219,7 +195,11 @@ show_menu() { esac } -if [[ $# > 0 ]]; then +#============================================================================= +# CLI Argument Handling +#============================================================================= + +if [[ $# -gt 0 ]]; then case $1 in "start") check_install 0 && start 0 From fc87e2117b3673abd7e86e1ec6c9516d5dd9e656 Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Fri, 16 Jan 2026 11:52:13 +0300 Subject: [PATCH 25/28] Updated github workflow --- .github/workflows/release.yml | 147 +++++++++++++++++----------------- 1 file changed, 74 insertions(+), 73 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d68ea808..821966f4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,7 +6,7 @@ on: types: [published] push: branches: - - main + - test-branch tags: - "v*.*.*" paths: @@ -82,6 +82,7 @@ jobs: cp x-ui.service.debian x-ui/ cp x-ui.service.rhel x-ui/ cp x-ui.sh x-ui/ + cp -r lib x-ui/ mv x-ui/xui-release x-ui/x-ui mkdir x-ui/bin cd x-ui/bin @@ -152,75 +153,75 @@ jobs: # ================================= # Windows Build # ================================= - build-windows: - name: Build for Windows - permissions: - contents: write - strategy: - matrix: - platform: - - amd64 - runs-on: windows-latest - steps: - - name: Checkout repository - uses: actions/checkout@v5 - - - name: Setup Go - uses: actions/setup-go@v6 - with: - go-version-file: go.mod - check-latest: true - - - name: Build 3X-UI for Windows - shell: pwsh - run: | - $env:CGO_ENABLED="1" - $env:GOOS="windows" - $env:GOARCH="amd64" - go build -ldflags "-w -s" -o xui-release.exe -v main.go - - mkdir x-ui - Copy-Item xui-release.exe x-ui\ - mkdir x-ui\bin - cd x-ui\bin - - # Download Xray for Windows - $Xray_URL = "https://github.com/XTLS/Xray-core/releases/download/v25.12.8/" - Invoke-WebRequest -Uri "${Xray_URL}Xray-windows-64.zip" -OutFile "Xray-windows-64.zip" - Expand-Archive -Path "Xray-windows-64.zip" -DestinationPath . - Remove-Item "Xray-windows-64.zip" - Remove-Item geoip.dat, geosite.dat -ErrorAction SilentlyContinue - Invoke-WebRequest -Uri "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat" -OutFile "geoip.dat" - Invoke-WebRequest -Uri "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat" -OutFile "geosite.dat" - Invoke-WebRequest -Uri "https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat" -OutFile "geoip_IR.dat" - Invoke-WebRequest -Uri "https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geosite.dat" -OutFile "geosite_IR.dat" - Invoke-WebRequest -Uri "https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geoip.dat" -OutFile "geoip_RU.dat" - Invoke-WebRequest -Uri "https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geosite.dat" -OutFile "geosite_RU.dat" - Rename-Item xray.exe xray-windows-amd64.exe - cd .. - Copy-Item -Path ..\windows_files\* -Destination . -Recurse - cd .. - - - name: Package to Zip - shell: pwsh - run: | - Compress-Archive -Path .\x-ui -DestinationPath "x-ui-windows-amd64.zip" - - - name: Upload files to Artifacts - uses: actions/upload-artifact@v4 - with: - name: x-ui-windows-amd64 - path: ./x-ui-windows-amd64.zip - - - name: Upload files to GH release - uses: svenstaro/upload-release-action@v2 - if: | - (github.event_name == 'release' && github.event.action == 'published') || - (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')) - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - tag: ${{ github.ref }} - file: x-ui-windows-amd64.zip - asset_name: x-ui-windows-amd64.zip - overwrite: true - prerelease: true \ No newline at end of file +# build-windows: +# name: Build for Windows +# permissions: +# contents: write +# strategy: +# matrix: +# platform: +# - amd64 +# runs-on: windows-latest +# steps: +# - name: Checkout repository +# uses: actions/checkout@v5 +# +# - name: Setup Go +# uses: actions/setup-go@v6 +# with: +# go-version-file: go.mod +# check-latest: true +# +# - name: Build 3X-UI for Windows +# shell: pwsh +# run: | +# $env:CGO_ENABLED="1" +# $env:GOOS="windows" +# $env:GOARCH="amd64" +# go build -ldflags "-w -s" -o xui-release.exe -v main.go +# +# mkdir x-ui +# Copy-Item xui-release.exe x-ui\ +# mkdir x-ui\bin +# cd x-ui\bin +# +# # Download Xray for Windows +# $Xray_URL = "https://github.com/XTLS/Xray-core/releases/download/v25.12.8/" +# Invoke-WebRequest -Uri "${Xray_URL}Xray-windows-64.zip" -OutFile "Xray-windows-64.zip" +# Expand-Archive -Path "Xray-windows-64.zip" -DestinationPath . +# Remove-Item "Xray-windows-64.zip" +# Remove-Item geoip.dat, geosite.dat -ErrorAction SilentlyContinue +# Invoke-WebRequest -Uri "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat" -OutFile "geoip.dat" +# Invoke-WebRequest -Uri "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat" -OutFile "geosite.dat" +# Invoke-WebRequest -Uri "https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat" -OutFile "geoip_IR.dat" +# Invoke-WebRequest -Uri "https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geosite.dat" -OutFile "geosite_IR.dat" +# Invoke-WebRequest -Uri "https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geoip.dat" -OutFile "geoip_RU.dat" +# Invoke-WebRequest -Uri "https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geosite.dat" -OutFile "geosite_RU.dat" +# Rename-Item xray.exe xray-windows-amd64.exe +# cd .. +# Copy-Item -Path ..\windows_files\* -Destination . -Recurse +# cd .. +# +# - name: Package to Zip +# shell: pwsh +# run: | +# Compress-Archive -Path .\x-ui -DestinationPath "x-ui-windows-amd64.zip" +# +# - name: Upload files to Artifacts +# uses: actions/upload-artifact@v4 +# with: +# name: x-ui-windows-amd64 +# path: ./x-ui-windows-amd64.zip +# +# - name: Upload files to GH release +# uses: svenstaro/upload-release-action@v2 +# if: | +# (github.event_name == 'release' && github.event.action == 'published') || +# (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')) +# with: +# repo_token: ${{ secrets.GITHUB_TOKEN }} +# tag: ${{ github.ref }} +# file: x-ui-windows-amd64.zip +# asset_name: x-ui-windows-amd64.zip +# overwrite: true +# prerelease: true \ No newline at end of file From ade9f3d4b7aff6d47fc988495c47955138693ffa Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Fri, 16 Jan 2026 13:37:50 +0300 Subject: [PATCH 26/28] Install.sh update --- install.sh | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/install.sh b/install.sh index 4c68d2dc..93d77b23 100644 --- a/install.sh +++ b/install.sh @@ -648,17 +648,20 @@ install_x-ui() { # Download resources if [ $# == 0 ]; then - tag_version=$(curl -Ls "https://api.github.com/repos/MHSanaei/3x-ui/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') +# tag_version=$(curl -Ls "https://api.github.com/repos/MHSanaei/3x-ui/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') + tag_version=$(curl -Ls "https://api.github.com/repos/mixa2130/3x-ui/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') if [[ ! -n "$tag_version" ]]; then echo -e "${yellow}Trying to fetch version with IPv4...${plain}" - tag_version=$(curl -4 -Ls "https://api.github.com/repos/MHSanaei/3x-ui/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') +# tag_version=$(curl -4 -Ls "https://api.github.com/repos/MHSanaei/3x-ui/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') + tag_version=$(curl -4 -Ls "https://api.github.com/repos/mixa2130/3x-ui/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') if [[ ! -n "$tag_version" ]]; then echo -e "${red}Failed to fetch x-ui version, it may be due to GitHub API restrictions, please try it later${plain}" exit 1 fi fi echo -e "Got x-ui latest version: ${tag_version}, beginning the installation..." - curl -4fLRo ${xui_folder}-linux-$(arch).tar.gz https://github.com/MHSanaei/3x-ui/releases/download/${tag_version}/x-ui-linux-$(arch).tar.gz +# curl -4fLRo ${xui_folder}-linux-$(arch).tar.gz https://github.com/MHSanaei/3x-ui/releases/download/${tag_version}/x-ui-linux-$(arch).tar.gz + curl -4fLRo ${xui_folder}-linux-$(arch).tar.gz https://github.com/mixa2130/3x-ui/releases/download/${tag_version}/x-ui-linux-$(arch).tar.gz if [[ $? -ne 0 ]]; then echo -e "${red}Downloading x-ui failed, please be sure that your server can access GitHub ${plain}" exit 1 @@ -667,12 +670,12 @@ install_x-ui() { tag_version=$1 tag_version_numeric=${tag_version#v} min_version="2.3.5" - + if [[ "$(printf '%s\n' "$min_version" "$tag_version_numeric" | sort -V | head -n1)" != "$min_version" ]]; then echo -e "${red}Please use a newer version (at least v2.3.5). Exiting installation.${plain}" exit 1 fi - + url="https://github.com/MHSanaei/3x-ui/releases/download/${tag_version}/x-ui-linux-$(arch).tar.gz" echo -e "Beginning to install x-ui $1" curl -4fLRo ${xui_folder}-linux-$(arch).tar.gz ${url} @@ -681,11 +684,14 @@ install_x-ui() { exit 1 fi fi - curl -4fLRo /usr/bin/x-ui-temp https://raw.githubusercontent.com/MHSanaei/3x-ui/main/x-ui.sh - if [[ $? -ne 0 ]]; then - echo -e "${red}Failed to download x-ui.sh${plain}" - exit 1 - fi + + + +# curl -4fLRo /usr/bin/x-ui-temp https://raw.githubusercontent.com/MHSanaei/3x-ui/main/x-ui.sh +# if [[ $? -ne 0 ]]; then +# echo -e "${red}Failed to download x-ui.sh${plain}" +# exit 1 +# fi # Stop x-ui service and remove old resources if [[ -e ${xui_folder}/ ]]; then @@ -713,7 +719,8 @@ install_x-ui() { chmod +x x-ui bin/xray-linux-$(arch) # Update x-ui cli and se set permission - mv -f /usr/bin/x-ui-temp /usr/bin/x-ui +# mv -f /usr/bin/x-ui-temp /usr/bin/x-ui + cp x-ui.sh /usr/bin/x-ui chmod +x /usr/bin/x-ui mkdir -p /var/log/x-ui config_after_install From e0c53fbe5776968e3243ed2337869e8b3022205c Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Fri, 16 Jan 2026 13:42:40 +0300 Subject: [PATCH 27/28] Reverted changes for github workflow --- .github/workflows/release.yml | 146 +++++++++++++++++----------------- 1 file changed, 73 insertions(+), 73 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 821966f4..e77af2c3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,7 +6,7 @@ on: types: [published] push: branches: - - test-branch + - main tags: - "v*.*.*" paths: @@ -153,75 +153,75 @@ jobs: # ================================= # Windows Build # ================================= -# build-windows: -# name: Build for Windows -# permissions: -# contents: write -# strategy: -# matrix: -# platform: -# - amd64 -# runs-on: windows-latest -# steps: -# - name: Checkout repository -# uses: actions/checkout@v5 -# -# - name: Setup Go -# uses: actions/setup-go@v6 -# with: -# go-version-file: go.mod -# check-latest: true -# -# - name: Build 3X-UI for Windows -# shell: pwsh -# run: | -# $env:CGO_ENABLED="1" -# $env:GOOS="windows" -# $env:GOARCH="amd64" -# go build -ldflags "-w -s" -o xui-release.exe -v main.go -# -# mkdir x-ui -# Copy-Item xui-release.exe x-ui\ -# mkdir x-ui\bin -# cd x-ui\bin -# -# # Download Xray for Windows -# $Xray_URL = "https://github.com/XTLS/Xray-core/releases/download/v25.12.8/" -# Invoke-WebRequest -Uri "${Xray_URL}Xray-windows-64.zip" -OutFile "Xray-windows-64.zip" -# Expand-Archive -Path "Xray-windows-64.zip" -DestinationPath . -# Remove-Item "Xray-windows-64.zip" -# Remove-Item geoip.dat, geosite.dat -ErrorAction SilentlyContinue -# Invoke-WebRequest -Uri "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat" -OutFile "geoip.dat" -# Invoke-WebRequest -Uri "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat" -OutFile "geosite.dat" -# Invoke-WebRequest -Uri "https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat" -OutFile "geoip_IR.dat" -# Invoke-WebRequest -Uri "https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geosite.dat" -OutFile "geosite_IR.dat" -# Invoke-WebRequest -Uri "https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geoip.dat" -OutFile "geoip_RU.dat" -# Invoke-WebRequest -Uri "https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geosite.dat" -OutFile "geosite_RU.dat" -# Rename-Item xray.exe xray-windows-amd64.exe -# cd .. -# Copy-Item -Path ..\windows_files\* -Destination . -Recurse -# cd .. -# -# - name: Package to Zip -# shell: pwsh -# run: | -# Compress-Archive -Path .\x-ui -DestinationPath "x-ui-windows-amd64.zip" -# -# - name: Upload files to Artifacts -# uses: actions/upload-artifact@v4 -# with: -# name: x-ui-windows-amd64 -# path: ./x-ui-windows-amd64.zip -# -# - name: Upload files to GH release -# uses: svenstaro/upload-release-action@v2 -# if: | -# (github.event_name == 'release' && github.event.action == 'published') || -# (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')) -# with: -# repo_token: ${{ secrets.GITHUB_TOKEN }} -# tag: ${{ github.ref }} -# file: x-ui-windows-amd64.zip -# asset_name: x-ui-windows-amd64.zip -# overwrite: true -# prerelease: true \ No newline at end of file + build-windows: + name: Build for Windows + permissions: + contents: write + strategy: + matrix: + platform: + - amd64 + runs-on: windows-latest + steps: + - name: Checkout repository + uses: actions/checkout@v5 + + - name: Setup Go + uses: actions/setup-go@v6 + with: + go-version-file: go.mod + check-latest: true + + - name: Build 3X-UI for Windows + shell: pwsh + run: | + $env:CGO_ENABLED="1" + $env:GOOS="windows" + $env:GOARCH="amd64" + go build -ldflags "-w -s" -o xui-release.exe -v main.go + + mkdir x-ui + Copy-Item xui-release.exe x-ui\ + mkdir x-ui\bin + cd x-ui\bin + + # Download Xray for Windows + $Xray_URL = "https://github.com/XTLS/Xray-core/releases/download/v25.12.8/" + Invoke-WebRequest -Uri "${Xray_URL}Xray-windows-64.zip" -OutFile "Xray-windows-64.zip" + Expand-Archive -Path "Xray-windows-64.zip" -DestinationPath . + Remove-Item "Xray-windows-64.zip" + Remove-Item geoip.dat, geosite.dat -ErrorAction SilentlyContinue + Invoke-WebRequest -Uri "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat" -OutFile "geoip.dat" + Invoke-WebRequest -Uri "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat" -OutFile "geosite.dat" + Invoke-WebRequest -Uri "https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat" -OutFile "geoip_IR.dat" + Invoke-WebRequest -Uri "https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geosite.dat" -OutFile "geosite_IR.dat" + Invoke-WebRequest -Uri "https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geoip.dat" -OutFile "geoip_RU.dat" + Invoke-WebRequest -Uri "https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geosite.dat" -OutFile "geosite_RU.dat" + Rename-Item xray.exe xray-windows-amd64.exe + cd .. + Copy-Item -Path ..\windows_files\* -Destination . -Recurse + cd .. + + - name: Package to Zip + shell: pwsh + run: | + Compress-Archive -Path .\x-ui -DestinationPath "x-ui-windows-amd64.zip" + + - name: Upload files to Artifacts + uses: actions/upload-artifact@v4 + with: + name: x-ui-windows-amd64 + path: ./x-ui-windows-amd64.zip + + - name: Upload files to GH release + uses: svenstaro/upload-release-action@v2 + if: | + (github.event_name == 'release' && github.event.action == 'published') || + (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')) + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + tag: ${{ github.ref }} + file: x-ui-windows-amd64.zip + asset_name: x-ui-windows-amd64.zip + overwrite: true + prerelease: true \ No newline at end of file From 4097769b67c5833943d89972dd9a4ed647379a70 Mon Sep 17 00:00:00 2001 From: Michael S2pac Date: Fri, 16 Jan 2026 14:04:48 +0300 Subject: [PATCH 28/28] Refactored project structure: moved README to docs --- README.md | 12 ++++++------ README.ar_EG.md => docs/README.ar_EG.md | 3 ++- README.es_ES.md => docs/README.es_ES.md | 4 ++-- README.fa_IR.md => docs/README.fa_IR.md | 4 ++-- README.ru_RU.md => docs/README.ru_RU.md | 4 ++-- README.zh_CN.md => docs/README.zh_CN.md | 5 +++-- docs/media/3x-ui-dark.png | Bin 0 -> 231347 bytes docs/media/3x-ui-light.png | Bin 0 -> 229932 bytes docs/media/default-yellow.png | Bin 0 -> 4811 bytes docs/media/donation-button-black.svg | 1 + 10 files changed, 18 insertions(+), 15 deletions(-) rename README.ar_EG.md => docs/README.ar_EG.md (94%) rename README.es_ES.md => docs/README.es_ES.md (94%) rename README.fa_IR.md => docs/README.fa_IR.md (94%) rename README.ru_RU.md => docs/README.ru_RU.md (95%) rename README.zh_CN.md => docs/README.zh_CN.md (93%) create mode 100644 docs/media/3x-ui-dark.png create mode 100644 docs/media/3x-ui-light.png create mode 100644 docs/media/default-yellow.png create mode 100644 docs/media/donation-button-black.svg diff --git a/README.md b/README.md index f00a2fb0..1fd770ce 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ -[English](/README.md) | [فارسی](/README.fa_IR.md) | [العربية](/README.ar_EG.md) | [中文](/README.zh_CN.md) | [Español](/README.es_ES.md) | [Русский](/README.ru_RU.md) +[English](/README.md) | [فارسی](docs/README.fa_IR.md) | [العربية](docs/README.ar_EG.md) | [中文](docs/README.zh_CN.md) | [Español](docs/README.es_ES.md) | [Русский](docs/README.ru_RU.md)

- - 3x-ui + + 3x-ui

@@ -44,12 +44,12 @@ For full documentation, please visit the [project Wiki](https://github.com/MHSan **If this project is helpful to you, you may wish to give it a**:star2: -Buy Me A Coffee +Buy Me A Coffee - +

- Crypto donation button by NOWPayments + Crypto donation button by NOWPayments ## Stargazers over Time diff --git a/README.ar_EG.md b/docs/README.ar_EG.md similarity index 94% rename from README.ar_EG.md rename to docs/README.ar_EG.md index 01acad34..04774f33 100644 --- a/README.ar_EG.md +++ b/docs/README.ar_EG.md @@ -1,4 +1,4 @@ -[English](/README.md) | [فارسی](/README.fa_IR.md) | [العربية](/README.ar_EG.md) | [中文](/README.zh_CN.md) | [Español](/README.es_ES.md) | [Русский](/README.ru_RU.md) +[English](../README.md) | [فارسی](README.fa_IR.md) | [العربية](README.ar_EG.md) | [中文](README.zh_CN.md) | [Español](README.es_ES.md) | [Русский](README.ru_RU.md)

@@ -46,6 +46,7 @@ bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install. Buy Me A Coffee +

Crypto donation button by NOWPayments diff --git a/README.es_ES.md b/docs/README.es_ES.md similarity index 94% rename from README.es_ES.md rename to docs/README.es_ES.md index 63d6ce49..915ab48d 100644 --- a/README.es_ES.md +++ b/docs/README.es_ES.md @@ -1,4 +1,4 @@ -[English](/README.md) | [فارسی](/README.fa_IR.md) | [العربية](/README.ar_EG.md) | [中文](/README.zh_CN.md) | [Español](/README.es_ES.md) | [Русский](/README.ru_RU.md) +[English](../README.md) | [فارسی](README.fa_IR.md) | [العربية](README.ar_EG.md) | [中文](README.zh_CN.md) | [Español](README.es_ES.md) | [Русский](README.ru_RU.md)

@@ -46,7 +46,7 @@ Para documentación completa, visita la [Wiki del proyecto](https://github.com/M Buy Me A Coffee - +

Crypto donation button by NOWPayments diff --git a/README.fa_IR.md b/docs/README.fa_IR.md similarity index 94% rename from README.fa_IR.md rename to docs/README.fa_IR.md index 94165260..15223eef 100644 --- a/README.fa_IR.md +++ b/docs/README.fa_IR.md @@ -1,4 +1,4 @@ -[English](/README.md) | [فارسی](/README.fa_IR.md) | [العربية](/README.ar_EG.md) | [中文](/README.zh_CN.md) | [Español](/README.es_ES.md) | [Русский](/README.ru_RU.md) +[English](../README.md) | [فارسی](README.fa_IR.md) | [العربية](README.ar_EG.md) | [中文](README.zh_CN.md) | [Español](README.es_ES.md) | [Русский](README.ru_RU.md)

@@ -46,7 +46,7 @@ bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install. Buy Me A Coffee - +

Crypto donation button by NOWPayments diff --git a/README.ru_RU.md b/docs/README.ru_RU.md similarity index 95% rename from README.ru_RU.md rename to docs/README.ru_RU.md index 6623a801..5ee8ccd1 100644 --- a/README.ru_RU.md +++ b/docs/README.ru_RU.md @@ -1,4 +1,4 @@ -[English](/README.md) | [فارسی](/README.fa_IR.md) | [العربية](/README.ar_EG.md) | [中文](/README.zh_CN.md) | [Español](/README.es_ES.md) | [Русский](/README.ru_RU.md) +[English](../README.md) | [فارسی](README.fa_IR.md) | [العربية](README.ar_EG.md) | [中文](README.zh_CN.md) | [Español](README.es_ES.md) | [Русский](README.ru_RU.md)

@@ -46,7 +46,7 @@ bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install. Buy Me A Coffee - +

Crypto donation button by NOWPayments diff --git a/README.zh_CN.md b/docs/README.zh_CN.md similarity index 93% rename from README.zh_CN.md rename to docs/README.zh_CN.md index 6eb30ee0..e32f47ac 100644 --- a/README.zh_CN.md +++ b/docs/README.zh_CN.md @@ -1,4 +1,5 @@ -[English](/README.md) | [فارسی](/README.fa_IR.md) | [العربية](/README.ar_EG.md) | [中文](/README.zh_CN.md) | [Español](/README.es_ES.md) | [Русский](/README.ru_RU.md) +[English](../README.md) | [فارسی](README.fa_IR.md) | [العربية](README.ar_EG.md) | [中文](README.zh_CN.md) | [Español](README.es_ES.md) | [Русский](README.ru_RU.md) +

@@ -46,7 +47,7 @@ bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install. Buy Me A Coffee - +

Crypto donation button by NOWPayments diff --git a/docs/media/3x-ui-dark.png b/docs/media/3x-ui-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..e5f76b197bffa34ffcf89b259205ec9943ef7f01 GIT binary patch literal 231347 zcmcG#2UL^Wx;7e6EFd^6(k={g#^xnH5N>z#=MWh4} z1*A(95kd>~#f%@zCt`x0d2EglT{@T;*|gcoo0SUT*XC1yuH1Jy&=Lb_iaVMVq#(_EEy^nYGz`Hne{zgP&Ts%FbxG1##iwP&!f5SSv|0yVn$V7b5t|DMz&~K*xYN(;{ zzc+Pq`gd!04@ED^D1XxXx4`cDzOFbCU7Wj%=Y1?r(F^D7!Tr}@*4Tgdb@jaO_y?!f zSP`5f&WX~@okAG+-$S|Dxp=s^+qwJ?eEj?Ce{dkVLaYi9D#&m zp-`L{5N!j80}-N7I1pn4LI4rgV4MvaWP=1@pnuRs>962|_53Zq-~In(xYjOM3dX-B zBo2pzplCD*21H{pNFW+QK||soSRfoDinO)?+kmV^v45dy-N#dW2krRZQGZiqO+mCq z+aRsMq8K0yjRpfjpx-zU#BUi7Bbtx|FZzbcb zx&C~N{~PK3GdlkT>uralfc`Ja|5r127aI?6^nIMHEk)A*pT;HfKN0Va_WIvR$Jtne zFd!QcPz)!A23p%dkw6R%hXû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

`FhGj4vtxV`ODXiniDT)v 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 literal 0 HcmV?d00001 diff --git a/docs/media/3x-ui-light.png b/docs/media/3x-ui-light.png new file mode 100644 index 0000000000000000000000000000000000000000..a77c830d8c78e5e0cd60a2ee84185cbbe442cc7f GIT binary patch literal 229932 zcmd422Ut_v)-DW!AZ#{WMK(2rDuGmz(4+(*bV4tdR0vJFfQTq4AW8`x>74*dFDhUG zX%?i51qD&6h*A_p{)M}o^ZnmG=lI|MyU)Emx=hxZbIdWvc*hv;m@H#0%?*F$7UgDP zVfhtrgd?!9uqFbZd-yqkYuZJR0^lDmA0tP978Vtm-M_5CB}al-SPrz(Z5#p|%uLnE zr@T~%lv5E2qPKZXQ&Xn}Nh z7nE`^vy{?5Vh=45kW4L!el71WFx>kow~X z1gz&rp{WyaNB>w2_@)JN3kdL0S5-ZI`n1Yvgvu#DS5+7mi&cffRpD?5FaqKq;vGN? zhIsqS{3!uP^(Xt$eFEsGyrp&}5=o~51GGSZuD@@>%jYk#-u{0W3NV>!FwsX9rUKpF z)Sm;*%>MmQFR#Bw`v({V0jvC>@81gcw+Zo~suHOFrvm-RRD&R@cYw^Fi}?o-sQ=jR zPfQ1f|23IH{%c{MKtInPW}=W)sh(6XU=4p@SFpeI^l>{CaLV89)W0yoUyuKbDFW!U zf1%v&lm9Z58chEeLwBG2HPlC4-;YWRIOS(^>Xhf7=&}4$Hz_z$1tz6nPxq#rI_0mOeA41+JWGWt~1p<^(q0=eqND2lHqrqViGKz+VAYe!o z1WSU`AXqq=LM0Os7#fN8LoZ-H?i4w2*D1U6e~%@~DKa4AFT1N_DNquIhCxEG7!nkM z#UiN?ERBYMkf0PQmPm!suo&c@(k%SwKsXaU|5@s;Run)Yg-F9tU~m!yMI-`yha%M= z7z7#%A<|$7G8RFhpwNI;6tX()l%E$7fG*vO=t@=f@pc7C{X-l5Q=X^%%uZ1NnI|S5bTee4!f}S4E+5j0tkHIM-{ev{bPXRe;V+Q=eFK-Kpi+pY8Nr; zKQyog(ifnD8VZF#{c+!t9!&Lgz|jF~`u|V`xx3bnDL)=L{?j8k@Mt%mdHDb?Frxbd zxC{9s-&j+9|M=udm--RJ>O}JI+aT{Elu7~pahv`(uKzhB|1S2l8x=6vzd`Qr!~9Rt z0!|bCsJgCzmH%U8sQxSE{fR;UUUe!B02-7AKn#EtghE4NAS5c42%#cSBn%V@Ly(Yw z3;s8%{)cR`8`0a93X~#M(Es{o;A(I&!q6b;)nkan<1a_4x;+~6R>=Ueng<0QvLk3Ks3KoUQ&NWqEx^sDWZ>$ zC!PEw+*E_SDSs5KzasQs8;wHsqyG~I{&|(ZRFL`~T<F0Rn)8 zLWl?o90H@M!AMXl6iFlfU*n|zxEUgi2*(mJa0nKL29h%dNYg~98t|1wq7tz{MW7-` z{}yroT!#LSBkn(dY!`=rf%1O>asM;x{YNMLTxI@mIqn~6;eU^lRCj6V?}bP8|6P-Q z|Bm}Tc8~66gCEpT{qL&J&teeZis}H(_z%Q`3e1*-k;+MN3TOFVW{{a-okFIJ=rFst3-?Egnq(<8e6Ro}GXy1E8%1Of`v)z{b4 zQ$ynP5J>1z1QG^C9@RHc!)pF8t0(;*Gf;2@5`l!{^ildaxE}BaZEzHe1sVvnuD-4T z?r&zOA=S_bJ$*Dz4~f--qoF8WoSyzstiHY)6p6#2;QxIMoEpXe3OkC>1r{?vz~Lwa zLJtPjMd(BI^mI|We>1}X3s=+AMZ+<>s-fUVacXcqJ$)Do0Y8d9s*gke_ce~f(7I@h z-qE8-3{qbou7^SE8303(273A!G$7%>&-i<42~&d-X#j&44@YVO;m%xkyr#2LxE!8*uU}b-`fiXhawO(fSeE!Bs7Fd zL}DQr8qg_FF)%VfwqP_O>2Ey$FJw_*R1y*ihtP(U{HYBF(fq-1f~XbFJvf;h$dowRu&o#6nFr~5CC34%Yoj-1Pu#Z z0DPffC^D3UApf*1GzuWsR1`!F0W?)G7!^Po5eaydj0LDE3PDDZX+J9q11Cd?WB~GH z1On)XkUv@~0B!(MkuVeq1*5`#8uu7AG>Qax5`rNDbQ4Ynm?jpA2ELNuWGa*dCn3;3 zje9H{g(1=qFbEY&qXByau!^B!u@D-WOa+XEMU$aFtrrn+A{s*@L#PzMj{xogDni2$ zA;69SSE5lUEQR#5_99Y{6f_*@713xl3IvVal?4Y{11JVd1<*!8l8BU_l|_c4)JT-w zZXE?w72pFDLV^)#5Hy?yBLe*#g`$S~Sy>b~8chUt0yMH}2nYg+gaMHWBLRB^vINks zkb$=Qr)8;8sW1wFP#TIzf&k%!+4Un80<_2o8W80eH0G!C1cgL}tD%5)18^ZAMr{|S z7{H?>z)&K2elfeRpO*IpO^6BIb0Btne}Rr_h&)1YvS8h}WE za1${Q8c;5Q{6&HTaD$U*STYQu1|$Bgy=WwW)T+Tz5CjcIfgrKFxlj$*G8(y?y-6q} z3i;Evr%^E&H6j+s6WHB`6OJSUDPq^7G&r0{rDC8!A^K^(fW%2f0Dw|Mkg31t2@;u# zflyFt2pAQpB4pIx`0>v}5(I??_!|rOOAUsFASuvY&Z7oI4H<}JB9^3vQKSBMP5zvX z1Wsxwa4ZJMcT^e#iAG@{7&rO5^yz~fj$hThg8GiaBzUY0JP|+-akj=4_5U%5mWv5jP1wBe>!~yh}e%?z>)6m z$G=XKfiHiZM^n9l&fgC>ZB`ZuxXQxjaR`sowF%B%Z1WAXc09hZquneW#jm%oB*naJ zXf8lK$Gq%$MT~N32f%-RczQwEg#RfjwLf+WTYb_gio351(ATw;Tki`%?a6nU%Ik zW#SjN#I`4s;*{9Qooio?pUbV=hQ}$lv-JojD%XAa@aBvc>HG1@8%Iaae|dH1H1izw z`OdSCZJXKW$`Y5-ftAH|(jovYqZ5|b*}q%u>@2S@kMtl5&e^Q>s|)X-R>Gg}oN3eA zsnkq&{MH>jy8iX}asn`oy^b9mr<^N3S;_nTH1pNYF|nKiv4|a&jW@S0CQPvY#?y;QC5nX33*`Qu?WLUZ-s^9mmCc%S=T_5Q4-<^oP* z_^ZX4HomRf%DJ7zr%Y z@S*c%TDcY9!V~zYM;4c#B|Kjt;`tu(!<_CV#qxvUDNAbKQ@Rm3>Af^&_m->zMZxtRXCO3h{j+JX z6X)Xggz3goq+mN=mO#Da6Ps`+&B~%3qN^H0>xTYW?ct4FR8dyNx2i8Sh~njD$#92l zr1jan^%il9YuJZ^3}tPbT~O|*zP|5dvO*MyD-iqaD!cE4bd|jRSI6qLvoqpTo9m%e zklgyDmaxE6k;^_j2Fiypm3k_q46zwdY-n)!WlNHDcPj8Tv{r#;cVw%jni5guE# z9bCHgxgqM50w`l{Q_}X5hk_==SL8BF*g%9~>78y%)}%7=olDI3_3PFexs6A{2ktzm zUmq&CzSFS1a(_Nue{Y1y)NSRu;1j!$Za=uv5dV}@R@6enmoGK8=WPq0fynJcRm(@3 z`%a~9H$90~^0*~)e`jb$dY@_OmCJRL&8AD_YbU7+g-NkS<6dv^l}+2--IL^{$tMA4 z%{&7_6i9Gkf!gV9RbC(q+0NQ*?NB!Ficd?I)(bgmXO{5=?S^l&$Siy6T81 z)W7N+bZzcTCcH{tAhRqrz@6fkpO^NLH2`p{DNP5_3fuYFTS@{S1sl}zi~<) zxxP8U#rWP9)Lrzf&cZ~eip%C$ecyVlHe0QfX4J3S@9i$=XS;Uf=8Vs7ox1VfGTuOr z^L3>0#-+=+BOdHdWQ8f1@Y9~Rck`@}g zS_>_!4d)Yhrqe(D>Kk6F)5XskC(VVI(}b{wJ6*U&&#qlWY;>0`rAwv^gjw$KGAs?h zHuo7wEEY*Xp8ICs8EuBiMJ2;*a6aW+&t2;e?dv+TFXH8a@x{>o1CC7tc1=}En+XXW z-Sf+1N4}o3d6PVI1$T6ZcYAA5=w#``nCAO@=v`RABwIi=- zt9o=I-qr2k)9$=9BX!;vDwAs_rtFpxeVnVZ4DjeM_|35WZkWCWrv#$q)q1rEiMI>P~*IsI_pYC zH%#)Bte<(0JFxXo@+%p#cMLAl2eo~N%Y9?CI2BydZ=fG95&)crUY zTbt*a#}e4KBoJVR+^m|OSa)t3vuir%{mhhIZYd)>r*v7J7H#vi}9&JEsHpdN&Bs{V@pNPyN)+iIeBljSGRS(@($`=p^JB# zF1epxg*Vy=@gtdQ>0ji=@~Bpg4n*dv&v zockkZpBB;=NC3hCPLEp>%F@!?(ME{OJv^W5vy^#>)bCzMloy;C-GG=}d}QaeoI$QdsFbyVoshjZb%?UHjSa8}Fsx#*^KQ~afeF?B*orh}JFGZTFJie*yQ zjf!$>&ZdnlRRF;RzNsA){own~T9lW+5l%z!<*4t{$#HSvTWrMb_zet4kReKlHDuKE zg{4Oz+#m~KkiFD{(^=$=e<|IUl36F9{dA+byUxy0yteOH+EQ4Za*jprj)ccC3rO&% zooBJ7JeoQn-FRvnJiT%h>a0=a}PKaxJD-PmJI=pbluv90y$vpltPG;i3qGP~di?=#gixee~^ zOFIkS-6UOe)5@c~)P!J9pR{UO7bex@Y&2vh0rAMU8;@Zr!A|#xsz(mL0kX`4AsXCM zC`4U9e@U=^Lf-wi0wW<#FAwE2-+Jq^D5+~WQi9DKmrtGTs8Ac^Ldoj#NQcP|?~;_; z9viPzAR=)+A7X@^Cl5Cr8~b26yG1%3u{3QV*DdY2oo8V8>|IT%Oyb0Ze6ZHaLeHtS z5*wPTKzIya4#O_(0`%ZG+(D&l~$418*v6tuGyQkSU zZH}A)z08ckkJkkmK6#}gnhC$W9yB_g45`nO6Ad!#7_ak(ROX%5I6sg{5T6}*a!Vp_ zUCYrf^ft38r))X;!=#-?3ESb#(-YmUFV98y)l9_3oIPH1q$7yaY4Y@$BV*lO(`K6+ zv+K>9af91R`sczdIvV=i6PCW2Zo}BlTlrV{B~%|@zf!Hm!k~ZSa$a|o_0|^6N%j#_LddPEUGVQLB$JW~N;M$mg>5|m!&XKOV#-`AR%{gTY)#nnvpWWPW=cGka z8`&rco)cilWyiRDq8WvB;Mr%10jopx7Jv)Q+~Ee~u~;gM!Tl2;VoFluP* z33z2-iGDf*>B*Z+k&^2BAT=(&Z8|9aa%V|2>{g@DXVXFDE&psqGW8VtjK;!enM2ym z)b_zA(Q+wv8oeVawris+NBfVT9W+k1ZKvgQbSX7E*lAn|x<~TgH}X(^L0ZesQ6nNq zuTWg;)@qkI&(czQY%m2R)|Hmy?Wl3LhDsQk)@^+Bp{8p87b8x!)i3$6W7Gxzvo0II zY-i8DH%!P2!Y61y`F?AWpdt<(7^^p_UnJ=My7k#@t$y{L;LWqEfvX#98v(cG78ZgA z$A-q9Zs-eLqAl#qhF6qO*T0wd+jW>OKN$N|Y$hb~+xc*dj^U-;iW3vD_|k{(Ee}~} zTw=Hrw=_*~b-{afopf3-GsaNv-b%xvcvFJXR%dm!mS2W+QPL=K!Kgq^)QNdA9cSzO z-Xr>$vldLUK|9Yqb&Wk=T(F;LZ0Hntwl7c9!qH%hJx}gvz1Pk;=F&}nh{k>O>*9)9 zzSWIqErf)ZB4!sp)K7JI1?(+N<=Jj`1L$Kdz^S4aTRopPP^#-I-JouN5MDc@0)I*c`Q36usFov2|K* zk5_YM!$weScDuJ6=M23>=R==0&TZbjDd`q%+U(qBI~rg2 z!D7_6m6ZCMa;5kKbamaxhq?7;!`szC=FJ^xT!%O2-oS zJKH534w`#sIX!f=f1V{O{8gEwozU0%(f6UZ2cA@3x4*IEe@mY!n{!igK6GKz9aN0C zuf}B`D)w~x+V_s2!fZu0QvXS%v*KqSmDNdfn!+EK7%N zQ)Ruv)h}gF>Nm+ZPt1o%Tb~;qYuqr&DX5*Wbrl?%rj$0K)_pNT#2QZR#XMJ8M@LPe zUE;jVo|_tcdy*&m*k|u_!ZUHiEsj80cT@F$yL*KJ>UZ{^AkAByr4!-c1U9WT1Zn$42 z>woiQ0|nQ7O^)|wxVk=#`f3n&&m6h>`NndB9CLGLc41+?_PWeO!6?D-D49Okj%}cYK zi#`}MYStaisr%){Zk_wa#x?+m#uhveWQdv$z&&e^N*!YL^3zS=v^hfookt0h) z>@Z!=HQji;`{ehL@vlhiJ%?aPzvLfiSTcykOa=dDD#_BS(^mkQF;$yroEeY5&9Nj9c z^#TtzJOxiaaiBxCL@TRGESx|kTUXOwxzS%7dcL;UX)reQfyJHcay&nf*9J4JEsmd< zYvfJS&j>=UeXinaYkP^3e!63*(X`n*vNpO_hgTTd7*R1BoHnnet_4&1u8empzI+v$ zJ;=&&%%cCPZRm@krEM!mvEBEkJ8=P$90S+}7@y@uM>F)|Ws9 zlGxN^=1N8-uFR)4$7Cwxp_P&8n02MUFmWOpV4z>ba-6MC3`ePjmvIx zXMTO>^wp;Gd^g(7C(ipM-)vUnbQBc%vQpaoY&gC>-qhXDN<%bD$BolkNa&gjQzj!T zqx`-_xP`0JE1ArJqyd1aTz|^zY`62>^br48qM8*k7gYbjVl#ZUXSr2=p^WR+>{gXHX(2?wOl);|V6Ab!tZ`>< zpMPASi$=uFSKU?9Y2?fxmM7!$)YB}DokyFSwLX_DM+V`%p4dL%N%xj?ejp>BF)*E) z#_JwiB2m^b-O;UnosAD5elp9UVFR5n#wabH!ukUd5IFuiT!1f++Ne)S_%^|1=-XG!6&+O5I1PmK zbEm5T#eUV)z*1dT_JH}#m_QfT0|DC&4Tct-6S{+JO%h)kBg^E~a_E_~)b~zQGk#^g zf(A0Znr?Zmx=uFL*yLh>oc@UuCgP!0pIGFiK}sa-cex6++L(w>ti-~%WI<_TF8t=K zy{%4^2%>tr5j;nZsL)Bt$igwgxu6GQ1WWcL?}HiR2Q4Bpmq=NSZ?Bi>i_Ui`_dzjDky<$8h~xXbRD1ab69=J#_!hReO{q05E- z&Yf7u_CS2z_2~HV`7IjuOCJcxcs>K_-dcQxN5(qMj!aG@4dYA_e!JPe**<}g$?|dU z9@;$T*SYCpBGByE9k|_i|GI3-3IOsPrp4Xyhn&zr}C&fc=Y?|6$#WqPDm zhm!DdgE%}VcokE!6)pE5^hM2s>V^hmPUC=%!RgY+RSr=yInqw2Qc>rhky8WP)>_KN zy|o@sh!c*DZq$yepGer*41dNI6L@ZDd1$t_-8Gq3x|Jsu69;uBWGym4|I>Uwm1=%7#& zN`PKrq3&0C?tO^qg{Vvpk^Bil=Y`{OMp4R~M`H1OXZySaE`^zH?kk5gc=+?Pz~Y0| zrAaB~HysTaDxsMc4BEs9oPmQn7+g3okr|EW)3r6cU^hoQfS)VK(*o0{1(U7U2)5w4 zf&^|xz>uM$TpU+Y0zQ$yHG_x0lPn+@DeQ|Ukr;kb3^12N(?Op%g+grdyiV4gI-=EA zdbICEr^jIwKqnqgCC&(2M(PTDt?I^?xV*z~bP4zPW;2ab5t5uJ%!~-H@d|%uFYfZ} z13b)@a7EwN(pbV=N#Xw0NF`gjO9n22BEr^2BAl|q#^;#Y^MwWu6UuwY*kZq{!*5Rs zB(0K0B;tBjotNAb5;dx}-qrW*G_UsEF>4NLEjzTatImom^q`3`K`X&9FV zhL`RuKL&S|my#yno|^02te(yp-F9mXx2PY9w~F6r|Ft+g5$nLhK%Y2F*D z`K|6e_$>P{K}m-;kkVylBN;$d%1f?9uf%kLYix7== z?~vlqXQWg}v_s~o|ANU&)l_aBp7K}`5fQiUGtw2XvwSB{mS4?a-&cEI$)jT4*F$r# zv-H(w7`3l7)-NG2EPmuj(dhe|-__ZQmaU~ZIF^s$a%vv%Eri_-k|Y&x5(nzeR=l@W zuX_Kk7?ta=ZAIATZsO-XB-CQ@6Sd8%?!$t6#qSQssiZpv zT@Q3I5ei^8v1m{)JpDk)gYy9hGk5Um#p*g+(`A+7g$jhY6R2P(FUW0`{j9=FhNFOk zevYZx6_+}>Px_L%C`*+27CF{}$t)%fSG<Z`)Fk{DpT2pG?hO0213 zhrpY;g4A<7sOt)PPKd_oeg&!?bXdT zb>-IZfyGrUc9*;>pYvlmIK)-Y)0}-D!s!E#Bj~jZ+uSzoGWa$5EmTDgaq&R5JKUBL zm+WL4`3t9Q3Mor}lPF=U&5kjnj9H!-e4YXLen!Ah9KErFD1beJ4=qjr<3ne= zFDkaJCR;F$Z{kl1c2zSnRtFP=l0{&*b)pos56h(TVSLI#gw7j0$qK&4)mtt)eXI}n z9ww(=I13BCkRo$XS0kw6itY8(0>9D;i#`_g^?)-6SX8ouVLoq!({0sYK2so1fh)o* zSBBzsC0Yj~BKP=V(adoV7hcyjvWUiQKGg2$HgJ&kf{pLT5jVxft^@=6(5l1^mP; zfz=d*8+K;|;8o=b+ZIcEr#eSqjKOY}p{fO!`;-V4tqh)%On&^H(HrK8mdB;cFYGZD z1lwfV9>0RmW^c61Co0LorrZTz-#MvP@jat&{LmMpH3QCy_X@nDh~zp1E1$}Q(c1me z6j|DKUi=E;f1 zS#Kx#7sGFiU@B~=N|PXM6JL0yyIw|T?2y;lWl!u}X2c9F+Cgx4u6e367KZ`vfw+Hx@L$6@!&b!^?V{LBWjdK0!uOb&Biesa5 z^HHo%*{b7(-76v(Z48_HL0{~BYF5mU>idxcQ>#`M zlD^+utOQ7YS(#vb1oBNHJJ+X_=oX&WGU@DNKGryfgu9IZeqv6?q+ZErQ1@ULc>jz-d@yj32Ky`)qvy9-0LHWPB*qx$x>Q>B1xzrWg?^UD=w~8=R!d4uT415Ib zzk+=kiSAr)iX;6teJWZ_lhkHF4{ff$;joooYe{u}SI>q!e6+zI^8kW3@%UFZjsev4Qv_FbAKzM!pwNgVlGF(AK~p&DA*Ux%*S0n`TB0; z7$`-8z?$6*(Afj6MiI-OK0eil=1wV%;h zV62#Svd`Dr-xqdKwDn5zq2WGQ_TYK_NB1g96Xlm$%1L#~U3kURhYxy%<=_J8S-KDd zOu5}mix0u%SF3*3Md_K3O|SDW3~nqs1$2hSSL+x|ycs&raX3Hmm7T50azL?j!f)zA zMcw+4Lx-EH9+%JRTt4o9k}5Ko=_p>%WC9N?4MO8@&RVraoR4&49#K3f$9jR8h zT&aC(Sxg+W5gw*drPEJ3>|ZxJFW+x{$f_|Sn4o{G9X`}Qh=4y*8l zy%nn8!+p%|-Df3UW1E8PyA^WQMYPuxC7}|b=*4`Ov}qbIBIB~P+5Ik@%fr&NJz_en z-r2)eCL+yQ-8|~PaK{lN{mTlKBVc-wb$rQY(L_YDs1oH`b;n!?y~4I>pGm0327S~Q zBF&>s54@w?)~a`hw)U;6`#jM7Y1H9l;&%9V4;VS`T4p^dfJ<6jW37cWnVD3(d)f){ z<Ui`Af~}YD70Z|$AP%wxhn~S#E1q^r>O@=f zHZ!}yrYV~#Z*_BO#qJ*!Y%ocm2T32KgO7?yn)R9O;e;?VFj_X{v7N;hkNs0c>|+!p zVdet`#<9Itbjvd_bqpC7u$&>b=&_)zvf+qrVTzB-8h>)6vOE~}!jEtWCwrbv5(YB0 zHt3v7uD20NR?%aoVcv7WA~88O%vP5IgX=X>#SKD4XD^PxU^K(jtsxOPhUca;H%;vZgnY?DlzAeo0 zwPoe?Yh{%KM9UcIEgxoYpT4~Lh2Y`?^3pF{?maRHBY=N(FHpJ{c@3T^gMYz{>lp^RVqQ;nS7=g1fwB|NzpsS<~2V#D)@vU2jaMxBpj=VV25 zbVGeeec?Q|IEEQU0c@`}m7k(_K#>z~D{bO4mBgKS#kwoQR6vEtz2pE|_F)p#8)fz= zomaDp80*q0(_Nx(`^L^>M6>l$v}oVkJu2T!Q@*xTSOyMH5lcMnWEJ&5fh`%8H2&s& z_!}sAW2sojYAJgtB%<-C6y)kt0t6CLw^wD*qqkwz#ACkN7uI&v)YZHaQhB3Dwou)t zu={XM=ExzUS(sCmA0IySkfi_v`Sfx$dv!oLNzf&&(j5-N_ET*Qv!|;Ht}4v<5zM5e z(^r_0xVa+zK%r?--w|`uc>FCG1JRTjCk@cbsD%NcJSx8Di!OEcd&XL18o`vj*#Va0dcwZIoO;vGlbzs=U{ z!P>*P90^?_m$IAUCHKS%rL&E;)bICs!}wLC?_%VBkuOlHz-w7WYhOzp23*YMb&AUj z<+4%=#=MXqcdW%G(W#>QYBZK9j2;@+qu(idHzX~;(xcW2_V=l@br(o&DVIsubKA5` zn2qnEyOQ*ahl#QQuSqJ1^6u)iim!GZJE!MHoZ@0Ujnl2Sjc@F4c&GI=?&aD9E^eT7 zEPfW{7V2eleyQb2U1<2|=f>QQrO#)AAVvo)e!NUlbjK3c*}krC*aTl%FFH8l?$vPo zGcjGkts*&1VfH0y6@-UajgwOwo19fg8#q3!Hl>V4R5b+IjXB>~DZfjJ$T#k_y61if zuRdp2oz`^or60R`jK8@`Whi6NAYoqWv7<^Q6h<<&SDAX-FUuXNBH4QyvRK1WG&PbEdnQteOoIG?1j4L)NTGACgG~;

i9cJnvsTe^>NHwzaq8 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℘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 literal 0 HcmV?d00001 diff --git a/docs/media/default-yellow.png b/docs/media/default-yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..21ed36b7efabacc50ffb03203ceee96a570a43ad GIT binary patch literal 4811 zcma)=`8O1d_s1ve3}MD(4VeYW^4KD>&XBS1lqIrn*|J1g8iTRK*w<_k#!hwze)}5A(^PS-E6x71)3Z1h)v_p)c<8*Ri&rNrKg4J`68m1eN zuC-(D4z!l@bf98PO>}lz!m#R^J1t^JhWaUK0$2gbzy{Jnqb8zMU`2%BvO?i?juRfx zyx&=Hph4~xsayU$HEDju|G>7q&nEqMvcGI@^KlOFd`K&6w}&BG5$odt>g*{Mn|tAq zuUDAK%T2xoJTM8F(+dt#+#oN*-4A>$@^ja_A6erjB7WZ{qzc3$Yc)xnwJYJA6fK_e zr;rTM=;5sPhffWf^Ke6%vj$=m4TShw`TfSyGQ>*pP zT@f-Hw4^2cE#`uqO1iWO@SyiR6 z@vpU930}hLXPqoh{sq{;upYgBBXJDf8P-u6%5wRO`Qai+IcjCa>~Hy*Gs^l3f-N)M z(U^Q&QwIMh2!(0OmcRsY2@Jkbx6mV2AT|4F-l&X0$qx-vk?Ii!J*P{#S<;+Ve2sz3 z-;bd|7<7)i6U-InlRL~_4;Pocp2=|R5v2j!k*ybU^=!Q(FexCv(EZpjPu2`;bae3} z2$!O-_`d&)Z$%<$U`t*w@^0N$DF#zOxFcO*>#SSam$jCxt>~~ zUV}nixc#FWAO0$V>~WVSRY5Rrn6;_01nTYg4;LT4?J-uT1oho8>mQNFBNN7p&je7e zc9i#u$k#;siL3DJ%%pJjHk)siBle-aha#?X zxUQO#IxgN4nOJgkqT}_}y4G-H_}PyjK-nf_!pF}b`{!a)l>)$-71R?$h>wfI5 zL}j8pbnBIxFC{Jm;oo$`pAhstxn{V)dLpoLHhjSBL4o)a$mw*7%&Vu14j(Rei7|YF zPs3=xVv$yR1wu+UcKInhoIzkc|1`MkK_)nTD-+YV#_($-ojP@o9)T-Pe%WItZ?YVp z-hMb(R`pt-qPufZd3W13KQ8YuL}wB(DvyS_+M2)U^Vk$dwoY;`G!FO+uUCgQuXm#H zR}Bp!!+k(!vrZ?LHX4=eBH{r%Q$!~QJKXd^@SLRE=PAcLs>$O7>0%WbnYn4M0YyEo zA$_yk45xQ#rmwQV3uyA$)S#P}lD}PuGekL&pdhzTZ+Zr~KL$5=oK^h6PC=Q&cveVj zwOGxCdgt`x98HCfPW6J7CbRHN=R9Cikk0}TaDnr- zeYY>|{}8@vbVG0VOQACNd+&mEBVDTrLLX3#x3J6p=HuDz{ki7!^_1(VQMkRNePQ;! zL(qerX9AxLk?s|Gj&ftKk_o9z0ko#y#~ff(S_Zm(EV2h635ID3PY)#eC$=^ivqXj` zKAd^mc3c%f;y{F(H>%t%>~RAg1Z7mWR}K7rLVw+**ch*md+rUCBx)G!=UAdo3%VMh zO@Cn~DEyjq_@h6}do9s={3r~Bb2OI^IB)i#H7=EINY(;msBu)np=lOl4Tv7MMWDa< zcs)OC=ICosIx;QA=2kBYXZW((-1iX^4U8P^6h-a|Qf#2`qHpit3@&L*`MEAm25nZZ zmA}EY8Lj#xE4Nv-HHEyun+Z@h9OMkLDTNF&o{4&8%L5r<)!;;ak=v5D&o0yyebppI zCs*h@e9F4Q%C0OhMNq^Nx?`49mwO$usG$$Ke*Y_@Lw0(d@)8nsU{U(W(6jalshmK~ z_g+TG9s*Y2+SBs=dvd5o6NXOit

S71G_&7jPUgJ>e|F+uB1dk>&X);VcIhO>(Bf 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 UHOa%p&V?R;o{q701Ih{ee}McV9RL6T literal 0 HcmV?d00001 diff --git a/docs/media/donation-button-black.svg b/docs/media/donation-button-black.svg new file mode 100644 index 00000000..25217129 --- /dev/null +++ b/docs/media/donation-button-black.svg @@ -0,0 +1 @@ + \ No newline at end of file