mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-04-16 12:35:54 +00:00
1. **Fixed XPadding Placement Dropdown**: - Added the missing `cookie` and `query` options to `xPaddingPlacement` (`stream_xhttp.html`). - *Why:* Previously, users wanting `cookie` obfuscation were forced to use the `header` placement string. This caused Xray-core to blindly intercept the entire monolithic HTTP Cookie header, failing internal padding-length validations and causing the inbound to silently drop the connection. 2. **Fixed Uplink Data Placement Validation**: - Replaced the unsupported `query` option with `cookie` in `uplinkDataPlacement`. - *Why:* Xray-core's `transport_internet.go` explicitly forbids `query` as an uplink placement option. Selecting it from the UI previously sent a payload that would cause Xray-core to instantly throw an `unsupported uplink data placement: query` panic. Adding `cookie` perfectly aligns the UI with Xray-core restrictions. ### Related Issues - Resolves #3992
77 lines
2.1 KiB
YAML
77 lines
2.1 KiB
YAML
name: Test
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
types: [opened, synchronize, reopened]
|
|
|
|
jobs:
|
|
check-assets:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Restore Geodat Cache
|
|
uses: actions/cache/restore@v5
|
|
with:
|
|
path: resources
|
|
key: xray-geodat-
|
|
- name: Check Assets Existence
|
|
id: check-assets
|
|
run: |
|
|
[ -d 'resources' ] || mkdir resources
|
|
LIST=('geoip.dat' 'geosite.dat')
|
|
for FILE_NAME in "${LIST[@]}"
|
|
do
|
|
echo -e "Checking ${FILE_NAME}..."
|
|
if [ -s "./resources/${FILE_NAME}" ]; then
|
|
echo -e "${FILE_NAME} exists."
|
|
else
|
|
echo -e "${FILE_NAME} does not exist."
|
|
echo "missing=true" >> $GITHUB_OUTPUT
|
|
break
|
|
fi
|
|
done
|
|
- name: Sleep for 90 seconds if Assets Missing
|
|
if: steps.check-assets.outputs.missing == 'true'
|
|
run: sleep 90
|
|
|
|
check-proto:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout codebase
|
|
uses: actions/checkout@v6
|
|
- name: Check Proto Version Header
|
|
run: |
|
|
head -n 4 core/config.pb.go > ref.txt
|
|
find . -name "*.pb.go" ! -name "*_grpc.pb.go" -print0 | while IFS= read -r -d '' file; do
|
|
if ! cmp -s ref.txt <(head -n 4 "$file"); then
|
|
echo "Error: Header mismatch in $file"
|
|
head -n 4 "$file"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
test:
|
|
needs: check-assets
|
|
permissions:
|
|
contents: read
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [windows-latest, ubuntu-latest, macos-latest]
|
|
steps:
|
|
- name: Checkout codebase
|
|
uses: actions/checkout@v6
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v6
|
|
with:
|
|
go-version-file: go.mod
|
|
check-latest: true
|
|
- name: Restore Geodat Cache
|
|
uses: actions/cache/restore@v5
|
|
with:
|
|
path: resources
|
|
key: xray-geodat-
|
|
enableCrossOsArchive: true
|
|
- name: Test
|
|
run: go test -timeout 1h -v ./...
|