From aa0a1d632f38006a1f1a38d09550cbf9d898d31a Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 10 May 2025 11:36:47 +0800 Subject: [PATCH 01/26] update:depend library --- XEngine_Source/XEngine_Depend | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_Depend b/XEngine_Source/XEngine_Depend index fda9f7d..2dd56fa 160000 --- a/XEngine_Source/XEngine_Depend +++ b/XEngine_Source/XEngine_Depend @@ -1 +1 @@ -Subproject commit fda9f7d9140cc6a32eecb499e2acb67e8e1c7e6f +Subproject commit 2dd56facd7c93dfd3810d1db4341fff469e0786b -- Gitee From 51e8c3ce25ff748c56bfabbcad779c063dcc6a33 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 10 May 2025 13:26:19 +0800 Subject: [PATCH 02/26] ci:more release build support --- .github/workflows/RockyArm64_build.yml | 78 ---------------- ...{RockyX86_64_build.yml => Rocky_build.yml} | 29 ++++-- ...ubuntu86_64_build.yml => Ubuntu_build.yml} | 58 ++++++++++-- ...UbuntuArm64_build.yml => debian_build.yml} | 91 +++++++++++-------- .github/workflows/release.yml | 21 ++--- 5 files changed, 128 insertions(+), 149 deletions(-) delete mode 100644 .github/workflows/RockyArm64_build.yml rename .github/workflows/{RockyX86_64_build.yml => Rocky_build.yml} (72%) rename .github/workflows/{ubuntu86_64_build.yml => Ubuntu_build.yml} (49%) rename .github/workflows/{UbuntuArm64_build.yml => debian_build.yml} (37%) diff --git a/.github/workflows/RockyArm64_build.yml b/.github/workflows/RockyArm64_build.yml deleted file mode 100644 index 5b33978..0000000 --- a/.github/workflows/RockyArm64_build.yml +++ /dev/null @@ -1,78 +0,0 @@ -name: rocky Arm64 build workflows - -on: - push: - branches: - - 'develop' - paths: - - 'XEngine_Source/**' - - 'XEngine_Release/**' - - '.github/**' - -permissions: - contents: read - -jobs: - build: - runs-on: ubuntu-24.04 - env: - IMAGE_NAME: rockylinux/rockylinux:9.5 - - strategy: - fail-fast: false - matrix: - arch: [linux/arm64] - - steps: - # 检出您的主仓库代码 - - name: Checkout main repository code - uses: actions/checkout@v4 - with: - ref: 'develop' - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Build ${{ matrix.arch }} - run: | - docker run --platform ${{ matrix.arch }} --rm \ - -v ${{ github.workspace }}:/workspace \ - -w /workspace ${{ env.IMAGE_NAME }} /bin/sh -c ' - set -e - dnf update -y - dnf install --allowerasing git make g++ wget curl jq unzip -y - - git config --global --add safe.directory /workspace - git submodule init - git submodule update - - latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) - wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_RockyLinux_9_Arm64.zip - unzip ./XEngine_RockyLinux_9_Arm64.zip -d ./XEngine_RockyLinux_9_Arm64 - cd XEngine_RockyLinux_9_Arm64 - - chmod 777 ./XEngine_LINEnv.sh - ./XEngine_LINEnv.sh -i 0 - - cp -rf ./XEngine_Include /usr/local/include - find ./XEngine_Linux -name "*.so" -exec cp {} /usr/lib64 \; - ldconfig - cd .. - - cd XEngine_Source - make ARCH=Arm64 RELEASE=1 - make FLAGS=InstallAll - make FLAGS=CleanAll - cd .. - - cd XEngine_Release - ./XEngine_ProxyServiceApp -t - chown -R $(id -u):$(id -g) . - chmod -R a+r . ' - - - name: Upload folder as artifact with RockyLinux - uses: actions/upload-artifact@v4 - with: - name: XEngine_ProxyServiceApp-RockyLinux_9_Arm64 - path: XEngine_Release/ - retention-days: 1 diff --git a/.github/workflows/RockyX86_64_build.yml b/.github/workflows/Rocky_build.yml similarity index 72% rename from .github/workflows/RockyX86_64_build.yml rename to .github/workflows/Rocky_build.yml index de6579e..16302c7 100644 --- a/.github/workflows/RockyX86_64_build.yml +++ b/.github/workflows/Rocky_build.yml @@ -1,4 +1,4 @@ -name: rocky x86_64 build workflows +name: rocky build workflows on: push: @@ -14,18 +14,28 @@ permissions: jobs: build: - runs-on: ubuntu-latest + runs-on: ${{ matrix.runner }} container: image: rockylinux/rockylinux:9.5 + options: --platform ${{ matrix.platform }} + strategy: + matrix: + include: + - arch: amd64 + runner: ubuntu-24.04 + platform: linux/amd64 + artifact: x86-64 + - arch: arm64 + runner: ubuntu-24.04-arm + platform: linux/arm64 + artifact: Arm64 steps: - # 检出您的主仓库代码 - name: Checkout main repository code uses: actions/checkout@v4 with: ref: 'develop' - # 检出依赖的xengine仓库到指定的xengine目录 - name: Checkout dependency repository (xengine) uses: actions/checkout@v4 with: @@ -42,18 +52,17 @@ jobs: run: | dnf update -y dnf install gcc g++ make git jq unzip -y - # 设置依赖库的环境变量 - name: Set up Dependency rocky linux Environment run: | cd libxengine chmod 777 * ./XEngine_LINEnv.sh -i 0 - name: install xengine library - run: | + run: | latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) - wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_RockyLinux_9_x86-64.zip - unzip ./XEngine_RockyLinux_9_x86-64.zip -d ./XEngine_RockyLinux_9_x86-64 - cd XEngine_RockyLinux_9_x86-64 + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_RockyLinux_9_${{ matrix.artifact }}.zip + unzip ./XEngine_RockyLinux_9_${{ matrix.artifact }}.zip -d ./XEngine_RockyLinux_9_${{ matrix.artifact }} + cd XEngine_RockyLinux_9_${{ matrix.artifact }} cp -rf ./XEngine_Include /usr/local/include find ./XEngine_Linux -name "*.so" -exec cp {} /usr/lib64 \; @@ -78,6 +87,6 @@ jobs: - name: Upload folder as artifact with RockyLinux uses: actions/upload-artifact@v4 with: - name: XEngine_ProxyServiceApp-RockyLinux_9_x86_64 + name: XEngine_ProxyServiceApp-RockyLinux_9_${{ matrix.artifact }} path: XEngine_Release/ retention-days: 1 diff --git a/.github/workflows/ubuntu86_64_build.yml b/.github/workflows/Ubuntu_build.yml similarity index 49% rename from .github/workflows/ubuntu86_64_build.yml rename to .github/workflows/Ubuntu_build.yml index 599e8fe..7602247 100644 --- a/.github/workflows/ubuntu86_64_build.yml +++ b/.github/workflows/Ubuntu_build.yml @@ -1,4 +1,4 @@ -name: ubuntu x86_64 build workflows +name: ubuntu build workflows on: push: @@ -17,16 +17,16 @@ jobs: include: - os: ubuntu-22.04 - os: ubuntu-24.04 + - os: ubuntu-22.04-arm + - os: ubuntu-24.04-arm runs-on: ${{ matrix.os }} steps: - # 检出您的主仓库代码 - name: Checkout main repository code uses: actions/checkout@v4 with: ref: 'develop' - # 检出依赖的xengine仓库到指定的xengine目录 - name: Checkout dependency repository (xengine) uses: actions/checkout@v4 with: @@ -38,13 +38,13 @@ jobs: git submodule init git submodule update - - name: Set up Dependency ubuntu24.04 Environment + - name: Set up Dependency ubuntu24.04 x86-64 Environment if: matrix.os == 'ubuntu-24.04' run: | cd libxengine chmod 777 * sudo ./XEngine_LINEnv.sh -i 3 - - name: Set up Dependency ubuntu22.04 Environment + - name: Set up Dependency ubuntu22.04 x86-64 Environment if: matrix.os == 'ubuntu-22.04' run: | cd libxengine @@ -56,6 +56,36 @@ jobs: unzip ./XEngine_UBuntu_22.04_x86-64.zip -d ./XEngine_UBuntu_22.04_x86-64 cd XEngine_UBuntu_22.04_x86-64 + sudo cp -rf ./XEngine_Include /usr/local/include + sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; + sudo ldconfig + - name: Set up Dependency ubuntu22.04 arm Environment + if: matrix.os == 'ubuntu-22.04-arm' + run: | + cd libxengine + chmod 777 * + sudo ./XEngine_LINEnv.sh -i 0 + + latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_UBuntu_22.04_Arm64.zip + unzip ./XEngine_UBuntu_22.04_Arm64.zip -d ./XEngine_UBuntu_22.04_Arm64 + cd XEngine_UBuntu_22.04_Arm64 + + sudo cp -rf ./XEngine_Include /usr/local/include + sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; + sudo ldconfig + - name: Set up Dependency ubuntu24.04 arm Environment + if: matrix.os == 'ubuntu-24.04-arm' + run: | + cd libxengine + chmod 777 * + sudo ./XEngine_LINEnv.sh -i 0 + + latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_UBuntu_24.04_Arm64.zip + unzip ./XEngine_UBuntu_24.04_Arm64.zip -d ./XEngine_UBuntu_24.04_Arm64 + cd XEngine_UBuntu_24.04_Arm64 + sudo cp -rf ./XEngine_Include /usr/local/include sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; sudo ldconfig @@ -76,17 +106,31 @@ jobs: cd XEngine_Release ./XEngine_ProxyServiceApp -t - - name: Upload folder as artifact with ubuntu22.04 + - name: Upload folder as artifact with ubuntu22.04 x86-64 if: matrix.os == 'ubuntu-22.04' uses: actions/upload-artifact@v4 with: name: XEngine_ProxyServiceApp-Ubuntu_22.04_x86_64 path: XEngine_Release/ retention-days: 1 - - name: Upload folder as artifact with ubuntu24.04 + - name: Upload folder as artifact with ubuntu24.04 x86-64 if: matrix.os == 'ubuntu-24.04' uses: actions/upload-artifact@v4 with: name: XEngine_ProxyServiceApp-Ubuntu_24.04_x86_64 path: XEngine_Release/ + retention-days: 1 + - name: Upload folder as artifact with ubuntu22.04 Arm64 + if: matrix.os == 'ubuntu-22.04-arm' + uses: actions/upload-artifact@v4 + with: + name: XEngine_ProxyServiceApp-Ubuntu_22.04_Arm64 + path: XEngine_Release/ + retention-days: 1 + - name: Upload folder as artifact with ubuntu24.04 Arm64 + if: matrix.os == 'ubuntu-24.04-arm' + uses: actions/upload-artifact@v4 + with: + name: XEngine_ProxyServiceApp-Ubuntu_24.04_Arm64 + path: XEngine_Release/ retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/UbuntuArm64_build.yml b/.github/workflows/debian_build.yml similarity index 37% rename from .github/workflows/UbuntuArm64_build.yml rename to .github/workflows/debian_build.yml index 8a898fc..a2bfac9 100644 --- a/.github/workflows/UbuntuArm64_build.yml +++ b/.github/workflows/debian_build.yml @@ -1,74 +1,87 @@ -name: ubuntu Arm64 build workflows +name: debian build workflows on: push: - branches: + branches: - 'develop' paths: - 'XEngine_Source/**' - 'XEngine_Release/**' - '.github/**' - + +permissions: + contents: read + jobs: build: - runs-on: ubuntu-24.04 - env: - IMAGE_NAME: ubuntu:24.04 - + runs-on: ${{ matrix.runner }} + container: + image: debian:bookworm + options: --platform ${{ matrix.platform }} strategy: - fail-fast: false matrix: - arch: [linux/arm64] + include: + - arch: amd64 + runner: ubuntu-24.04 + platform: linux/amd64 + artifact: x86-64 steps: - name: Checkout main repository code uses: actions/checkout@v4 + + - name: Checkout dependency repository (xengine) + uses: actions/checkout@v4 with: - ref: 'develop' - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + repository: libxengine/libxengine + path: libxengine - - name: Build ${{ matrix.arch }} + - name: sub module checkout (opensource) + uses: actions/checkout@v4 + with: + repository: libxengine/XEngine_OPenSource + path: XEngine_Source/XEngine_Depend + + - name: install system package run: | - docker run --platform ${{ matrix.arch }} --rm \ - -v ${{ github.workspace }}:/workspace \ - -w /workspace ${{ env.IMAGE_NAME }} /bin/sh -c ' - set -e apt update -y - apt install git make g++ wget curl jq unzip -y - - git config --global --add safe.directory /workspace - git submodule init - git submodule update - - latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) - wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_UBuntu_24.04_Arm64.zip - unzip ./XEngine_UBuntu_24.04_Arm64.zip -d ./XEngine_UBuntu_24.04_Arm64 - cd XEngine_UBuntu_24.04_Arm64 + apt install gcc g++ make git jq unzip curl -y - chmod 777 ./XEngine_LINEnv.sh + - name: Set up Dependency rocky linux Environment + run: | + cd libxengine + chmod 777 * ./XEngine_LINEnv.sh -i 0 - + - name: install xengine library + run: | + latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_Debian_12_${{ matrix.artifact }}.zip + unzip ./XEngine_Debian_12_${{ matrix.artifact }}.zip -d ./XEngine_Debian_12_${{ matrix.artifact }} + cd XEngine_Debian_12_${{ matrix.artifact }} + cp -rf ./XEngine_Include /usr/local/include find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; ldconfig - cd .. + - name: make + run: | cd XEngine_Source - make ARCH=Arm64 RELEASE=1 + make make FLAGS=InstallAll - make FLAGS=CleanAll - cd .. + make FLAGS=CleanAll + make RELEASE=1 + make FLAGS=InstallAll + make FLAGS=CleanAll + cd .. + - name: test + run: | cd XEngine_Release - ./XEngine_ProxyServiceApp -t - chown -R $(id -u):$(id -g) . - chmod -R a+r . ' + ./XEngine_ProxyServiceApp -t - - name: Upload folder as artifact with ubuntu Arm64 + - name: Upload folder as artifact uses: actions/upload-artifact@v4 with: - name: XEngine_ProxyServiceApp-Ubuntu_24.04_Arm64 + name: XEngine_ProxyServiceApp-Debian_12_x86-64 path: XEngine_Release/ retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2dda2ce..4fee513 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,37 +16,28 @@ jobs: with: fetch-depth: 0 - - name: Download x86_64 ubuntubuild + - name: Download ubuntu build uses: dawidd6/action-download-artifact@v6 with: - workflow: ubuntu86_64_build.yml + workflow: Ubuntu_build.yml workflow_conclusion: success check_artifacts: false skip_unpack: true if_no_artifact_found: fail path: ./XRelease/ - - name: Download Arm64 ubuntubuild + - name: Download debian build uses: dawidd6/action-download-artifact@v6 with: - workflow: UbuntuArm64_build.yml + workflow: debian_build.yml workflow_conclusion: success check_artifacts: false skip_unpack: true if_no_artifact_found: fail path: ./XRelease/ - - name: Download x86_64 Rockylinux + - name: Download Rockylinux uses: dawidd6/action-download-artifact@v6 with: - workflow: RockyX86_64_build.yml - workflow_conclusion: success - check_artifacts: false - skip_unpack: true - if_no_artifact_found: fail - path: ./XRelease/ - - name: Download Arm64 Rockylinux - uses: dawidd6/action-download-artifact@v6 - with: - workflow: RockyArm64_build.yml + workflow: Rocky_build.yml workflow_conclusion: success check_artifacts: false skip_unpack: true -- Gitee From f20f0e5f4d5924eea469909090a84a95b3924f5b Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 10 May 2025 14:42:49 +0800 Subject: [PATCH 03/26] ci:include and bin file copy modify --- .github/workflows/Rocky_build.yml | 8 ++++++-- .github/workflows/Ubuntu_build.yml | 12 +++++++++--- .github/workflows/debian_build.yml | 6 +++++- .github/workflows/macbuild.yml | 6 +++++- 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/.github/workflows/Rocky_build.yml b/.github/workflows/Rocky_build.yml index 16302c7..1f335ca 100644 --- a/.github/workflows/Rocky_build.yml +++ b/.github/workflows/Rocky_build.yml @@ -47,7 +47,10 @@ jobs: with: repository: libxengine/XEngine_OPenSource path: XEngine_Source/XEngine_Depend - + + - name: Set TERM variable + run: echo "TERM=xterm" >> $GITHUB_ENV + - name: install system package run: | dnf update -y @@ -64,7 +67,8 @@ jobs: unzip ./XEngine_RockyLinux_9_${{ matrix.artifact }}.zip -d ./XEngine_RockyLinux_9_${{ matrix.artifact }} cd XEngine_RockyLinux_9_${{ matrix.artifact }} - cp -rf ./XEngine_Include /usr/local/include + cp -rf ./XEngine_Include /usr/include + cp -rf ./XEngine_Linux/xengine /usr/local/bin find ./XEngine_Linux -name "*.so" -exec cp {} /usr/lib64 \; ldconfig diff --git a/.github/workflows/Ubuntu_build.yml b/.github/workflows/Ubuntu_build.yml index 7602247..baf1249 100644 --- a/.github/workflows/Ubuntu_build.yml +++ b/.github/workflows/Ubuntu_build.yml @@ -38,6 +38,9 @@ jobs: git submodule init git submodule update + - name: Set TERM variable + run: echo "TERM=xterm" >> $GITHUB_ENV + - name: Set up Dependency ubuntu24.04 x86-64 Environment if: matrix.os == 'ubuntu-24.04' run: | @@ -56,7 +59,8 @@ jobs: unzip ./XEngine_UBuntu_22.04_x86-64.zip -d ./XEngine_UBuntu_22.04_x86-64 cd XEngine_UBuntu_22.04_x86-64 - sudo cp -rf ./XEngine_Include /usr/local/include + cp -rf ./XEngine_Include /usr/include + cp -rf ./XEngine_Linux/xengine /usr/local/bin sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; sudo ldconfig - name: Set up Dependency ubuntu22.04 arm Environment @@ -71,7 +75,8 @@ jobs: unzip ./XEngine_UBuntu_22.04_Arm64.zip -d ./XEngine_UBuntu_22.04_Arm64 cd XEngine_UBuntu_22.04_Arm64 - sudo cp -rf ./XEngine_Include /usr/local/include + cp -rf ./XEngine_Include /usr/include + cp -rf ./XEngine_Linux/xengine /usr/local/bin sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; sudo ldconfig - name: Set up Dependency ubuntu24.04 arm Environment @@ -86,7 +91,8 @@ jobs: unzip ./XEngine_UBuntu_24.04_Arm64.zip -d ./XEngine_UBuntu_24.04_Arm64 cd XEngine_UBuntu_24.04_Arm64 - sudo cp -rf ./XEngine_Include /usr/local/include + cp -rf ./XEngine_Include /usr/include + cp -rf ./XEngine_Linux/xengine /usr/local/bin sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; sudo ldconfig diff --git a/.github/workflows/debian_build.yml b/.github/workflows/debian_build.yml index a2bfac9..2e9a114 100644 --- a/.github/workflows/debian_build.yml +++ b/.github/workflows/debian_build.yml @@ -42,6 +42,9 @@ jobs: repository: libxengine/XEngine_OPenSource path: XEngine_Source/XEngine_Depend + - name: Set TERM variable + run: echo "TERM=xterm" >> $GITHUB_ENV + - name: install system package run: | apt update -y @@ -59,7 +62,8 @@ jobs: unzip ./XEngine_Debian_12_${{ matrix.artifact }}.zip -d ./XEngine_Debian_12_${{ matrix.artifact }} cd XEngine_Debian_12_${{ matrix.artifact }} - cp -rf ./XEngine_Include /usr/local/include + cp -rf ./XEngine_Include /usr/include + cp -rf ./XEngine_Linux/xengine /usr/local/bin find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; ldconfig diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index b069251..8db37a2 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -36,6 +36,9 @@ jobs: git submodule init git submodule update + - name: Set TERM variable + run: echo "TERM=xterm" >> $GITHUB_ENV + - name: brew install run: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" @@ -60,7 +63,8 @@ jobs: sudo mkdir -p /usr/local/include sudo mkdir -p /usr/local/lib - sudo cp -rf ./XEngine_Include /usr/local/include + cp -rf ./XEngine_Include /usr/include + cp -rf ./XEngine_Mac/xengine /usr/local/bin sudo find ./XEngine_Mac -name "*.dylib" -exec cp {} /usr/local/lib \; - name: make debug -- Gitee From 88d3a17ce0075ddf0d6f11596a651de3e7794379 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 10 May 2025 14:55:10 +0800 Subject: [PATCH 04/26] ci:fixed build on mac --- .github/workflows/macbuild.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index 8db37a2..cee4f56 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -61,7 +61,7 @@ jobs: unzip ./XEngine_Mac_Arm64.zip -d ./XEngine_Mac_Arm64 cd XEngine_Mac_Arm64 - sudo mkdir -p /usr/local/include + sudo mkdir -p /usr/include sudo mkdir -p /usr/local/lib cp -rf ./XEngine_Include /usr/include cp -rf ./XEngine_Mac/xengine /usr/local/bin -- Gitee From 01559006dcb8edb90844800d955d5398e711dc57 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 10 May 2025 15:02:50 +0800 Subject: [PATCH 05/26] ci:fixed build --- .github/workflows/Rocky_build.yml | 8 ++++---- .github/workflows/Ubuntu_build.yml | 12 ++++++------ .github/workflows/debian_build.yml | 8 ++++---- .github/workflows/macbuild.yml | 4 ++-- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/Rocky_build.yml b/.github/workflows/Rocky_build.yml index 1f335ca..6b72ee7 100644 --- a/.github/workflows/Rocky_build.yml +++ b/.github/workflows/Rocky_build.yml @@ -67,10 +67,10 @@ jobs: unzip ./XEngine_RockyLinux_9_${{ matrix.artifact }}.zip -d ./XEngine_RockyLinux_9_${{ matrix.artifact }} cd XEngine_RockyLinux_9_${{ matrix.artifact }} - cp -rf ./XEngine_Include /usr/include - cp -rf ./XEngine_Linux/xengine /usr/local/bin - find ./XEngine_Linux -name "*.so" -exec cp {} /usr/lib64 \; - ldconfig + sudo cp -rf ./XEngine_Include /usr/include + sudo cp -rf ./XEngine_Linux/xengine /usr/local/bin + sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/lib64 \; + sudo ldconfig - name: make run: | diff --git a/.github/workflows/Ubuntu_build.yml b/.github/workflows/Ubuntu_build.yml index baf1249..9b57df9 100644 --- a/.github/workflows/Ubuntu_build.yml +++ b/.github/workflows/Ubuntu_build.yml @@ -59,8 +59,8 @@ jobs: unzip ./XEngine_UBuntu_22.04_x86-64.zip -d ./XEngine_UBuntu_22.04_x86-64 cd XEngine_UBuntu_22.04_x86-64 - cp -rf ./XEngine_Include /usr/include - cp -rf ./XEngine_Linux/xengine /usr/local/bin + sudo cp -rf ./XEngine_Include /usr/include + sudo cp -rf ./XEngine_Linux/xengine /usr/local/bin sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; sudo ldconfig - name: Set up Dependency ubuntu22.04 arm Environment @@ -75,8 +75,8 @@ jobs: unzip ./XEngine_UBuntu_22.04_Arm64.zip -d ./XEngine_UBuntu_22.04_Arm64 cd XEngine_UBuntu_22.04_Arm64 - cp -rf ./XEngine_Include /usr/include - cp -rf ./XEngine_Linux/xengine /usr/local/bin + sudo cp -rf ./XEngine_Include /usr/include + sudo cp -rf ./XEngine_Linux/xengine /usr/local/bin sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; sudo ldconfig - name: Set up Dependency ubuntu24.04 arm Environment @@ -91,8 +91,8 @@ jobs: unzip ./XEngine_UBuntu_24.04_Arm64.zip -d ./XEngine_UBuntu_24.04_Arm64 cd XEngine_UBuntu_24.04_Arm64 - cp -rf ./XEngine_Include /usr/include - cp -rf ./XEngine_Linux/xengine /usr/local/bin + sudo cp -rf ./XEngine_Include /usr/include + sudo cp -rf ./XEngine_Linux/xengine /usr/local/bin sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; sudo ldconfig diff --git a/.github/workflows/debian_build.yml b/.github/workflows/debian_build.yml index 2e9a114..8d0dc6d 100644 --- a/.github/workflows/debian_build.yml +++ b/.github/workflows/debian_build.yml @@ -62,10 +62,10 @@ jobs: unzip ./XEngine_Debian_12_${{ matrix.artifact }}.zip -d ./XEngine_Debian_12_${{ matrix.artifact }} cd XEngine_Debian_12_${{ matrix.artifact }} - cp -rf ./XEngine_Include /usr/include - cp -rf ./XEngine_Linux/xengine /usr/local/bin - find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; - ldconfig + sudo cp -rf ./XEngine_Include /usr/include + sudo cp -rf ./XEngine_Linux/xengine /usr/local/bin + sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; + sudo ldconfig - name: make run: | diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index cee4f56..cfa7957 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -63,8 +63,8 @@ jobs: sudo mkdir -p /usr/include sudo mkdir -p /usr/local/lib - cp -rf ./XEngine_Include /usr/include - cp -rf ./XEngine_Mac/xengine /usr/local/bin + sudo cp -rf ./XEngine_Include /usr/include + sudo cp -rf ./XEngine_Mac/xengine /usr/local/bin sudo find ./XEngine_Mac -name "*.dylib" -exec cp {} /usr/local/lib \; - name: make debug -- Gitee From 4ea6ae4d787e5e3db63395037592a994b305bc8b Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 10 May 2025 15:07:59 +0800 Subject: [PATCH 06/26] ci:Unified include --- .github/workflows/Rocky_build.yml | 2 +- .github/workflows/Ubuntu_build.yml | 2 +- .github/workflows/debian_build.yml | 2 +- .github/workflows/macbuild.yml | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/Rocky_build.yml b/.github/workflows/Rocky_build.yml index 6b72ee7..f63ef10 100644 --- a/.github/workflows/Rocky_build.yml +++ b/.github/workflows/Rocky_build.yml @@ -67,7 +67,7 @@ jobs: unzip ./XEngine_RockyLinux_9_${{ matrix.artifact }}.zip -d ./XEngine_RockyLinux_9_${{ matrix.artifact }} cd XEngine_RockyLinux_9_${{ matrix.artifact }} - sudo cp -rf ./XEngine_Include /usr/include + sudo cp -rf ./XEngine_Include /usr/local/include sudo cp -rf ./XEngine_Linux/xengine /usr/local/bin sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/lib64 \; sudo ldconfig diff --git a/.github/workflows/Ubuntu_build.yml b/.github/workflows/Ubuntu_build.yml index 9b57df9..8db08de 100644 --- a/.github/workflows/Ubuntu_build.yml +++ b/.github/workflows/Ubuntu_build.yml @@ -59,7 +59,7 @@ jobs: unzip ./XEngine_UBuntu_22.04_x86-64.zip -d ./XEngine_UBuntu_22.04_x86-64 cd XEngine_UBuntu_22.04_x86-64 - sudo cp -rf ./XEngine_Include /usr/include + sudo cp -rf ./XEngine_Include /usr/local/include sudo cp -rf ./XEngine_Linux/xengine /usr/local/bin sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; sudo ldconfig diff --git a/.github/workflows/debian_build.yml b/.github/workflows/debian_build.yml index 8d0dc6d..2ec90d9 100644 --- a/.github/workflows/debian_build.yml +++ b/.github/workflows/debian_build.yml @@ -62,7 +62,7 @@ jobs: unzip ./XEngine_Debian_12_${{ matrix.artifact }}.zip -d ./XEngine_Debian_12_${{ matrix.artifact }} cd XEngine_Debian_12_${{ matrix.artifact }} - sudo cp -rf ./XEngine_Include /usr/include + sudo cp -rf ./XEngine_Include /usr/local/include sudo cp -rf ./XEngine_Linux/xengine /usr/local/bin sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; sudo ldconfig diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index cfa7957..a4b38c1 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -61,9 +61,9 @@ jobs: unzip ./XEngine_Mac_Arm64.zip -d ./XEngine_Mac_Arm64 cd XEngine_Mac_Arm64 - sudo mkdir -p /usr/include + sudo mkdir -p /usr/local/include sudo mkdir -p /usr/local/lib - sudo cp -rf ./XEngine_Include /usr/include + sudo cp -rf ./XEngine_Include /usr/local/include sudo cp -rf ./XEngine_Mac/xengine /usr/local/bin sudo find ./XEngine_Mac -name "*.dylib" -exec cp {} /usr/local/lib \; -- Gitee From 07b2e90818083280c0c8c77adf9e134e928791fc Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 10 May 2025 15:24:14 +0800 Subject: [PATCH 07/26] ci:fixed built --- .github/workflows/Rocky_build.yml | 8 ++++---- .github/workflows/debian_build.yml | 8 ++++---- .github/workflows/macbuild.yml | 10 +++++----- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/Rocky_build.yml b/.github/workflows/Rocky_build.yml index f63ef10..93ff095 100644 --- a/.github/workflows/Rocky_build.yml +++ b/.github/workflows/Rocky_build.yml @@ -67,10 +67,10 @@ jobs: unzip ./XEngine_RockyLinux_9_${{ matrix.artifact }}.zip -d ./XEngine_RockyLinux_9_${{ matrix.artifact }} cd XEngine_RockyLinux_9_${{ matrix.artifact }} - sudo cp -rf ./XEngine_Include /usr/local/include - sudo cp -rf ./XEngine_Linux/xengine /usr/local/bin - sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/lib64 \; - sudo ldconfig + cp -rf ./XEngine_Include /usr/local/include + cp -rf ./XEngine_Linux/xengine /usr/local/bin + find ./XEngine_Linux -name "*.so" -exec cp {} /usr/lib64 \; + ldconfig - name: make run: | diff --git a/.github/workflows/debian_build.yml b/.github/workflows/debian_build.yml index 2ec90d9..e84f124 100644 --- a/.github/workflows/debian_build.yml +++ b/.github/workflows/debian_build.yml @@ -62,10 +62,10 @@ jobs: unzip ./XEngine_Debian_12_${{ matrix.artifact }}.zip -d ./XEngine_Debian_12_${{ matrix.artifact }} cd XEngine_Debian_12_${{ matrix.artifact }} - sudo cp -rf ./XEngine_Include /usr/local/include - sudo cp -rf ./XEngine_Linux/xengine /usr/local/bin - sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; - sudo ldconfig + cp -rf ./XEngine_Include /usr/local/include + cp -rf ./XEngine_Linux/xengine /usr/local/bin + find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; + ldconfig - name: make run: | diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index a4b38c1..8b087eb 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -61,11 +61,11 @@ jobs: unzip ./XEngine_Mac_Arm64.zip -d ./XEngine_Mac_Arm64 cd XEngine_Mac_Arm64 - sudo mkdir -p /usr/local/include - sudo mkdir -p /usr/local/lib - sudo cp -rf ./XEngine_Include /usr/local/include - sudo cp -rf ./XEngine_Mac/xengine /usr/local/bin - sudo find ./XEngine_Mac -name "*.dylib" -exec cp {} /usr/local/lib \; + mkdir -p /usr/local/include + mkdir -p /usr/local/lib + cp -rf ./XEngine_Include /usr/local/include + cp -rf ./XEngine_Mac/xengine /usr/local/bin + find ./XEngine_Mac -name "*.dylib" -exec cp {} /usr/local/lib \; - name: make debug run: | -- Gitee From 96989975982a4e58a1af3079edaac0fb10212588 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 10 May 2025 15:49:04 +0800 Subject: [PATCH 08/26] ci:macbuild.yml update --- .github/workflows/macbuild.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index 8b087eb..a4b38c1 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -61,11 +61,11 @@ jobs: unzip ./XEngine_Mac_Arm64.zip -d ./XEngine_Mac_Arm64 cd XEngine_Mac_Arm64 - mkdir -p /usr/local/include - mkdir -p /usr/local/lib - cp -rf ./XEngine_Include /usr/local/include - cp -rf ./XEngine_Mac/xengine /usr/local/bin - find ./XEngine_Mac -name "*.dylib" -exec cp {} /usr/local/lib \; + sudo mkdir -p /usr/local/include + sudo mkdir -p /usr/local/lib + sudo cp -rf ./XEngine_Include /usr/local/include + sudo cp -rf ./XEngine_Mac/xengine /usr/local/bin + sudo find ./XEngine_Mac -name "*.dylib" -exec cp {} /usr/local/lib \; - name: make debug run: | -- Gitee From 557824ab6997ebf93430bd5b884e3b6a165c4ce3 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 13 May 2025 13:52:32 +0800 Subject: [PATCH 09/26] improved:make file build flags --- XEngine_Source/Makefile | 10 +++++----- .../XEngine_ModuleAuthorize/Makefile | 19 ++++++------------- .../XEngine_ModuleConfigure/Makefile | 19 ++++++------------- .../XEngine_ModuleProtocol/Makefile | 19 ++++++------------- XEngine_Source/XEngine_ModuleSession/Makefile | 19 ++++++------------- XEngine_Source/XEngine_ServiceApp/Makefile | 19 ++++++------------- 6 files changed, 35 insertions(+), 70 deletions(-) diff --git a/XEngine_Source/Makefile b/XEngine_Source/Makefile index a4aae7c..8e6a2d1 100644 --- a/XEngine_Source/Makefile +++ b/XEngine_Source/Makefile @@ -34,14 +34,14 @@ libXEngine_InfoReport.so: ifeq ($(FLAGS), InstallAll) cp $(THIRDPART_MODULE_REPORT)/libXEngine_InfoReport.$(FILEEXT) ../XEngine_Release/ else - make -C $(THIRDPART_MODULE_REPORT) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(THIRDPART_MODULE_REPORT) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) endif libXEngine_ModuleConfigure.so: - make -C $(MODULE_CONFIGURE_PATH) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(MODULE_CONFIGURE_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) libXEngine_ModuleProtocol.so: - make -C $(MODULE_PROTOCOL_PATH) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(MODULE_PROTOCOL_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) libXEngine_ModuleSession.so: - make -C $(MODULE_SESSION_PATH) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(MODULE_SESSION_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) XEngine_ServiceApp.exe: - make -C $(APP_SERVICE_PATH) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(APP_SERVICE_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) diff --git a/XEngine_Source/XEngine_ModuleAuthorize/Makefile b/XEngine_Source/XEngine_ModuleAuthorize/Makefile index ccadc88..79695ce 100644 --- a/XEngine_Source/XEngine_ModuleAuthorize/Makefile +++ b/XEngine_Source/XEngine_ModuleAuthorize/Makefile @@ -1,11 +1,7 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ LOADSO = LIB = @@ -13,31 +9,29 @@ LIBEX = OBJECTS = ModuleAuthorize_User.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -46,7 +40,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/XEngine_ModuleConfigure/Makefile b/XEngine_Source/XEngine_ModuleConfigure/Makefile index 55722b1..83b2067 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/Makefile +++ b/XEngine_Source/XEngine_ModuleConfigure/Makefile @@ -1,11 +1,7 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ -I ../XEngine_Depend/XEngine_Module/jsoncpp LOADSO = -L ../XEngine_Depend/XEngine_Module/jsoncpp LIB = -ljsoncpp @@ -13,31 +9,29 @@ LIBEX = OBJECTS = ModuleConfigure_Json.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -46,7 +40,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/XEngine_ModuleProtocol/Makefile b/XEngine_Source/XEngine_ModuleProtocol/Makefile index 57f3232..ec96726 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/Makefile +++ b/XEngine_Source/XEngine_ModuleProtocol/Makefile @@ -1,11 +1,7 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ -I ../XEngine_Depend/XEngine_Module/jsoncpp LOADSO = -L ../XEngine_Depend/XEngine_Module/jsoncpp LIB = -ljsoncpp @@ -13,31 +9,29 @@ LIBEX = OBJECTS = ModuleProtocol_Packet.o ModuleProtocol_Parse.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -46,7 +40,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/XEngine_ModuleSession/Makefile b/XEngine_Source/XEngine_ModuleSession/Makefile index 6f3b379..7f048cc 100644 --- a/XEngine_Source/XEngine_ModuleSession/Makefile +++ b/XEngine_Source/XEngine_ModuleSession/Makefile @@ -1,11 +1,7 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ -I ../XEngine_ThirdPart/jsoncpp LOADSO = LIB = -lXEngine_BaseLib -lXEngine_Algorithm @@ -13,31 +9,29 @@ LIBEX = OBJECTS = ModuleSession_Forward.o ModuleSession_Socks.o ModuleSession_Tunnel.o ModuleSession_Proxy.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -46,7 +40,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/XEngine_ServiceApp/Makefile b/XEngine_Source/XEngine_ServiceApp/Makefile index 65f63e5..a0b4d31 100644 --- a/XEngine_Source/XEngine_ServiceApp/Makefile +++ b/XEngine_Source/XEngine_ServiceApp/Makefile @@ -1,9 +1,5 @@ CC = g++ -Wall -std=c++20 -PLATFORM = linux PLATVER = -PLATDIR = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ -I ../XEngine_Depend/XEngine_Module/jsoncpp LOADSO = -L ../XEngine_ModuleConfigure -L ../XEngine_ModuleSession -L ../XEngine_ModuleProtocol \ -L ../XEngine_Depend/XEngine_Module/jsoncpp -L ../XEngine_Depend/XEngine_Module/XEngine_InfoReport @@ -14,38 +10,35 @@ LIBEX = OBJECTS = XEngine_Configure.o XEngine_Network.o XEngine_SocksTask.o XEngine_TunnelTask.o XEngine_ForwardTask.o XEngine_ProxyTask.o XEngine_ServiceApp.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif LIBEX = -lpthread -lrt -ldl LOADBIN = -Wl,-rpath=./,--disable-new-dtags else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac LIBEX = -lpthread -ldl LOADBIN = -Wl,-rpath,@loader_path/./ endif -- Gitee From 195bb242a6c1d575ea4cc7b6c807200d80c52b55 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 13 May 2025 13:58:06 +0800 Subject: [PATCH 10/26] modify:only release work for info report --- XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp index 785b783..e334838 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp @@ -350,6 +350,7 @@ int main(int argc, char** argv) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,Proxy服务没有被启用")); } +#ifndef _DEBUG //发送信息报告 if (st_ServiceConfig.st_XReport.bEnable && !bIsTest) { @@ -367,7 +368,7 @@ int main(int argc, char** argv) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,信息报告给API服务器没有启用")); } - +#endif XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("所有服务成功启动,服务运行中,XEngine版本:%s%s,服务版本:%s,发行次数:%d。。。"), BaseLib_Version_XNumberStr(), BaseLib_Version_XTypeStr(), st_ServiceConfig.st_XVer.pStl_ListVer->front().c_str(), st_ServiceConfig.st_XVer.pStl_ListVer->size()); while (true) -- Gitee From 6dafe0845a3424d555518940a0825eb6a2f4d8bf Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 14 May 2025 13:51:14 +0800 Subject: [PATCH 11/26] improved:info --- XEngine_Source/XEngine_Depend | 2 +- .../XEngine_ModuleProtocol/XEngine_ModuleProtocol.vcxproj | 2 +- XEngine_Source/XEngine_UserProtocol.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/XEngine_Source/XEngine_Depend b/XEngine_Source/XEngine_Depend index 2dd56fa..5bc8164 160000 --- a/XEngine_Source/XEngine_Depend +++ b/XEngine_Source/XEngine_Depend @@ -1 +1 @@ -Subproject commit 2dd56facd7c93dfd3810d1db4341fff469e0786b +Subproject commit 5bc816462c2c1f04e282ecce6c4c12db0ec11029 diff --git a/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.vcxproj b/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.vcxproj index 7595bb0..e69598e 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.vcxproj +++ b/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.vcxproj @@ -98,7 +98,7 @@ - $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;..\XEngine_ModuleProtocol;$(IncludePath) $(XEngine_Lib32);$(LibraryPath) diff --git a/XEngine_Source/XEngine_UserProtocol.h b/XEngine_Source/XEngine_UserProtocol.h index 2ba6a0b..cbd4187 100644 --- a/XEngine_Source/XEngine_UserProtocol.h +++ b/XEngine_Source/XEngine_UserProtocol.h @@ -27,7 +27,7 @@ typedef enum en_XEngine_XUser_Protocol #define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_FORWARD_ANONYREQ 0xE1006 //匿名转发 #define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_FORWARD_ANONYREP 0xE1007 /////////////////////////////////////////////////////////////////////////// -// 导出的数据结构 +// 导出的错误信息 /////////////////////////////////////////////////////////////////////////// #define ERROR_XENGINE_PROXY_PROTOCOL_FORMAT 0x01 //协议格式内容错误 #define ERROR_XENGINE_PROXY_PROTOCOL_SERVER 0x02 //服务器内部处理错误 -- Gitee From 7463d6bf8fa6671e85dfa3121bf38f04e82de54a Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 14 May 2025 13:59:49 +0800 Subject: [PATCH 12/26] modify:delete source port rule match for proxy forward --- .../XEngine_ServiceApp/XEngine_ProxyTask.cpp | 26 +++++-------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp index a73f230..ab88f44 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp @@ -28,27 +28,13 @@ bool XEngine_Proxy_Connect(LPCXSTR lpszClientAddr) { XCHAR tszTmpIPAddr[128] = {}; _stxscanf(stl_ListIterator->c_str(), _X("%[^-]-%s"), tszTmpIPAddr, tszDstIPAddr); - if (APIAddr_IPAddr_IsIPV4Addr(tszTmpIPAddr)) + //ip + if (0 == _tcsxnicmp(tszSrcIPAddr, tszTmpIPAddr, _tcsxlen(tszSrcIPAddr))) { - //ip - if (0 == _tcsxnicmp(tszSrcIPAddr, tszTmpIPAddr, _tcsxlen(tszSrcIPAddr))) - { - bFound = true; - _tcsxcpy(tszIPAddr, tszDstIPAddr); - APIAddr_IPAddr_SegAddr(tszDstIPAddr, &nDstPort); - break; - } - } - else - { - //port - if (_ttxoi(tszTmpIPAddr) == nSrcPort) - { - bFound = true; - _tcsxcpy(tszIPAddr, tszDstIPAddr); - APIAddr_IPAddr_SegAddr(tszDstIPAddr, &nDstPort); - break; - } + bFound = true; + _tcsxcpy(tszIPAddr, tszDstIPAddr); + APIAddr_IPAddr_SegAddr(tszDstIPAddr, &nDstPort); + break; } } -- Gitee From ffc60a7b8fb013776ccefb5509e6a186fbafef3f Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 14 May 2025 15:57:51 +0800 Subject: [PATCH 13/26] added:module help added:proxy forward dest list support --- .../XEngine_Config/XEngine_Config.json | 8 +- XEngine_Source/XEngine.sln | 14 ++ .../ModuleConfig_Define.h | 3 +- .../ModuleConfigure_Json.cpp | 12 +- XEngine_Source/XEngine_ModuleHelp/Makefile | 69 +++++++ .../ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp | 94 ++++++++++ .../ModuleHelp_APIHelp/ModuleHelp_APIHelp.h | 24 +++ .../XEngine_ModuleHelp/ModuleHelp_Define.h | 44 +++++ .../XEngine_ModuleHelp/ModuleHelp_Error.h | 40 ++++ .../XEngine_ModuleHelp/XEngine_ModuleHelp.def | 7 + .../XEngine_ModuleHelp.vcxproj | 172 ++++++++++++++++++ .../XEngine_ModuleHelp.vcxproj.filters | 56 ++++++ .../XEngine_ModuleHelp.vcxproj.user | 4 + XEngine_Source/XEngine_ModuleHelp/dllmain.cpp | 19 ++ XEngine_Source/XEngine_ModuleHelp/framework.h | 5 + XEngine_Source/XEngine_ModuleHelp/pch.cpp | 39 ++++ XEngine_Source/XEngine_ModuleHelp/pch.h | 50 +++++ .../ModuleSession_Define.h | 26 ++- .../ModuleSession_Proxy.cpp | 66 +++++++ .../ModuleSession_Proxy/ModuleSession_Proxy.h | 1 + .../XEngine_ModuleSession.def | 3 +- XEngine_Source/XEngine_ModuleSession/pch.cpp | 4 + .../XEngine_ServiceApp/XEngine_ProxyTask.cpp | 46 +++-- .../XEngine_ServiceApp/XEngine_ServiceApp.cpp | 2 +- 24 files changed, 782 insertions(+), 26 deletions(-) create mode 100644 XEngine_Source/XEngine_ModuleHelp/Makefile create mode 100644 XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp create mode 100644 XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.h create mode 100644 XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Define.h create mode 100644 XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Error.h create mode 100644 XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.def create mode 100644 XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj create mode 100644 XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj.filters create mode 100644 XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj.user create mode 100644 XEngine_Source/XEngine_ModuleHelp/dllmain.cpp create mode 100644 XEngine_Source/XEngine_ModuleHelp/framework.h create mode 100644 XEngine_Source/XEngine_ModuleHelp/pch.cpp create mode 100644 XEngine_Source/XEngine_ModuleHelp/pch.h diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index 849dfa7..34004ce 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -31,10 +31,14 @@ "tszServiceName":"XEngine_ProxyServer" }, "XProxy": { - "tszDefaultAddr": "10.0.4.69:5403", + "nRuleMode": 0, + "tszDestIPAddr": [ + "10.0.4.69:5403", + "10.0.4.69:5404" + ], "tszRuleIPAddr": [ "10.0.0.1-10.0.4.69:5403", - "5000-10.0.4.69:5403" + "10.0.0.2-10.0.4.69:5403" ] } } \ No newline at end of file diff --git a/XEngine_Source/XEngine.sln b/XEngine_Source/XEngine.sln index 93076f1..450daaf 100644 --- a/XEngine_Source/XEngine.sln +++ b/XEngine_Source/XEngine.sln @@ -38,6 +38,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_InfoReport", "XEngi {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_ModuleHelp", "XEngine_ModuleHelp\XEngine_ModuleHelp.vcxproj", "{7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|ARM64 = Debug|ARM64 @@ -120,6 +122,18 @@ Global {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x64.Build.0 = Release|x64 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x86.ActiveCfg = Release|Win32 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x86.Build.0 = Release|Win32 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|ARM64.ActiveCfg = Debug|x64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|ARM64.Build.0 = Debug|x64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x64.ActiveCfg = Debug|x64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x64.Build.0 = Debug|x64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x86.ActiveCfg = Debug|Win32 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x86.Build.0 = Debug|Win32 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|ARM64.ActiveCfg = Release|x64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|ARM64.Build.0 = Release|x64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x64.ActiveCfg = Release|x64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x64.Build.0 = Release|x64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x86.ActiveCfg = Release|Win32 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h index e230a74..b4d1898 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h +++ b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h @@ -52,7 +52,8 @@ typedef struct tag_XEngine_ServiceConfig }st_XReport; struct { - XCHAR tszDefaultAddr[128]; + int nRuleMode; //模式 + std::list* pStl_ListDestAddr; std::list* pStl_ListRuleAddr; }st_XProxy; struct diff --git a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp index 9299982..02b3cc1 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp +++ b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp @@ -145,9 +145,17 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE return false; } Json::Value st_JsonXProxy = st_JsonRoot["XProxy"]; - pSt_ServerConfig->st_XProxy.pStl_ListRuleAddr = new list; - _tcsxcpy(pSt_ServerConfig->st_XProxy.tszDefaultAddr, st_JsonXProxy["tszDefaultAddr"].asCString()); + pSt_ServerConfig->st_XProxy.pStl_ListDestAddr = new list; + + pSt_ServerConfig->st_XProxy.nRuleMode = st_JsonXProxy["nRuleMode"].asInt(); + if (!st_JsonXProxy["tszDestIPAddr"].isNull()) + { + for (unsigned int i = 0; i < st_JsonXProxy["tszDestIPAddr"].size(); i++) + { + pSt_ServerConfig->st_XProxy.pStl_ListDestAddr->push_back(st_JsonXProxy["tszDestIPAddr"][i].asCString()); + } + } if (!st_JsonXProxy["tszRuleIPAddr"].isNull()) { for (unsigned int i = 0; i < st_JsonXProxy["tszRuleIPAddr"].size(); i++) diff --git a/XEngine_Source/XEngine_ModuleHelp/Makefile b/XEngine_Source/XEngine_ModuleHelp/Makefile new file mode 100644 index 0000000..bebd8c4 --- /dev/null +++ b/XEngine_Source/XEngine_ModuleHelp/Makefile @@ -0,0 +1,69 @@ +CC = g++ -Wall -std=c++20 -fPIC +PLATVER = +FILEEXT = +LIBFLAG = +LOADHDR = -I ./ -I ../XEngine_ThirdPart/jsoncpp +LOADSO = +LIB = -lXEngine_BaseLib -lXEngine_Algorithm +LIBEX = +OBJECTS = ModuleHelp_APIHelp.o pch.o + +ifeq ($(RELEASE),1) +FLAGS = -c -D _RELEASE +DEBUG = -O2 +else + ifeq ($(PLATFORM),mac) + FLAGS = -c + DEBUG = -g -D _DEBUG + else + FLAGS = -c -lc_p + DEBUG = -g -pg -D _DEBUG + endif +endif + +ifeq ($(UNICODE),1) +override UNICODE := -D __UNICODE__ +else +override UNICODE := -D __ANSI__ +endif + +ifeq ($(PLATFORM),linux) + ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) + PLATVER = -D __CENTOS__ + else + PLATVER = -D __UBUNTU__ + endif + FILEEXT = so + LIBFLAG = -shared + LIBEX = -lpthread -lrt -ldl + LOADBIN = -Wl,-rpath=./,--disable-new-dtags +else ifeq ($(PLATFORM),mac) + CC += -Wno-deprecated-declarations + PLATVER = -D __MACOS__ + FILEEXT = dylib + LIBFLAG = -dynamiclib + LIBEX = -lpthread -ldl + LOADBIN = -Wl,-rpath,@loader_path/./ +endif + + +all:$(OBJECTS) + $(CC) $(DEBUG) $(OBJECTS) -o libXEngine_ModuleHelp.$(FILEEXT) $(LIBFLAG) $(LIB) $(LIBEX) $(LOADSO) $(LOADBIN) + +ModuleHelp_APIHelp.o:./ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp + $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp + +pch.o:./pch.cpp + $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./pch.cpp + + +InstallAll:InstallSo +InstallSo:./libXEngine_ModuleHelp.$(FILEEXT) + cp ./libXEngine_ModuleHelp.$(FILEEXT) ../../XEngine_Release/libXEngine_ModuleHelp.$(FILEEXT) + + +CleanAll:CleanObj CleanMk +CleanObj: + rm *.o +CleanMk: + rm *.$(FILEEXT) diff --git a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp new file mode 100644 index 0000000..e2267ba --- /dev/null +++ b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp @@ -0,0 +1,94 @@ +#include "pch.h" +#include "ModuleHelp_APIHelp.h" +/******************************************************************** +// Created: 2025/05/14 15:11:37 +// File Name: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleHelp\ModuleHelp_APIHelp\ModuleHelp_APIHelp.cpp +// File Path: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleHelp\ModuleHelp_APIHelp +// File Base: ModuleHelp_APIHelp +// File Ext: cpp +// Project: XEngine +// Author: qyt +// Purpose: 帮助函数 +// History: +*********************************************************************/ +CModuleHelp_APIHelp::CModuleHelp_APIHelp() +{ + +} +CModuleHelp_APIHelp::~CModuleHelp_APIHelp() +{ + +} +////////////////////////////////////////////////////////////////////////// +// 公用函数 +////////////////////////////////////////////////////////////////////////// +/******************************************************************** +函数名称:ModuleSession_Forward_Insert +函数功能:插入一条记录到会话中 + 参数.一:lpszAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要插入的客户端 + 参数.二:pSt_UserAuth + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要保存的客户端附加数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleHelp_APIHelp::ModuleHelp_APIHelp_RuleIPSelect(SESSION_IPCONUT*** pppSt_IPCount, int nIPCount) +{ + APIHelp_IsErrorOccur = false; + + ModuleHelp_APIHelp_QSort(pppSt_IPCount, nIPCount, sizeof(SESSION_IPCONUT)); + for (int i = 0; i < nIPCount; i++) + { + + } + return true; +} +/******************************************************************** +函数名称:ModuleHelp_APIHelp_QSort +函数功能:快速排序算法 + 参数.一:lPBase + In/Out:In/Out + 类型:五类型指针 + 可空:N + 意思:输入:要排序的结构,输出:排序好的 + 参数.二:nNumber + In/Out:In + 类型:整数型 + 可空:N + 意思:输入要排序的个数 + 参数.三:nSize + In/Out:In + 类型:整数型 + 可空:N + 意思:输入要排序的结构大小 +返回值 + 类型:逻辑型 + 意思:是否排序成功 +备注: +*********************************************************************/ +bool CModuleHelp_APIHelp::ModuleHelp_APIHelp_QSort(XPVOID lPBase, int nNumber, int nSize) +{ + APIHelp_IsErrorOccur = false; + + qsort(lPBase, nNumber, nSize, ModuleHelp_APIHelp_QSortCmp); + + return true; +} +////////////////////////////////////////////////////////////////////////// +// 保护函数 +////////////////////////////////////////////////////////////////////////// +int CModuleHelp_APIHelp::ModuleHelp_APIHelp_QSortCmp(const void* lParam, const void* WParam) +{ + int nAValue = *(const int*)lParam; + int nBValue = *(const int*)WParam; + + return nAValue - nBValue; +} \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.h b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.h new file mode 100644 index 0000000..807efdc --- /dev/null +++ b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.h @@ -0,0 +1,24 @@ +#pragma once +/******************************************************************** +// Created: 2025/05/14 15:11:29 +// File Name: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleHelp\ModuleHelp_APIHelp\ModuleHelp_APIHelp.h +// File Path: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleHelp\ModuleHelp_APIHelp +// File Base: ModuleHelp_APIHelp +// File Ext: h +// Project: XEngine +// Author: qyt +// Purpose: 帮助函数 +// History: +*********************************************************************/ + +class CModuleHelp_APIHelp +{ +public: + CModuleHelp_APIHelp(); + ~CModuleHelp_APIHelp(); +public: + bool ModuleHelp_APIHelp_RuleIPSelect(SESSION_IPCONUT*** pppSt_IPCount, int nIPCount); + bool ModuleHelp_APIHelp_QSort(XPVOID lPBase, int nNumber, int nSize); +private: + static int ModuleHelp_APIHelp_QSortCmp(const void* lParam, const void* WParam); +}; \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Define.h b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Define.h new file mode 100644 index 0000000..856b18f --- /dev/null +++ b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Define.h @@ -0,0 +1,44 @@ +#pragma once +/******************************************************************** +// Created: 2025/05/14 14:29:52 +// File Name: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleHelp\ModuleHelp_Define.h +// File Path: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleHelp +// File Base: ModuleHelp_Define +// File Ext: h +// Project: XEngine +// Author: qyt +// Purpose: 导出定义 +// History: +*********************************************************************/ +////////////////////////////////////////////////////////////////////////// +// 导出函数 +////////////////////////////////////////////////////////////////////////// +extern "C" XLONG ModuleHelp_GetLastError(int* pInt_SysError = NULL); +/************************************************************************/ +/* 帮助函数 */ +/************************************************************************/ +extern "C" bool ModuleHelp_APIHelp_RuleIPSelect(SESSION_IPCONUT*** pppSt_IPCount, int nIPCount); +/******************************************************************** +函数名称:ModuleHelp_APIHelp_QSort +函数功能:快速排序算法 + 参数.一:lPBase + In/Out:In/Out + 类型:五类型指针 + 可空:N + 意思:输入:要排序的结构,输出:排序好的 + 参数.二:nNumber + In/Out:In + 类型:整数型 + 可空:N + 意思:输入要排序的个数 + 参数.三:nSize + In/Out:In + 类型:整数型 + 可空:N + 意思:输入要排序的结构大小 +返回值 + 类型:逻辑型 + 意思:是否排序成功 +备注: +*********************************************************************/ +extern "C" bool ModuleHelp_APIHelp_QSort(XPVOID lPBase, int nNumber, int nSize); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Error.h b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Error.h new file mode 100644 index 0000000..60cb656 --- /dev/null +++ b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Error.h @@ -0,0 +1,40 @@ +#pragma once +/******************************************************************** +// Created: 2021/12/29 10:29:54 +// File Name: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleAuthorize\ModuleAuth_Error.h +// File Path: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleAuthorize +// File Base: ModuleAuth_Error +// File Ext: h +// Project: XEngine(网络通信引擎) +// Author: qyt +// Purpose: 导出错误 +// History: +*********************************************************************/ +/************************************************************************/ +/* 转发代理服务器错误 */ +/************************************************************************/ +#define ERROR_MODULE_SESSION_FORWARD_PARAMENT 0xC0001 //参数错误 +#define ERROR_MODULE_SESSION_FORWARD_NOTFOUND 0xC0002 //没有找到 +#define ERROR_MODULE_SESSION_FORWARD_BIND 0xC0003 //已经绑定 +#define ERROR_MODULE_SESSION_FORWARD_NOTFORWARD 0xC0004 //没有转发 +#define ERROR_MODULE_SESSION_FORWARD_EXIST 0xC0005 //已经存在 +/************************************************************************/ +/* SOCKS5服务器错误 */ +/************************************************************************/ +#define ERROR_MODULE_SESSION_SOCKS_PARAMENT 0xC1001 //参数错误 +#define ERROR_MODULE_SESSION_SOCKS_MALLOC 0xC1002 //申请内存失败 +#define ERROR_MODULE_SESSION_SOCKS_NOTFOUND 0xC1003 //没有找到 +#define ERROR_MODULE_SESSION_SOCKS_VERSION 0xC1004 //协议错误 +#define ERROR_MODULE_SESSION_SOCKS_NOTSET 0xC1005 //没有设置客户端数据 +/************************************************************************/ +/* 隧道代理服务错误 */ +/************************************************************************/ +#define ERROR_MODULE_SESSION_TUNNEL_PARAMENT 0xC2001 //参数错误 +#define ERROR_MODULE_SESSION_TUNNEL_MALLOC 0xC2002 //申请内存失败 +#define ERROR_MODULE_SESSION_TUNNEL_NOTFOUND 0xC2003 //没有找到 +#define ERROR_MODULE_SESSION_TUNNEL_NOTSET 0xC2004 //没有设置内容 +/************************************************************************/ +/* 全转发代理服务错误 */ +/************************************************************************/ +#define ERROR_MODULE_SESSION_PROXY_PARAMENT 0xC3001 //参数错误 +#define ERROR_MODULE_SESSION_PROXY_NOTFOUND 0xC3002 //没有找到 \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.def b/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.def new file mode 100644 index 0000000..01c75c1 --- /dev/null +++ b/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.def @@ -0,0 +1,7 @@ +LIBRARY + +EXPORTS + ModuleHelp_GetLastError + + ModuleHelp_APIHelp_RuleIPSelect + ModuleHelp_APIHelp_QSort \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj b/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj new file mode 100644 index 0000000..e5c846f --- /dev/null +++ b/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj @@ -0,0 +1,172 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {7a864141-b878-4a5e-b2a1-d5bb4cf58fcb} + XEngineModuleHelp + 10.0 + + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + $(XEngine_Include);$(IncludePath) + $(XEngine_Lib32);$(LibraryPath) + + + + Level3 + true + WIN32;_DEBUG;XENGINEMODULEHELP_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + false + XEngine_ModuleHelp.def + + + + + Level3 + true + true + true + WIN32;NDEBUG;XENGINEMODULEHELP_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + true + true + false + XEngine_ModuleHelp.def + + + + + Level3 + true + _DEBUG;XENGINEMODULEHELP_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + false + XEngine_ModuleHelp.def + + + + + Level3 + true + true + true + NDEBUG;XENGINEMODULEHELP_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + true + true + false + XEngine_ModuleHelp.def + + + + + + + + + + + + + + Create + Create + Create + Create + + + + + + + + + \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj.filters b/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj.filters new file mode 100644 index 0000000..28a3751 --- /dev/null +++ b/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj.filters @@ -0,0 +1,56 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {d116225a-ee7b-456e-9994-ef9cd89381ac} + + + {199c4dc2-2c18-451f-92df-0ce0cde24ba2} + + + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件\ModuleHelp_APIHelp + + + + + 源文件 + + + 源文件 + + + 源文件\ModuleHelp_APIHelp + + + + + 源文件 + + + \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj.user b/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj.user new file mode 100644 index 0000000..88a5509 --- /dev/null +++ b/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleHelp/dllmain.cpp b/XEngine_Source/XEngine_ModuleHelp/dllmain.cpp new file mode 100644 index 0000000..daed8c8 --- /dev/null +++ b/XEngine_Source/XEngine_ModuleHelp/dllmain.cpp @@ -0,0 +1,19 @@ +// dllmain.cpp : 定义 DLL 应用程序的入口点。 +#include "pch.h" + +BOOL APIENTRY DllMain( HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved + ) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} + diff --git a/XEngine_Source/XEngine_ModuleHelp/framework.h b/XEngine_Source/XEngine_ModuleHelp/framework.h new file mode 100644 index 0000000..80cbbc9 --- /dev/null +++ b/XEngine_Source/XEngine_ModuleHelp/framework.h @@ -0,0 +1,5 @@ +#pragma once + +#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的内容 +// Windows 头文件 +#include diff --git a/XEngine_Source/XEngine_ModuleHelp/pch.cpp b/XEngine_Source/XEngine_ModuleHelp/pch.cpp new file mode 100644 index 0000000..3fa7364 --- /dev/null +++ b/XEngine_Source/XEngine_ModuleHelp/pch.cpp @@ -0,0 +1,39 @@ +#include "pch.h" +#include "ModuleHelp_APIHelp/ModuleHelp_APIHelp.h" +/******************************************************************** +// Created: 2025/05/14 15:06:43 +// File Name: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleHelp\pch.cpp +// File Path: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleHelp +// File Base: pch +// File Ext: cpp +// Project: XEngine +// Author: qyt +// Purpose: 导出实现 +// History: +*********************************************************************/ +bool APIHelp_IsErrorOccur = false; +XLONG APIHelp_dwErrorCode = 0; +////////////////////////////////////////////////////////////////////////// +CModuleHelp_APIHelp m_APIHelp; +////////////////////////////////////////////////////////////////////////// +// 导出函数 +////////////////////////////////////////////////////////////////////////// +extern "C" XLONG ModuleHelp_GetLastError(int* pInt_SysError) +{ + if (NULL != pInt_SysError) + { + *pInt_SysError = errno; + } + return APIHelp_dwErrorCode; +} +/************************************************************************/ +/* 帮助函数 */ +/************************************************************************/ +extern "C" bool ModuleHelp_APIHelp_RuleIPSelect(SESSION_IPCONUT*** pppSt_IPCount, int nIPCount) +{ + return m_APIHelp.ModuleHelp_APIHelp_RuleIPSelect(pppSt_IPCount, nIPCount); +} +extern "C" bool ModuleHelp_APIHelp_QSort(XPVOID lPBase, int nNumber, int nSize) +{ + return m_APIHelp.ModuleHelp_APIHelp_QSort(lPBase, nNumber, nSize); +} \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleHelp/pch.h b/XEngine_Source/XEngine_ModuleHelp/pch.h new file mode 100644 index 0000000..c807b55 --- /dev/null +++ b/XEngine_Source/XEngine_ModuleHelp/pch.h @@ -0,0 +1,50 @@ +// pch.h: 这是预编译标头文件。 +// 下方列出的文件仅编译一次,提高了将来生成的生成性能。 +// 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。 +// 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。 +// 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。 + +#ifndef PCH_H +#define PCH_H + +#ifdef _MSC_BUILD +// 添加要在此处预编译的标头 +#include "framework.h" +#include +#endif +#endif //PCH_H +#include +#include +#include +#include +#include +using namespace std; +#include +#include +#include +#include +#include +#include +#include +#include "../XEngine_ModuleSession/ModuleSession_Define.h" +#include "../XEngine_ModuleSession/ModuleSession_Error.h" +#include "ModuleHelp_Define.h" +#include "ModuleHelp_Error.h" +/******************************************************************** +// Created: 2025/05/14 15:07:11 +// File Name: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleHelp\pch.h +// File Path: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleHelp +// File Base: pch +// File Ext: h +// Project: XEngine +// Author: qyt +// Purpose: 公用头文件 +// History: +*********************************************************************/ +extern bool APIHelp_IsErrorOccur; +extern XLONG APIHelp_dwErrorCode; + +#ifdef _MSC_BUILD +#pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib") +#pragma comment(lib,"XEngine_BaseLib/XEngine_Algorithm") +#endif \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h index 4c3ac2d..0d176af 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h @@ -27,6 +27,11 @@ typedef struct bool bForward; bool bAnony; }SESSION_FORWARD, * LPSESSION_FORWARD; +typedef struct +{ + XCHAR tszIPAddr[128]; + int nIPCount; +}SESSION_IPCONUT; ////////////////////////////////////////////////////////////////////////// // 导出函数 ////////////////////////////////////////////////////////////////////////// @@ -576,4 +581,23 @@ extern "C" bool ModuleSession_Proxy_List(SESSION_FORWARD*** pppSt_ListUser, int* 意思:是否成功 备注: *********************************************************************/ -extern "C" bool ModuleSession_Proxy_Delete(LPCXSTR lpszIPAddr); \ No newline at end of file +extern "C" bool ModuleSession_Proxy_Delete(LPCXSTR lpszIPAddr); +/******************************************************************** +函数名称:ModuleSession_Proxy_GetIPCount +函数功能:获取IP目标转发地址的统计 + 参数.一:pppSt_IPCount + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出IP目标转发地址列表信息 + 参数.二:pInt_Count + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出列表个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleSession_Proxy_GetIPCount(SESSION_IPCONUT*** pppSt_IPCount, int* pInt_Count); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_Proxy.cpp b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_Proxy.cpp index 008d2e2..b688cfb 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_Proxy.cpp +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_Proxy.cpp @@ -244,4 +244,70 @@ bool CModuleSession_Proxy::ModuleSession_Proxy_Delete(LPCXSTR lpszIPAddr) } st_Locker.unlock(); return true; +} +/******************************************************************** +函数名称:ModuleSession_Proxy_GetIPCount +函数功能:获取IP目标转发地址的统计 + 参数.一:pppSt_IPCount + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出IP目标转发地址列表信息 + 参数.二:pInt_Count + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出列表个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleSession_Proxy::ModuleSession_Proxy_GetIPCount(SESSION_IPCONUT ***pppSt_IPCount, int* pInt_Count) +{ + Session_IsErrorOccur = false; + + if (NULL == pppSt_IPCount || NULL == pInt_Count) + { + Session_IsErrorOccur = true; + Session_dwErrorCode = ERROR_MODULE_SESSION_PROXY_PARAMENT; + return false; + } + std::list stl_ListIPCount; + st_Locker.lock_shared(); + //遍历 + for (auto stl_MapIterator = stl_MapSession.begin(); stl_MapIterator != stl_MapSession.end(); stl_MapIterator++) + { + //遍历已有的列表 + bool bFound = false; + for (auto stl_ListIterator = stl_ListIPCount.begin(); stl_ListIterator != stl_ListIPCount.end(); stl_ListIterator++) + { + if (0 == _tcsxnicmp(stl_ListIterator->tszIPAddr, stl_MapIterator->second.tszDstAddr, _tcsxlen(stl_ListIterator->tszIPAddr))) + { + bFound = true; + stl_ListIterator->nIPCount++; + break; + } + } + //是否找到 + if (!bFound) + { + //没有找到加入新的列表 + SESSION_IPCONUT st_IPCount = {}; + st_IPCount.nIPCount = 1; + _tcsxcpy(st_IPCount.tszIPAddr, stl_MapIterator->second.tszDstAddr); + stl_ListIPCount.push_back(st_IPCount); + } + } + st_Locker.unlock_shared(); + + *pInt_Count = stl_ListIPCount.size(); + BaseLib_Memory_Malloc((XPPPMEM)pppSt_IPCount, *pInt_Count, sizeof(SESSION_IPCONUT)); + + auto stl_ListIterator = stl_ListIPCount.begin(); + for (int i = 0; stl_ListIterator != stl_ListIPCount.end(); stl_ListIterator++) + { + *(*pppSt_IPCount)[i] = *stl_ListIterator; + } + return true; } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_Proxy.h b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_Proxy.h index 6c7d7f6..34e2826 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_Proxy.h +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_Proxy.h @@ -27,6 +27,7 @@ public: bool ModuleSession_Proxy_GetForToken(XNETHANDLE xhToken, SESSION_FORWARD* pSt_ProxyInfo); bool ModuleSession_Proxy_List(SESSION_FORWARD*** pppSt_ListUser, int* pInt_Count, LPCXSTR lpszAddr = NULL); bool ModuleSession_Proxy_Delete(LPCXSTR lpszIPAddr); + bool ModuleSession_Proxy_GetIPCount(SESSION_IPCONUT ***pppSt_IPCount, int* pInt_Count); private: shared_mutex st_Locker; private: diff --git a/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def b/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def index 2a603cd..f8c5b70 100644 --- a/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def +++ b/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def @@ -31,4 +31,5 @@ EXPORTS ModuleSession_Proxy_GetForAddr ModuleSession_Proxy_GetForToken ModuleSession_Proxy_List - ModuleSession_Proxy_Delete \ No newline at end of file + ModuleSession_Proxy_Delete + ModuleSession_Proxy_GetIPCount \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleSession/pch.cpp b/XEngine_Source/XEngine_ModuleSession/pch.cpp index f45db1d..b0f549c 100644 --- a/XEngine_Source/XEngine_ModuleSession/pch.cpp +++ b/XEngine_Source/XEngine_ModuleSession/pch.cpp @@ -147,4 +147,8 @@ extern "C" bool ModuleSession_Proxy_List(SESSION_FORWARD*** pppSt_ListUser, int* extern "C" bool ModuleSession_Proxy_Delete(LPCXSTR lpszIPAddr) { return m_Proxy.ModuleSession_Proxy_Delete(lpszIPAddr); +} +extern "C" bool ModuleSession_Proxy_GetIPCount(SESSION_IPCONUT*** pppSt_IPCount, int* pInt_Count) +{ + return m_Proxy.ModuleSession_Proxy_GetIPCount(pppSt_IPCount, pInt_Count); } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp index ab88f44..d8aae03 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp @@ -14,34 +14,44 @@ bool XEngine_Proxy_Connect(LPCXSTR lpszClientAddr) { int nSrcPort = 0; int nDstPort = 0; + bool bFound = false; XNETHANDLE xhClient = 0; XCHAR tszIPAddr[128] = {}; XCHAR tszSrcIPAddr[128] = {}; XCHAR tszDstIPAddr[128] = {}; - - _tcsxcpy(tszSrcIPAddr, lpszClientAddr); - APIAddr_IPAddr_SegAddr(tszSrcIPAddr, &nSrcPort); - - bool bFound = false; - auto stl_ListIterator = st_ServiceConfig.st_XProxy.pStl_ListRuleAddr->begin(); - for (; stl_ListIterator != st_ServiceConfig.st_XProxy.pStl_ListRuleAddr->end(); stl_ListIterator++) + //是否有单独的转发规则 + if (!st_ServiceConfig.st_XProxy.pStl_ListRuleAddr->empty()) { - XCHAR tszTmpIPAddr[128] = {}; - _stxscanf(stl_ListIterator->c_str(), _X("%[^-]-%s"), tszTmpIPAddr, tszDstIPAddr); - //ip - if (0 == _tcsxnicmp(tszSrcIPAddr, tszTmpIPAddr, _tcsxlen(tszSrcIPAddr))) + //有规则,需要进行匹配 + _tcsxcpy(tszSrcIPAddr, lpszClientAddr); + APIAddr_IPAddr_SegAddr(tszSrcIPAddr, &nSrcPort); + + for (auto stl_ListIterator = st_ServiceConfig.st_XProxy.pStl_ListRuleAddr->begin(); stl_ListIterator != st_ServiceConfig.st_XProxy.pStl_ListRuleAddr->end(); stl_ListIterator++) { - bFound = true; - _tcsxcpy(tszIPAddr, tszDstIPAddr); - APIAddr_IPAddr_SegAddr(tszDstIPAddr, &nDstPort); - break; + XCHAR tszTmpIPAddr[128] = {}; + _stxscanf(stl_ListIterator->c_str(), _X("%[^-]-%s"), tszTmpIPAddr, tszDstIPAddr); + //ip + if (0 == _tcsxnicmp(tszSrcIPAddr, tszTmpIPAddr, _tcsxlen(tszSrcIPAddr))) + { + bFound = true; + _tcsxcpy(tszIPAddr, tszDstIPAddr); + APIAddr_IPAddr_SegAddr(tszDstIPAddr, &nDstPort); + break; + } } } - + //未命中 if (!bFound) { - _tcsxcpy(tszDstIPAddr, st_ServiceConfig.st_XProxy.tszDefaultAddr); - APIAddr_IPAddr_SegAddr(tszDstIPAddr, &nDstPort); + //没有匹配到 + if (0 == st_ServiceConfig.st_XProxy.nRuleMode) + { + int nIPCount = 0; + SESSION_IPCONUT** ppSt_IPCount; + ModuleSession_Proxy_GetIPCount(&ppSt_IPCount, &nIPCount); + + APIAddr_IPAddr_SegAddr(tszDstIPAddr, &nDstPort); + } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Proxy客户端:%s,代理转未命中,使用默认地址:%s:%d"), lpszClientAddr, tszDstIPAddr, nDstPort); } if (!XClient_TCPSelect_InsertEx(xhProxyClient, &xhClient, tszDstIPAddr, nDstPort, false)) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp index e334838..c62c789 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp @@ -334,7 +334,7 @@ int main(int argc, char** argv) XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,启动Proxy网络服务器失败,错误:%lX"), NetCore_GetLastError()); goto XENGINE_SERVICEAPP_EXIT; } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动Proxy网络服务器成功,Proxy端口:%d,默认地址:%s 配置个数:%d,IO:%d"), st_ServiceConfig.nProxyPort, st_ServiceConfig.st_XProxy.tszDefaultAddr, st_ServiceConfig.st_XProxy.pStl_ListRuleAddr->size(), st_ServiceConfig.st_XMax.nIOThread); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动Proxy网络服务器成功,Proxy端口:%d,转发目标个数:%d 规则个数:%d,IO:%d"), st_ServiceConfig.nProxyPort, st_ServiceConfig.st_XProxy.pStl_ListDestAddr->size(), st_ServiceConfig.st_XProxy.pStl_ListRuleAddr->size(), st_ServiceConfig.st_XMax.nIOThread); NetCore_TCPXCore_RegisterCallBackEx(xhProxySocket, Network_Callback_ProxyLogin, Network_Callback_ProxyRecv, Network_Callback_ProxyLeave); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,注册Proxy网络事件成功")); //客户端 -- Gitee From 2729220eb1bdd40da84766ff30a949ab084b568b Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 14 May 2025 16:04:04 +0800 Subject: [PATCH 14/26] modify:proxy forward mode 0 support --- XEngine_Source/XEngine_ModuleHelp/Makefile | 2 +- .../ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp | 29 ------------------- .../ModuleHelp_APIHelp/ModuleHelp_APIHelp.h | 1 - .../XEngine_ModuleHelp/ModuleHelp_Define.h | 1 - .../XEngine_ModuleHelp/XEngine_ModuleHelp.def | 1 - XEngine_Source/XEngine_ModuleHelp/pch.cpp | 4 --- XEngine_Source/XEngine_ModuleHelp/pch.h | 3 -- .../XEngine_ServiceApp/XEngine_Hdr.h | 8 +++++ .../XEngine_ServiceApp/XEngine_ProxyTask.cpp | 6 +++- 9 files changed, 14 insertions(+), 41 deletions(-) diff --git a/XEngine_Source/XEngine_ModuleHelp/Makefile b/XEngine_Source/XEngine_ModuleHelp/Makefile index bebd8c4..6101972 100644 --- a/XEngine_Source/XEngine_ModuleHelp/Makefile +++ b/XEngine_Source/XEngine_ModuleHelp/Makefile @@ -4,7 +4,7 @@ FILEEXT = LIBFLAG = LOADHDR = -I ./ -I ../XEngine_ThirdPart/jsoncpp LOADSO = -LIB = -lXEngine_BaseLib -lXEngine_Algorithm +LIB = -lXEngine_BaseLib LIBEX = OBJECTS = ModuleHelp_APIHelp.o pch.o diff --git a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp index e2267ba..304fbae 100644 --- a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp +++ b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp @@ -23,35 +23,6 @@ CModuleHelp_APIHelp::~CModuleHelp_APIHelp() // 公用函数 ////////////////////////////////////////////////////////////////////////// /******************************************************************** -函数名称:ModuleSession_Forward_Insert -函数功能:插入一条记录到会话中 - 参数.一:lpszAddr - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:输入要插入的客户端 - 参数.二:pSt_UserAuth - In/Out:In - 类型:数据结构指针 - 可空:N - 意思:输入要保存的客户端附加数据 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -bool CModuleHelp_APIHelp::ModuleHelp_APIHelp_RuleIPSelect(SESSION_IPCONUT*** pppSt_IPCount, int nIPCount) -{ - APIHelp_IsErrorOccur = false; - - ModuleHelp_APIHelp_QSort(pppSt_IPCount, nIPCount, sizeof(SESSION_IPCONUT)); - for (int i = 0; i < nIPCount; i++) - { - - } - return true; -} -/******************************************************************** 函数名称:ModuleHelp_APIHelp_QSort 函数功能:快速排序算法 参数.一:lPBase diff --git a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.h b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.h index 807efdc..1259191 100644 --- a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.h +++ b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.h @@ -17,7 +17,6 @@ public: CModuleHelp_APIHelp(); ~CModuleHelp_APIHelp(); public: - bool ModuleHelp_APIHelp_RuleIPSelect(SESSION_IPCONUT*** pppSt_IPCount, int nIPCount); bool ModuleHelp_APIHelp_QSort(XPVOID lPBase, int nNumber, int nSize); private: static int ModuleHelp_APIHelp_QSortCmp(const void* lParam, const void* WParam); diff --git a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Define.h b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Define.h index 856b18f..46caa30 100644 --- a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Define.h +++ b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Define.h @@ -17,7 +17,6 @@ extern "C" XLONG ModuleHelp_GetLastError(int* pInt_SysError = NULL); /************************************************************************/ /* 帮助函数 */ /************************************************************************/ -extern "C" bool ModuleHelp_APIHelp_RuleIPSelect(SESSION_IPCONUT*** pppSt_IPCount, int nIPCount); /******************************************************************** 函数名称:ModuleHelp_APIHelp_QSort 函数功能:快速排序算法 diff --git a/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.def b/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.def index 01c75c1..956849b 100644 --- a/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.def +++ b/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.def @@ -3,5 +3,4 @@ LIBRARY EXPORTS ModuleHelp_GetLastError - ModuleHelp_APIHelp_RuleIPSelect ModuleHelp_APIHelp_QSort \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleHelp/pch.cpp b/XEngine_Source/XEngine_ModuleHelp/pch.cpp index 3fa7364..5c49d42 100644 --- a/XEngine_Source/XEngine_ModuleHelp/pch.cpp +++ b/XEngine_Source/XEngine_ModuleHelp/pch.cpp @@ -29,10 +29,6 @@ extern "C" XLONG ModuleHelp_GetLastError(int* pInt_SysError) /************************************************************************/ /* 帮助函数 */ /************************************************************************/ -extern "C" bool ModuleHelp_APIHelp_RuleIPSelect(SESSION_IPCONUT*** pppSt_IPCount, int nIPCount) -{ - return m_APIHelp.ModuleHelp_APIHelp_RuleIPSelect(pppSt_IPCount, nIPCount); -} extern "C" bool ModuleHelp_APIHelp_QSort(XPVOID lPBase, int nNumber, int nSize) { return m_APIHelp.ModuleHelp_APIHelp_QSort(lPBase, nNumber, nSize); diff --git a/XEngine_Source/XEngine_ModuleHelp/pch.h b/XEngine_Source/XEngine_ModuleHelp/pch.h index c807b55..10fd7d9 100644 --- a/XEngine_Source/XEngine_ModuleHelp/pch.h +++ b/XEngine_Source/XEngine_ModuleHelp/pch.h @@ -24,8 +24,6 @@ using namespace std; #include #include #include -#include -#include #include "../XEngine_ModuleSession/ModuleSession_Define.h" #include "../XEngine_ModuleSession/ModuleSession_Error.h" #include "ModuleHelp_Define.h" @@ -46,5 +44,4 @@ extern XLONG APIHelp_dwErrorCode; #ifdef _MSC_BUILD #pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib") -#pragma comment(lib,"XEngine_BaseLib/XEngine_Algorithm") #endif \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h b/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h index ccf54c5..79da088 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h @@ -58,6 +58,8 @@ using namespace std; #include "../XEngine_ModuleSession/ModuleSession_Error.h" #include "../XEngine_ModuleProtocol/ModuleProtocol_Define.h" #include "../XEngine_ModuleProtocol/ModuleProtocol_Error.h" +#include "../XEngine_ModuleHelp/ModuleHelp_Define.h" +#include "../XEngine_ModuleHelp/ModuleHelp_Error.h" //加载自己的头文件 #include "XEngine_Configure.h" #include "XEngine_Network.h" @@ -138,16 +140,19 @@ typedef struct #pragma comment(lib,"../x64/Debug/XEngine_ModuleConfigure.lib") #pragma comment(lib,"../x64/Debug/XEngine_ModuleSession.lib") #pragma comment(lib,"../x64/Debug/XEngine_ModuleProtocol.lib") +#pragma comment(lib,"../x64/Debug/XEngine_ModuleHelp.lib") #elif _M_ARM64 #pragma comment(lib,"../ARM64/Debug/XEngine_InfoReport.lib") #pragma comment(lib,"../ARM64/Debug/XEngine_ModuleConfigure.lib") #pragma comment(lib,"../ARM64/Debug/XEngine_ModuleSession.lib") #pragma comment(lib,"../ARM64/Debug/XEngine_ModuleProtocol.lib") +#pragma comment(lib,"../ARM64/Debug/XEngine_ModuleHelp.lib") #elif _M_IX86 #pragma comment(lib,"../Debug/XEngine_InfoReport.lib") #pragma comment(lib,"../Debug/XEngine_ModuleConfigure.lib") #pragma comment(lib,"../Debug/XEngine_ModuleSession.lib") #pragma comment(lib,"../Debug/XEngine_ModuleProtocol.lib") +#pragma comment(lib,"../Debug/XEngine_ModuleHelp.lib") #endif #else #ifdef _M_X64 @@ -155,16 +160,19 @@ typedef struct #pragma comment(lib,"../x64/Release/XEngine_ModuleConfigure.lib") #pragma comment(lib,"../x64/Release/XEngine_ModuleSession.lib") #pragma comment(lib,"../x64/Release/XEngine_ModuleProtocol.lib") +#pragma comment(lib,"../x64/Release/XEngine_ModuleHelp.lib") #elif _M_ARM64 #pragma comment(lib,"../ARM64/Release/XEngine_InfoReport.lib") #pragma comment(lib,"../ARM64/Release/XEngine_ModuleConfigure.lib") #pragma comment(lib,"../ARM64/Release/XEngine_ModuleSession.lib") #pragma comment(lib,"../ARM64/Release/XEngine_ModuleProtocol.lib") +#pragma comment(lib,"../ARM64/Release/XEngine_ModuleHelp.lib") #elif _M_IX86 #pragma comment(lib,"../Release/XEngine_InfoReport.lib") #pragma comment(lib,"../Release/XEngine_ModuleConfigure.lib") #pragma comment(lib,"../Release/XEngine_ModuleSession.lib") #pragma comment(lib,"../Release/XEngine_ModuleProtocol.lib") +#pragma comment(lib,"../Release/XEngine_ModuleHelp.lib") #endif #endif #endif \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp index d8aae03..bf71556 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp @@ -49,10 +49,14 @@ bool XEngine_Proxy_Connect(LPCXSTR lpszClientAddr) int nIPCount = 0; SESSION_IPCONUT** ppSt_IPCount; ModuleSession_Proxy_GetIPCount(&ppSt_IPCount, &nIPCount); + //排序 + ModuleHelp_APIHelp_QSort(ppSt_IPCount, nIPCount, sizeof(SESSION_IPCONUT)); + _tcsxcpy(tszIPAddr, ppSt_IPCount[0]->tszIPAddr); + _tcsxcpy(tszDstIPAddr, ppSt_IPCount[0]->tszIPAddr); APIAddr_IPAddr_SegAddr(tszDstIPAddr, &nDstPort); } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Proxy客户端:%s,代理转未命中,使用默认地址:%s:%d"), lpszClientAddr, tszDstIPAddr, nDstPort); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Proxy客户端:%s,代理转发规则地址未命中,使用系统规则地址:%s:%d"), lpszClientAddr, tszDstIPAddr, nDstPort); } if (!XClient_TCPSelect_InsertEx(xhProxyClient, &xhClient, tszDstIPAddr, nDstPort, false)) { -- Gitee From 7535b808dcbbde1cf2430ad697f4ef798d4a55d4 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 14 May 2025 16:08:47 +0800 Subject: [PATCH 15/26] fixed:build failed --- XEngine_Source/Makefile | 7 +- XEngine_Source/XEngine.sln | 4 +- .../XEngine_ModuleHelp.vcxproj | 85 +++++++++++++++++++ XEngine_Source/XEngine_ServiceApp/Makefile | 4 +- 4 files changed, 94 insertions(+), 6 deletions(-) diff --git a/XEngine_Source/Makefile b/XEngine_Source/Makefile index 8e6a2d1..c9cb526 100644 --- a/XEngine_Source/Makefile +++ b/XEngine_Source/Makefile @@ -9,6 +9,7 @@ THIRDPART_MODULE_REPORT = ./XEngine_Depend/XEngine_Module/XEngine_InfoReport MODULE_CONFIGURE_PATH = ./XEngine_ModuleConfigure MODULE_PROTOCOL_PATH = ./XEngine_ModuleProtocol MODULE_SESSION_PATH = ./XEngine_ModuleSession +MODULE_HELP_PATH = ./XEngine_ModuleHelp APP_SERVICE_PATH = ./XEngine_ServiceApp ifeq ($(PLATFORM),linux) @@ -18,7 +19,7 @@ else ifeq ($(PLATFORM),mac) endif XENGINE_MODULES = libjsoncpp.so libXEngine_InfoReport.so \ - libXEngine_ModuleConfigure.so libXEngine_ModuleProtocol.so libXEngine_ModuleSession.so \ + libXEngine_ModuleConfigure.so libXEngine_ModuleProtocol.so libXEngine_ModuleSession.so libXEngine_ModuleHelp.so \ XEngine_ServiceApp.exe .PHONY:MakeAll @@ -42,6 +43,8 @@ libXEngine_ModuleProtocol.so: make -C $(MODULE_PROTOCOL_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) libXEngine_ModuleSession.so: make -C $(MODULE_SESSION_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) - +libXEngine_ModuleHelp.so: + make -C $(MODULE_HELP_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) + XEngine_ServiceApp.exe: make -C $(APP_SERVICE_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) diff --git a/XEngine_Source/XEngine.sln b/XEngine_Source/XEngine.sln index 450daaf..df1f778 100644 --- a/XEngine_Source/XEngine.sln +++ b/XEngine_Source/XEngine.sln @@ -122,8 +122,8 @@ Global {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x64.Build.0 = Release|x64 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x86.ActiveCfg = Release|Win32 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x86.Build.0 = Release|Win32 - {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|ARM64.ActiveCfg = Debug|x64 - {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|ARM64.Build.0 = Debug|x64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|ARM64.Build.0 = Debug|ARM64 {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x64.ActiveCfg = Debug|x64 {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x64.Build.0 = Debug|x64 {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x86.ActiveCfg = Debug|Win32 diff --git a/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj b/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj index e5c846f..2a4819e 100644 --- a/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj +++ b/XEngine_Source/XEngine_ModuleHelp/XEngine_ModuleHelp.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +53,12 @@ v143 Unicode + + DynamicLibrary + true + v143 + Unicode + DynamicLibrary false @@ -52,6 +66,13 @@ true Unicode + + DynamicLibrary + false + v143 + true + Unicode + @@ -66,14 +87,40 @@ + + + + + + $(XEngine_Include);$(IncludePath) $(XEngine_Lib32);$(LibraryPath) + + $(XEngine_Include);$(IncludePath) + $(XEngine_Lib32);$(LibraryPath) + + + $(XEngine_Include);$(IncludePath) + $(XEngine_Lib64);$(LibraryPath) + + + $(XEngine_Include);$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + + + $(XEngine_Include);$(IncludePath) + $(XEngine_Lib64);$(LibraryPath) + + + $(XEngine_Include);$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + Level3 @@ -126,6 +173,22 @@ XEngine_ModuleHelp.def + + + Level3 + true + _DEBUG;XENGINEMODULEHELP_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + false + XEngine_ModuleHelp.def + + Level3 @@ -146,6 +209,26 @@ XEngine_ModuleHelp.def + + + Level3 + true + true + true + NDEBUG;XENGINEMODULEHELP_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + true + true + false + XEngine_ModuleHelp.def + + @@ -159,8 +242,10 @@ Create Create + Create Create Create + Create diff --git a/XEngine_Source/XEngine_ServiceApp/Makefile b/XEngine_Source/XEngine_ServiceApp/Makefile index a0b4d31..371417e 100644 --- a/XEngine_Source/XEngine_ServiceApp/Makefile +++ b/XEngine_Source/XEngine_ServiceApp/Makefile @@ -1,10 +1,10 @@ CC = g++ -Wall -std=c++20 PLATVER = LOADHDR = -I ./ -I ../XEngine_Depend/XEngine_Module/jsoncpp -LOADSO = -L ../XEngine_ModuleConfigure -L ../XEngine_ModuleSession -L ../XEngine_ModuleProtocol \ +LOADSO = -L ../XEngine_ModuleConfigure -L ../XEngine_ModuleSession -L ../XEngine_ModuleProtocol -L ../XEngine_ModuleHelp \ -L ../XEngine_Depend/XEngine_Module/jsoncpp -L ../XEngine_Depend/XEngine_Module/XEngine_InfoReport LIB = -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_Cryption -lXEngine_ManagePool -lXClient_Socket -lXClient_APIHelp -lHelpComponents_XLog -lHelpComponents_Packets -lRfcComponents_ProxyProtocol -lNetHelp_APIHelp -lNetHelp_APIAddr -lNetHelp_XSocket \ - -lXEngine_ModuleConfigure -lXEngine_ModuleSession -lXEngine_ModuleProtocol \ + -lXEngine_ModuleConfigure -lXEngine_ModuleSession -lXEngine_ModuleProtocol -lXEngine_ModuleHelp \ -ljsoncpp -lXEngine_InfoReport LIBEX = OBJECTS = XEngine_Configure.o XEngine_Network.o XEngine_SocksTask.o XEngine_TunnelTask.o XEngine_ForwardTask.o XEngine_ProxyTask.o XEngine_ServiceApp.o -- Gitee From 2547d87f35266a48702a48e1c3bb5a789cec8c7d Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 14 May 2025 16:35:21 +0800 Subject: [PATCH 16/26] fixed:generator order is incorrect --- XEngine_Source/XEngine.sln | 1 + 1 file changed, 1 insertion(+) diff --git a/XEngine_Source/XEngine.sln b/XEngine_Source/XEngine.sln index df1f778..667d308 100644 --- a/XEngine_Source/XEngine.sln +++ b/XEngine_Source/XEngine.sln @@ -6,6 +6,7 @@ MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_ServiceApp", "XEngine_ServiceApp\XEngine_ServiceApp.vcxproj", "{B94018F9-541B-4BE4-A2A8-AD49DD35357B}" ProjectSection(ProjectDependencies) = postProject {237AF017-9AD2-44D8-A6C4-ECDEF7674FF2} = {237AF017-9AD2-44D8-A6C4-ECDEF7674FF2} + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB} = {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB} {9512A610-7197-4522-9AEF-1486619C99FE} = {9512A610-7197-4522-9AEF-1486619C99FE} {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} {F54F152C-594F-4465-A44E-2DB915B39760} = {F54F152C-594F-4465-A44E-2DB915B39760} -- Gitee From 148cb60e97af9b202fe3165364a200a68c628852 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 14 May 2025 16:44:54 +0800 Subject: [PATCH 17/26] fixed:arm64 build failed --- XEngine_Source/XEngine.sln | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/XEngine_Source/XEngine.sln b/XEngine_Source/XEngine.sln index 667d308..bc11684 100644 --- a/XEngine_Source/XEngine.sln +++ b/XEngine_Source/XEngine.sln @@ -129,8 +129,8 @@ Global {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x64.Build.0 = Debug|x64 {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x86.ActiveCfg = Debug|Win32 {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x86.Build.0 = Debug|Win32 - {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|ARM64.ActiveCfg = Release|x64 - {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|ARM64.Build.0 = Release|x64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|ARM64.ActiveCfg = Release|ARM64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|ARM64.Build.0 = Release|ARM64 {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x64.ActiveCfg = Release|x64 {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x64.Build.0 = Release|x64 {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x86.ActiveCfg = Release|Win32 -- Gitee From 572e90954fc9a08aa036d6cc94bf4ef49846c62e Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 15 May 2025 14:08:52 +0800 Subject: [PATCH 18/26] modify:mode 0 rule forward support --- .../XEngine_Config/XEngine_Config.json | 4 +- .../ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp | 16 +- XEngine_Source/XEngine_ModuleSession/Makefile | 4 +- .../ModuleSession_Define.h | 83 ++++++- .../ModuleSession_Proxy.cpp | 66 ----- .../ModuleSession_Proxy/ModuleSession_Proxy.h | 1 - .../ModuleSession_ProxyRule.cpp | 231 ++++++++++++++++++ .../ModuleSession_ProxyRule.h | 33 +++ .../XEngine_ModuleSession.def | 6 +- .../XEngine_ModuleSession.vcxproj | 2 + .../XEngine_ModuleSession.vcxproj.filters | 6 + XEngine_Source/XEngine_ModuleSession/pch.cpp | 22 +- .../XEngine_ServiceApp/XEngine_ProxyTask.cpp | 5 +- .../XEngine_ServiceApp/XEngine_ServiceApp.cpp | 6 + 14 files changed, 400 insertions(+), 85 deletions(-) create mode 100644 XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_ProxyRule.cpp create mode 100644 XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_ProxyRule.h diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index 34004ce..edb5387 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -33,8 +33,8 @@ "XProxy": { "nRuleMode": 0, "tszDestIPAddr": [ - "10.0.4.69:5403", - "10.0.4.69:5404" + "127.0.0.1:5501", + "127.0.0.1:5501" ], "tszRuleIPAddr": [ "10.0.0.1-10.0.4.69:5403", diff --git a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp index 304fbae..c960cab 100644 --- a/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp +++ b/XEngine_Source/XEngine_ModuleHelp/ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp @@ -58,8 +58,18 @@ bool CModuleHelp_APIHelp::ModuleHelp_APIHelp_QSort(XPVOID lPBase, int nNumber, i ////////////////////////////////////////////////////////////////////////// int CModuleHelp_APIHelp::ModuleHelp_APIHelp_QSortCmp(const void* lParam, const void* WParam) { - int nAValue = *(const int*)lParam; - int nBValue = *(const int*)WParam; + // 先把 a/b 当作指向 “SESSION_IPCONUT*” 的指针来处理 + const SESSION_IPCONUT* pSt_IPAParam = *(const SESSION_IPCONUT* const*)lParam; + const SESSION_IPCONUT* pSt_IPWParam = *(const SESSION_IPCONUT* const*)WParam; - return nAValue - nBValue; + // 然后比较它们的字段 + if (pSt_IPAParam->nIPCount < pSt_IPWParam->nIPCount) + { + return -1; + } + else if (pSt_IPAParam->nIPCount > pSt_IPWParam->nIPCount) + { + return +1; + } + return 0; } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleSession/Makefile b/XEngine_Source/XEngine_ModuleSession/Makefile index 7f048cc..586321d 100644 --- a/XEngine_Source/XEngine_ModuleSession/Makefile +++ b/XEngine_Source/XEngine_ModuleSession/Makefile @@ -6,7 +6,7 @@ LOADHDR = -I ./ -I ../XEngine_ThirdPart/jsoncpp LOADSO = LIB = -lXEngine_BaseLib -lXEngine_Algorithm LIBEX = -OBJECTS = ModuleSession_Forward.o ModuleSession_Socks.o ModuleSession_Tunnel.o ModuleSession_Proxy.o pch.o +OBJECTS = ModuleSession_Forward.o ModuleSession_Socks.o ModuleSession_Tunnel.o ModuleSession_Proxy.o ModuleSession_ProxyRule.o pch.o ifeq ($(RELEASE),1) FLAGS = -c -D _RELEASE @@ -58,6 +58,8 @@ ModuleSession_Tunnel.o:./ModuleSession_Tunnel/ModuleSession_Tunnel.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./ModuleSession_Tunnel/ModuleSession_Tunnel.cpp ModuleSession_Proxy.o:./ModuleSession_Proxy/ModuleSession_Proxy.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./ModuleSession_Proxy/ModuleSession_Proxy.cpp +ModuleSession_ProxyRule.o:./ModuleSession_Proxy/ModuleSession_ProxyRule.cpp + $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./ModuleSession_Proxy/ModuleSession_ProxyRule.cpp pch.o:./pch.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./pch.cpp diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h index 0d176af..6c4fa59 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h @@ -29,8 +29,8 @@ typedef struct }SESSION_FORWARD, * LPSESSION_FORWARD; typedef struct { - XCHAR tszIPAddr[128]; int nIPCount; + XCHAR tszIPAddr[128]; }SESSION_IPCONUT; ////////////////////////////////////////////////////////////////////////// // 导出函数 @@ -583,13 +583,84 @@ extern "C" bool ModuleSession_Proxy_List(SESSION_FORWARD*** pppSt_ListUser, int* *********************************************************************/ extern "C" bool ModuleSession_Proxy_Delete(LPCXSTR lpszIPAddr); /******************************************************************** -函数名称:ModuleSession_Proxy_GetIPCount -函数功能:获取IP目标转发地址的统计 - 参数.一:pppSt_IPCount +函数名称:ModuleSession_ProxyRule_Insert +函数功能:插入一个后台服务 + 参数.一:lpszIPAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要插入的后台服务 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleSession_ProxyRule_Insert(LPCXSTR lpszIPAddr); +/******************************************************************** +函数名称:ModuleSession_ProxyRule_Delete +函数功能:删除一个后台服务地址 + 参数.一:lpszIPAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要操作的后台服务地址 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleSession_ProxyRule_Delete(LPCXSTR lpszIPAddr); +/******************************************************************** +函数名称:ModuleSession_ProxyRule_Set +函数功能:设置后台服务信息 + 参数.一:lpszIPAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要操作的地址 + 参数.二:lpszUseAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入使用的客户端地址 + 参数.三:bAdd + In/Out:In + 类型:逻辑型 + 可空:Y + 意思:添加还是删除 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleSession_ProxyRule_Set(LPCXSTR lpszIPAddr, LPCXSTR lpszUseAddr, bool bAdd = true); +/******************************************************************** +函数名称:ModuleSession_ProxyRule_GetCount +函数功能:获取统计信息 + 参数.一:lpszIPAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要操作的地址 + 参数.二:pInt_Count In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleSession_ProxyRule_GetCount(LPCXSTR lpszIPAddr, int* pInt_Count); +/******************************************************************** +函数名称:ModuleSession_ProxyRule_GetList +函数功能:获取所有列表 + 参数.一:pppSt_IPCount + In/Out:In 类型:三级指针 可空:N - 意思:输出IP目标转发地址列表信息 + 意思:输出获取到的列表信息 参数.二:pInt_Count In/Out:Out 类型:整数型指针 @@ -600,4 +671,4 @@ extern "C" bool ModuleSession_Proxy_Delete(LPCXSTR lpszIPAddr); 意思:是否成功 备注: *********************************************************************/ -extern "C" bool ModuleSession_Proxy_GetIPCount(SESSION_IPCONUT*** pppSt_IPCount, int* pInt_Count); \ No newline at end of file +extern "C" bool ModuleSession_ProxyRule_GetList(SESSION_IPCONUT*** pppSt_IPCount, int* pInt_Count); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_Proxy.cpp b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_Proxy.cpp index b688cfb..008d2e2 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_Proxy.cpp +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_Proxy.cpp @@ -244,70 +244,4 @@ bool CModuleSession_Proxy::ModuleSession_Proxy_Delete(LPCXSTR lpszIPAddr) } st_Locker.unlock(); return true; -} -/******************************************************************** -函数名称:ModuleSession_Proxy_GetIPCount -函数功能:获取IP目标转发地址的统计 - 参数.一:pppSt_IPCount - In/Out:Out - 类型:三级指针 - 可空:N - 意思:输出IP目标转发地址列表信息 - 参数.二:pInt_Count - In/Out:Out - 类型:整数型指针 - 可空:N - 意思:输出列表个数 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -bool CModuleSession_Proxy::ModuleSession_Proxy_GetIPCount(SESSION_IPCONUT ***pppSt_IPCount, int* pInt_Count) -{ - Session_IsErrorOccur = false; - - if (NULL == pppSt_IPCount || NULL == pInt_Count) - { - Session_IsErrorOccur = true; - Session_dwErrorCode = ERROR_MODULE_SESSION_PROXY_PARAMENT; - return false; - } - std::list stl_ListIPCount; - st_Locker.lock_shared(); - //遍历 - for (auto stl_MapIterator = stl_MapSession.begin(); stl_MapIterator != stl_MapSession.end(); stl_MapIterator++) - { - //遍历已有的列表 - bool bFound = false; - for (auto stl_ListIterator = stl_ListIPCount.begin(); stl_ListIterator != stl_ListIPCount.end(); stl_ListIterator++) - { - if (0 == _tcsxnicmp(stl_ListIterator->tszIPAddr, stl_MapIterator->second.tszDstAddr, _tcsxlen(stl_ListIterator->tszIPAddr))) - { - bFound = true; - stl_ListIterator->nIPCount++; - break; - } - } - //是否找到 - if (!bFound) - { - //没有找到加入新的列表 - SESSION_IPCONUT st_IPCount = {}; - st_IPCount.nIPCount = 1; - _tcsxcpy(st_IPCount.tszIPAddr, stl_MapIterator->second.tszDstAddr); - stl_ListIPCount.push_back(st_IPCount); - } - } - st_Locker.unlock_shared(); - - *pInt_Count = stl_ListIPCount.size(); - BaseLib_Memory_Malloc((XPPPMEM)pppSt_IPCount, *pInt_Count, sizeof(SESSION_IPCONUT)); - - auto stl_ListIterator = stl_ListIPCount.begin(); - for (int i = 0; stl_ListIterator != stl_ListIPCount.end(); stl_ListIterator++) - { - *(*pppSt_IPCount)[i] = *stl_ListIterator; - } - return true; } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_Proxy.h b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_Proxy.h index 34e2826..6c7d7f6 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_Proxy.h +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_Proxy.h @@ -27,7 +27,6 @@ public: bool ModuleSession_Proxy_GetForToken(XNETHANDLE xhToken, SESSION_FORWARD* pSt_ProxyInfo); bool ModuleSession_Proxy_List(SESSION_FORWARD*** pppSt_ListUser, int* pInt_Count, LPCXSTR lpszAddr = NULL); bool ModuleSession_Proxy_Delete(LPCXSTR lpszIPAddr); - bool ModuleSession_Proxy_GetIPCount(SESSION_IPCONUT ***pppSt_IPCount, int* pInt_Count); private: shared_mutex st_Locker; private: diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_ProxyRule.cpp b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_ProxyRule.cpp new file mode 100644 index 0000000..ee5f571 --- /dev/null +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_ProxyRule.cpp @@ -0,0 +1,231 @@ +#include "pch.h" +#include "ModuleSession_ProxyRule.h" +/******************************************************************** +// Created: 2025/05/15 11:35:12 +// File Name: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleSession\ModuleSession_Proxy\ModuleSession_ProxyRule.cpp +// File Path: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleSession\ModuleSession_Proxy +// File Base: ModuleSession_ProxyRule +// File Ext: cpp +// Project: XEngine +// Author: qyt +// Purpose: 负载转发规则处理 +// History: +*********************************************************************/ +CModuleSession_ProxyRule::CModuleSession_ProxyRule() +{ + +} +CModuleSession_ProxyRule::~CModuleSession_ProxyRule() +{ + +} +////////////////////////////////////////////////////////////////////////// +// 公用函数 +////////////////////////////////////////////////////////////////////////// +/******************************************************************** +函数名称:ModuleSession_ProxyRule_Insert +函数功能:插入一个后台服务 + 参数.一:lpszIPAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要插入的后台服务 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleSession_ProxyRule::ModuleSession_ProxyRule_Insert(LPCXSTR lpszIPAddr) +{ + Session_IsErrorOccur = false; + + if (NULL == lpszIPAddr) + { + Session_IsErrorOccur = true; + Session_dwErrorCode = ERROR_MODULE_SESSION_PROXY_PARAMENT; + return false; + } + std::list stl_ListRule; + + st_Locker.lock(); + stl_MapProxyRule.insert(make_pair(lpszIPAddr, stl_ListRule)); + st_Locker.unlock(); + return true; +} +/******************************************************************** +函数名称:ModuleSession_ProxyRule_Delete +函数功能:删除一个后台服务地址 + 参数.一:lpszIPAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要操作的后台服务地址 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleSession_ProxyRule::ModuleSession_ProxyRule_Delete(LPCXSTR lpszIPAddr) +{ + Session_IsErrorOccur = false; + + if (NULL == lpszIPAddr) + { + Session_IsErrorOccur = true; + Session_dwErrorCode = ERROR_MODULE_SESSION_PROXY_PARAMENT; + return false; + } + st_Locker.lock(); + auto stl_MapIterator = stl_MapProxyRule.find(lpszIPAddr); + if (stl_MapIterator != stl_MapProxyRule.end()) + { + stl_MapProxyRule.erase(stl_MapIterator); + } + st_Locker.unlock(); + return true; +} +/******************************************************************** +函数名称:ModuleSession_ProxyRule_Set +函数功能:设置后台服务信息 + 参数.一:lpszIPAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要操作的地址 + 参数.二:lpszUseAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入使用的客户端地址 + 参数.三:bAdd + In/Out:In + 类型:逻辑型 + 可空:Y + 意思:添加还是删除 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleSession_ProxyRule::ModuleSession_ProxyRule_Set(LPCXSTR lpszIPAddr, LPCXSTR lpszUseAddr, bool bAdd /* = true */) +{ + Session_IsErrorOccur = false; + + if (NULL == lpszIPAddr) + { + Session_IsErrorOccur = true; + Session_dwErrorCode = ERROR_MODULE_SESSION_PROXY_PARAMENT; + return false; + } + st_Locker.lock(); + auto stl_MapIterator = stl_MapProxyRule.find(lpszIPAddr); + if (stl_MapIterator == stl_MapProxyRule.end()) + { + Session_IsErrorOccur = true; + Session_dwErrorCode = ERROR_MODULE_SESSION_PROXY_NOTFOUND; + st_Locker.unlock(); + return false; + } + //增加还是删除 + if (bAdd) + { + SESSION_PROXYRULE st_ProxyRule = {}; + _tcsxcpy(st_ProxyRule.tszIPAddr, lpszUseAddr); + stl_MapIterator->second.push_back(st_ProxyRule); + } + else + { + for (auto stl_ListIterator = stl_MapIterator->second.begin(); stl_ListIterator != stl_MapIterator->second.end(); stl_ListIterator++) + { + if (0 == _tcsxnicmp(lpszUseAddr, stl_ListIterator->tszIPAddr, _tcsxlen(lpszUseAddr))) + { + stl_MapIterator->second.erase(stl_ListIterator); + break; + } + } + } + st_Locker.unlock_shared(); + return true; +} +/******************************************************************** +函数名称:ModuleSession_ProxyRule_GetCount +函数功能:获取统计信息 + 参数.一:lpszIPAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要操作的地址 + 参数.二:pInt_Count + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleSession_ProxyRule::ModuleSession_ProxyRule_GetCount(LPCXSTR lpszIPAddr, int* pInt_Count) +{ + Session_IsErrorOccur = false; + + if (NULL == pInt_Count) + { + Session_IsErrorOccur = true; + Session_dwErrorCode = ERROR_MODULE_SESSION_PROXY_PARAMENT; + return false; + } + st_Locker.lock_shared(); + auto stl_MapIterator = stl_MapProxyRule.find(lpszIPAddr); + if (stl_MapIterator == stl_MapProxyRule.end()) + { + Session_IsErrorOccur = true; + Session_dwErrorCode = ERROR_MODULE_SESSION_PROXY_NOTFOUND; + st_Locker.unlock_shared(); + return false; + } + *pInt_Count = stl_MapIterator->second.size(); + st_Locker.unlock_shared(); + return true; +} +/******************************************************************** +函数名称:ModuleSession_ProxyRule_GetList +函数功能:获取所有列表 + 参数.一:pppSt_IPCount + In/Out:In + 类型:三级指针 + 可空:N + 意思:输出获取到的列表信息 + 参数.二:pInt_Count + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出列表个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleSession_ProxyRule::ModuleSession_ProxyRule_GetList(SESSION_IPCONUT*** pppSt_IPCount, int* pInt_Count) +{ + Session_IsErrorOccur = false; + + if (NULL == pppSt_IPCount || NULL == pInt_Count) + { + Session_IsErrorOccur = true; + Session_dwErrorCode = ERROR_MODULE_SESSION_PROXY_PARAMENT; + return false; + } + st_Locker.lock_shared(); + *pInt_Count = stl_MapProxyRule.size(); + BaseLib_Memory_Malloc((XPPPMEM)pppSt_IPCount, *pInt_Count, sizeof(SESSION_IPCONUT)); + //遍历 + auto stl_MapIterator = stl_MapProxyRule.begin(); + for (int i = 0; stl_MapIterator != stl_MapProxyRule.end(); stl_MapIterator++, i++) + { + (*pppSt_IPCount)[i]->nIPCount = stl_MapIterator->second.size(); + _tcsxcpy((*pppSt_IPCount)[i]->tszIPAddr, stl_MapIterator->first.c_str()); + } + st_Locker.unlock_shared(); + return true; +} \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_ProxyRule.h b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_ProxyRule.h new file mode 100644 index 0000000..9bb58e0 --- /dev/null +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_ProxyRule.h @@ -0,0 +1,33 @@ +#pragma once +/******************************************************************** +// Created: 2025/05/15 11:33:09 +// File Name: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleSession\ModuleSession_Proxy\ModuleSession_ProxyRule.h +// File Path: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleSession\ModuleSession_Proxy +// File Base: ModuleSession_ProxyRule +// File Ext: h +// Project: XEngine +// Author: qyt +// Purpose: 负载转发规则处理 +// History: +*********************************************************************/ +typedef struct +{ + XCHAR tszIPAddr[128]; +}SESSION_PROXYRULE; + +class CModuleSession_ProxyRule +{ +public: + CModuleSession_ProxyRule(); + ~CModuleSession_ProxyRule(); +public: + bool ModuleSession_ProxyRule_Insert(LPCXSTR lpszIPAddr); + bool ModuleSession_ProxyRule_Delete(LPCXSTR lpszIPAddr); + bool ModuleSession_ProxyRule_Set(LPCXSTR lpszIPAddr, LPCXSTR lpszUseAddr, bool bAdd = true); + bool ModuleSession_ProxyRule_GetCount(LPCXSTR lpszIPAddr, int* pInt_Count); + bool ModuleSession_ProxyRule_GetList(SESSION_IPCONUT*** pppSt_IPCount, int* pInt_Count); +private: + std::shared_mutex st_Locker; +private: + std::unordered_map > stl_MapProxyRule; +}; \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def b/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def index f8c5b70..fc28f03 100644 --- a/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def +++ b/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def @@ -32,4 +32,8 @@ EXPORTS ModuleSession_Proxy_GetForToken ModuleSession_Proxy_List ModuleSession_Proxy_Delete - ModuleSession_Proxy_GetIPCount \ No newline at end of file + ModuleSession_ProxyRule_Insert + ModuleSession_ProxyRule_Delete + ModuleSession_ProxyRule_Set + ModuleSession_ProxyRule_GetCount + ModuleSession_ProxyRule_GetList \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.vcxproj b/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.vcxproj index c36ef88..4b04841 100644 --- a/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.vcxproj +++ b/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.vcxproj @@ -250,6 +250,7 @@ + @@ -258,6 +259,7 @@ + diff --git a/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.vcxproj.filters b/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.vcxproj.filters index b7e6185..cd29b03 100644 --- a/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.vcxproj.filters +++ b/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.vcxproj.filters @@ -63,6 +63,9 @@ 头文件\ModuleSession_Proxy + + 头文件\ModuleSession_Proxy + @@ -83,6 +86,9 @@ 源文件\ModuleSession_Proxy + + 源文件\ModuleSession_Proxy + diff --git a/XEngine_Source/XEngine_ModuleSession/pch.cpp b/XEngine_Source/XEngine_ModuleSession/pch.cpp index b0f549c..abd7ebb 100644 --- a/XEngine_Source/XEngine_ModuleSession/pch.cpp +++ b/XEngine_Source/XEngine_ModuleSession/pch.cpp @@ -3,6 +3,7 @@ #include "ModuleSession_Socks/ModuleSession_Socks.h" #include "ModuleSession_Tunnel/ModuleSession_Tunnel.h" #include "ModuleSession_Proxy/ModuleSession_Proxy.h" +#include "ModuleSession_Proxy/ModuleSession_ProxyRule.h" /******************************************************************** // Created: 2022/06/08 10:10:52 // File Name: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleSession\pch.cpp @@ -21,6 +22,7 @@ CModuleSession_Forward m_Forward; CModuleSession_Socks m_Socks; CModuleSession_Tunnel m_Tunnel; CModuleSession_Proxy m_Proxy; +CModuleSession_ProxyRule m_ProxyRule; ////////////////////////////////////////////////////////////////////////// // 导出函数 ////////////////////////////////////////////////////////////////////////// @@ -148,7 +150,23 @@ extern "C" bool ModuleSession_Proxy_Delete(LPCXSTR lpszIPAddr) { return m_Proxy.ModuleSession_Proxy_Delete(lpszIPAddr); } -extern "C" bool ModuleSession_Proxy_GetIPCount(SESSION_IPCONUT*** pppSt_IPCount, int* pInt_Count) +extern "C" bool ModuleSession_ProxyRule_Insert(LPCXSTR lpszIPAddr) { - return m_Proxy.ModuleSession_Proxy_GetIPCount(pppSt_IPCount, pInt_Count); + return m_ProxyRule.ModuleSession_ProxyRule_Insert(lpszIPAddr); +} +extern "C" bool ModuleSession_ProxyRule_Delete(LPCXSTR lpszIPAddr) +{ + return m_ProxyRule.ModuleSession_ProxyRule_Delete(lpszIPAddr); +} +extern "C" bool ModuleSession_ProxyRule_Set(LPCXSTR lpszIPAddr, LPCXSTR lpszUseAddr, bool bAdd) +{ + return m_ProxyRule.ModuleSession_ProxyRule_Set(lpszIPAddr, lpszUseAddr, bAdd); +} +extern "C" bool ModuleSession_ProxyRule_GetCount(LPCXSTR lpszIPAddr, int* pInt_Count) +{ + return m_ProxyRule.ModuleSession_ProxyRule_GetCount(lpszIPAddr, pInt_Count); +} +extern "C" bool ModuleSession_ProxyRule_GetList(SESSION_IPCONUT*** pppSt_IPCount, int* pInt_Count) +{ + return m_ProxyRule.ModuleSession_ProxyRule_GetList(pppSt_IPCount, pInt_Count); } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp index bf71556..b2d5a67 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp @@ -48,10 +48,9 @@ bool XEngine_Proxy_Connect(LPCXSTR lpszClientAddr) { int nIPCount = 0; SESSION_IPCONUT** ppSt_IPCount; - ModuleSession_Proxy_GetIPCount(&ppSt_IPCount, &nIPCount); + ModuleSession_ProxyRule_GetList(&ppSt_IPCount, &nIPCount); //排序 - ModuleHelp_APIHelp_QSort(ppSt_IPCount, nIPCount, sizeof(SESSION_IPCONUT)); - + ModuleHelp_APIHelp_QSort(ppSt_IPCount, nIPCount, sizeof(SESSION_IPCONUT*)); _tcsxcpy(tszIPAddr, ppSt_IPCount[0]->tszIPAddr); _tcsxcpy(tszDstIPAddr, ppSt_IPCount[0]->tszIPAddr); APIAddr_IPAddr_SegAddr(tszDstIPAddr, &nDstPort); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp index c62c789..f3a3573 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp @@ -345,6 +345,12 @@ int main(int argc, char** argv) goto XENGINE_SERVICEAPP_EXIT; } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动Proxy客户端服务成功")); + + for (auto stl_ListIterator = st_ServiceConfig.st_XProxy.pStl_ListDestAddr->begin(); stl_ListIterator != st_ServiceConfig.st_XProxy.pStl_ListDestAddr->end(); stl_ListIterator++) + { + ModuleSession_ProxyRule_Insert(stl_ListIterator->c_str()); + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化负载均衡后台服务端成功,个数:%d"), st_ServiceConfig.st_XProxy.pStl_ListDestAddr->size()); } else { -- Gitee From e5d092084e32560fd0284b57378a279aba6a416f Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 15 May 2025 14:14:17 +0800 Subject: [PATCH 19/26] fixed:not cal count for proxy --- XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp | 1 + XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp index 3b41045..47c41d6 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp @@ -250,6 +250,7 @@ void XEngine_Network_Close(LPCXSTR lpszClientAddr, int nIPProto, int nCloseType) XClient_TCPSelect_DeleteEx(xhProxyClient, st_ProxyInfo.xhClient); } ModuleSession_Proxy_Delete(lpszClientAddr); + ModuleSession_ProxyRule_Set(lpszClientAddr, st_ProxyInfo.tszDstAddr, false); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Proxy客户端:%s,离开服务器,离开类型;%d"), lpszClientAddr, nCloseType); } else diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp index b2d5a67..7f95634 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp @@ -54,8 +54,12 @@ bool XEngine_Proxy_Connect(LPCXSTR lpszClientAddr) _tcsxcpy(tszIPAddr, ppSt_IPCount[0]->tszIPAddr); _tcsxcpy(tszDstIPAddr, ppSt_IPCount[0]->tszIPAddr); APIAddr_IPAddr_SegAddr(tszDstIPAddr, &nDstPort); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Proxy客户端:%s,代理转发规则地址未命中,使用最小原则规则地址:%s:%d"), lpszClientAddr, tszDstIPAddr, nDstPort); + } + else if (1 == st_ServiceConfig.st_XProxy.nRuleMode) + { + } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Proxy客户端:%s,代理转发规则地址未命中,使用系统规则地址:%s:%d"), lpszClientAddr, tszDstIPAddr, nDstPort); } if (!XClient_TCPSelect_InsertEx(xhProxyClient, &xhClient, tszDstIPAddr, nDstPort, false)) { @@ -64,6 +68,7 @@ bool XEngine_Proxy_Connect(LPCXSTR lpszClientAddr) } SocketOpt_HeartBeat_InsertAddrEx(xhProxyHeart, lpszClientAddr); ModuleSession_Proxy_Insert(lpszClientAddr, tszIPAddr, xhClient); + ModuleSession_ProxyRule_Set(tszIPAddr, lpszClientAddr); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Proxy客户端:%s,连接到服务器:%s:%d 成功"), lpszClientAddr, tszDstIPAddr, nDstPort); return true; } -- Gitee From f61cc3210bef8f465c5949f6f4d813218defc812 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 15 May 2025 14:56:59 +0800 Subject: [PATCH 20/26] added:hash ip mode for proxy support --- .../XEngine_Config/XEngine_Config.json | 2 +- .../ModuleSession_ProxyRule.cpp | 2 +- XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h | 1 + .../XEngine_ServiceApp/XEngine_ProxyTask.cpp | 15 +++++++++++---- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index edb5387..adac7ab 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -34,7 +34,7 @@ "nRuleMode": 0, "tszDestIPAddr": [ "127.0.0.1:5501", - "127.0.0.1:5501" + "118.25.14.242:5501" ], "tszRuleIPAddr": [ "10.0.0.1-10.0.4.69:5403", diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_ProxyRule.cpp b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_ProxyRule.cpp index ee5f571..feaddb7 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_ProxyRule.cpp +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Proxy/ModuleSession_ProxyRule.cpp @@ -144,7 +144,7 @@ bool CModuleSession_ProxyRule::ModuleSession_ProxyRule_Set(LPCXSTR lpszIPAddr, L } } } - st_Locker.unlock_shared(); + st_Locker.unlock(); return true; } /******************************************************************** diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h b/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h index 79da088..62e8a5b 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h @@ -9,6 +9,7 @@ #include #include #include +#include #ifdef _MSC_BUILD #include #include diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp index 7f95634..334a102 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp @@ -19,13 +19,13 @@ bool XEngine_Proxy_Connect(LPCXSTR lpszClientAddr) XCHAR tszIPAddr[128] = {}; XCHAR tszSrcIPAddr[128] = {}; XCHAR tszDstIPAddr[128] = {}; + + _tcsxcpy(tszSrcIPAddr, lpszClientAddr); + APIAddr_IPAddr_SegAddr(tszSrcIPAddr, &nSrcPort); //是否有单独的转发规则 if (!st_ServiceConfig.st_XProxy.pStl_ListRuleAddr->empty()) { //有规则,需要进行匹配 - _tcsxcpy(tszSrcIPAddr, lpszClientAddr); - APIAddr_IPAddr_SegAddr(tszSrcIPAddr, &nSrcPort); - for (auto stl_ListIterator = st_ServiceConfig.st_XProxy.pStl_ListRuleAddr->begin(); stl_ListIterator != st_ServiceConfig.st_XProxy.pStl_ListRuleAddr->end(); stl_ListIterator++) { XCHAR tszTmpIPAddr[128] = {}; @@ -58,7 +58,14 @@ bool XEngine_Proxy_Connect(LPCXSTR lpszClientAddr) } else if (1 == st_ServiceConfig.st_XProxy.nRuleMode) { - + size_t nHashValue = std::hash{}(tszSrcIPAddr); + size_t nIndex = nHashValue % st_ServiceConfig.st_XProxy.pStl_ListDestAddr->size(); + auto stl_ListIterator = st_ServiceConfig.st_XProxy.pStl_ListDestAddr->begin(); + std::advance(stl_ListIterator, nIndex); + _tcsxcpy(tszIPAddr, stl_ListIterator->c_str()); + _tcsxcpy(tszDstIPAddr, stl_ListIterator->c_str()); + APIAddr_IPAddr_SegAddr(tszDstIPAddr, &nDstPort); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Proxy客户端:%s,代理转发规则地址未命中,使用HASH规则,规则地址:%s:%d"), lpszClientAddr, tszDstIPAddr, nDstPort); } } if (!XClient_TCPSelect_InsertEx(xhProxyClient, &xhClient, tszDstIPAddr, nDstPort, false)) -- Gitee From cf542f7b1f00d8aa32440e10affc7ef0367e1288 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 15 May 2025 15:14:44 +0800 Subject: [PATCH 21/26] added:random mode for proxy support --- .../XEngine_ServiceApp/XEngine_ProxyTask.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp index 334a102..91a3ee8 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp @@ -67,6 +67,17 @@ bool XEngine_Proxy_Connect(LPCXSTR lpszClientAddr) APIAddr_IPAddr_SegAddr(tszDstIPAddr, &nDstPort); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Proxy客户端:%s,代理转发规则地址未命中,使用HASH规则,规则地址:%s:%d"), lpszClientAddr, tszDstIPAddr, nDstPort); } + else if (2 == st_ServiceConfig.st_XProxy.nRuleMode) + { + XNETHANDLE xhIndex = 0; + BaseLib_Handle_Create(&xhIndex, 0, st_ServiceConfig.st_XProxy.pStl_ListDestAddr->size()); + auto stl_ListIterator = st_ServiceConfig.st_XProxy.pStl_ListDestAddr->begin(); + std::advance(stl_ListIterator, xhIndex); + _tcsxcpy(tszIPAddr, stl_ListIterator->c_str()); + _tcsxcpy(tszDstIPAddr, stl_ListIterator->c_str()); + APIAddr_IPAddr_SegAddr(tszDstIPAddr, &nDstPort); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Proxy客户端:%s,代理转发规则地址未命中,使用随机规则,规则地址:%s:%d"), lpszClientAddr, tszDstIPAddr, nDstPort); + } } if (!XClient_TCPSelect_InsertEx(xhProxyClient, &xhClient, tszDstIPAddr, nDstPort, false)) { -- Gitee From 5f7b1b52ab4a2519af6f6a290a1c1e19ddda7d17 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 19 May 2025 10:08:36 +0800 Subject: [PATCH 22/26] ci:add fedora system support --- .github/workflows/fedora_build.yml | 89 ++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 .github/workflows/fedora_build.yml diff --git a/.github/workflows/fedora_build.yml b/.github/workflows/fedora_build.yml new file mode 100644 index 0000000..3dbb275 --- /dev/null +++ b/.github/workflows/fedora_build.yml @@ -0,0 +1,89 @@ +name: fedora build workflows + +on: + push: + branches: + - 'master' + paths: + - 'XEngine_Source/**' + - 'XEngine_Release/**' + - '.github/**' + +permissions: + contents: read + +jobs: + build: + runs-on: ${{ matrix.runner }} + container: + image: fedora:${{ matrix.fedora-version }} + options: --platform ${{ matrix.platform }} + strategy: + matrix: + include: + - arch: amd64 + runner: ubuntu-24.04 + platform: linux/amd64 + fedora-version: 42 + artifact: x86-64 + - arch: amd64 + runner: ubuntu-24.04 + platform: linux/amd64 + fedora-version: 41 + artifact: x86-64 + + steps: + - name: Checkout main repository code + uses: actions/checkout@v4 + + - name: Checkout dependency repository (xengine) + uses: actions/checkout@v4 + with: + repository: libxengine/libxengine + path: libxengine + + - name: sub module checkout (opensource) + uses: actions/checkout@v4 + with: + repository: libxengine/XEngine_OPenSource + path: XEngine_Source/XEngine_Depend + + - name: install system package + run: | + dnf update -y + dnf install gcc g++ make git jq unzip wget -y + + - name: Set TERM variable + run: echo "TERM=xterm" >> $GITHUB_ENV + + - name: install xengine library + run: | + latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_Fedora_${{ matrix.fedora-version }}_${{ matrix.artifact }}.zip + unzip ./XEngine_Fedora_${{ matrix.fedora-version }}_${{ matrix.artifact }}.zip -d ./XEngine_Fedora_${{ matrix.fedora-version }}_${{ matrix.artifact }} + cd XEngine_Fedora_${{ matrix.fedora-version }}_${{ matrix.artifact }} + + chmod 777 * + ./XEngine_LINEnv.sh -i 3 + - name: make + run: | + cd XEngine_Source + make + make FLAGS=InstallAll + make FLAGS=CleanAll + + make RELEASE=1 + make FLAGS=InstallAll + make FLAGS=CleanAll + cd .. + - name: test + run: | + cd XEngine_Release + ./XEngine_ProxyServiceApp -t + + - name: Upload folder as artifact + uses: actions/upload-artifact@v4 + with: + name: XEngine_ProxyServiceApp-Fedora_${{ matrix.fedora-version }}_${{ matrix.artifact }} + path: XEngine_Release/ + retention-days: 1 \ No newline at end of file -- Gitee From 22f029f19bb054474ad18dac6122a9089a83faec Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 19 May 2025 10:20:09 +0800 Subject: [PATCH 23/26] ci:improved system build env set --- .github/workflows/Rocky_build.yml | 14 +++----------- .github/workflows/Ubuntu_build.yml | 31 ++++++------------------------ .github/workflows/debian_build.yml | 16 +++++---------- .github/workflows/fedora_build.yml | 2 +- .github/workflows/macbuild.yml | 19 ++---------------- 5 files changed, 17 insertions(+), 65 deletions(-) diff --git a/.github/workflows/Rocky_build.yml b/.github/workflows/Rocky_build.yml index 93ff095..237ff4b 100644 --- a/.github/workflows/Rocky_build.yml +++ b/.github/workflows/Rocky_build.yml @@ -54,12 +54,7 @@ jobs: - name: install system package run: | dnf update -y - dnf install gcc g++ make git jq unzip -y - - name: Set up Dependency rocky linux Environment - run: | - cd libxengine - chmod 777 * - ./XEngine_LINEnv.sh -i 0 + dnf install gcc g++ make git jq unzip wget -y - name: install xengine library run: | latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) @@ -67,11 +62,8 @@ jobs: unzip ./XEngine_RockyLinux_9_${{ matrix.artifact }}.zip -d ./XEngine_RockyLinux_9_${{ matrix.artifact }} cd XEngine_RockyLinux_9_${{ matrix.artifact }} - cp -rf ./XEngine_Include /usr/local/include - cp -rf ./XEngine_Linux/xengine /usr/local/bin - find ./XEngine_Linux -name "*.so" -exec cp {} /usr/lib64 \; - ldconfig - + chmod 777 * + ./XEngine_LINEnv.sh -i 3 - name: make run: | cd XEngine_Source diff --git a/.github/workflows/Ubuntu_build.yml b/.github/workflows/Ubuntu_build.yml index 8db08de..8a702ac 100644 --- a/.github/workflows/Ubuntu_build.yml +++ b/.github/workflows/Ubuntu_build.yml @@ -50,52 +50,33 @@ jobs: - name: Set up Dependency ubuntu22.04 x86-64 Environment if: matrix.os == 'ubuntu-22.04' run: | - cd libxengine - chmod 777 * - sudo ./XEngine_LINEnv.sh -i 0 - latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_UBuntu_22.04_x86-64.zip unzip ./XEngine_UBuntu_22.04_x86-64.zip -d ./XEngine_UBuntu_22.04_x86-64 cd XEngine_UBuntu_22.04_x86-64 - sudo cp -rf ./XEngine_Include /usr/local/include - sudo cp -rf ./XEngine_Linux/xengine /usr/local/bin - sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; - sudo ldconfig + chmod 777 * + sudo ./XEngine_LINEnv.sh -i 3 - name: Set up Dependency ubuntu22.04 arm Environment if: matrix.os == 'ubuntu-22.04-arm' run: | - cd libxengine - chmod 777 * - sudo ./XEngine_LINEnv.sh -i 0 - latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_UBuntu_22.04_Arm64.zip unzip ./XEngine_UBuntu_22.04_Arm64.zip -d ./XEngine_UBuntu_22.04_Arm64 cd XEngine_UBuntu_22.04_Arm64 - sudo cp -rf ./XEngine_Include /usr/include - sudo cp -rf ./XEngine_Linux/xengine /usr/local/bin - sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; - sudo ldconfig + chmod 777 * + sudo ./XEngine_LINEnv.sh -i 3 - name: Set up Dependency ubuntu24.04 arm Environment if: matrix.os == 'ubuntu-24.04-arm' run: | - cd libxengine - chmod 777 * - sudo ./XEngine_LINEnv.sh -i 0 - latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_UBuntu_24.04_Arm64.zip unzip ./XEngine_UBuntu_24.04_Arm64.zip -d ./XEngine_UBuntu_24.04_Arm64 cd XEngine_UBuntu_24.04_Arm64 - sudo cp -rf ./XEngine_Include /usr/include - sudo cp -rf ./XEngine_Linux/xengine /usr/local/bin - sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; - sudo ldconfig - + chmod 777 * + sudo ./XEngine_LINEnv.sh -i 3 - name: make run: | cd XEngine_Source diff --git a/.github/workflows/debian_build.yml b/.github/workflows/debian_build.yml index e84f124..6ffa2c1 100644 --- a/.github/workflows/debian_build.yml +++ b/.github/workflows/debian_build.yml @@ -29,6 +29,8 @@ jobs: steps: - name: Checkout main repository code uses: actions/checkout@v4 + with: + ref: 'develop' - name: Checkout dependency repository (xengine) uses: actions/checkout@v4 @@ -48,13 +50,8 @@ jobs: - name: install system package run: | apt update -y - apt install gcc g++ make git jq unzip curl -y + apt install gcc g++ make git jq unzip curl wget -y - - name: Set up Dependency rocky linux Environment - run: | - cd libxengine - chmod 777 * - ./XEngine_LINEnv.sh -i 0 - name: install xengine library run: | latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) @@ -62,11 +59,8 @@ jobs: unzip ./XEngine_Debian_12_${{ matrix.artifact }}.zip -d ./XEngine_Debian_12_${{ matrix.artifact }} cd XEngine_Debian_12_${{ matrix.artifact }} - cp -rf ./XEngine_Include /usr/local/include - cp -rf ./XEngine_Linux/xengine /usr/local/bin - find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; - ldconfig - + chmod 777 * + ./XEngine_LINEnv.sh -i 3 - name: make run: | cd XEngine_Source diff --git a/.github/workflows/fedora_build.yml b/.github/workflows/fedora_build.yml index 3dbb275..fe1d161 100644 --- a/.github/workflows/fedora_build.yml +++ b/.github/workflows/fedora_build.yml @@ -3,7 +3,7 @@ name: fedora build workflows on: push: branches: - - 'master' + - 'develop' paths: - 'XEngine_Source/**' - 'XEngine_Release/**' diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index a4b38c1..ade2de0 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -42,31 +42,16 @@ jobs: - name: brew install run: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - - name: Set up Dependency x86_64 Environment - if: matrix.os == 'macos-13' - run: | - cd libxengine - chmod 777 * - ./XEngine_LINEnv.sh -i 3 - name: Set up Dependency Arm64 Environment if: matrix.os == 'macos-14' run: | - cd libxengine - chmod 777 * - ./XEngine_LINEnv.sh -i 0 - latest_tag=$(git ls-remote --tags --sort="v:refname" https://github.com/libxengine/libxengine.git | awk '{print $2}' | sed 's/refs\/tags\///' | tail -n 1) - wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_Mac_Arm64.zip unzip ./XEngine_Mac_Arm64.zip -d ./XEngine_Mac_Arm64 cd XEngine_Mac_Arm64 - sudo mkdir -p /usr/local/include - sudo mkdir -p /usr/local/lib - sudo cp -rf ./XEngine_Include /usr/local/include - sudo cp -rf ./XEngine_Mac/xengine /usr/local/bin - sudo find ./XEngine_Mac -name "*.dylib" -exec cp {} /usr/local/lib \; - + chmod 777 * + ./XEngine_LINEnv.sh -i 3 - name: make debug run: | cd XEngine_Source -- Gitee From 8c8b4d46c0eda2b2aafd08b143ed369572e81fd1 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 19 May 2025 11:05:03 +0800 Subject: [PATCH 24/26] ci:fixed mac build --- .github/workflows/macbuild.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index ade2de0..e07fc55 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -41,7 +41,13 @@ jobs: - name: brew install run: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - + + - name: Set up Dependency x86_64 Environment + if: matrix.os == 'macos-13' + run: | + cd libxengine + chmod 777 * + ./XEngine_LINEnv.sh -i 3 - name: Set up Dependency Arm64 Environment if: matrix.os == 'macos-14' run: | -- Gitee From 7e68064109ebcac75a803fec904f781bdb1e6ed9 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 19 May 2025 11:42:22 +0800 Subject: [PATCH 25/26] update:document and configure --- CHANGELOG | 20 ++++++++++++++++++ XEngine_Docment/Docment_en.docx | Bin 116389 -> 117255 bytes XEngine_Docment/Docment_zh.docx | Bin 115851 -> 116911 bytes .../XEngine_Config/XEngine_Version.json | 1 + 4 files changed, 21 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index d069366..fcda20d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,23 @@ +XEngine_ProxyServer V1.13.0.1001 + +增加:帮助模块 +增加:代理转发多后端支持 +增加:代理转发支持hash ip,随机,最小选择模式 +增加:更多CI发布编译支持 +更新:依赖库 +优化:makefile 编译选项 +修改:信息报告仅在release发布版本生效 +修改:代理转发删除原始端口规则匹配 + +added:module help +added:proxy forward dest list support +added:hash ip,random,min forward mode support for proxy +added:ci more release build support +update:depend library +improved:make file build flags +modify:only release work for info report +modify:delete source port rule match for proxy forward +====================================================================================== XEngine_ProxyServer V1.12.0.1001 增加:windows arm64编译支持 diff --git a/XEngine_Docment/Docment_en.docx b/XEngine_Docment/Docment_en.docx index 34ebcc3ef02706a7b586fce00d6b87d6ed290368..f6af63922100a3731232e1ca0632588b9190ce89 100644 GIT binary patch delta 95272 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�^1FZf`49g>sbr%lTpmRE3rrms4s%jTQ^{dY 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Ν2$d}jFt$gU& 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%0A$VCfZmQx5AB@hx1Ml|oT%2ls-tyZw_{dy%C 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
MFFTZ@i+=e^iOgDh>QBwjz-cN9w-HYyBrV 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 diff --git a/XEngine_Docment/Docment_zh.docx b/XEngine_Docment/Docment_zh.docx index 8598b9739f7b551f06b4741338eae2a279651cfd..6bf8df71c57dd5e8243023baea15a040fcf546db 100644 GIT binary patch delta 86810 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 delta 85729 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�|!td$xy6kYjy_K%r@!*ZytGEy?y-VwZ;f2j?< zRD5&MO@tZGVb@v7Mt8Q1B7RR4l^}B%P0l;^X9+1hHE(}3F$au`jY#EV)@o?)Ha_+3 z)ry(BAv<0%7BD=Qir&X?YZtl8aP3k4Jz`HhnLBh+9{O`5l*TchIJ$@sDxeM#xF0)F zl&fIOZirWLCUSH!A$ogWINB{a6|DJzytD}-YAl$Dx&WlDYLT=8DZ|7@v zF#j{|Xg@f`UDdEpV%!)9iQMJhWYZh?_@6Fzmd??Vp(hY zUuN%hVytua$X?8oyxZOnef%keGrD}M@~dW3ouBVyNByE2DZBKnPU=yt|_vpIiO z{%``(6b;}W4k0?jxH>bH!KYrwabO?IoaPDrtUxC6>p8bIww5y{K;T->nRzQ2Jeh?LJTp16O$S~+vK zJ}Vn<^!0Tcn0Z(cfx}(3zEe78Qr369VNKRbDaHaIV)bFvW2F|NV2I4Zvq)CDU%^~x z=-2b~(Uo()m{nZ48fQ{g?s;Nvcjc8E=1W#SWupqk%CGQTxK*Ob1)r^y+R>+7B@*0p zf&;1OiLaQGj8Vf?wwyLPC98jykMn@5%KyUbzgS3nSRW$9S@~tvCl3Ty)Wj%Iu|OAK zZ5Z8`cj}3EqKSE9h4G3rf*Gkua>p1@!49-7iXQXc3Q{kv#5?Y-aG9jwy-Ov zMqu23xm+Wxk%^v6)`SUd2uRb%g9uPc;$Oxe2u4vtPu(#c(O)IjxnJ%c68t%^4i0?+a-qYI7dL_HcliW zB@gszg_MNsY0aLwTV;RE5p`yStez7_351yOTUet$)WBPMxF7ayP3LIQT02@?2-$y4 z@EKpeelIV`zgjxrFQE3!`g zq2s*Hj#w5Uq9Fslwsm`E1@3jD7Ynb64acT9r9x`6%Z&cd^;&09H>5=cd!7?ax@DoO9iY+~J$5Pujg z+TZhvS?rxsa3Mr)=%zA~J8G!xoN`)p>bHnc$F8L~^E|Cai1-1%g*=jB)$7ioZcMCZ z%OdiOgUFtC2w zdahf7u5JbPR>vD-ZHo%WtTehWQj zkmLCgw=`tyd&uSgfq1UyN$fF0;02NURm{HZ@tjo>x7Z-}MD9op@hO?LJ*;}&vn5ti z6XL83x~G435Awu4U*m~>dxi8qzSEV9A+y^tVGU<7?lsaw4G1B=`DR+n9jNt)0W`wp;#?yX@^hRMGYyAH}EMrzVW9?EUJ*O3Zyed8qh3 zCmBcCL}5jR_;2cu=+{10xbuD=FFfrj5LQtZVuODf*I9M5r8ukcG{}8U&RFdz#JCP} z-!J?bM#^AIaliJV$Ff7xkJmuXZe=bOgKPN&zf?INy#J~uh?8rB#Q%s`-F(l9$8&CX zznLdSe)ikNF$O85^2BT*mN5FYpI9#{Bb+Z4?rW1XRavw2e3mZ8UCt-(5c|M{*udJA z6McVJs6lk1E*U+r^DSG6*7^kF!5Hz0zrx7&N%{}{A0av8$qK}=0xyQ4WUS5*()`Ew z)cSCbp46)&uR3Ywgn2U|^~0XKla@`aT{+q~4=u$>ryi_>JUP{bXF*8gni5%%bdgh> zJid;(0wGZ|jmXRwdy|B;^W)RD4fLH)etv&3R&(V47{&%qNp+)Ne~NCiif^G5W7~To z?vE8~r+DQ%_{huoaZbzp5^}y%PRdwOc;tO-%qpJRlVRND$Uh#K3)Rl~oOejQKXN%j z8czW{_UWdBtFv*xPq3*NIV&ki_iB(uBBSR`GwB z2nw&8g{%huO{*Ov3ny|P=m!fa4_VD=V$p2lqk|7SZBL6FC9bGEFxFc?&Fex%iPKIs ztROlbvD^%^^BH0X{A}TbV%&e_3{N~4PDq`|*3an1Dtu>L@5qq?nanBX*E*lm znH$%o3310<^^tdY(0e~KCaB;Is0Fxu*RK>gC`7XM4zAA1^&;mJS^rq^<185wwxgo) z4eR;N>hdU&1*~2d)=C{6d7e>qcGN}VPTVE)Oz5*ic^TJ0?$kk#^6XcB>>YpoLB;s! zk$G{{hY5uX@(k87wp zAJd4>?ai2Z-|mBV$d%n;9)Iumu(R&O#B8hyK5v$fSM*I=sK|0&v|Zruk!Qs9iRT@k zSebBM)Vt8SX{lSr$U-1ICF_5FDe+TZd4N3CT}WXaCLxt)dxe91F}88P71c0^T>Fqg zYU{`c#NU%dl71lKPP{s46jpG&>3s>kshdAhJ393@%W1;Xc(Z@ZqHpePAosudmWllO zmXs&%#9N9Fte(-qN~~>vV;C^9G<|>OIYUCUdl`{`j5V6K?6UF9-J*Xzf{F!KrjlzG zZk02Gmi$&v3oF2H?PZ`o#jP>r2cJ#c->{zITGow@e`8J71Dne>zJKBF<`>^Nkx^717aJg=IV1==)bxY`DTz3%>Tx;F*9dne|SKDlR zU0wmk#jfv`fBc@4I(pSYDtAX+zjdLfcl#%{f%~9;zK}uQo_(-Y4*46bP!S1`uZ2(D zy#5$+M6mH~kLDRQ zI_~JHW3S>JBXj=ej+b~c>J{CYSW9qcYa4R~@(9w#s_`rDBclg)r|xv@gue5&h1#`u z>2k)H-CemA-q)-AP|H+eOYV;72CnG7DPcuN45l+woVqcz6?5YEghnCm z9XZ?;>yfV9(1q2GH(WjbJ@T1&c88Gm(A&LoW;(`0z*yW3I5H_whng0(C*(Hyd~C zJb76c?~)hw&zP|ZRl^VOtS6RK@kW0-*$?}JUucY?S0JPwj19_C6`pYO(g|M+k*GGo z@5!1Bu9c@?sB;Csq^?MD$KmRLu3sRojHtxzWgFB zLP)goAj5z18#m^Ep4d)9#VNgMGweHjMLsRoQ@k?buMpAhMa7R-jyx7zw{q=Zgz4!n zTbKuYHPwZ_SxlBJICJa8NOQdFpDgdi?EkAxd>wyJaP8u~xNcP(4R6g?b!Q=adUcC+ z;`^z`3?tjGUgP=o&yp?l4xiPW&}(}!z!B@xo(*H2)6n*Eyv?4)X~19FLe7B^lYPVA z)2uCwlfULsv4u$gSW)lA*cJXg;;GyX@#Jf=S1rVO;?)y(>R3i_jCzq3#WCy?loZs>hgWnT~Z?bPf%r5mRrUIPCU zBM?Z#K1w0C3_jcKeW-dL3fK0L_aP*GgStOc41&63$%S~sc?BuPENr&DJ=cFi-fjxf z`AytEg|Iu`W+|k;F^co|V-k6XLQESA_vnx-!?sr}4b@`OH=|}7pI}B}2=|TKsmCtP<|GKl4Iy{}^zs^FynnEmAhc2BUv&zCG#_7f{3y z7^!~HQlwlm<~2ikMkkndRVrUD6bleiD(|;chE3$7sjRY)Tc+9)>MTU&rQvjn=o|hp zUL_>tb8&U*{nDnr6G)>-NlKRG7|=Nt;!d$AA!bf>LPDB}7*BM37wF|Os>KGLg z!A{(x`kFym1R>Kp)r)_{Zu?N{C?yy7Mqeg*X$9>;@@|-|5Hd$(2e%j-f`okS9Kf&o)1iE=F?0={rKKHni7iwz`q6r+I(Aj5kx7Pd*c#deL~y zqzK6|?hg_1I#OB%6*UTltTahUO~`euofPuC(gaC4v_<5bc2y)VGjgOHvr*BK3uztMdj3=7;!oSY zDT6EIw1*5OL_$y_SN|T(N%T&|LGmDd3L!l`v`9H;kw|~CfB195$`{qAY|2Xb;?&V+EEcm-L&{U#p;JUK9`XXa{pYXos6GWWnHKjAtVy( zqUuc{HApcdtb8eC+d+0K)2}bWU1g_y)MXk-ofMB3a_d9yFxxAODj)(e!w7B2)f}|f zAy?DT-y!^p*}u@WKxDUrJU+V^3RNkS`U`p7uTXz=t&nGxk@?9H$KNx}8+8H*X*NhX zNyu)M?T(Ox837s5_EB|HAdb3HLT*giK}5F?#t-t+)yQkTTES_ZLcC36gIO0aP74S` z9xDFQHOu$o(^lj^5IH`OyX2jJ#IN(NZLk&FvpB{A^4``ks;do}IEErbyox{V`J?=4 z$|rvt_NWQ*QfT6pkmHqVkA>XK-bX&K8Fi4Se6tn^*E%F5`Np_id0C@j6x z5@mMiiR+>dDv!vmA99xx8C>KpB{khY^hXmsb_lY=|Zek+m4M;>2v3F92xKZMy+ z$+K?s=Stq~BPBH17-wD2{95}QEh{UaU>xnVaBFJ zKQE~l3el~}JEUw!HEmH*?E{+66iCC`$rKeooOdp@l}DAOLb_qqYm9c$orS9tJy?He zEsK5nA3x1>MlkB3m*7s-bV8!6w+f35+cJlpE;f1i5d3NVmd57bxdc% zm{1WT&KR>REz})xheYHQy^rFhZj440_n7a+h+XQn3h`c>n4>H{lC!0VTbpJN1mdXH z9P^Llh2k2-d_atK7T+Q1ipcpA?@@nUnW$|Nh~vEKRQl%wvsR_+2&2bR9=D2wUGCro_8uEMOPIf`7@eh6SF?brph=WwM>jX6>)#;jTJI&Vzjly zP(f1S5VBLnI8qT?@4Q21byO=8(lY0AbbQms+*AoAY2KrA$z9;T5f?+hv8;b&lj=GH zY0htM>7K#(b&0+yQUnvS+C#sj=nqi&MacP)eJQ(p!)#L75jw?B+tDSB&$geoD4wj7 z+s0^kIYllvu3HTC!0cE#%NItR%ZXWXxYl}T)TpRE_C4lyC44fOPCXfR-Isz%2QRhp+L&0D0lBxI(3>HP@FIN?*s z&PFN+LT(!9QP%WAH=B?cl#I0zA*nI3BC2M~yx)YhL)En@rbH%;3Dti*Y-2rN&68C% zQWdqE827L8-7Ch{bup%gJYGnh7^e`oHk@mvlPKbV9!sqeK*lGCNq=a`b*|-V;XAFX zRqD77#5a1#vY`#t=tFI=K4e@%tfDtnt!13WC`8@|b%+VMxnkU3euO_{4w0l?{5P$Z zjIo;9W9YvpG}MfXd5{8XZ<0l zP%Fe+!H8My6rF`vRNvdhe+m+!(wzee(hNwK45%Y2CnWZkVyyC*_sy=eZy>D$kU;udo$FKWqZ}iz5R07O+9}{MVzuBx}vknClQZA^ql{-RFJ>DdqG2YL)j#1*3ej!! zcdxMj-Dnyk-T$y4p{y9`;W!XS!=G9X>gS*qkvDiIs2b?l8>czlMH;QB^?!bT03T!vnj_QxkgB7m`LsOS`J=o+sAXUH4zR*K!osi8>9 zLtw`J8(g)<8}b4MW7ht7IcePR_?BXB-Gm;n$9Y@clFV^1u+wpy zfZ32CyJNTF6;N_k9ChKMS;j-B<_%q#jal};ku9Ye2{Kj-IwqEzqnOJ**@bDRC#Xda zFCR32fX46!a7@Oe-JqeK)DhA0V4xL4qw-@hfAJhhcY7NYqMA&xRLZ=VtN8%iyz3rS;;00oX%&;yhT`k z%O%o(n8Y)vy2FW-#GC5K6Z9D5)T;caLsA`lZs=+8qV+M28VIV2ZC%a8*i+*}N=I{~uYnzP( zCOzbfSzaQnlUv>salf;eWtyscKH82?X4Jm5s_^kdGih34?$U2Xi7kxPrGUHx#T z;T|NKAO6bCvz~Rs-j(r{yaDQmi9&G^nKBvF;J0fk%>o`BzauY&{pF;S*hj%9NYZnq zhWddeW7U{=F5yiDxO8Ye|@mR=+Fk2MI>JiY&k>P`2#HO4l*a}c4{(*W;je( z1b7P~-Py3+u?arkq|tqif6jiXt+4(^AD<%UJ99JUqB=K*WMB%9xrwj8hu1|I;xkL! zyN@!@kezOXqo9S#-!7`F9u_Xp)S8nWIhOtJd9izV!veX2z0&HIW%!%OX_DHx|8z*y-9D{<70)&Up*_lh=fw2sz0#<_XCmS8i|`y$9@ay!ZfFvvbhdF zY>}kfB{3~25oc+6>J??8!&i`2a48CWW4VGJUePz)jFbtxBW4P;TcF8?*rJh z1b?H%em?{Cy?QBM%NQT=N%w>-?>PtT?=MemFs^z8KI2Wpi6W#dx*rX=R>{9~GnLF$ z6TR`siTRj^yZDOKm@ZV0uT_+`jdZxV8l!HH`%3`s*8ZGqNE~LFII@Xtl3J* zDEb(a=)|MTCwyD!bk0ITF74zBu>|=Vf&!K@W7gUv=Rwz-Bi=vd;$H099~&wf<&kUs zZKgKn0_{wqD=4pRgD|I-kHTRlSUx^k`l~ZU`sb?OgZhGufx*EshE^e(fLf-3=#mF9 zgOAu{%WP4TFS?xB->Po#zW@Xoz2Pb2T84l3X2(I2^!j6&pJhVpY~xPEyy%;{jILO< zd!F7(Z>mn*mcm~^mJoek_Vi*-q`V(1YbK=6k9HyDs0%SCV^J~qAwg!p_k>?VVAJU_ zcOw7z;^vc^yp7CM-f(<+K(YAxcZ&j0D`xjh&@S)Kvn?s&1Qvt)EKQ+y7p%bx>k8NV z1gK<%clyGL(S?9qlh6U*bN3+yHQT)nTut9RNOoAbimRqn_h}$YKnwQYr(Mfye`U{S zU3N;2Vy7OEZjTjH_Ts1TKL^dKKX}-Sbaxl`mqQ6Xr%a(Y1)5c404v>#P32zJYgiz- z6Ga)gwf1jjAIwduRdvU%wQAKKBJXj~{@p`pdEROA&vN#JfCFkgARhJbez=ab+$=Eu z&7oIlVEdv{+@x(HL1o!mP_=Q*+yG;_2oj;JeK}F6{$NpSFs6vtRDfUe1=)CR>zQ|7 zYJY2Eg%3E3YxLbB&^>xS4%uH^6M6wvczgtPPv38OfDM#EwqH)j@Iz72ZntH*yB+Gi zh?;$_rEpP@mK$|G{}XOK&eK1lNS;O(75rA|mS@}DL7$1(8Gq)ThMcI#HzjHnljOU+ z@@H)-EO76>cG=BvS47<$zmE7WSK%|{cg}r4R@4H42v8;gxnk=k5wBFW+D2)|Wy0aw zavd9brO z={rm~CFyU(HTuYbL^8!^bB!i8m>6l!h@%T8a-Sg2>kxR_Ok4^GQB;fAr#UfyAxitE7)r za#Rt$!F(LX_)xM;Fx|7HIfEm`JgB>9_e)XVx){Z0|9Z=!VBe~)J(Wr%*B_`7QCjQ= zPnt0C+D6^9g*pq7sqV`=3eHc6Zoeeuh%XXYLCjc=xj=X9ikvYqV#7iSud*V(Di#Mb zDaHVINAYHx4$|UKp?IG`NQmt0Al_|6#{IA-OXRs_PwdwvBfQ;fIyprnT5?l+I&S)q zlPI3FuT+zWr{PWvs#=fiHwdh#-A+NS{a00x+4bC)8$&ZKsMO2q#jA1BH7w!v{cR!P}cYev2 zS~o5%$++K?O6D`vqlw?B{b-)1oifFjHO+)HjT`A&c@7}#{Y5)X! zI=ergJfX3QKlqvKq0#`>3{M*y&*QO9t-4l;UV^W~LM!3E<$E--&!RWaaj3&< zu>gt{rk%etLax#3%YyCZ{t|ni=IIurTQAOyz|W)+KJ4g|_}1Tn$~LOc3CV9+)~PC2 zhvwH(eX0)&Iyd<3OInW#$AHw3(Ra%F6dYjZ7#|c=Lbg{bf=hPZ8CG8S%3%y+8oiGKI)}5 zdg7{prJlR)u6BlZ33R68HILmJ`(UfVrp4K52|*EKfk-n4Hqwe2=K}TkgSrJT>3y=n z0)hy&DVDBVJKZ2cAQ6`NnH70svFn;|H3p|(UsZji#6}W${r&8@Pd};==B`nF7Fk{Q zsU@)bz&eXhO1OZ#!3+#|ipvtnEiw3|93I;L`Iy+}aMUFmN%=&n$sOr6G<-Ee zH_($RH^2n18K0z9P)Di5TH`jwef94|N`I5Vk)*xDQ*zIY7Bir!)p}%sY3AP(Wp|rK zPh}8Mh+X}%!4?-%T19C6*vL=6Lf0VG6S0T$1T-tDePH!bd4vzx^}RGR8RIWySSiv$ z3ZFb}ofEvS4g2q3ODYjHV27y)?_;K$`zZ_r^|OEq{-{9s_HaAP6jOc4hS^%-nD znIYOG$QP`M^4ne{wsd^0N9Dx^7{7rNh(?D~^G5twF#ZnCjm-&-M93P8i@uJo>3kSa}<=MZ5g_%MQqDId!>` zz8VW~Y*;os(?+=y1Imw{XU$xG%^-|;ec525K}c77d_2RW&r=cot;ofsLX}yH-72=M zwT7>^d6}g?Lpzk$(aaDOY&Z&k)8LFwAkSRuVW^qgl$N~F468T^-UAosb-Jv^wecd@g6njB^noJR7!YP4||(B6rHJWLqUxTpJYK8=0Dr$D?T`)~Ws10lTasm*`1) z1+#iPa9&G|T?L$k0kv{%A?8#DWfRmgfhN(COF+_?Y~b-^XKs{%lV}F{SC!#6Kt>IJ zadqCs_;2QqR^|ct-9%U4E6A(fsO6K!;9TYlhfMpSA7mUvn4@6$p@|`-E|Fr z`BhHP9Ut08)hz2Xyz7>#t?hHyV>18HN1VB)%fy6DaqgtyE{~0_E^yi^*V?b(C~wv9 z8M4epq(n1peQ43l^^u6_&K7eOaO+QQ*y|lA?p}d_{XTgaaj9%puajo1(fNv?%I-AN z$LRZQ9EzXSuK1!Dr)RD zSIhS7oOuERc5RMJkJ|8}1uG8;?ozzv_NwuT|7voHAK(_5V>P|ZEV5_?5SsU8yXk|S zp%pvdQ@CPVe_|V}qdqrcq;SUqzn;w_S1x*w``0X2rLDJFLsfglu~YRBC|8l|#9UX~ z5RFcrUlc0wl0k36F8O@(%mU$(_(AYzzNA;&p}mi_N}K)_I9tuGRSYWW?6MG3-Nm1EUhp&x0ENc$wj^jl zPxkoJS*HlkUHieR%@=j??#C6R{HyJO`Bg?x2`!U(E`lfjYJpsBPGLlFz$b&QmeC<< z4!dhOjLsSXs z#wu%iokfaUPx|d|rooPhC%mcWra#yMXZ3etQuVJfy}>uvFRfgCR+*+miHYRn+W(`uyKt4#=oIy7C_lNtpzx+P7c~qgWIw`Kb z$@k{F#o2;riyT45orS#0)le*)(uW57HNPi`^wWGLVNgR!ET zCi;(EF1(e(iC9x0pxg!spNtRisj)$WY1ojo+Y~v#JnyuAZku*@psL!<3&`66lSTxI zUgXy#%N%Yw+v%_F9XhVLo1?kM^GPMlB1IO8}Oa@4s zHR5XW%)4&$iZj2hQt=g$8(4A*EwmnNq($qAD&2A}QuVjme=_n$axb>vU!&nmntzz; z4~)kE##%&v_gt!h!Jb!h739zAhdNq5IHHg;i^k{ZZC}YFT|Y&Jt*ZUQ9L-2*h6Dk` zvI8rXPwKi#OLMC4u1=W(!^wT24coy1J=@cn6kn7d? zkx1mDda!~bs`d3tkic3`AWxxIVQOQvj_0Sdgw$RJC^?fU+wEa_h1oj*6zBxFO^~D)Ug&muW_?rtS zLsb8P{umMQU z`R4t4QsS8|bczUDPcSprW0uG0Ir>L2ZE;rkiVkA+oF1eM5M9e5<|BYemQHws{?PF} zg>C<3V60?0>HP9B#yyH^OyP7Gar3R;t#vbn{i5^5tkvOd3K^!a(bRR&LDa2+b%%9+ zHrL6)jX8Bks_2@l;3>_r%qRAT@@swee5BADlvPRiyt0}n{9W|3GH9@5V@1kkZiBAe zsz77Edf&?gnauabFOa~uAR7~>!Hy(vvk5#4{KH5p*WdQF3kJpp(To98(|3z_?4wNw zw*kX&3y(Dk`%`447LeiJB&AP#JFzp(xmeUv#)6id$DFz}`L@JVoY=pMq?v9Rbhb=y|7o*eW{ zNtRUU{gvgf%)CdP;O-nqu`4?9So^A|LkwNUmy0e_)(ww+ z*;HNFK6NXyx|@ojpIf#lv!y3zioZs(+vg44Ou zGlRJ87cTzLkoL-kcwM%G9pSRN!UIMy!-FJU0lgeFt7zuTLWsPMOwRd7ClqYTNT?+APoD!4cmK^7?9K zTB=irgcxw12kD)tBs^EzrC3aCHkXq}cZQ~M6NvK<#q6~Ar~Rw-*C6yh$=e-|qU1+v zGVIL6aD0y>e+@!|(>aiW0aFJ6ihKX3S;t6ev3|S$jkKvIrH@C4>)7`%DBAOpWqKX6!a zyr1GuWW!zjtvmA(<9+c%axfT5L(H8JixR}gs|wlZCw8UV2&^q3<&DPd#(O?;OL!lu zyc+qJ9K@R*e-{etP1OI|pv(n4t+ zaB<6ZSz$S|5ZH+LPog${qN7Xi1o~UF?g0L(>X~`8#wmc2JkQY2<&_)Iy8XGr7Xa%0 zuwCkuBCWD`mRK4fBRLwg*N|hBr+cmxB;A{uAI)wbi4!ywfI?A1j;w>*pN3?|M|>2Z zyrhc3#3NR*OT!R4{s7^xq@FHXv|CYtS$4MPFlbPO#WawXzYdqsOc{Qo z9zRy;z;`b;b%U=hrL1Y4pw%;@^!3%pb#m?GF&#o}v9(VTD2MSDVqy)OJL#f#vHnrN zyoT14l(^!g5T3EAMcG=Yba$h8*f(h~;`O#_gOVCQtHwj}<>M}kJ`#HBqDcr~hx8_o z;qm&bE4fM;fBX*OaaZF%;@2hp9yiCqd(_P{{~L&2kADF~vwMUe zq@@+lJ6p5Fv~}3|1ZT5WF={JZR**>4My-Zy$g_|O98J|WVe$HdrJ4g(X{dt zI$$}&TT0)rbLMKF65F^z8V%(7b-td*j1kcRINW7KSSE`L%2~DXKOWNbY+hka#I;fYriwDqh2Ct{#MP6H& z?Md8}sN2T{d4ZOTR+}Gh(VvAw9yEj?`8{XvSKP?@y>%8UVA{O?QxK>VLj<(tN0uh4 zwx@LUxeM9N&>JJ?pt(Lz_PtsMkF_fdoo+IZ{2YBj!+;uh8^K23yR6r3u>2A(#93cL zC&GyZ7*$`i)dW481Gp=>l^VjEYRGaaV)^j3dFTE$`ct&QvKfxdK;ZC1v=K|P^`j=3 zpq&Vt_AZR`UBcKz@~LTfU0Ye9EE$%>i>8C>q-XOYC_o|T8n|)`s#8_Ad|IUa)vsr6 z?Kh3Y=#2-0NRnJu>l@N@eYzvIw%7iGCQ zutEg8FvKJr&n=yfObr~x6t>U#LlOBpYn$o}1tQe@L4tExywrIbaHq5@H=wab*APBi z56Ln;ebCu)3?aEZvH@=HG7<*M0qGq611DE`Z} zbwIR5jQhyDq`IOHtCe&KAehEWn|S?Pw~nnB9IUr?f@QR9Hd5REB!-3U&|MF|g|z+W zKXrydlHMubwKfTYG?9sv5ZB6m?SikBQAj=Iuz4NCbGRZ znDk^JWr76B;#sZs%Cb&0GTZG55VMXz+e)lEG*@Gmsa@5#;i81|4`h28`tt@~4*@))VQbpxz^ zW1jjF@$SGO*VAxJu}^JpQh{9lmFQ36XUJ!^?4D1?yE1biN><#)EF}D$;rYK@jt+is zeEdiz2}XW{akeVyszO#X-t*VPk_6?Ar9a@R%EV4#wQZqY;t~CeJ$w)`+S|Td2Su5r zPK|~qdq2ojhqXb247Svs=Yr-xa}t5bD92ans?pJcQ<`@i87rhpzA_jpIWHUlj&=C^ zqLhP6Juc+)et=`gZ7a3}$2MO5pw9pA;@ckr!tpnms;C>epFJ@dfKmh(tU ztRNw)6t14eXy`TOQ;s@RADVqFt?w27;Z_HQ){W45AL*XZ8GT~f22iRS_E*alhaU@1 z^^r7N#d`InZ&&FCZ0V7q*QZvNpI}N4FU=$VI%D^cBG|^GBHkB{Ip8^cKIvKq)9Ae-O)gLk zogZs7ce>JTDHzF#;~z2d9%E?Q`wsP=IS_X4c&$Crx~Jq@ww6p{KhcDO|f(yZ@~?_ih=_>KnE zLu4^?{1_IMvT(9ACy(DNq)pLf)_nt!1pSTlog$9$x*NKAoc~Qkwy2aVosC)UY*`@v zR4lxWE((IW^};ScYhF4zvG=OEOve~~V0{yfCYW()t`r-ZPjyiFH+S!SEkwg6U_?0e z=dt8s7qhtz0$^R=aQsti=Op$=CviM-KVprJTUcgD$)nYq&^3Ki77K8$PKHzGd(=F!Uqr&Yj2vpx zU^yXe`3yy0wsQ1xu@RY5Mp{Evs!F^6>`1KlPLF6EqX z%AdH>_g>X<-F&(*INJYh6`8DPr_Mx$BIRxPkj#&6VX`B$AhCPL!Z#lwZ&MzyvtM_Q zu1|ef5dj|7aa&KmkLF(mOS%w|V6LN<=A^R?c%`mQ$kyczyE$NP{Jbt*eLE#ZUeA#(cy+Gt4(p zoj)pn-pvOwm3rFdT3*ju>fTfL;!e6;V<;AR=%RZ5v0nCZFM4O+7A6{(F$|6-hgFkpOJ?u3<#BU`JzMt z#*893n4du;>8$ru>rSlt6&wlo9sJ*Ni}C@TUh@>0$S<`RvirYFZcTUV z=sy{mr!?5=F>Erpd_-qTKF)A82WHFj58~Y?@mHga+uw|7{JeXF-YaKx7cf5IU z?d*`phKN0a5Wy0cwBAkG}f zy_f2JuoQF)iC4==Y2<zkn&eqvYldmmYB}f`(=!KYJHb?7Iy)2gnP5HfGWYwoI^FFrx z@aiuO1WroCN#==$yEGGveoxVN&(IvQf-+-)U8`RNNuQfU-R#v0akDBU3Cw}o%PS~|-<@-XgmnhD#8EK|UA z3v3hLxc@_Ngc^UD!gHGt=GtP&@o(st)H7=MGPO1%&L`y82h68T-LrpII;HV@x_#Hg z`e)l6;VLX?PwZwppRd_+}AoYVPMXY@iuAUL3z z&&TE&ko#DLI|g4-PR1e zkQ(lCI#r5cm-9Vq|`+JAo(L>H*y_r4<|y;;?UIIQE;svoXt!R<`bmpZ~|| zec8~m|l>t4D7t%!1=l#{8~LwJFr-a@A+&oRwR>p?%~nU&EDio zIhA5ys*C3E^q>zT*&1S?PPR-~W+Jd!?cv-2^qZT6WmEEM&g?aV)mvNqu{5nMq*ZSx z_xYlL(FIl~GQ((L>$U-Qwy;#aX$N!}!!ZqUfB9wNSt!pwUtIYz+7HT}+EurpYuiXytyprs9n?>C8^BtO zh5sX7Nn{8eJK8(CraI5Ay!eoIE(vq#Ccj`(+(M zd_}^t&Ab^A03B3t(^uP}6P;8bGXyq9y|5OS&V@+49Wj%S(Y5JIxI`X7qJDTfCz3T^ zr}E5l_f525RtvjLaUAvDzEpe$FVV0o;u96SSwwV>1(&D=X!)su#zs33bFkA9TRpW4 zc1cSz7QP>6(Xlx^fM#)d{3W|q-(ftC_SRLEzMj3`^Up z_;BS?EKSlqslU9FY>iQZky66t`hNu&9!^>7;ynM_T+% z&i^G=37rbd4Y{O)IQBUPE`rFuijNC;h+H1j1^mTP&1~4oKUAmZWrjF?hUXU#m*vAd%<@B)^5B3+#mGrFwa#<&AtJt22mjv&h zIl7&jgm_UBe5q`0PzGu8MM!+F zp~(kHi+Muy&Rf!J;CqV|fI&+p@ zai#{92J|tznbXr<&{{p^h+l|p6S*ltLv)$QvCEs)r)A#7{uYolIypo_%nx?jsld`?QV%bC7miM zMH1Jh2XAL4MG;{M&~MMM>MyEC?HQeFR_|6xspGG{l}62$1siI#txR7E>&2XVk1tIb zmde2c_M}Atz2u#_xs}=~+kEM}aoO0~rx=e?q0WV#RB`l-_Yr2Kajk>AfkO$JL5+>L z>>g+edABcs*rY!O9}eecif!Kz{h(}b2tkv|&5mA6m`%CW87v==ce?()=RiKyeRky% zPu+A~pSS{ogls5DKM-8W-)iJpaz8i2tJqY-T8}yuGbA(66Q3C=@vSiVfbuwJ13+T$zgj-u zGlQEjy}=!VxqH(gSp1}O#rWruan!5Rig&-G49m$WkyR_NqfPW@W5{PL+BZR@n-+RD zNF+cBhcWrzyf2``_TA`!M!8fHqiBYOq{ZHjL@t;?hK?o^wSiUjLOlsJ@>ag*G8tK#ET{2ah_Mt8FDJIN+fS$?_ee;YJlZ>l5F? z2;`GH?FqM@7Keqy%s}$+=+u+N8Qch;fJeE*fO#U>ljPCd4tm-R0LNFe z{1i!@bCN#O6v6fw+e6(oB{w6U`BNks4*M6nMWgy0g0|g+H-dvX4#TuQ+vb7oU%AHJ z$tkJG8qA37kI$^TC5uOlQG@iV3O^&&Ja>Cov?dvy^u6{jEf{Y+)&R_4!PDc6U7;El4FIx*pmP@?FQDV)@+#BdR?7RfDI9tYzIw zgw1*oK*6NpTl9-0q9(DAMT+|wXW*m+RDfocp1p=+>8#h|SJ4QD9CjA=g{yCab8WHa`P2q_*{!3w%BNXrq`Y<~NO! znI(0)jbEUh$bX`FYPsN@p+T+f_gb~+NHE^j5MzmCEJr+Z=90Nw!Br)G7a5YEqf<* z@kBvV3GF*mc%Z}5+p~`Ci1W@pL0;munI;5rc2Fh?sPFP*+XqRw%aN5EEWAn_VRE!5 z`V@)t4~CS557nM1%eK;cUm9r1jef%8@I0CC^#pj={pB6EH(d7Vu$jJMsx-0(1H{y% z8@y|UX(K_)IX5&I_1^LmvyZHJHQGa@-?o$UMqt=2-Jula1J!qoy6Yi3MZ=vV`qO3gzC zH~^3!lO*~4zp&2cr&bECy7B(({gCaNdaU@!CpC#vMN{9f!JYGzXO0t{0%y;QmJW$Y zx*Q?v(GB%FjsU$91f*dFM8o3SAkrDefIqYP( z${Z67t$0y7NDfySs?-(!-wUM?!n<(?puI0-*cN=ue4o(s?@bNe;Lo=ALE8?&N*Lbf zzC&C5aU-rK%yaSq)YeffL!bE!Bf{^_YiMIH!!Py4^7-zO(e6>mAypg5pf!&uqCT$Q zy1}iPh%`WFP-_MkjP!wXK)M6)E*!0Ek@W3>?;rJ&kNxO=IkJ5%0!Nyda*@;mdg{;& z&j6=lx-Y}1zHM>HaTi}AnXy4wwMsSXwZ$vIVQiWx7jM43h^wzGCFozGbtB}hd6TO( zIzjSC)W_(rcXjVkxZ$FxS%9;8WY9xQQSB5GP<3V0Z|0X2d1NgL3Gw=l0A^!&rQDvJ zzp#m@q2jn5{2R!P4{!% zDe~E^H21w9^X82C7AEwhox-B`#ma5sM~@2gfbzQ^_|T+{8t`)SemxK>X$Pq}ij_N& zDVj&{Qbx$Nb`Ux)H7;Ecny7tL1+xv*6zFg*oOKgQZUE$0RFsbEP6nF5g@EKC?oZBbJ!kY+L&h z#hX&?hxb#2?eX?(^40*T8aK%co4{j{-W^-XQYg5H-}_f^XrtMeYhE{}Gxpj!bWhsR z0z5tZ{Jdc+`I^kI`5%AnUP|m(x{Ek7oG#UCHNHcklFbB#_Qil!W@xN-A5k-&G4QKw z{}X-Lb^Q%Q(LVfuUC!h2sL2s=_Dx;ND1@Fr;1N{Duks{ZE(I_Rux+T0>quU!h`zO! zYxeR`%cyK~stRj+t7hxAgOK`dK+INbx_Z=l75-%2CEqp1l+QOVLiRv$Ne(!#;-CLeesd%)PFB^H$4YB$D zt26}u_t15ICHyNuj~6KO1ALd8PGFb4OW&rKlcYB`+E_Z_mqG?2ETV=8YZXjk>b^q# zv^sN+0`2&T+a&_8Rz7QOjPw4tJCyry-JhhNI&(Wu@FZxqJ(M3RL&S||xM3#wC~ar0 z_MJO`T*)-v_lB(0o9U~F-VevgG(yx|B-AZ;W>+6S21NiaueBV(r!+1K^LTDjle?*dWzFERGj5wiE5>mZo_XCg#s?WdRr>{} zUOCYl<~3l?4=u57k@F{5lbyq7jO+Pu`69?)+A=cc=C#^tLI789&LM%!SnJjw2BLoY z+U$go5=*gMSQ>05_ht6~+`K?9tPu#Zg{>y^5dorDvSrJkb2e#RwoEbn6(X9pmg?a7 z8=1W9+plVU*5NBntR#U{Eb6Qxh{PQsj7##zB^%(s6&;1@fPYPu)MsB|V%2w(t;CNo z6V67>q{Ylb&t#gha4IFA=*>nM;RO--isE0lmRdNSp&;kmpu*@mx7mxR(rP}_vm1hM z{;O1_GW?7K-u|{0ge^LX+?)MUQ|u>7tPfFBc%?owc9*i=sNP=(KWdr`e{RQ-?m)vg zGyVfUin6}^8aNw-kGHRNVuo#!hhX|9>OMPA6M^lCf8dO&%Z@~T&t%nM`RQhWKZ?U|0Z_{3-ZhMCnvNc zlsf*SB5zIaJ0!WHx4-JY?#=ZWGCj?sP=7@(-l=($7}OF~Q*|f3EWtR@UW&8)z1P zSJyat#v?gDK^q+Tm|f15Mt{TbF2D#u8tk)C|F;^0jW%ag=@`u}D2m!@WBwcEVarlG zecK|Ae=xzQot?p5epVOee5i7=?-jk8HMS9KtwGA)&ZsJ3u)$M|f2uR@$2i*2{DW%W z$6be)xb`(dwMibvAFNE_(X;pX91w1jJE0TFbPITKe38Lx@QoQ%%|Y6%xBNSKjo$FV zUb9mL&FPHk&R6?DQ|YAOF@1(Rt2Q&WHxA60oRyxO08rj&yxQdl*9DM>HKUlF)2AUc3UPC#3gzZiI=sb? zgYKe0b1z*DS+<|k_Uy>6BG4R+Ka$dJT1+aN<=e#c&o$Akd9H`K=p8!78u*l6z0*yv z<{R5r1Z)J%JW_cR5p?R>;_0A%q`pxXifNP9_xt-vS4{+--Qqd@HRoW&iPZnb^r+}3 z7GXmkD7muww=>stAKeK8YjMSzqA>p_(;D_cc=+gch=Pbd#E{fh_>2Za2Cwns_GD}2YC zNHT(bDlc%kYyCVzAv@)@zwGy8%B(sSKoJ|gm<>F$L*G3AL0_dHwio;7o)O`#xAPCX zr~LUfI%xB;@FR^Q!F2P%wZy-&$D^pJj896j=-6nrTd&3|V*2{M;FQ|An~QA_V=9O2TFC zUNE!5%R{6%BG2R#_}a80ULpR2`7=nUs;G87_OZY<6ccj*j-%2AMQ3+yyifH!I#y@0 zo8(>9|9g7L*ArnVCH(V5as8i8I#(~i=frJk%QSfGMJ7-uIn!FkqR*pdYm!YY z;ei==n`gJ_7q7D2Wv@x(s@o*{k-C3JJU=0ABZYd7% z^Nwu{TCxgHVgubR-P3lf^XO@t zIF4>wZ9kU5oiUmKj_}nl=%pRG|9#CDdw5Yu@l6n@nVYt^kyclW*%S?`@en(J$cHr1 ze|m62nSU|9bU=@pqg}H&MOS@Wk547>ara+I>2Db@c0Y6-t%N3s>jbt*2?LLNPccmK zo)m4Xn*yXi zZT0bk+S1*?L2A|50J+sy@5(-K)%kt9WezZSo_F!9TQC^&>#=B$ar{P*Jn{MO{xYq( zUy^5#*}{?FmK(266mc};>?2P+p5x49Hm^+ZNXDeeml=^6?$26b^iYo<{KW>Ww$hK2 zY?Y|fAn<2DoyorGl$wa0jA$em5|vnuhJwf5_Y@G9Z?R>i5DvlN1NnbflTkt?q}Px|Gy$wh?1gWc-l*|pv>vGS zJbMCZ8R2%21GO?39w12C1oFuTCw<2uPp`OBFj+gr(eWJoNx?kD;VO+d2ldABO>NJ^ zvm9Tf7&r*@f^mT);Uip$Qkz2)4G7aJ<{S{!MV0yc!>*SArG>WZ6P~(V9$yIedj4AfTL-blX<_$5+51IpqvuZb)n-xXF*6>sQIJ~8e059avZ3uVrVU)?u}A? zjVf)0?1t4*LXOlWt*Fi~XFm&hF_S%KG3qQ(cUB=S;mlMaJz+goXTG7rD(nG^DC&bIA5jhbjsF*aO&XX|X~m0T@NY^rwBF6ri}}V7!nxr>MBw<$m6LI*hY*j$ z;p&vfbrOFBD_ktP_W=1ptTQyKRR1HBPh-{jq3l2*J7&DiVwH>{gOupXI796sejU-? zj;-3FsIQP2GTK?vh<}_BWwCqzcwAADnuV-0_L&F2L7yCr^)}!2QiR>hPAs!N7_l{~ zI~3x}fG11LJAC|25g)~!8$C_dVq<4x=@q5Gd`ltv8on`Rvq6<7LS)lY4B5*OQ$l}8 z6z|1sEg{K!Iv`SFC-0NrYk%tw<~MkGB1?1RB8Qa$ z7!O4}g``%f?p=tr#W%(-Hqow++gsS99PFvp;on&@UUBF4E15D_o%C{aS%@EEJaanQ zhbp&(c(vk-5{?AwUf%HVT)ODSldMz0v9 z?nI8*$4%?wTz`>8d&2akel-@K1?*|zNbGzX#jgXiG#3MkxeBQs2Senf%{S9Kh8-L& zx$6|~1ua@$lo2JwQiUfh&BX)+hMdQFI%fw%@aN9=m*`Ta(A*CkdE~&K2dQ`SgVSSy-%Ge>$z5a&v z!9ujB$bVr|(d|RkUY4r)yi7#0Y;@EIx=AK#*d*0kkoya%hQ8ZW2hUU&B3eTg2SPSi z$qBhUM?lE)8QdQT&i}F0tRAYQ5h8nzGBM3Z&PVEH?MMz(3+Kp(-(RmB8e07SvDE0} z@?h3wo!E26*shQo0{W{Y9x?Kb(R-dB?>6G2zELaYjYKC!*d58(;n~s%HmNShd|=z= zvn_*mVeHTcwlVKbBPX0Z3=W}Wek`PJ&72b5@L-i#4O2T z!M+4Sa%`-VkmebGZ?jc&YvJmw#`7ru$fS&EA=}ul_f~|D`Vk9xIa7U!d1I-Mx89=# zjGKAeAe;!}NLhSN_sS0~@wB~O6D9t5JQn5JEeXo%7c$!5Tjm_@BIbx_EbfmN)bcI} zIg~%@k+Hg1s;>AB-?X<_N2@K}ogP|xo=knHYl9=wzPN4)&upTNkzOl@<&!bzDg+`q zzsee5wJD<;e!lF^v4##6}kt}KK|SF+DRW|n6~AtG_Zh_qLHV>d>RNR&=}354iA z#oNsCvw}WVE3x7vULn&9jSyK<2>i6I>xBR2gihI;9!HV28i!}D2HU9pJ;cI32O(k( zD81FwAaUnpEgU|RMCdF59g}hBB7e8Db?;}2Yb~N|G>cwHjS=~dki7VJ#+5OJZ#})j z1^;HAxG*jw10ymIkwS`{`d67J8h+^bwc4Zl1tC6L5_fLhf<3Ryn{E~66gwC8*_oHI z@R#lujk=x)@zPXW(Y;+?A#y~^QS*62JJyLO+N16rLekegcamY&t9gTgL4TF%LUJ}f z^~X!Tajj32Mqp&dgV8ZNH*hRRNQ!(nx`L%zc_B4(ZjmFCf9LjmsI$BfEjC7m?7oOo zBfR{mZI<5Wl?}M3Pn-fhfI^J(h-H{rM~{rXYMrWc9VrLBU-niQ=o=K$68Z*n2svR? zJ_qR|l#m=GqiBKU;6niUX@84*KRc2;+F3c=)-f|dqAMnZzY~4_9IbVZH7=@(aikb} zBeKtWLKdB)LE)c;L7!^QwIw{;Iro5Fc7)8vaevL6onP}?A7e{T zh-4IZA>X!9ALRVX!LN%mn5=>5tv%&_uA zi09_<@0@a|+DnL5hvlulj~u4lf-SUIJTp9?|OT!_90^J;`N>_sIL zFoZ?jd^}yvdzm3pWSgNr7^N9z2j)@RVtqZDzz?Jtdg}9-vJY`}yo`l+dz#J(%IK8F zMhiL5nsA=Dkd-G^0_1r@#K@|Uf*rKH7Nd2{OvtO}PIbFNJb$W)a(qnl$-eCr1=QOwa87YH0*bC`(Fh@GFC|M_-oifcx zG%2cBs85NIlq$=P5YBEA(mMJ!@+~>?p5D?TW`X286ML!iT`BV}++`c{`SNw);di@n zP|r9=QbJF?kduz<1_U+5le&|b>mq+iN5W~*j!0ec(`F5redgK9SnKOZ?P$-Hpu>QE zOHY@sSf!xv^a<&RjKcLl#nX=PoR(yTJ#!_A3nAYT(hPZ`)KQKYdoO8Z>{u=2Wt>-S z`pht?+pG|o3&`Vzl+6<24n?#Zi?uRQ;)@M$#DvK9%ymR=y9b}91s&97REU49P`tBB zZn0ChGAkw4fnN8bg=5dDkoeFSQ1p*$hD3-9c71fDZa!J1w~hJ!T7i!ke<`}SF^=vC zbIannE9kS+*LbZUAtH8x&uOjoVML%*cXr}gs68IE4omfEop?&>jTLBFNbh zywNTxV#EWz1VU2a)fveqYYJ};!P;fChV#ILbnj4vh;DlHsg~)YfNL;^WCWi!XPxMG zk?K#Pq=?8~q0VsTt*{=}6qhAQM4nhy%LyZQW%+z%M#OE=$|>uK5b}S!iF2~NZKtt# z7Iu|Qi)*l3otXVx_AH0b!k(?6_p6-nQAJWt(huR6%B-KfKc{)4U_@lPvQ9j@nb6l+ z&h)luh%9$hd?1TY$yupm_Dnf19OTMH2JJ*fT)cTLdRNMA$ZcpW*PP{(d5?4oD zxuOrhyp$9AYRZ!i!zh1gd9IgHLSD_CrXvZN@uB5f-boW}v+|xz^e5J!Rl{1V8YCd7 zN5ys`XQvBkoUv9zE`w%A37K9ifrz#aJ&n45CG_|=F@}lxVl}4R(GC_;u}8ZQ^Sb;G z#4y9S#!)*;y!V>L-gH6)@w@q?Z?u1^mZqcSDkK{EgsN9wqNjhp`qUGY-kM%o=$WhD zp9%Gjk6&fac9q4{(AuqHRyfVh5m8k}YQ<^9LYkB!|IMr%m6wM1Olv}9do0YUuX)Fb z)!@~;kn?Wm;~Dpa$fV?+7FFgC_TLerHNdPrACQQh|2-5dWsb5Vby<<&S1-LpOHU@X zUCcVFb=YL>;{6A_(Q*~iCTf$s?jC=rdu!_nr?Lr|#&zPgZRtMT)3!^;OxfB_I#{J$ zyTyvWG$B^;HmkiEPKy@O+r_)S_7(XK7UDBq8EF;SdL7=&23Kc%=h$7>$&lpJsIjNjwqow2^L9%o$qH!WtYimB&>OI;sbBd5m9 z?&fxR-R^AIC-{#Hz5(xT8+(7;)aOmN81ejCMznCuP`rBwW`VRIWr=6Oi_LHrqmV3C zLuXsJLXLRTHgClA@jJTb&}M29f;;F-g~W@#=;mz=vF@YACHhYi(&EksEq-qe-qG5X zEtMnY@3fRHVh*6UuFcq+uB9e(h9sn!2r)+Png}FLDG?%ifSxRI!Nh-krJ6GB=eos@=g&m zf3qdssst?G;->J=udKqaO{k@_91!p>$=fx$~2eJtcX8ty*zKEVV zk-@q!Z@u|J4LfqYo>()kUShL#Nj2ZcLYd!^? z-}+XLGqoO4#%wJi<)HVg^%!xwm?N@gP^x)zo)g6lSPqw_sCeWV5c&P*|(7sru-)}b!BSTOe9=8TDT;@ruoNyW+=U*F&z(f%`m|R@ zbWHdSo^B>uw;uD?mqz#N;?sl_yk&YEabjN&U31=M4H5IO6(W_ps+*5ecz7EB2>N$= zT86WLg^2ZHZADMVJywWZJIFe_`H(C++ucgqSRvM}#))}P-9|K;I_Z6^o1ymaCKZcZ zx%;e4^t*V4=fZ!^6+%3`i-S^L9J>zVsGba9Qt=f`K>v$kxq7BDxWx33Niy@%S+ z)7brDz#bh!JiQi?)DG*N?i8Dm5f1u@d)H0E8g|6M8M#98p&3;|l59YH>*3}CuG{!K zg%I%^Ks0|hvj>z%x3881)i87BuC_yeTQTiRTN^}Y1IpD zx!+*lJube@_B5P8B;?AHz%MZgAMu6q~afAoP=tdjFFPys!`{dm9x zrT5&>uohcL;m%`1WPKoVLu4;#zcF%$T6acd^d1YzmnB4Y7WWtH*XMlW{>U=I`Ex>K zRdlI45+I{Siu^-n~=n;)Ae}7%pM_92c%(#jtEb888KGQ zHW@LsfH%5qf;y2o3|ZR+efT4;%5vby!#*-2o|rLjLr6CCt_+VdVIJ2I@Gf=^7S3D)@$Z z3v65i-yzIK9p2vseUQTzPrMTHM0oHGawt3lX}F&R?bDH4g zA)J*geqDw8V!l^nlgVUzqmxCcjym@tQ zuAL?1_FOUgGVZg$+(p*{XIT$#U5k;(@kW@KD<%D*>kN19iC};HjrIp?9{zt8Al}>4 z#{go@klrf{v`d7zPo9x{(bp+(3=^6O68a_0+BNr++3w_a^`~0vXL{jK8l@Pfx@w@e; zJ;lH2sZ^SWEX2zzaCN#!C;GT%Z;@yDII^+l;uQ0qtb6+|4RiPBNGV+WoAK|Fj)+O% z_-Wo*gr8O<@%Yxm2kn31ZV%n(A5YuHxp{NSV#28JoT>3-ttsWZv8%?MJ@CAbIY*wz z{pUO$D@MdqEpXkID}Q{0l@fP+|08Iz2+0SlNapf7diSCT84P);@%Ee6Cd4>)>>coHhA8mz5%?o=o%-hPw zyg_}7-&>57ij^lqzNGiwR$0ftShya2KHaBifz4O!p_Mb=iX5*Ok_Ki#%qN2m?X2aa zc#)3^XV;UrJzX)!^o7)f_ri*v(awL<%R$Yz;_>;@h`h#;{FN*ujK1gq zmxZT(rIHff3(J2?pz!`#);@ZCE?bplR2)E>9N)kv&mdP`Ie7e^5&aGBw)bzuOr@1Q zHxJiMTw|amAqJ2h>bHLlJu+1xg*~S$U(0A!FYjcHe&tm{F6iT0#Un!~Z>6?}ntT

|9CVhaJ=1V-Np!Ff79*n&UX^%BuTj63?LARwgMw3?W z`Qa?n)kon>rPZ(Zr2IfS`n=chhN}1m!)Y(>+z5#$C9mOw+)%rWQMd!$8Y?x7Z?AC+ zPgq+ziXVU4Uq(~F$k39J!IAH^bjh$>uUrfx9LoM7WNl;C-g-LRIALHt>0V^S>s_}D0NEjyiuGpO3u%ybZqFV??XtBy z?C;&d^#QHH4lVOMmL0Zx-VwPiAluNtz}`n>g|y3r@J?}Qs{=}Vcj5xb}=jS7U2r2zz638xI63>6gi5D}bw^-*%q~CUpVzKyc;-iUWv|3nL z86-q!8zsKx+L77qDt>?*Nw;Y#$i;RYI`t^MqG%m6<93UAVz#hOLSA?~3n_+^bi^JT z&w<)rUWnByTX!?}#o6rzt^?aW8+Sb1eMlql-^`F$-nv!}qvgAwkkRiVr0_JMJyL(+ z>VZA9sp!!ZL(^%%Q$M^TB|q)xD)~TU9pW0y&>DJV_Vik8e7D(a#f<4ar-(QI&hbhk zL~a?pbGjA^diVG8gecT}Ym|*%!@Z=fa4OqgH+1x52`LRDYFiYgV_ln&8u)G$^Um1o zXz!RdR&ol-+)2#`sBH8WZ5_G~-MfE#edy=gp2dqEv%Od5+U31<)8YiLEq)zv{^>rW z6~61wa=L-YNe!z=yd<(A^WN8ox+4p?y%;jceP`Vtzaz^Ytu`U8@c!H_dW+xlLg2dU z{gPGI*W$__d-{4CSiyHfj0>}7WV@S@-4xC;4rTKAzAh@5}iFmFRT zEG&Ln4B=uO|ItlyQD2{!B6lY`-ftJZ5ho6xbccvf4JZ9};tm~sH9|gOQz!XoV|;6m z@nfF%(H|t_y(hiGT>0pb@?5xMF>p6}AN@J-HuJvn4=vZ@{d2K`??|c#`jL(`nSlHT zBZQB?nIE1K+2NTxJfEEN!H9pSkjDM5Jv(G$KKaQba}~+)dL1JjFGThaznj;n;nPa7 z#}Z$31@pR<7B9xygrtwPF5&>_<2qu|6}>B`$Oc1ZCm!@MH&zVV6G$2H7Nm&GRIy6o z)RheLt7IEmKwIXB-*d;Q({e4mr_C#eadlct9X0uBy-ln(mK5a2nxcQ*#NFG4w24u9 zN7!3*#FZO*oIPo8pp9{Q@~%0Iz^%026-N^`>ov>=G-+^v>?- z;0&a*Wt(B=3L!c2jUh6&u~Ul3dY$N}IHCaov+0h=Am>t_Q^kM!@Ow^6oN0b^kt}9| z$0yhFyWPh9qR)*Vl|jeb?xWRqu8&N`JL?vy5R~}46VKZ{_lP9n_uN-`YQ%ZL87?BR zv7h3+6uG+NJfAIzZ}7ZhG_JvG;@A9cGhOVhC8Tg3%6YfiqNiQiG7-<*4Hh3}KmTh7 za5lu1mBTYe-A8|5=)b;NfrNgS8%`bQIlVHeBj!#Dv51kbtKGRc2~i>%FII!Q@OJc9 zT^XkjeZ)6buU|u?)s5L_H{Qsd1a8!qqTfY`O*}t0<(M%;MM&)!S=C|mRC7dzlojre z=fxp|yy+y)nz*tJ4YmKZXxyjKk%MPWNMoz|`UFYz`(GsU77V1tesrBjb|WziM6bjM zl1s+>AISxI`+K~bdXl;sfI@b)MFC4Fe@psDh(+xD;z-&bpJ_hQ6_KeYz?)TPU3^dL z3XA;lLUz8yAZxImu_I;m+>A|C=R#(h3vll11D_h{Z`& zWkOmzyrLp+i|V(%tf6i401A2OkFN7bkR69%=#>;HX{mVsBQ;pPeV)I>blFy5eXA;+Z!Au_i%RYVD??eHy`^7qNQ6*8oM7?~ER=2Xa*af>H@ zdSxf>sXU29+1MIZijOLCh3KAAe`l&AK6M_EnJ2N*2wAn0#U;e6Yw_%?-3IaQ3z76E zuUd#xE8<)46c>5?LTW@dZ6Tv})~9<0tb}nyrZ?V_t^J`I3?VNCiu2VV!#h(2ks}G2 zID}Xp)O#tUS*4l{6SmC+}87vQ8&yB68*UP4QJ|Q<<{L&awdz7aYQtYBWjm|rUHeZY-Es8V> zsoX&!M8|-5J%ntDaymOs)KXCL#rO=X>1s?NB)q}8iUDh6yp%3=$^!~%u~IdIGZgAm z`8oO?>SuEPlr*TGT!_iEVx(0=iz{Y%yA+GAvBZCheTPCy7^ux0IVeM9UCS%LFD(`h zTG6reh}GPVSjYPloim6}RZY30bP>W+37jXg1meK+@vGb==Yvf368Jr`dkgyLLUN%R z3?a87*IxBx-=_GEBkfQeNk})GjVELzLvJeDHczp3@(HlCI;Rb~r0sZi$I z5gi`9!B_H#YS4wGfGqxw6l8A~;;|<@iMMk%o{$+D#scEq#&)k-(SdJehMKo9qL*V;(dR(qVMT@=nZ66)qysw9GUd+OH=6C@a#CU zF)pSH=e>`JOdU5yUcwpVHN_k=WkrOPe5l?Df>`cM2b`f|C&r? zs+tg@bwjT}_G86~*LX{Z9s8o{vV^1&H$b;HO|(N&D|t|sR7m$BNQi$N2}L}k z?Z%FBRPI+EXr<{Y#7>z=N2F>=|D^6zi2Q54;zUd#qkPD!K0Q;4$o;T3(s1%k+|$u& zBbE>$qg1rK)0k=SijJEzW`@#i8M$bW$R{szBidVY?dbK^!^ zOh{hn<;dM`IHOmH)q$33THb$d#(&f0wV|F{+6A;N)7tXh@q2_!^eB^TORUuuqU((@ zhqPDdd{6gEnP+Wxr(jK2 zmxSf@^;#VKHC=3@`cWY>N9r7|>4kb(Z$J6&R9Pyd%Opmr{D!+gh|GV)NDd(*n~!TB z+o(^oEFol46SB(17?-<-EE8q9$p4`g^$=)486w0uTb`rrw1jUEv&0*%n-D9QtIpAK zqN=d!T4AB=)mG~mkVMK+LWF8p9I=PCe~!*q#_M(?&TtX(Y@^1IKWURXT!h5d@t$VM z3BL6?wVW~2m6Nm?dO3eN$>qn4nvfDviV3lRS%jQctW*c-NDf#D;|NEXwAHc?cy&&C zC@r%N&z!h!`c7m$sos%NP{wOHD|P`_Z$smVbIw)^`p#LVdO}&1^R$B2ZO%6g;u!cL z7d4<%S-BYR%|2HPBhETE8QF7%WLGDM6x&qmE~K^1cg~TIx9)$1YYB3B>0x{{dyPKE z0-@27p zSi&~TY}Mqp+(~~%WS5GWNIA4&@y(JiV^pgvq-Nw-cBD1x{uI(;A|^s1Juc#%6tV;I z?+B3}j1_BnSh{F+W*w<8!v&I^*5mJp{~`k}>Vxjr5l z!~HqM8e7DtN^9aP^LPrN&!!C=3lNeFvpo3@ z+pGcavBrNE{wuc7o62t_WY-rmwRO0nZ-s?f5g~?5xV41n{OO3KI?y+hi6mc>f33(B zCTS_e{TW26w{kMlBIb}w=)utLEkPa&_4*3g@nH>M2|B)5nIQe=K|4fh!HGRWUd8#E zZqs<#0wT2@tiUTeZ5itmz0Trd_P?ZI*h?y8M#FzNh5rAHv&w4m;n%3^i$~UpGux56 z(c3LfTZA@j$txSyBb9vH;pdc~^GmWyND3HbEB-+rf1_pN6%}F_!6>CA?Bf^GQzI@! zAxl0jzrhKd87j^%`SAwMcEreQ4>Mh*Mwt$b$m}Ja)B4L|V5Giy44-$djug@E^|1E9 zxNPE@R8;l^T9q48F_zog;>Jr%GC#x7S^Y8rGpWsGIwN4)sc(7 zS((QfJP27OeEiLlortkC9{|+RJ1lDkw!D3q&&0kdAK7#H^sZx@xKXQ*&KSg*;7F~+ z8YCoED#5 z)|B|TdA60k{U)G<6;jzpuVHvY6C!`|>(NfE!LK8o122&0$~Z3$Ka9i>GsZ*QKuN@6 zS-r3m=OPG^v_xCX3v0LruqHXK7{B&J`ayZ^>2jQs<%n}HGtwgUmRBEH#FnZ%Ob2D6 zCqFuWPtJ9tzffg39ISHlpb%HAc?jdu9D(Y=0InDiVi&D-M;_Lx%0J0hek^3a7oKTJzEJLCM2$Y_U%EAC?Vc}iYwY?z8Kr6P122c8f)!A zUK@UC&#|&}=_OUHbMU0dBKCG6tuyT4`o}L`aj~>G6 zgZ40sP>1Q#@vq5a;?)_$L$ru24`Lv4gYmk}5V`BTPPfuf!p>v|{l$cEvy)*Pq!X3cS7u; z+_4Zt!^#nv6b+dog_Oow1PeVL)b$o-!>O%K^W6^GRVIHSVB~+tqRd;Ay%tAI7#}r{ z$77U0`l4{}za?kkqw{7txDUjLaW{nJoC-1B32|~(T!UPF_6#C215j33mNvsmB_CW^ zG45}9Humd%5>}(RB0_e?$+eD@h(4{PTSOjoN9shqU?rx79={d2jl6C$cM@6wCe!Kg z&XrO2$FI%YG5&vMWrf2l>RhW>#cR$N!|V1NrKJ!H*zYWZJa>#An0$|o@p$tqjL|&P1{I9VInuGe#QZ_1v&?4}p#^FBEw0Hj zTQWTH{@BeQcg|jZ*sCbV=%eq$S_&0o4%Q?^uz%ay$IO2^AvbKSoHyOoCN zCa>V2-zX#p^na}1_^@ii`l}87IU6N+?DDbUR10`dhZSV77t-A*Mr2Bz;dvWZrx(9x zykNwT?(~{*ZOJe&@+Fs=Mzlumb_OQX61d(UO~>Q7QFqR z-mQgI1~M=>a!^`IH>ZY-1xde$P>oWTJuTCc;1@q28>b*v4N3br$6nePg{?2 zsBjH>$sDC_eYDK_N47F^YqjBdO+4{K20q&HLej$MN*k#p^l7zh`C>0Z8zpk@e;a=z z7}l-pzNHTtKei2;JuTz}_9TQz`r@9Br!$J*Gt)=sW1F&ei0xcR$picAo7dE1q`pnd zIJH$sPak_am);un&(unzz0>AR3u~NpeZ#`st~`&AKK`~!+bk)T*9_n}ST$yhD+`gs z&3~h7&pWrelRYq!Cvm3>89qjn5o3R*p|(~U=<&Dp>!gA_jKpP-K@>0)MGVw zlh3r#XKM1966?m@d2WRxjk&e7p>iGZyq#PoO&AbTop6JZk3K!w6F$2Fksc;i*S0f5 z!CKJf-W1luwzJE|s7E_;b1>d3q;hYPkXG12InOzK3AxczcZf*3ur|BdbpwAQB__5< zg>2*)5c0tT*sfDT;_BQk=LqHK)xNPLe_nQkzxIMPtj%-eAYVXxF8 z@NRpb1TtT?x9afz*wTC;!05H3bNdh|+f+65UxC1KQ~%R6k?SKZ^thWDpCVcN%Y zBq=Z>&~?K!56T}whr!8+oeYv_2hdfp+UztD?(Gn%9$Wa`A> zx|Qv1P>9^T@Md+NhK2EiUQ6aYdasf$cpH1QdNJbM-4jM{*V{ES*7JXLe>=V}=r44Ol5coIY&M*uR$T*gC5(J27xEuSL(98MR`lrj~ z?`S9XCVkHGtu_0&b5dG|B~s5G3P!}Q53Y4zh5L|u-z8&~r}tAP`lo%E7s((pvtgG) zAIB!vx_2EaW>yp;b%K94Se`_{2zsBxaB8a~G7)g+=9ZMlH&`(F*xP;V?6XNzY`WSsD!>PKCG|p@G-JRT>adoX1Q9cztb{$VEsLx!pcZ}e1qR>JOyI}r;Dc58L~B)KV-=$%dAMrIRQmhYzF);^+AM z5=MHA80Q;l=7lvsBfa#{au_*7H0vGmRd&!fT8X8crn`W0r(97-PJ+Su=UuAM>YU_J|X+9r1a$gshM^ zpTt%3!3v16%V z{yBePzFvqev`1$+9D5iPEnEOH<6 zOs(+Tis}3=7;_NvQSB%p7IC_A{gE7CN7c+(CIzmWl;*)qq>!@E2b^A0f)?a-ei!sl zXNgv@nqf*H4b(qE>O^@ki~Kq4W0_@m>pOoTKKT-Tj9F!NqJ=-b0TunmS$mq8o0_uh z3R-rvN;_jDc*?Rfw0mcLA3U1VYw6I2omSJqO6F;;R=!y_B>ix8yzmx1mT5~Go!@Pj ziN4JA(kqq}t+tCX;va%ji)QnAQzVtAtkK4|(W^i(<}iE67kSxa9%SyQnmxCJy-9yE z97^Le+GlC#O-;Gt8S8H4c?7m@g~Y)pWSGb85NUB@FM`gri+@CX;5(iWnL_8|-QI_n zGp8rIa1G?@2EL~{@|^#fIwBM6cjla-VT5+h>qA%(dF7%#I#((jHI$t4VS9{Zo~AmN z6PEGcSUy+*G1o{Dv&(ZGd8nvMq=J77T4{58><9199%*9_)Z8aNoT@8C7BN4^`T6jS z?)y<;JWq&*{aHfV!Q7OOKni?Mk3=6vvgT=R@EJY54UEvva~n?|oibc5@@-5Xw~M}+ zkoqtiJ8%DBwRMDff~RcQjuDx8y>}UR`(7UyK**CcVCnyAp4i;9tv94b=)sDIMHeBXBsi0 zfA~E%!^KFjkT@}lvur1>0AF@=uJKfv_7v@%Ws)HY&w;(h72vA{ogPL~Ij9?#mY`t_ zWi|QLe0tkT9W4hTIwSbjT_T?Mw99hASitIk*~j!E;zXAGYt@HTg*0BB)pdjTZ+76ygte~R5?r12;>4(b zhY(vhVS4Qt8|HR}_=q(|3U?Q-?bB~Q5Vu|s8F8Qmxwd2&My1x?A+m1V$7{(5IoZjd z5%KBD_?+L6Q~tG57VGWfql!_I`%F%Zl&m9%8)FXZ$a28CfOW1Ja%Zd?y=oef#Vaa*t?^%s& zg15)Xu@6j$vGugWO9!nQA;wiy+Z&Ym*QA@depHChszhYk!L09&+h?&OqPIqW>sH7| zylN*M1iTAE+QZDyPBAQuM(mW^MNV01=8!N`yuD`$b%_w?)RgJBg<_Z<)hfSt_Ir)J*bDD|a>Trq$uyZe8XzzFYGe6}$^V z3TkJ0IHh8?VmGZE+P%BIaL^Lko)N&xY#}AGX6iX-K8d}ij5+b$yG8VWjO5E%|M;7e z2gagzcS{xjW~6Y?g4`p2^v~_#BZP59_4tlm7keD}hxnWs>|!=nMrUdKJ)T>NZp+8md_vBS-1D%{OC2ll^r7jo4!*Hv ztWepvNF?#EHAzxj>#Os|x8&|tFjBIw)A``{+*>-o+lw}_dPYcpi|Fz1ryb?HE$?HY z{*fmW19}BQq?u@Sgf!+%IKk(R(f6DnPX^`NiSqc-qdZaeD0&4a`XF>VqbGK2SZ#9R zs|jmD%S6ulxslC`y`oM7<)Qtl!P{t)2Sx(B#zgvAoJzPQ*J%3b>8wB z=x$5yelVP!;zb63_@zZs2ff4NBNMQWSc0NO?9Vzrix+LNQ)Rzl{NU7S0j=m$Z(_}K zEaZYUGD1GI^RbvCPJTXC%E5frk)X<0vF6=b%t?0a_*4roSN#l@@BUg2)z)3t0EX%zB*(F1j4TW<6yPd6!4T%Fz` z=Zu7ufeenP>&)Zq+~X}Fm?=I({xRSBQOZO+6tmN&KzN5RO(E<0!E9@d@@9E4OT9jzjT!_(Ry;4g@c}vkUB7{ zc$V2?DYj;R+8FOWYX#=wJv$`M<(yse!5Z2lSDbsGgcPn=JKNl+LuB}nX+&m;SbcU* zNQPPYb5h~@-gBxCK|;iP5m5R|SXF-OBbO4roTE!u(2721=ZTdGM>e0K4|r~p7RD95 zxiUNWxutEkP;O0J!*p(wVnSJUXLxAYox5UZt$DY9C5%^{d*z>gA>1Db7u*(%01Za7Y6gNW>5^y_a7H6ypljZyc9}3kj(rCH+n-lon9dy+|OEpHZi+=Q%sFlC&iD>M~Q=UP;2U5m4uz@ zH+d5lo*l{lh!q1u@{XTnu4r$P@%(GfEYEMy}NVjkn3R})G3D-c1 z?qCJ@y(1fT*4;a6K@aR+xl%>FKI=eSKJ`e>ht@HSt}u}VDIwFAq0#;z8rHxE81gu0jKl5Typ1i%T70l z-;*T`kbU4~bBaquc6}Ikd0Dm{M%f&B*g^hE$eZ8VCjy|XdZo6A?BI@n@GON_nhaHb z&I|#qbs^3#iHPJi=D=RfxlcR?&iIag)|0eOSPdjZ>KVUOKGQ^t>-lZKSirLqjBkm2 znTWY}Athlgn|G)+-8Bgzd>Jtvj{?eETUd`-RB{bUU;&iH|7f7aNaHawJ{s>alPSHN4P&Tl!SF$ zZ>GeP5QP}eI)5|Ah84zd*8H$`<;@{EhATQ<#-dc7@1sWMt*R8BpJL^^DKi zC1;EUyj^p|{Hc(31KzCtV|ztphRP>i$iP^%5FaT^$VrVEP#xh}fA2Wo25O9B>F~Ke z&NzjV;+)X1mhBx`6a5 zs*Y6b5fI|3Z~W4@BeEMi(l8!kUS@I0>J;LO1A5LU)XRIv74Xu8Odq9# z$PSC{oRAYc$wVP;4dO}6PqG)05>w{;Q;M^-ATm9MfXE7&qK1xCoX#giDv`Q2Cbybw7a=88suOa=Cwe0yub#BCke8AD#*wepX~kLW5$PomPl+S8h(E-u z>;hJ`2)X%EhQkq=HT;|>ClJ@IYZWL)EM#S@=61x8f5*azGQIKFMr_DPDWuj+c8Czm zmHMWHbbSuL!EBcz&O(+`77#LjW5)S_LUb7^$|l4I@#5+AX-`xUC1mAH8A8u2*Rk;a z%#(~f2}g7vaku9SA18jv5+NpBAreT`{ppBDoe>#QC;T@fbjnpbk~iszA{2ZZNwLM1Op$dZ|a=k4w`DDxoXSf&`4g%?AjzC+JK24vwA zG7aaO3Hg{~<4DCWEFqVB^38+c8!bB_(J0R(#K*ZZk^^$j2=Vk7twD5-UW$1OdCm?; zh>xg3y%3!ZA8&B??2OE*sCe_TDmvJSER|)ApnHrJdBfuFckvwD}GYyL32)S}XaeriAZ;Aw)l$>nh z55zJ>4TaRQDUv0`TBcZlkZzgsOhRTGR6QePwMX?;LUw5=$zyqcG6QgRs=Rc*B~`vF zN~Bn89DEmQZ3(^VSgl2>7ZcL*LpvnarTxJ*s5@i7nGmlB;^#c4h9ks0K#Ol+Ng@f? z&1%9Ki9ckcw;QdMjs8!xnLBm32syQ&9Upx>IZdK+#JO<@k=uIEbB!%q=ey8K;CM)E z(+=hIge;%ai^$1;kMgG$dkVw0KWP2#4Qb1iz7pxL1JB8PbdxS%^-G#`0}QhM@H%b#8{fS)8La z));fyW6iXR1RuWj>TRI45tnW@%c^ymk;SA-D{^8AkyK=V{j;O<&mfYSK}(366(~b? z_j!zjoRG#BQV&%?2uTsA-3syf@wh){*NSlpZ>GIe5#@;NUR<|xW!B*ScsT|7bMcn) zD8nwK#Y_ALj--LH!FYFFly7vT6{_?TB72mz=Dm4RuFc|$Jhx9sstY3+@#UO&Pha+N zvxt-yC@U|2#GJ{W5gX{w326`Q`1pF+REgsHA9KwcXd(M%z0 zQR#1_72Nt~q#^UNkZKQOoheKk73L!gxKAJQk)xk5s0t?T^>BYI_ms zfrBtjrneGO0l@=*|MQ3JR)}~AKDCKDU@Y3~MQsfsq7)B#ytUR)%~Z%NhHOv|-MA9d z`mx2or=N&`A@Uk_6Lk@Md%SmaFFAFQ1oER+%6!CoAY@p}$SG`m#?>Y^cIM2tjVtDj z$V?d(&VyZ0YE ze!C@pr+eyZFfrqN@qd!q&Zn-c%rm&yW5$*M{4<*)S&|q-^xW0C$j`aRInh?pQpr;qe!FaEUTQ2Ia7cw(PvMl=NuwO>5t~acWu&9*9{6b6O6qxaB zsV1E2A*7X#_gsrM1&n$Ksa(_8(iF&l=k`QOHa+xz=US$_q~#%=h)y!YOEFCX&w z)>o;2STWH0&L5s&A&zRmy?Ka^;4gL84UNClPsm{*avkTs^fp=@=vBAjp|p+2@P|w_ zMuKi+Pi;mwDgK=q?YX!*)9S(=jy8K}5+mY$@>2dXtFXX<0c4LetKAZRsPBa%HPaI=|(FE3M?y``Z2k*C+6VApHV%;%+ z8Xht`%zL8<{-D>^-t4G(B_!shp+$PPlpn~;ANn#q)H*TN8O_)QJ(fTYT9+sn$jB{) z{HVK)1}(>%w&&C{+UqVBU(r?xapz|Xc7SoDp1Xc3e`XY%u+~E?Z6fE3f@SW2jY3GS zi0Y-JhY?MA5d|lS3h8wsC+}q@oUQ;p+oNpi}*V~B!_KeuX`khF1q4tcB;{~(J-K=rFa<@??sgVeowP3eO1S&dO3Z40U z9Dk{a$D?P|L&KQ&XdBs)Q^ZwUv3^t+omFI=GV)?+_~zQp+*c5$oO^7#*x;joN#jCp zU087=m{7jaiqa+L-_8Bj+D`G&)?ciYglAANuHhRLdBd3uNQ{BP8_T z5orY#k%hQ(23P(?Eu@PhWY&W{?D9O!QGub)mMd1U%4;>$3e(F@)kv>Kh(*o>kyaj7 zA@()oyyEJtnK#xJ>4;e3Z~M%DaTc(URw{Zq{p(R{$B1uacKs9MLf=^wx>d}Z^-pXA zecJv#d+1g7U3AOfPTX4QAD?NRt19~*d7$6e_vaj)?E9n-b#a7b&UE!7cEG>%i=k{YoUr!0uqhxsVW^Vbs{y0DHtDA4y_u9Zbpr>pX z?|QL=bnyfW$rZCNo?7lSokGa)iq$4A_qgCYjcV9|F(DysVV>60{?RAl@(n+%Ve<6a z#NF%S-3Q|?o@<&|QRvZs229H3LPSF_BkeilEpbIl%L^H?%R$FU@Ir=668_TYq~YHa z`c=peyqwJ41739Kkf8{XNgzAwQLKyEau**x$X!Cv4<}j(*>=ze^!g%2M~KP)K%dE5 z&4*OG1F?oN6c@MsuunqdDL1SS@ix*x>*DS75Bp18E6K>0%~Qh-J*5Mw3KBO(i+V zzSvfU&=A%i_-TeS)rGA3Fy|_NRulpEPILyb^}ktOKkkrQe<)iC@x>?jo}iG3yqNDr z$kT$dr4U!{=!yGld15b*kczXggsl2wU%!}e#?N*uSDKHMQvQL|hO?T5G&xlCY$Js@ zIQ^cHyf`v{d?7xtKWm8h8rDvZ^a}S$jGS0;SBPbtC>u!Q{-2Sf#0;MxM>#d^su2G_hV6-fNNkPgBUdw8xBH> z$jAr1!xnoF@)$mVnk+)i0|N9 zk5h4WR3OG(rej?Bhqw<$6pZ1sO)+Aub{sPo_R&WS7Un0IwI|dz8FE-yX=qFjb$LXl zh!vj3m)bgXThVIN=OsqTTq#0^A$vTiN@OwEqj<-g$}SOG4E7Ih1V+%&NI zOo+U6T+tol3hedzFp3T_HTdOUPFmX8Xp8`6aj$ zV&>8Jlr` zXIfa95Xix}rI6CFW^TmH20mHh@vNCW-sr4tGTv?zt@2DInrRS;lsN63nWFHDe$Pz3 z;&db-GUd3hg_QXNkx%;r*`?w=rbDF^e$eyLaqeo?`eo3GokqIaot0#BoNV5P2oM4@#~L&#Crq4CX;(){81{ zv+O)E$3M&aQ7biTZLEScYm^y~ji1$>D~zWY{=sOG7+NumyG*flu7sIZQ^7N*6OtZg z%cq^*FcLhqsV+tUXJ|K}?VZhaws0S`5i@rYxnW@tk*9|}HdB0*D>|mGQ|{k?o}n&` z+1MF+vuLkFaz0@#!4y-h7+arx`a|DrY8P;BcY4k|ZDV@%4`allNWEfx;`FG!!e2UM z6fqh;wa^K3$U+)dH%&RU1$7qYFcEo1LI8pPPEV|5FvoS)o)H;L6)Q*Plvhu4x`d2s zyc4Hv1u};@cYB!SnKB?7Gf+Z*wAQ!}Rx+M-F=N6STi6wChiDI?J_NHOb2a(mXf4-Q z3$o6+_K(RKLPCFykT2;0@H1cfp{F{nz zZ+r9)tJCKW%`1GTd!>ZEFLR3@U{q@E`y-b2S0;qDU-PtbF=M0cmVVrSfXDOVd+vB= zb%=Rnd6;pX=Uk~YuWo1Tnw{4Qcf1K{n_10W{&+>N*aqLuH~KXZdC4bwQ}g8?npZO< zyioaNKCc6_m-8)|a(vtG)r7ez?VNNmKPN+BAHKPjdh2*Mt`r>y^m|rJiA1|2#8|y> z`77-ry?ME5_qj35jxi zwxZhbfqoNy;?}u*Dl4JJJ16%FYg}oJjtBb_)@9F+yGLX(y z!Rhfrc21a8T>Z3({B1>982Sq<3WbonEFTf6Mr5{vKKk-6$`%mWx`c^WEkAZJIw{1t zifRoDjS58C53QCpLTnY+V0^h@MU;>_kShym3Gan9j$Ssd&UkfWrR<7u1olZRIh!1R zi($7Mom}(EzVT;&US>6{wX$dA@oQNcnB@`TAHSb9epK79HGk;Lt@X8vI$7(JH-(ij zLcCz5#rjIjm_|ef0hz=4bO)m!ETpnR?GjIX7^Pmi7$@@4^}ROOQtaF&#wkRVEu%-d zb}a{EC_*apkfm#uYqr@{YW*UjZ(ZN$2z6s-7Mx0a5xeAcy?af68a!TOMO z5A%)dm9qIpe=)HKpY7Gky3|7a!;XU`KKfz&?Mumde%62qh@;S1_)4h*^QS_hwHguKbGYBWnC-=Hu0-P> zzMm5FG5GJyx-shhl`Ag?_gk&{rDT!5YMJL}iBbH2m=q?YAG{mC8uJeMGqY6GItt{+ zX{^(D64hrqj{I#Fy0-XEt(6aT%)W4c(BIZg?*-$^UmNzJ0>c*(A?zj+(kn8^KLlCY z*JcQeA+nvdKt7oro|g8>kGR-z{q@r^L$__l`}Znis7=YSE-Z+P3-hy0D%4p#bok>p2y z@QsravW+h)Ag~7G8@F;L%r~pNHhc@BK@H=*-we@V{!EBY;kwO8?eY_JKUn4V&1a48 zg%#6)@d;LL4f%n{ZCRKL{np40t3ZT!!8q)HCs!gPxBQ}N0_$Cb^oKKgg*eB>zIFOR zFX#JGy_os_;`>%97~A;1n-*5A3F(F`?Th+r^s~OLEsDAKPfj&Y<`z=9>*Cuw zbLdeD(Y1+duw}1#4R-W)M>GJZiwXHLt@97T_~>^mhF&2uDrd)k zzH<`Cdxcci2@b^3tNzaI4f9!n4D=ViTl2?%=Z?g68{ZXo`tfb6aHRgbJ4Oi*@=9Wj zPa$?OPX4|6V~XbY#*eyy@68xahluWHw#rZEm+zlM zF;>KXd|RsOMb_-0wG4%hi(Lw0-SV2~%uzRkVVT65 zF&41PPCS!Fh#g*om`H<~O1tJ-@owBPW&v~WJ0>Pz=3CzWj|zxgBTPUyppZ6ydEG3E zrSRFTl#BgLLVRJQep^edd%Q!{7OS7Pxou=9+g9Uxif!Au=V9CRgFIebBUijN1NpGC zTYtS5^mccPW?%fJtz=dw+AXF~;5%)#Pt=~-F|z@0Kq0ODc!JMAR1Mnle=_<%JE~{U zJB%@&jzt9lG79X(7ZW>c8zCX<9tN;WhE@ z?I*Fe{dT!oyx+Wv-J*5zV4eJJJ!bbI;_@|d$9r@LmbM66*cGux+@niY1mhG!blLM0 zoF7W7`x6<%jIlW&@s%ZYjB7h_MSghC+gw^Qzqc-4{Vb&Mk&c{x9RPmLKW z_~vQ|N%P+^KUmd&a%#^a2#5^bsrXLip&N3`Q@_fcTS9zccKOt(ZABzh*)XOW9g&q+ zG$Oai#g2)oV#S(}%=*1T>>#&1@;x%%^??km=L=+F#qgvw+%CDLbMa{*+L>6 ztDkiPr-#`jA^H&6L?L!D4jcFRq$<|zxA_n9xuG9fF;z%nv2_hSgDJR$0=(;?DRU1?)�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 Date: Mon, 19 May 2025 13:42:56 +0800 Subject: [PATCH 26/26] ci:update release --- .github/workflows/release.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4fee513..607a17e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,6 +25,15 @@ jobs: skip_unpack: true if_no_artifact_found: fail path: ./XRelease/ + - name: Download fedora build + uses: dawidd6/action-download-artifact@v6 + with: + workflow: fedora_build.yml + workflow_conclusion: success + check_artifacts: false + skip_unpack: true + if_no_artifact_found: fail + path: ./XRelease/ - name: Download debian build uses: dawidd6/action-download-artifact@v6 with: -- Gitee