mirror of
https://github.com/outbackdingo/openwrt-passwall-packages.git
synced 2026-01-27 18:19:53 +00:00
Compare commits
176 Commits
patches-si
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
46495fc982 | ||
|
|
b13eaeac8b | ||
|
|
b0390584f1 | ||
|
|
3b1d5902c8 | ||
|
|
8f2f15fb84 | ||
|
|
ee78424347 | ||
|
|
9feb8ca7db | ||
|
|
aa5df69448 | ||
|
|
6c8844d889 | ||
|
|
5e2351aed3 | ||
|
|
74f2a4e852 | ||
|
|
97d3a4378b | ||
|
|
d707ba9d19 | ||
|
|
3761828fc7 | ||
|
|
b37a3f1ce3 | ||
|
|
5656b81fd4 | ||
|
|
da0627faa6 | ||
|
|
af03baae97 | ||
|
|
0e981dc382 | ||
|
|
e84163436a | ||
|
|
52a52b8706 | ||
|
|
e73f07a42c | ||
|
|
863dc44c9c | ||
|
|
82902620e6 | ||
|
|
4952cc9385 | ||
|
|
050beb5e7a | ||
|
|
27effca2f4 | ||
|
|
4a47915807 | ||
|
|
f6ead0f3d0 | ||
|
|
18727f6425 | ||
|
|
d3d10ffdec | ||
|
|
12cbfd7e61 | ||
|
|
b31b081883 | ||
|
|
e731804edf | ||
|
|
b2021007b3 | ||
|
|
2c4e93d9df | ||
|
|
09e9364146 | ||
|
|
2045b3fa6d | ||
|
|
0acff3d08d | ||
|
|
0d2efd4530 | ||
|
|
10e7a49795 | ||
|
|
df1e6b2fb9 | ||
|
|
b55023d283 | ||
|
|
ccdd94acf7 | ||
|
|
fa5ab9ac3b | ||
|
|
94007bd610 | ||
|
|
bdc1d4900f | ||
|
|
700aff15d7 | ||
|
|
510a0eebf7 | ||
|
|
07659e6cb1 | ||
|
|
879fdb8625 | ||
|
|
f23e172f27 | ||
|
|
f3a2b00d73 | ||
|
|
06076d0f16 | ||
|
|
5f0a7e852c | ||
|
|
c465bf9dbc | ||
|
|
f002d6d83f | ||
|
|
180a522405 | ||
|
|
3140dcaada | ||
|
|
6f115e283a | ||
|
|
9d0068ca00 | ||
|
|
0e4b2c7146 | ||
|
|
dfdc4bd967 | ||
|
|
3c53404aa9 | ||
|
|
e8628f1f83 | ||
|
|
3aebc56033 | ||
|
|
971e52ab41 | ||
|
|
4d0a296d2d | ||
|
|
e5c8bcc648 | ||
|
|
e39ff2fd2e | ||
|
|
0ec208d54f | ||
|
|
bdbf127a6f | ||
|
|
31dfddb721 | ||
|
|
a04a1b6d8d | ||
|
|
1b3c818c37 | ||
|
|
0b2fdafe60 | ||
|
|
15a0472832 | ||
|
|
5df9042439 | ||
|
|
b90e1713ca | ||
|
|
28e06e2945 | ||
|
|
e272564355 | ||
|
|
a1dc7fd196 | ||
|
|
e18c5b351c | ||
|
|
1013e7cb1d | ||
|
|
7684dd29ac | ||
|
|
80646ef634 | ||
|
|
6dd3dbf255 | ||
|
|
c680014407 | ||
|
|
127f1d68ee | ||
|
|
c5a0b87599 | ||
|
|
a74408beb8 | ||
|
|
e9eee9dad1 | ||
|
|
ebd6a1122a | ||
|
|
950c9a2358 | ||
|
|
be30ceb2fc | ||
|
|
6451e3044a | ||
|
|
65a532af6d | ||
|
|
df4119416e | ||
|
|
c1c5ce7a73 | ||
|
|
de8682f076 | ||
|
|
0e2ad0fe4d | ||
|
|
b50c786682 | ||
|
|
e08c8dfd1a | ||
|
|
e6a199fc38 | ||
|
|
000742a169 | ||
|
|
a28eba5113 | ||
|
|
641342cca4 | ||
|
|
ab25735f6f | ||
|
|
3ee23f6a63 | ||
|
|
0199e7da2f | ||
|
|
0584bb2386 | ||
|
|
40c90d39ae | ||
|
|
a70fec5946 | ||
|
|
79f5321c34 | ||
|
|
82a500d16e | ||
|
|
a9c1791d2b | ||
|
|
cfdd24cc7c | ||
|
|
03d812825e | ||
|
|
9dd5068028 | ||
|
|
673bb1efa5 | ||
|
|
e656847cbc | ||
|
|
6b9b9edbd5 | ||
|
|
6dedf1ff7f | ||
|
|
654155f851 | ||
|
|
9a6878bb6a | ||
|
|
39f9daa045 | ||
|
|
5f4b2c4711 | ||
|
|
3ae13b4391 | ||
|
|
6ec933a419 | ||
|
|
a6a3c45a30 | ||
|
|
925712ba92 | ||
|
|
7add3c4ed9 | ||
|
|
6b9682be44 | ||
|
|
b02cb18262 | ||
|
|
be5412a7c2 | ||
|
|
93774f3246 | ||
|
|
02c8f8be3b | ||
|
|
9e02fac759 | ||
|
|
ed3bb6ba3f | ||
|
|
d7c7180f65 | ||
|
|
8e1225405c | ||
|
|
2a07adc5d2 | ||
|
|
3d1d77bf46 | ||
|
|
e17089e73f | ||
|
|
c6a9f60090 | ||
|
|
7cee3c4e5a | ||
|
|
c022e6acb6 | ||
|
|
00ddf6ebe3 | ||
|
|
8b44695222 | ||
|
|
b610242707 | ||
|
|
e05f8d2d17 | ||
|
|
e8ce796180 | ||
|
|
cd668cd468 | ||
|
|
7e79692e63 | ||
|
|
52beb022a8 | ||
|
|
29f5fd9ea1 | ||
|
|
b073af350a | ||
|
|
12175f6b17 | ||
|
|
f04c0f33bb | ||
|
|
caa966a46b | ||
|
|
be63a5b682 | ||
|
|
b5d5102ecb | ||
|
|
6d4bc0f69a | ||
|
|
06ab538416 | ||
|
|
bb8ca4c0be | ||
|
|
18e0fe4a2b | ||
|
|
a650625663 | ||
|
|
ca3d1dc0fe | ||
|
|
e52c65ecde | ||
|
|
5e1580401c | ||
|
|
fbba303999 | ||
|
|
7ca9df0566 | ||
|
|
19b710c0a3 | ||
|
|
f1dd95ccb2 | ||
|
|
39d2f8d436 | ||
|
|
d92089664e |
119
.github/workflows/Auto cache software release jsons.yml
vendored
Normal file
119
.github/workflows/Auto cache software release jsons.yml
vendored
Normal file
@@ -0,0 +1,119 @@
|
||||
#
|
||||
# Copyright (c) 2025-2026 LWB1978 <https://github.com/lwb1978>
|
||||
# Description: Auto Cache Software Release JSONs
|
||||
#
|
||||
name: Auto Cache Software Release JSONs
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 */2 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
TZ: Asia/Shanghai
|
||||
|
||||
jobs:
|
||||
cache_json:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Initialization environment
|
||||
run: |
|
||||
sudo timedatectl set-timezone "$TZ"
|
||||
|
||||
- name: Install GitHub CLI
|
||||
run: sudo apt-get update && sudo apt-get install -y gh
|
||||
|
||||
- name: Fetch GitHub release JSONs
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
mkdir -p output old_json
|
||||
|
||||
declare -A repos
|
||||
repos["geoview"]="snowie2000/geoview"
|
||||
repos["chinadns-ng"]="zfl9/chinadns-ng"
|
||||
repos["xray"]="XTLS/Xray-core"
|
||||
repos["sing-box"]="SagerNet/sing-box"
|
||||
repos["hysteria"]="HyNetwork/hysteria"
|
||||
|
||||
echo "Downloading previous api-cache release assets (if exists)..."
|
||||
gh release download api-cache --dir old_json --pattern "*.json" || echo "No previous release found"
|
||||
|
||||
for name in "${!repos[@]}"; do
|
||||
repo="${repos[$name]}"
|
||||
echo "Processing $name from $repo ..."
|
||||
|
||||
for t in release pre-release; do
|
||||
old="old_json/${name}-${t}-api.json"
|
||||
if [ -f "$old" ]; then
|
||||
cp "$old" "output/${name}-${t}-api.json.bak"
|
||||
fi
|
||||
done
|
||||
|
||||
curl -sL "https://api.github.com/repos/$repo/releases/latest" -o "output/${name}-release-api.json"
|
||||
curl -sL "https://api.github.com/repos/$repo/releases?per_page=1" -o "output/${name}-pre-release-api.json"
|
||||
|
||||
for t in release pre-release; do
|
||||
file="output/${name}-${t}-api.json"
|
||||
|
||||
TAG_NAME=$(grep -oP '"tag_name": "\K[^"]+' "$file" || true)
|
||||
|
||||
if [ -z "$TAG_NAME" ]; then
|
||||
echo "❌ ${file} No tag_name, restore old files..."
|
||||
rm -f "$file"
|
||||
|
||||
if [ -f "${file}.bak" ]; then
|
||||
mv "${file}.bak" "$file"
|
||||
fi
|
||||
else
|
||||
echo "✅ ${file} Verification successful, delete bak."
|
||||
rm -f "${file}.bak"
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
- name: Check output directory
|
||||
id: check_output
|
||||
run: |
|
||||
if [ -z "$(ls -A output 2>/dev/null)" ]; then
|
||||
echo "empty=true" >> $GITHUB_OUTPUT
|
||||
echo "⚠️ The output directory is empty, and subsequent Upload/Release steps will be skipped."
|
||||
else
|
||||
echo "empty=false" >> $GITHUB_OUTPUT
|
||||
echo "✔ The output directory contains files."
|
||||
fi
|
||||
|
||||
- name: Delete old release and tag
|
||||
if: steps.check_output.outputs.empty == 'false'
|
||||
run: |
|
||||
gh release delete api-cache --cleanup-tag -y || echo "No existing release to delete."
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Upload to release
|
||||
if: steps.check_output.outputs.empty == 'false'
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
tag_name: api-cache
|
||||
name: Software Release API Cache
|
||||
files: output/*.json
|
||||
body: |
|
||||
This release contains cached GitHub Release API JSON data for several software projects.
|
||||
It is used by the PassWall (and PassWall2) update component to reduce reliance on GitHub's rate-limited API (60 requests per IP per hour).
|
||||
|
||||
**Please do not download it – it is of no use to you.**
|
||||
**请不要下载它,因为它对你没有任何用处。**
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Delete workflow runs
|
||||
uses: Mattraks/delete-workflow-runs@main
|
||||
with:
|
||||
token: ${{ github.token }}
|
||||
repository: ${{ github.repository }}
|
||||
retain_days: 0
|
||||
keep_minimum_runs: 5
|
||||
delete_workflow_pattern: 'Auto Cache Software Release JSONs'
|
||||
111
.github/workflows/Auto compilation testing.yml
vendored
111
.github/workflows/Auto compilation testing.yml
vendored
@@ -22,62 +22,83 @@ env:
|
||||
|
||||
jobs:
|
||||
job_auto_compile:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-latest
|
||||
name: test build (${{ matrix.platform }})
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- platform: x86_64
|
||||
url_sdk: https://downloads.openwrt.org/releases/23.05.0/targets/x86/64/openwrt-sdk-23.05.0-x86-64_gcc-12.3.0_musl.Linux-x86_64.tar.xz
|
||||
url_sdk: https://downloads.openwrt.org/releases/24.10.0/targets/x86/64/openwrt-sdk-24.10.0-x86-64_gcc-13.3.0_musl.Linux-x86_64.tar.zst
|
||||
sdk_ver: "24.10"
|
||||
|
||||
- platform: aarch64_generic
|
||||
url_sdk: https://downloads.openwrt.org/releases/23.05.0/targets/rockchip/armv8/openwrt-sdk-23.05.0-rockchip-armv8_gcc-12.3.0_musl.Linux-x86_64.tar.xz
|
||||
url_sdk: https://downloads.openwrt.org/releases/24.10.0/targets/rockchip/armv8/openwrt-sdk-24.10.0-rockchip-armv8_gcc-13.3.0_musl.Linux-x86_64.tar.zst
|
||||
sdk_ver: "24.10"
|
||||
|
||||
- platform: aarch64_cortex-a53
|
||||
url_sdk: https://downloads.openwrt.org/releases/23.05.0/targets/mvebu/cortexa53/openwrt-sdk-23.05.0-mvebu-cortexa53_gcc-12.3.0_musl.Linux-x86_64.tar.xz
|
||||
url_sdk: https://downloads.openwrt.org/releases/24.10.0/targets/mvebu/cortexa53/openwrt-sdk-24.10.0-mvebu-cortexa53_gcc-13.3.0_musl.Linux-x86_64.tar.zst
|
||||
sdk_ver: "24.10"
|
||||
|
||||
- platform: aarch64_cortex-a72
|
||||
url_sdk: https://downloads.openwrt.org/releases/23.05.0/targets/mvebu/cortexa72/openwrt-sdk-23.05.0-mvebu-cortexa72_gcc-12.3.0_musl.Linux-x86_64.tar.xz
|
||||
url_sdk: https://downloads.openwrt.org/releases/24.10.0/targets/mvebu/cortexa72/openwrt-sdk-24.10.0-mvebu-cortexa72_gcc-13.3.0_musl.Linux-x86_64.tar.zst
|
||||
sdk_ver: "24.10"
|
||||
|
||||
- platform: arm_cortex-a5_vfpv4
|
||||
url_sdk: https://downloads.openwrt.org/releases/24.10.0/targets/at91/sama5/openwrt-sdk-24.10.0-at91-sama5_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst
|
||||
sdk_ver: "24.10"
|
||||
|
||||
- platform: arm_cortex-a7
|
||||
url_sdk: https://downloads.openwrt.org/releases/23.05.0/targets/mediatek/mt7629/openwrt-sdk-23.05.0-mediatek-mt7629_gcc-12.3.0_musl_eabi.Linux-x86_64.tar.xz
|
||||
url_sdk: https://downloads.openwrt.org/releases/24.10.0/targets/mediatek/mt7629/openwrt-sdk-24.10.0-mediatek-mt7629_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst
|
||||
sdk_ver: "24.10"
|
||||
|
||||
- platform: arm_cortex-a7_neon-vfpv4
|
||||
url_sdk: https://downloads.openwrt.org/releases/23.05.0/targets/sunxi/cortexa7/openwrt-sdk-23.05.0-sunxi-cortexa7_gcc-12.3.0_musl_eabi.Linux-x86_64.tar.xz
|
||||
url_sdk: https://downloads.openwrt.org/releases/24.10.0/targets/sunxi/cortexa7/openwrt-sdk-24.10.0-sunxi-cortexa7_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst
|
||||
sdk_ver: "24.10"
|
||||
|
||||
- platform: arm_cortex-a8_vfpv3
|
||||
url_sdk: https://downloads.openwrt.org/releases/23.05.0/targets/sunxi/cortexa8/openwrt-sdk-23.05.0-sunxi-cortexa8_gcc-12.3.0_musl_eabi.Linux-x86_64.tar.xz
|
||||
url_sdk: https://downloads.openwrt.org/releases/24.10.0/targets/sunxi/cortexa8/openwrt-sdk-24.10.0-sunxi-cortexa8_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst
|
||||
sdk_ver: "24.10"
|
||||
|
||||
- platform: arm_cortex-a9
|
||||
url_sdk: https://downloads.openwrt.org/releases/23.05.0/targets/bcm53xx/generic/openwrt-sdk-23.05.0-bcm53xx-generic_gcc-12.3.0_musl_eabi.Linux-x86_64.tar.xz
|
||||
url_sdk: https://downloads.openwrt.org/releases/24.10.0/targets/bcm53xx/generic/openwrt-sdk-24.10.0-bcm53xx-generic_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst
|
||||
sdk_ver: "24.10"
|
||||
|
||||
- platform: arm_cortex-a9_neon
|
||||
url_sdk: https://downloads.openwrt.org/releases/23.05.0/targets/zynq/generic/openwrt-sdk-23.05.0-zynq-generic_gcc-12.3.0_musl_eabi.Linux-x86_64.tar.xz
|
||||
url_sdk: https://downloads.openwrt.org/releases/24.10.0/targets/zynq/generic/openwrt-sdk-24.10.0-zynq-generic_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst
|
||||
sdk_ver: "24.10"
|
||||
|
||||
- platform: arm_cortex-a9_vfpv3-d16
|
||||
url_sdk: https://downloads.openwrt.org/releases/23.05.0/targets/mvebu/cortexa9/openwrt-sdk-23.05.0-mvebu-cortexa9_gcc-12.3.0_musl_eabi.Linux-x86_64.tar.xz
|
||||
url_sdk: https://downloads.openwrt.org/releases/24.10.0/targets/mvebu/cortexa9/openwrt-sdk-24.10.0-mvebu-cortexa9_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst
|
||||
sdk_ver: "24.10"
|
||||
|
||||
- platform: arm_cortex-a15_neon-vfpv4
|
||||
url_sdk: https://downloads.openwrt.org/releases/23.05.0/targets/ipq806x/generic/openwrt-sdk-23.05.0-ipq806x-generic_gcc-12.3.0_musl_eabi.Linux-x86_64.tar.xz
|
||||
url_sdk: https://downloads.openwrt.org/releases/24.10.0/targets/ipq806x/generic/openwrt-sdk-24.10.0-ipq806x-generic_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst
|
||||
sdk_ver: "24.10"
|
||||
|
||||
- platform: mips_24kc
|
||||
url_sdk: https://downloads.openwrt.org/releases/23.05.0/targets/ath79/generic/openwrt-sdk-23.05.0-ath79-generic_gcc-12.3.0_musl.Linux-x86_64.tar.xz
|
||||
url_sdk: https://downloads.openwrt.org/releases/24.10.0/targets/ath79/generic/openwrt-sdk-24.10.0-ath79-generic_gcc-13.3.0_musl.Linux-x86_64.tar.zst
|
||||
sdk_ver: "24.10"
|
||||
|
||||
- platform: mips_4kec
|
||||
url_sdk: https://downloads.openwrt.org/releases/23.05.0/targets/realtek/rtl838x/openwrt-sdk-23.05.0-realtek-rtl838x_gcc-12.3.0_musl.Linux-x86_64.tar.xz
|
||||
url_sdk: https://downloads.openwrt.org/releases/24.10.0/targets/realtek/rtl838x/openwrt-sdk-24.10.0-realtek-rtl838x_gcc-13.3.0_musl.Linux-x86_64.tar.zst
|
||||
sdk_ver: "24.10"
|
||||
|
||||
- platform: mips_mips32
|
||||
url_sdk: https://downloads.openwrt.org/releases/23.05.0/targets/bcm63xx/generic/openwrt-sdk-23.05.0-bcm63xx-generic_gcc-12.3.0_musl.Linux-x86_64.tar.xz
|
||||
url_sdk: https://downloads.openwrt.org/releases/24.10.0/targets/bcm53xx/generic/openwrt-sdk-24.10.0-bcm53xx-generic_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst
|
||||
sdk_ver: "24.10"
|
||||
|
||||
- platform: mipsel_24kc
|
||||
url_sdk: https://downloads.openwrt.org/releases/23.05.0/targets/ramips/rt288x/openwrt-sdk-23.05.0-ramips-rt288x_gcc-12.3.0_musl.Linux-x86_64.tar.xz
|
||||
url_sdk: https://downloads.openwrt.org/releases/24.10.0/targets/ramips/rt288x/openwrt-sdk-24.10.0-ramips-rt288x_gcc-13.3.0_musl.Linux-x86_64.tar.zst
|
||||
sdk_ver: "24.10"
|
||||
|
||||
- platform: mipsel_74kc
|
||||
url_sdk: https://downloads.openwrt.org/releases/23.05.0/targets/ramips/rt3883/openwrt-sdk-23.05.0-ramips-rt3883_gcc-12.3.0_musl.Linux-x86_64.tar.xz
|
||||
url_sdk: https://downloads.openwrt.org/releases/24.10.0/targets/ramips/rt3883/openwrt-sdk-24.10.0-ramips-rt3883_gcc-13.3.0_musl.Linux-x86_64.tar.zst
|
||||
sdk_ver: "24.10"
|
||||
|
||||
- platform: mipsel_mips32
|
||||
url_sdk: https://downloads.openwrt.org/releases/23.05.0/targets/bcm47xx/generic/openwrt-sdk-23.05.0-bcm47xx-generic_gcc-12.3.0_musl.Linux-x86_64.tar.xz
|
||||
url_sdk: https://downloads.openwrt.org/releases/24.10.0/targets/bcm47xx/generic/openwrt-sdk-24.10.0-bcm47xx-generic_gcc-13.3.0_musl.Linux-x86_64.tar.zst
|
||||
sdk_ver: "24.10"
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
@@ -114,10 +135,17 @@ jobs:
|
||||
|
||||
- name: Initialization ${{ matrix.platform }} compile environment
|
||||
run: |
|
||||
sudo -E rm -rf /usr/share/dotnet /etc/mysql /etc/php /etc/apt/sources.list.d /usr/local/lib/android
|
||||
sudo -E rm -rf /usr/share/dotnet /etc/mysql /etc/php /usr/local/lib/android
|
||||
echo "install packages!!!!!!"
|
||||
sudo -E apt-get -qq update
|
||||
sudo -E apt-get -qq install build-essential clang flex bison g++ gawk gcc-multilib g++-multilib gettext git libncurses-dev libssl-dev python3-distutils python3-setuptools rsync swig unzip zlib1g-dev file wget
|
||||
sudo -E apt-get -qq install ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
|
||||
bzip2 ccache clang cmake cpio curl device-tree-compiler ecj fastjar flex gawk gettext gcc-multilib \
|
||||
g++-multilib git gnutls-dev gperf haveged help2man intltool lib32gcc-s1 libc6-dev-i386 libelf-dev \
|
||||
libglib2.0-dev libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses-dev libpython3-dev \
|
||||
libreadline-dev libssl-dev libtool libyaml-dev libz-dev lld llvm lrzsz mkisofs msmtp nano \
|
||||
ninja-build p7zip p7zip-full patch pkgconf python3 python3-pip python3-ply python3-docutils \
|
||||
python3-pyelftools qemu-utils re2c rsync scons squashfs-tools subversion swig texinfo uglifyjs \
|
||||
upx-ucl unzip vim wget xmlto xxd zlib1g-dev zstd
|
||||
sudo -E apt-get -qq autoremove --purge
|
||||
sudo -E apt-get -qq clean
|
||||
|
||||
@@ -125,7 +153,7 @@ jobs:
|
||||
run: |
|
||||
wget ${{ matrix.url_sdk }}
|
||||
file_name=$(echo ${{matrix.url_sdk}} | awk -F/ '{print $NF}')
|
||||
mkdir sdk && tar -xJf $file_name -C ./sdk --strip-components=1
|
||||
mkdir sdk && tar --zstd -x -f $file_name -C ./sdk --strip-components=1
|
||||
cd sdk
|
||||
|
||||
- name: SSH connection to Actions
|
||||
@@ -135,17 +163,44 @@ jobs:
|
||||
- name: ${{ matrix.platform }} feeds configuration packages
|
||||
run: |
|
||||
cd sdk
|
||||
echo "src-git base https://github.com/openwrt/openwrt.git;openwrt-23.05" > feeds.conf
|
||||
echo "src-git packages https://github.com/openwrt/packages.git;openwrt-23.05" >> feeds.conf
|
||||
echo "src-git luci https://github.com/openwrt/luci.git;openwrt-23.05" >> feeds.conf
|
||||
echo "src-git routing https://git.openwrt.org/feed/routing.git;openwrt-23.05" >> feeds.conf
|
||||
echo "src-git passwall_packages https://github.com/${{ env.packages }}.git;main" >> feeds.conf
|
||||
cat > feeds.conf.default << EOF
|
||||
src-git passwall_packages https://github.com/${{ env.packages }}.git;main
|
||||
src-git base https://github.com/openwrt/openwrt.git;openwrt-${{ matrix.sdk_ver }}
|
||||
src-git packages https://github.com/openwrt/packages.git;openwrt-${{ matrix.sdk_ver }}
|
||||
src-git luci https://github.com/openwrt/luci.git;openwrt-${{ matrix.sdk_ver }}
|
||||
src-git routing https://github.com/openwrt/routing.git;openwrt-${{ matrix.sdk_ver }}
|
||||
src-git telephony https://github.com/openwrt/telephony.git;openwrt-${{ matrix.sdk_ver }}
|
||||
EOF
|
||||
|
||||
./scripts/feeds update -a
|
||||
./scripts/feeds install -a -f -p passwall_packages
|
||||
./scripts/feeds install -a
|
||||
|
||||
#--------------------------------------begin_patches------------------------------------------
|
||||
echo "Start applying the patch"
|
||||
|
||||
|
||||
rm -rf temp_resp
|
||||
git clone -b master --single-branch https://github.com/openwrt/packages.git temp_resp
|
||||
echo "update golang version"
|
||||
rm -rf feeds/packages/lang/golang
|
||||
git clone https://github.com/sbwml/packages_lang_golang -b 23.x feeds/packages/lang/golang
|
||||
cp -r temp_resp/lang/golang feeds/packages/lang
|
||||
echo "update rust version"
|
||||
rm -rf feeds/packages/lang/rust
|
||||
cp -r temp_resp/lang/rust feeds/packages/lang
|
||||
rm -rf temp_resp
|
||||
|
||||
git clone -b main --single-branch https://github.com/openwrt/openwrt.git temp_resp
|
||||
cp -f temp_resp/scripts/patch-kernel.sh scripts/
|
||||
rm -rf temp_resp
|
||||
|
||||
|
||||
echo "fixed rust host build error"
|
||||
sed -i 's/--set=llvm\.download-ci-llvm=false/--set=llvm.download-ci-llvm=true/' feeds/packages/lang/rust/Makefile
|
||||
grep -q -- '--ci false \\' feeds/packages/lang/rust/Makefile || sed -i '/x\.py \\/a \ --ci false \\' feeds/packages/lang/rust/Makefile
|
||||
|
||||
|
||||
echo "Patch application completed"
|
||||
#--------------------------------------end_patches--------------------------------------------
|
||||
|
||||
echo "CONFIG_ALL_NONSHARED=n" > .config
|
||||
echo "CONFIG_ALL_KMODS=n" >> .config
|
||||
|
||||
128
.github/workflows/Auto update packages v2.yml
vendored
128
.github/workflows/Auto update packages v2.yml
vendored
@@ -30,7 +30,7 @@ env:
|
||||
|
||||
jobs:
|
||||
job_init:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@main
|
||||
@@ -48,6 +48,7 @@ jobs:
|
||||
repository: ${{ github.repository }}
|
||||
retain_days: 1
|
||||
keep_minimum_runs: 0
|
||||
delete_workflow_pattern: 'Auto update packages v2'
|
||||
|
||||
- name: SSH connection to Actions
|
||||
uses: mxschmitt/action-tmate@v3.13
|
||||
@@ -56,12 +57,12 @@ jobs:
|
||||
job_auto_update_packages:
|
||||
if: ${{ always() }}
|
||||
needs: job_init
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-latest
|
||||
name: Auto-update-${{ matrix.pakcages }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
pakcages: [hysteria, ipt2socks, microsocks, shadowsocks-rust, sing-box, trojan, v2ray-core, v2ray-plugin, xray-core, xray-plugin, v2ray-geoip, v2ray-geosite, dns2tcp]
|
||||
pakcages: [hysteria, ipt2socks, microsocks, shadowsocks-rust, sing-box, v2ray-core, v2ray-plugin, xray-core, xray-plugin, v2ray-geoip, v2ray-geosite]
|
||||
include:
|
||||
# - pakcages: brook
|
||||
# folder: brook
|
||||
@@ -139,16 +140,16 @@ jobs:
|
||||
release_download_url: https://codeload.github.com/SagerNet/sing-box/tar.gz/v
|
||||
file_name:
|
||||
|
||||
- pakcages: trojan
|
||||
folder: trojan
|
||||
version_head: PKG_VERSION:=
|
||||
hash_head: PKG_HASH:=
|
||||
version_line:
|
||||
hash_line:
|
||||
release_api_command: curl -sL "https://api.github.com/repos/trojan-gfw/trojan/releases" | jq -r 'map(select(.prerelease|not)) | first | .tag_name' | sed -e 's/.*v//'
|
||||
prerelease_api_command: curl -sL "https://api.github.com/repos/trojan-gfw/trojan/releases" | jq -r 'first | .tag_name' | sed -e 's/.*v//'
|
||||
release_download_url: https://codeload.github.com/trojan-gfw/trojan/tar.gz/v
|
||||
file_name:
|
||||
# - pakcages: trojan
|
||||
# folder: trojan
|
||||
# version_head: PKG_VERSION:=
|
||||
# hash_head: PKG_HASH:=
|
||||
# version_line:
|
||||
# hash_line:
|
||||
# release_api_command: curl -sL "https://api.github.com/repos/trojan-gfw/trojan/releases" | jq -r 'map(select(.prerelease|not)) | first | .tag_name' | sed -e 's/.*v//'
|
||||
# prerelease_api_command: curl -sL "https://api.github.com/repos/trojan-gfw/trojan/releases" | jq -r 'first | .tag_name' | sed -e 's/.*v//'
|
||||
# release_download_url: https://codeload.github.com/trojan-gfw/trojan/tar.gz/v
|
||||
# file_name:
|
||||
|
||||
# - pakcages: trojan-go
|
||||
# folder: trojan-go
|
||||
@@ -161,16 +162,16 @@ jobs:
|
||||
# release_download_url: https://codeload.github.com/p4gefau1t/trojan-go/tar.gz/v
|
||||
# file_name:
|
||||
|
||||
- pakcages: v2ray-core
|
||||
folder: v2ray-core
|
||||
version_head: PKG_VERSION:=
|
||||
hash_head: PKG_HASH:=
|
||||
version_line:
|
||||
hash_line:
|
||||
release_api_command: curl -sL "https://api.github.com/repos/v2fly/v2ray-core/releases" | jq -r 'map(select(.prerelease|not)) | first | .tag_name' | sed -e 's/.*v//'
|
||||
prerelease_api_command: curl -sL "https://api.github.com/repos/v2fly/v2ray-core/releases" | jq -r 'first | .tag_name' | sed -e 's/.*v//'
|
||||
release_download_url: https://codeload.github.com/v2fly/v2ray-core/tar.gz/v
|
||||
file_name:
|
||||
# - pakcages: v2ray-core
|
||||
# folder: v2ray-core
|
||||
# version_head: PKG_VERSION:=
|
||||
# hash_head: PKG_HASH:=
|
||||
# version_line:
|
||||
# hash_line:
|
||||
# release_api_command: curl -sL "https://api.github.com/repos/v2fly/v2ray-core/releases" | jq -r 'map(select(.prerelease|not)) | first | .tag_name' | sed -e 's/.*v//'
|
||||
# prerelease_api_command: curl -sL "https://api.github.com/repos/v2fly/v2ray-core/releases" | jq -r 'first | .tag_name' | sed -e 's/.*v//'
|
||||
# release_download_url: https://codeload.github.com/v2fly/v2ray-core/tar.gz/v
|
||||
# file_name:
|
||||
|
||||
- pakcages: v2ray-plugin
|
||||
folder: v2ray-plugin
|
||||
@@ -211,9 +212,9 @@ jobs:
|
||||
hash_head: \ HASH:=
|
||||
version_line:
|
||||
hash_line: 21
|
||||
release_api_command: curl -sL "https://api.github.com/repos/v2fly/geoip/releases" | jq -r 'map(select(.prerelease|not)) | first | .tag_name' | sed -e 's/.*v//'
|
||||
prerelease_api_command: curl -sL "https://api.github.com/repos/v2fly/geoip/releases" | jq -r 'first | .tag_name' | sed -e 's/.*v//'
|
||||
release_download_url: https://github.com/v2fly/geoip/releases/download/
|
||||
release_api_command: curl -sL "https://api.github.com/repos/Loyalsoldier/geoip/releases" | jq -r 'map(select(.prerelease|not)) | first | .tag_name' | sed -e 's/.*v//'
|
||||
prerelease_api_command: curl -sL "https://api.github.com/repos/Loyalsoldier/geoip/releases" | jq -r 'first | .tag_name' | sed -e 's/.*v//'
|
||||
release_download_url: https://github.com/Loyalsoldier/geoip/releases/download/
|
||||
file_name: /geoip.dat
|
||||
|
||||
- pakcages: v2ray-geosite
|
||||
@@ -222,21 +223,21 @@ jobs:
|
||||
hash_head: \ HASH:=
|
||||
version_line:
|
||||
hash_line: 30
|
||||
release_api_command: curl -sL "https://api.github.com/repos/v2fly/domain-list-community/releases" | jq -r 'map(select(.prerelease|not)) | first | .tag_name' | sed -e 's/.*v//'
|
||||
prerelease_api_command: curl -sL "https://api.github.com/repos/v2fly/domain-list-community/releases" | jq -r 'first | .tag_name' | sed -e 's/.*v//'
|
||||
release_download_url: https://github.com/v2fly/domain-list-community/releases/download/
|
||||
file_name: /dlc.dat
|
||||
release_api_command: curl -sL "https://api.github.com/repos/Loyalsoldier/v2ray-rules-dat/releases" | jq -r 'map(select(.prerelease|not)) | first | .tag_name' | sed -e 's/.*v//'
|
||||
prerelease_api_command: curl -sL "https://api.github.com/repos/Loyalsoldier/v2ray-rules-dat/releases" | jq -r 'first | .tag_name' | sed -e 's/.*v//'
|
||||
release_download_url: https://github.com/Loyalsoldier/v2ray-rules-dat/releases/download/
|
||||
file_name: /geosite.dat
|
||||
|
||||
- pakcages: dns2tcp
|
||||
folder: dns2tcp
|
||||
version_head: PKG_VERSION:=
|
||||
hash_head: PKG_HASH:=
|
||||
version_line:
|
||||
hash_line:
|
||||
release_api_command: curl -sL "https://api.github.com/repos/zfl9/dns2tcp/releases" | jq -r 'map(select(.prerelease|not)) | first | .tag_name' | sed -e 's/.*v//'
|
||||
prerelease_api_command: curl -sL "https://api.github.com/repos/zfl9/dns2tcp/releases" | jq -r 'first | .tag_name' | sed -e 's/.*v//'
|
||||
release_download_url: https://codeload.github.com/zfl9/dns2tcp/tar.gz/v
|
||||
file_name:
|
||||
# - pakcages: dns2tcp
|
||||
# folder: dns2tcp
|
||||
# version_head: PKG_VERSION:=
|
||||
# hash_head: PKG_HASH:=
|
||||
# version_line:
|
||||
# hash_line:
|
||||
# release_api_command: curl -sL "https://api.github.com/repos/zfl9/dns2tcp/releases" | jq -r 'map(select(.prerelease|not)) | first | .tag_name' | sed -e 's/.*v//'
|
||||
# prerelease_api_command: curl -sL "https://api.github.com/repos/zfl9/dns2tcp/releases" | jq -r 'first | .tag_name' | sed -e 's/.*v//'
|
||||
# release_download_url: https://codeload.github.com/zfl9/dns2tcp/tar.gz/v
|
||||
# file_name:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -343,20 +344,35 @@ jobs:
|
||||
- name: Create Pull Request
|
||||
id: cpr
|
||||
if: steps.check.outputs.status == 'success' && steps.check.outputs.New_PKG_VERSION != '' && steps.update.outputs.branch_exists == '' && !cancelled()
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
commit-message: "${{ matrix.pakcages }}: update to ${{ steps.update.outputs.version }}"
|
||||
committer: smallprogram <smallprogram@foxmail.com>
|
||||
author: smallprogram <smallprogram@foxmail.com>
|
||||
signoff: false
|
||||
branch: patches-${{ matrix.pakcages }}-${{ steps.update.outputs.version }}
|
||||
base: main
|
||||
delete-branch: true
|
||||
body: |
|
||||
${{ matrix.pakcages }}: update to ${{ steps.update.outputs.version }}
|
||||
title: "${{ matrix.pakcages }}: update to ${{ steps.update.outputs.version }}"
|
||||
labels: |
|
||||
automated-pr
|
||||
draft: false
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
branch="patches-${{ matrix.pakcages }}-${{ steps.update.outputs.version }}"
|
||||
title="${{ matrix.pakcages }}: update to ${{ steps.update.outputs.version }}"
|
||||
EXISTING=$(gh pr list \
|
||||
--state open \
|
||||
--base main \
|
||||
--json number,title \
|
||||
--jq ".[] | select(.title == \"$title\") | .number" \
|
||||
|| echo "")
|
||||
|
||||
if [ -n "$EXISTING" ]; then
|
||||
echo "Duplicate PR with title '$TITLE' already exists: #$EXISTING"
|
||||
else
|
||||
git config --global user.email "smallprogram@foxmail.com"
|
||||
git config --global user.name "smallprogram"
|
||||
|
||||
|
||||
echo "No duplicate found, will create PR."
|
||||
git checkout -b "$branch"
|
||||
git add .
|
||||
git commit -m "${{ matrix.pakcages }}: update to ${{ steps.update.outputs.version }}"
|
||||
git push origin $branch
|
||||
|
||||
gh pr create \
|
||||
--title "$title" \
|
||||
--body "$title" \
|
||||
--base main \
|
||||
--head "$branch" \
|
||||
--label "automated-pr"
|
||||
fi
|
||||
|
||||
@@ -7,7 +7,7 @@ jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/stale@v7.0.0
|
||||
- uses: actions/stale@v10
|
||||
with:
|
||||
stale-issue-message: "Stale Issue"
|
||||
stale-pr-message: "Stale PR"
|
||||
|
||||
@@ -1,64 +1,64 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=chinadns-ng
|
||||
PKG_VERSION:=2024.12.22
|
||||
PKG_VERSION:=2025.08.09
|
||||
PKG_RELEASE:=1
|
||||
|
||||
ifeq ($(ARCH),aarch64)
|
||||
ifeq ($(BOARD),rockchip)
|
||||
PKG_ARCH:=chinadns-ng+wolfssl@aarch64-linux-musl@generic+v8a@fast+lto
|
||||
PKG_HASH:=2e17092170abf989c5333a021cdb6789059069a24cf06856a5805336b99fd1a7
|
||||
PKG_HASH:=3fe0217615dd7060b7287d2b6b31d2a0b364137398bfb335a03bead322eac716
|
||||
else
|
||||
PKG_ARCH:=chinadns-ng+wolfssl_noasm@aarch64-linux-musl@generic+v8a@fast+lto
|
||||
PKG_HASH:=a4d58dc9f9a6d49133f008b4f3941486396934ae2b3f9ebf9b8bf5e3d1cf656b
|
||||
PKG_HASH:=42ddd494200ec6d88b35902927688d316bc23e06e6c08d9e01eb2412196ab845
|
||||
endif
|
||||
else ifeq ($(ARCH),arm)
|
||||
ifeq ($(CONFIG_arm_v6),y)
|
||||
PKG_ARCH:=chinadns-ng+wolfssl@arm-linux-musleabi@generic+v6+soft_float@fast+lto
|
||||
PKG_HASH:=e0af25ed7516b4e2bffd8cfb22b45cc1dbdeb47bce02f6495ca8ea1c407fd75c
|
||||
PKG_HASH:=0a401d1dc11129481b2baf86f847d55d66bd7e725cba4bf57875fdad27ef0052
|
||||
else ifeq ($(CONFIG_arm_v7),y)
|
||||
ifeq ($(CONFIG_HAS_FPU),y)
|
||||
PKG_ARCH:=chinadns-ng+wolfssl@arm-linux-musleabihf@generic+v7a@fast+lto
|
||||
PKG_HASH:=e7a42ed517c73c56bdd7ddf52b5e1263b7aea488ceb82c303278fc7760353b90
|
||||
PKG_HASH:=dfa1f6ba80fb0925613822f4c4e00df8da68e7b8b772048d26a0d1a9d07d346b
|
||||
else
|
||||
PKG_ARCH:=chinadns-ng+wolfssl@arm-linux-musleabi@generic+v6+soft_float@fast+lto
|
||||
PKG_HASH:=e0af25ed7516b4e2bffd8cfb22b45cc1dbdeb47bce02f6495ca8ea1c407fd75c
|
||||
PKG_HASH:=0a401d1dc11129481b2baf86f847d55d66bd7e725cba4bf57875fdad27ef0052
|
||||
endif
|
||||
else
|
||||
PKG_ARCH:=chinadns-ng+wolfssl@arm-linux-musleabi@generic+v5te+soft_float@fast+lto
|
||||
PKG_HASH:=8c4578085c1d265f9ec461aea53699b1f7619abd69850dec036298935c92a24c
|
||||
PKG_HASH:=dc104953fcd95c1c98b7b2b54b0b6731565e0650f81230e6de127a486803f42f
|
||||
endif
|
||||
else ifeq ($(ARCH),mips)
|
||||
PKG_ARCH:=chinadns-ng+wolfssl@mips-linux-musl@mips32+soft_float@fast+lto
|
||||
PKG_HASH:=926811e55d46ed275f678b62d9fe67e35a053243475306c391b1c3c6a61d9710
|
||||
PKG_HASH:=b610821a8f61b0ed3c8c7e82e10d401348a9de17f900988589024a37c4099c8e
|
||||
else ifeq ($(ARCH),mipsel)
|
||||
ifeq ($(CONFIG_HAS_FPU),)
|
||||
PKG_ARCH:=chinadns-ng+wolfssl@mipsel-linux-musl@mips32+soft_float@fast+lto
|
||||
PKG_HASH:=071ed28e06f9306b4f25c2b9a9bb83ddcfb4dde0cc08d0b232efd772f8a8792a
|
||||
PKG_HASH:=760544a88724e3b1b9eac79c9400231e81aa8786f8f00a979229e175811ffe6d
|
||||
else
|
||||
PKG_ARCH:=chinadns-ng+wolfssl@mipsel-linux-musl@mips32@fast+lto
|
||||
PKG_HASH:=3fc760ff12e3455bd6cbf3d65c2f0f0a8eb806e451bdadcfb6d3e19ee0dd8960
|
||||
PKG_HASH:=ec547c31a884e0967437ceb90a5c270864efe81b0e40939e0ec2810c7bfd6653
|
||||
endif
|
||||
else ifeq ($(ARCH),mips64)
|
||||
PKG_ARCH:=chinadns-ng+wolfssl@mips64-linux-musl@mips64+soft_float@fast+lto
|
||||
PKG_HASH:=b79090caee28ce266829ae82edb97ac18c65c6c570625912533d46753def0515
|
||||
PKG_HASH:=2d0fce18a7ef1d74fdc12738767e66998a52c2b30d8790da760933853fe8726e
|
||||
else ifeq ($(ARCH),mips64el)
|
||||
PKG_ARCH:=chinadns-ng+wolfssl@mips64el-linux-musl@mips64+soft_float@fast+lto
|
||||
PKG_HASH:=bafed35c8e081d8781651180bd3929542704e098ef5fbcf92a6aa7a75e5498b0
|
||||
PKG_HASH:=a301d8d200d06582c60bbe0e487a28f5b41e6f0997a548cf882a7b078dab089c
|
||||
else ifeq ($(ARCH),i386)
|
||||
ifneq ($(CONFIG_TARGET_x86_geode)$(CONFIG_TARGET_x86_legacy),)
|
||||
PKG_ARCH:=chinadns-ng+wolfssl@i386-linux-musl@i686@fast+lto
|
||||
PKG_HASH:=1149d9fdcf0ca798c63624e62e6c76314aa7b0940e782cc0d064e618772c4b22
|
||||
PKG_HASH:=85e057dd0a0e8913b30471737436ab8b71834c494ed9f9e53544261b1ffdc8d6
|
||||
else
|
||||
PKG_ARCH:=chinadns-ng+wolfssl@i386-linux-musl@pentium4@fast+lto
|
||||
PKG_HASH:=51d491096c52f0e39a617817f3721f8d4be459a2f40afe0e19c6f1c3a35f5c26
|
||||
PKG_HASH:=2d0f1a05c82f2e21e71a6618c7f1d2e7f46aa6a21535d774d517e87ec00c989b
|
||||
endif
|
||||
else ifeq ($(ARCH),x86_64)
|
||||
PKG_ARCH:=chinadns-ng+wolfssl@x86_64-linux-musl@x86_64@fast+lto
|
||||
PKG_HASH:=4b9548191b856690182f98b721512b9a50004986ecebf6eeed71cb709acbd1f5
|
||||
PKG_HASH:=842ea4e9816efd91d39bc76ead5c4a42e79011757e37c521b4270b675cfcb30c
|
||||
else ifeq ($(ARCH),riscv64)
|
||||
PKG_ARCH:=chinadns-ng+wolfssl@riscv64-linux-musl@baseline_rv64@fast+lto
|
||||
PKG_HASH:=202eeb3f9a9a404defdc10b55ace25f4b2cbc82ff80d3cdf5f7274aa0c804213
|
||||
PKG_HASH:=7056f47f4d6b20109e007792694dc83e5eac44c9265d7be20f6dc10375b35a9b
|
||||
else
|
||||
PKG_HASH:=dummy
|
||||
endif
|
||||
@@ -79,7 +79,7 @@ define Package/chinadns-ng
|
||||
SUBMENU:=IP Addresses and Names
|
||||
TITLE:=ChinaDNS next generation, refactoring with epoll and ipset.
|
||||
URL:=https://github.com/zfl9/chinadns-ng
|
||||
DEPENDS:=@(aarch64||arm||i386||mips||mipsel||mips64||mips64el||x86_64||riscv64) +ipset
|
||||
DEPENDS:=@(aarch64||arm||i386||mips||mipsel||mips64||mips64el||x86_64||riscv64)
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
|
||||
@@ -8,8 +8,8 @@ PKG_NAME:=dns2socks
|
||||
PKG_VERSION:=2.1
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip
|
||||
PKG_SOURCE_URL:=@SF/dns2socks/SourceCode.zip?
|
||||
PKG_SOURCE:=SourceCode.zip
|
||||
PKG_SOURCE_URL:=https://github.com/xiaorouji/openwrt-passwall-packages/releases/download/dns2socks
|
||||
PKG_SOURCE_DATE:=2020-02-18
|
||||
PKG_HASH:=406b5003523577d39da66767adfe54f7af9b701374363729386f32f6a3a995f4
|
||||
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-only
|
||||
#
|
||||
# Copyright (C) 2022 ImmortalWrt.org
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=dns2tcp
|
||||
PKG_VERSION:=1.1.2
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/zfl9/dns2tcp/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=5e8c6302a1d32c16ae7d4b8e39cd9aad1f2d7e68fe18813e76cb1e48ec5940d2
|
||||
|
||||
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||
PKG_LICENSE:=AGPL-3.0-only
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_USE_MIPS16:=0
|
||||
PKG_BUILD_FLAGS:=no-mips16
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/dns2tcp
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
SUBMENU:=IP Addresses and Names
|
||||
TITLE:=utility to convert dns query from udp to tcp
|
||||
URL:=https://github.com/zfl9/dns2tcp
|
||||
endef
|
||||
|
||||
TARGET_CFLAGS+= $(FPIC) -Wl,--gc-sections -flto
|
||||
MAKE_FLAGS+= \
|
||||
CFLAGS="-std=c99 $(TARGET_CFLAGS)" \
|
||||
EVCFLAGS="$(TARGET_CFLAGS)"
|
||||
|
||||
define Package/dns2tcp/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/dns2tcp $(1)/usr/bin/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,dns2tcp))
|
||||
@@ -1,12 +1,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=geoview
|
||||
PKG_VERSION:=0.1.2
|
||||
PKG_VERSION:=0.2.2
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/snowie2000/geoview/tar.gz/$(PKG_VERSION)?
|
||||
PKG_HASH:=f5a6a5a35540c94975c5d3c2f71256964f77c103afcafefc6f3f0e29aa18416d
|
||||
PKG_HASH:=3cdec7da60d5ec84f71e086fdc77f43287d064371f51d49bcfe09abd50604343
|
||||
|
||||
PKG_LICENSE:=Apache-2.0
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
70
gn/Makefile
70
gn/Makefile
@@ -1,70 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-only
|
||||
#
|
||||
# Copyright (C) 2022 ImmortalWrt.org
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=gn
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://gn.googlesource.com/gn.git
|
||||
PKG_SOURCE_DATE:=2024-11-19
|
||||
PKG_SOURCE_VERSION:=24e92acb847233a9c0753c12cb82c98fc084e3db
|
||||
PKG_MIRROR_HASH:=d5b18b91286f0029e262fc548e4d9636c195a45d41c211f321b126040e246d1d
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.xz
|
||||
|
||||
PKG_LICENSE:=BSD 3-Clause
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||
|
||||
PKG_HOST_ONLY:=1
|
||||
HOST_BUILD_PARALLEL:=1
|
||||
|
||||
ifeq ($(strip $(NINJA)),)
|
||||
ifneq ($(wildcard $(TOPDIR)/feeds/packages/devel/ninja/ninja.mk),)
|
||||
HOST_BUILD_DEPENDS:=ninja/host
|
||||
NINJA = \
|
||||
MAKEFLAGS="$(MAKE_JOBSERVER)" \
|
||||
$(STAGING_DIR_HOSTPKG)/bin/ninja \
|
||||
$(if $(findstring c,$(OPENWRT_VERBOSE)),-v) \
|
||||
$(if $(MAKE_JOBSERVER),,-j1)
|
||||
endif
|
||||
endif
|
||||
|
||||
include $(INCLUDE_DIR)/host-build.mk
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/gn
|
||||
SECTION:=devel
|
||||
CATEGORY:=Development
|
||||
TITLE:=A meta-build system that generates build files for Ninja
|
||||
URL:=https://gn.googlesource.com/gn/
|
||||
BUILDONLY:=1
|
||||
endef
|
||||
|
||||
define Package/gn/description
|
||||
GN can generate Ninja build files for C, C++, Rust, Objective C,
|
||||
and Swift source on most popular platforms.
|
||||
endef
|
||||
|
||||
define Host/Configure
|
||||
$(PYTHON) $(HOST_BUILD_DIR)/build/gen.py \
|
||||
--no-last-commit-position
|
||||
endef
|
||||
|
||||
define Host/Compile
|
||||
+$(NINJA) -C $(HOST_BUILD_DIR)/out
|
||||
endef
|
||||
|
||||
define Host/Install
|
||||
$(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/bin/
|
||||
$(INSTALL_BIN) $(HOST_BUILD_DIR)/out/gn $(STAGING_DIR_HOSTPKG)/bin/
|
||||
endef
|
||||
|
||||
define Host/Clean
|
||||
$(RM) $(STAGING_DIR_HOSTPKG)/bin/gn
|
||||
endef
|
||||
|
||||
$(eval $(call HostBuild))
|
||||
$(eval $(call BuildPackage,gn))
|
||||
@@ -1,11 +0,0 @@
|
||||
--- a/build/gen.py
|
||||
+++ b/build/gen.py
|
||||
@@ -368,7 +368,7 @@ def WriteGNNinja(path, platform, host, o
|
||||
cxx = os.environ.get('CXX', 'g++')
|
||||
ld = os.environ.get('LD', 'g++')
|
||||
ar = os.environ.get('AR', 'ar -X64')
|
||||
- elif platform.is_msys() or platform.is_mingw():
|
||||
+ elif platform.is_msys() or platform.is_mingw() or platform.is_linux():
|
||||
cxx = os.environ.get('CXX', 'g++')
|
||||
ld = os.environ.get('LD', 'g++')
|
||||
ar = os.environ.get('AR', 'ar')
|
||||
@@ -1,9 +0,0 @@
|
||||
// Generated by build/gen.py.
|
||||
|
||||
#ifndef OUT_LAST_COMMIT_POSITION_H_
|
||||
#define OUT_LAST_COMMIT_POSITION_H_
|
||||
|
||||
#define LAST_COMMIT_POSITION_NUM 2205
|
||||
#define LAST_COMMIT_POSITION "2205 (24e92acb8472)"
|
||||
|
||||
#endif // OUT_LAST_COMMIT_POSITION_H_
|
||||
@@ -5,12 +5,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=hysteria
|
||||
PKG_VERSION:=2.6.1
|
||||
PKG_VERSION:=2.6.5
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/apernet/hysteria/tar.gz/app/v$(PKG_VERSION)?
|
||||
PKG_HASH:=21955752d4a9fcbe42cde9e491421b67144e0070cba184884ad7f8d4ff1f48de
|
||||
PKG_HASH:=21a04ef8ce640d7c60c3b8678500b6e6481862d9af62f9ce2663b772211718d0
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-app-v$(PKG_VERSION)
|
||||
|
||||
PKG_LICENSE:=MIT
|
||||
|
||||
@@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=microsocks
|
||||
PKG_VERSION:=1.0.5
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/rofl0r/microsocks/tar.gz/v$(PKG_VERSION)?
|
||||
@@ -25,7 +25,7 @@ define Package/microsocks
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
SUBMENU:=Web Servers/Proxies
|
||||
TITLE:=Tiny, portable SOCKS5 server
|
||||
TITLE:=Tiny, portable SOCKS5 server. Support forwarding rules
|
||||
URL:=https://github.com/rofl0r/microsocks
|
||||
DEPENDS:=+libpthread
|
||||
endef
|
||||
@@ -33,6 +33,7 @@ endef
|
||||
define Package/microsocks/description
|
||||
A SOCKS5 service that you can run on your remote boxes to tunnel connections
|
||||
through them, if for some reason SSH doesn't cut it for you.
|
||||
This version supports forwarding rules.
|
||||
endef
|
||||
|
||||
define Package/microsocks/install
|
||||
|
||||
428
microsocks/patches/100-Add-SOCKS5-forwarding-rules-support.patch
Normal file
428
microsocks/patches/100-Add-SOCKS5-forwarding-rules-support.patch
Normal file
@@ -0,0 +1,428 @@
|
||||
--- a/sockssrv.c
|
||||
+++ b/sockssrv.c
|
||||
@@ -33,8 +33,10 @@
|
||||
#include <arpa/inet.h>
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
+#include <sys/time.h>
|
||||
#include "server.h"
|
||||
#include "sblist.h"
|
||||
+#define MICROSOCKS_VERSION "1.0.5-forward"
|
||||
|
||||
/* timeout in microseconds on resource exhaustion to prevent excessive
|
||||
cpu usage. */
|
||||
@@ -71,6 +73,7 @@
|
||||
static pthread_rwlock_t auth_ips_lock = PTHREAD_RWLOCK_INITIALIZER;
|
||||
static const struct server* server;
|
||||
static union sockaddr_union bind_addr = {.v4.sin_family = AF_UNSPEC};
|
||||
+static sblist *fwd_rules;
|
||||
|
||||
enum socksstate {
|
||||
SS_1_CONNECTED,
|
||||
@@ -97,6 +100,17 @@
|
||||
EC_ADDRESSTYPE_NOT_SUPPORTED = 8,
|
||||
};
|
||||
|
||||
+struct fwd_rule {
|
||||
+ char *match_name;
|
||||
+ short match_port;
|
||||
+ char *auth_buf; /* Username/Password request buffer (RFC-1929) */
|
||||
+ size_t auth_len;
|
||||
+ char *upstream_name;
|
||||
+ short upstream_port;
|
||||
+ char *req_buf; /* Client Connection Request buffer to send to upstream */
|
||||
+ size_t req_len;
|
||||
+};
|
||||
+
|
||||
struct thread {
|
||||
pthread_t pt;
|
||||
struct client client;
|
||||
@@ -116,6 +130,109 @@
|
||||
static void dolog(const char* fmt, ...) { }
|
||||
#endif
|
||||
|
||||
+static int upstream_handshake(const struct fwd_rule* rule, unsigned char *client_buf, size_t client_buf_len,
|
||||
+ int client_fd, int upstream_fd, unsigned short client_port) {
|
||||
+ unsigned char sbuf[512];
|
||||
+ ssize_t r;
|
||||
+
|
||||
+ if(rule->auth_buf) {
|
||||
+ unsigned char handshake[4] = {5, 2, 0, 2};
|
||||
+ if (write(upstream_fd, handshake, 4) != 4) {
|
||||
+ close(upstream_fd);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ } else {
|
||||
+ unsigned char handshake[3] = {5, 1, 0};
|
||||
+ if (write(upstream_fd, handshake, 3) != 3) {
|
||||
+ close(upstream_fd);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (read(upstream_fd, sbuf, 2) != 2 || sbuf[0] != 5) {
|
||||
+ close(upstream_fd);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ if (sbuf[1] == 2) {
|
||||
+ if (!rule->auth_buf) {
|
||||
+ close(upstream_fd);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ if (write(upstream_fd, rule->auth_buf, rule->auth_len) != (ssize_t)rule->auth_len) {
|
||||
+ close(upstream_fd);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ if (read(upstream_fd, sbuf, 2) != 2 || sbuf[0] != 1 || sbuf[1] != 0) {
|
||||
+ close(upstream_fd);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ } else if (sbuf[1] != 0) {
|
||||
+ close(upstream_fd);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ if (write(upstream_fd, client_buf, client_buf_len) != (ssize_t)client_buf_len) {
|
||||
+ close(upstream_fd);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ size_t total = 0;
|
||||
+ size_t need = 4;
|
||||
+
|
||||
+ while (total < need) {
|
||||
+ r = read(upstream_fd, sbuf + total, need - total);
|
||||
+ if (r <= 0) {
|
||||
+ close(upstream_fd);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ total += r;
|
||||
+ }
|
||||
+
|
||||
+ if (sbuf[1] != 0) {
|
||||
+ close(upstream_fd);
|
||||
+ return -sbuf[1];
|
||||
+ }
|
||||
+
|
||||
+ size_t need_more = 0;
|
||||
+ switch (sbuf[3]) {
|
||||
+ case 1:
|
||||
+ need_more = 4 + 2;
|
||||
+ break;
|
||||
+ case 4:
|
||||
+ need_more = 16 + 2;
|
||||
+ break;
|
||||
+ case 3:
|
||||
+ r = read(upstream_fd, sbuf + total, 1);
|
||||
+ if (r != 1) {
|
||||
+ close(upstream_fd);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ total += r;
|
||||
+ need_more = sbuf[4] + 2;
|
||||
+ break;
|
||||
+ default:
|
||||
+ close(upstream_fd);
|
||||
+ return -EC_ADDRESSTYPE_NOT_SUPPORTED;
|
||||
+ }
|
||||
+
|
||||
+ while (total < need + need_more) {
|
||||
+ r = read(upstream_fd, sbuf + total, (need + need_more) - total);
|
||||
+ if (r <= 0) {
|
||||
+ close(upstream_fd);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ total += r;
|
||||
+ }
|
||||
+
|
||||
+ if (write(client_fd, sbuf, total) != (ssize_t)total) {
|
||||
+ close(upstream_fd);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ return upstream_fd;
|
||||
+}
|
||||
+
|
||||
static struct addrinfo* addr_choose(struct addrinfo* list, union sockaddr_union* bindaddr) {
|
||||
int af = SOCKADDR_UNION_AF(bindaddr);
|
||||
if(af == AF_UNSPEC) return list;
|
||||
@@ -125,7 +242,9 @@
|
||||
return list;
|
||||
}
|
||||
|
||||
-static int connect_socks_target(unsigned char *buf, size_t n, struct client *client) {
|
||||
+static int connect_socks_target(unsigned char *buf, size_t n, struct client *client, int *used_rule) {
|
||||
+ *used_rule = 0;
|
||||
+
|
||||
if(n < 5) return -EC_GENERAL_FAILURE;
|
||||
if(buf[0] != 5) return -EC_GENERAL_FAILURE;
|
||||
if(buf[1] != 1) return -EC_COMMAND_NOT_SUPPORTED; /* we support only CONNECT method */
|
||||
@@ -158,6 +277,29 @@
|
||||
}
|
||||
unsigned short port;
|
||||
port = (buf[minlen-2] << 8) | buf[minlen-1];
|
||||
+
|
||||
+ size_t i;
|
||||
+ struct fwd_rule *rule = NULL;
|
||||
+ char original_name[256];
|
||||
+ unsigned short original_port = port;
|
||||
+ strncpy(original_name, namebuf, sizeof(original_name) - 1);
|
||||
+ original_name[sizeof(original_name) - 1] = '\0';
|
||||
+ if(fwd_rules) {
|
||||
+ for(i=0;i<sblist_getsize(fwd_rules);++i) {
|
||||
+ struct fwd_rule* r = (struct fwd_rule*)sblist_get(fwd_rules, i);
|
||||
+ int name_match = (r->match_name[0]=='\0' || strcmp(r->match_name, namebuf) == 0);
|
||||
+ int port_match = (r->match_port == 0 || r->match_port == port);
|
||||
+ if(name_match && port_match) {
|
||||
+ rule = r;
|
||||
+ *used_rule = 1;
|
||||
+ strncpy(namebuf, r->upstream_name, sizeof(namebuf)-1);
|
||||
+ namebuf[sizeof(namebuf)-1] = '\0';
|
||||
+ port = r->upstream_port;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
/* there's no suitable errorcode in rfc1928 for dns lookup failure */
|
||||
if(resolve(namebuf, port, &remote)) return -EC_GENERAL_FAILURE;
|
||||
struct addrinfo* raddr = addr_choose(remote, &bind_addr);
|
||||
@@ -186,6 +328,11 @@
|
||||
return -EC_GENERAL_FAILURE;
|
||||
}
|
||||
}
|
||||
+
|
||||
+ struct timeval tv = {5, 0};
|
||||
+ setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, (const char*)&tv, sizeof(tv));
|
||||
+ setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, (const char*)&tv, sizeof(tv));
|
||||
+
|
||||
if(SOCKADDR_UNION_AF(&bind_addr) == raddr->ai_family &&
|
||||
bindtoip(fd, &bind_addr) == -1)
|
||||
goto eval_errno;
|
||||
@@ -198,9 +345,22 @@
|
||||
af = SOCKADDR_UNION_AF(&client->addr);
|
||||
void *ipdata = SOCKADDR_UNION_ADDRESS(&client->addr);
|
||||
inet_ntop(af, ipdata, clientname, sizeof clientname);
|
||||
- dolog("client[%d] %s: connected to %s:%d\n", client->fd, clientname, namebuf, port);
|
||||
+ if (rule) {
|
||||
+ dolog("client[%d] %s: %s:%d -> via %s:%d\n", client->fd, clientname, original_name, original_port, rule->upstream_name, rule->upstream_port);
|
||||
+ } else {
|
||||
+ dolog("client[%d] %s: connected to %s:%d\n", client->fd, clientname, namebuf, port);
|
||||
+ }
|
||||
}
|
||||
- return fd;
|
||||
+
|
||||
+ if (rule) {
|
||||
+ int result = upstream_handshake(rule, buf, n, client->fd, fd, original_port);
|
||||
+ if (result < 0) {
|
||||
+ close(fd);
|
||||
+ return result;
|
||||
+ }
|
||||
+ return result;
|
||||
+ }
|
||||
+ return fd;
|
||||
}
|
||||
|
||||
static int is_authed(union sockaddr_union *client, union sockaddr_union *authedip) {
|
||||
@@ -322,6 +482,7 @@
|
||||
ssize_t n;
|
||||
int ret;
|
||||
enum authmethod am;
|
||||
+ int used_rule = 0;
|
||||
t->state = SS_1_CONNECTED;
|
||||
while((n = recv(t->client.fd, buf, sizeof buf, 0)) > 0) {
|
||||
switch(t->state) {
|
||||
@@ -345,12 +506,14 @@
|
||||
}
|
||||
break;
|
||||
case SS_3_AUTHED:
|
||||
- ret = connect_socks_target(buf, n, &t->client);
|
||||
+ ret = connect_socks_target(buf, n, &t->client, &used_rule);
|
||||
if(ret < 0) {
|
||||
send_error(t->client.fd, ret*-1);
|
||||
return -1;
|
||||
}
|
||||
- send_error(t->client.fd, EC_SUCCESS);
|
||||
+ if (!used_rule) {
|
||||
+ send_error(t->client.fd, EC_SUCCESS);
|
||||
+ }
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
@@ -382,11 +545,131 @@
|
||||
}
|
||||
}
|
||||
|
||||
+static short host_get_port(char *name) {
|
||||
+ int p,n;
|
||||
+ char *c;
|
||||
+ if((c = strrchr(name, ':')) && sscanf(c+1,"%d%n",&p, &n)==1 && n == (int)(strlen(c + 1)) && p >= 0 && p < USHRT_MAX)
|
||||
+ return (*c='\0'),(short)p;
|
||||
+ else
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
+static int fwd_rules_add(char *str) {
|
||||
+ char *match = NULL, *upstream = NULL, *remote = NULL;
|
||||
+ unsigned short match_port, upstream_port, remote_port;
|
||||
+ int ncred;
|
||||
+
|
||||
+ if(sscanf(str, "%m[^,],%n%m[^,],%ms\n", &match, &ncred, &upstream, &remote) != 3)
|
||||
+ return 1;
|
||||
+
|
||||
+ match_port = host_get_port(match);
|
||||
+ upstream_port = host_get_port(upstream);
|
||||
+ remote_port = host_get_port(remote);
|
||||
+
|
||||
+ if(match_port < 0 || upstream_port <= 0 || remote_port < 0) {
|
||||
+ free(match);
|
||||
+ free(upstream);
|
||||
+ free(remote);
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ char *match_copy = strdup(match);
|
||||
+ char *upstream_copy = strdup(upstream);
|
||||
+ char *remote_copy = strdup(remote);
|
||||
+
|
||||
+ struct fwd_rule *rule = (struct fwd_rule*)malloc(sizeof(struct fwd_rule));
|
||||
+ if (!rule) {
|
||||
+ free(match_copy);
|
||||
+ free(upstream_copy);
|
||||
+ free(remote_copy);
|
||||
+ free(match);
|
||||
+ free(upstream);
|
||||
+ free(remote);
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ if(strcmp(match_copy, "0.0.0.0") == 0 || strcmp(match_copy, "*") == 0) {
|
||||
+ free(match_copy);
|
||||
+ rule->match_name = strdup("");
|
||||
+ } else {
|
||||
+ rule->match_name = match_copy;
|
||||
+ }
|
||||
+ rule->match_port = match_port;
|
||||
+ rule->auth_buf = NULL;
|
||||
+ rule->auth_len = 0;
|
||||
+
|
||||
+ char *at_sign = strchr(upstream_copy, '@');
|
||||
+ if (at_sign) {
|
||||
+ *at_sign = '\0';
|
||||
+ char *auth_part = upstream_copy;
|
||||
+ char *host_part = at_sign + 1;
|
||||
+ char *colon = strchr(auth_part, ':');
|
||||
+ if (!colon) {
|
||||
+ free(rule);
|
||||
+ free(upstream_copy);
|
||||
+ free(remote_copy);
|
||||
+ free(match);
|
||||
+ free(upstream);
|
||||
+ free(remote);
|
||||
+ return 1;
|
||||
+ }
|
||||
+ *colon++ = '\0';
|
||||
+ char *username = auth_part;
|
||||
+ char *password = colon;
|
||||
+ size_t ulen = strlen(username);
|
||||
+ size_t plen = strlen(password);
|
||||
+ if (ulen > 255 || plen > 255) {
|
||||
+ free(rule);
|
||||
+ free(upstream_copy);
|
||||
+ free(remote_copy);
|
||||
+ free(match);
|
||||
+ free(upstream);
|
||||
+ free(remote);
|
||||
+ return 1;
|
||||
+ }
|
||||
+ rule->auth_len = 1 + 1 + ulen + 1 + plen;
|
||||
+ rule->auth_buf = malloc(rule->auth_len);
|
||||
+ rule->auth_buf[0] = 1;
|
||||
+ rule->auth_buf[1] = ulen;
|
||||
+ memcpy(&rule->auth_buf[2], username, ulen);
|
||||
+ rule->auth_buf[2 + ulen] = plen;
|
||||
+ memcpy(&rule->auth_buf[3 + ulen], password, plen);
|
||||
+ rule->upstream_name = strdup(host_part);
|
||||
+ rule->upstream_port = upstream_port;
|
||||
+ /* hide from ps */
|
||||
+ memset(str+ncred, '*', ulen+1+plen);
|
||||
+ } else {
|
||||
+ rule->upstream_name = strdup(upstream_copy);
|
||||
+ rule->upstream_port = upstream_port;
|
||||
+ }
|
||||
+
|
||||
+ free(upstream_copy);
|
||||
+ short rlen = strlen(remote_copy);
|
||||
+ rule->req_len = 3 + 1 + 1 + rlen + 2;
|
||||
+ rule->req_buf = (char*)malloc(rule->req_len);
|
||||
+ rule->req_buf[0] = 5;
|
||||
+ rule->req_buf[1] = 1;
|
||||
+ rule->req_buf[2] = 0;
|
||||
+ rule->req_buf[3] = 3;
|
||||
+ rule->req_buf[4] = rlen;
|
||||
+ memcpy(&rule->req_buf[5], remote_copy, rlen);
|
||||
+ unsigned short rport = remote_port ? remote_port : 0;
|
||||
+ rule->req_buf[5 + rlen] = (rport >> 8) & 0xFF;
|
||||
+ rule->req_buf[5 + rlen + 1] = (rport & 0xFF);
|
||||
+ free(remote_copy);
|
||||
+ sblist_add(fwd_rules, rule);
|
||||
+ free(match);
|
||||
+ free(upstream);
|
||||
+ free(remote);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int usage(void) {
|
||||
dprintf(2,
|
||||
"MicroSocks SOCKS5 Server\n"
|
||||
"------------------------\n"
|
||||
- "usage: microsocks -1 -q -i listenip -p port -u user -P pass -b bindaddr -w ips\n"
|
||||
+ "usage: microsocks -1 -q -i listenip -p port -u user -P pass -b bindaddr -w ips -f fwdrule\n"
|
||||
"all arguments are optional.\n"
|
||||
"by default listenip is 0.0.0.0 and port 1080.\n\n"
|
||||
"option -q disables logging.\n"
|
||||
@@ -401,6 +684,12 @@
|
||||
" this is handy for programs like firefox that don't support\n"
|
||||
" user/pass auth. for it to work you'd basically make one connection\n"
|
||||
" with another program that supports it, and then you can use firefox too.\n"
|
||||
+ "option -f specifies a forwarding rule of the form\n"
|
||||
+ " match_name:match_port,[user:password@]upstream_name:upstream_port,remote_name:remote_port\n"
|
||||
+ " this will cause requests that /match/ to be renamed to /remote/\n"
|
||||
+ " and sent to the /upstream/ SOCKS5 proxy server.\n"
|
||||
+ " this option may be specified multiple times.\n"
|
||||
+ "option -V prints version information and exits.\n"
|
||||
);
|
||||
return 1;
|
||||
}
|
||||
@@ -416,7 +705,7 @@
|
||||
const char *listenip = "0.0.0.0";
|
||||
char *p, *q;
|
||||
unsigned port = 1080;
|
||||
- while((ch = getopt(argc, argv, ":1qb:i:p:u:P:w:")) != -1) {
|
||||
+ while((ch = getopt(argc, argv, ":1qb:i:p:u:P:w:f:V")) != -1) {
|
||||
switch(ch) {
|
||||
case 'w': /* fall-through */
|
||||
case '1':
|
||||
@@ -456,11 +745,20 @@
|
||||
case 'p':
|
||||
port = atoi(optarg);
|
||||
break;
|
||||
+ case 'f':
|
||||
+ if(!fwd_rules)
|
||||
+ fwd_rules = sblist_new(sizeof(struct fwd_rule), 16);
|
||||
+ if(fwd_rules_add(optarg))
|
||||
+ return dprintf(2, "error: could not parse forwarding rule %s\n", optarg), 1;
|
||||
+ break;
|
||||
case ':':
|
||||
dprintf(2, "error: option -%c requires an operand\n", optopt);
|
||||
/* fall through */
|
||||
case '?':
|
||||
return usage();
|
||||
+ case 'V':
|
||||
+ dprintf(1, "MicroSocks %s\n", MICROSOCKS_VERSION);
|
||||
+ return 0;
|
||||
}
|
||||
}
|
||||
if((auth_user && !auth_pass) || (!auth_user && auth_pass)) {
|
||||
@@ -1,8 +1,8 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=naiveproxy
|
||||
PKG_VERSION:=133.0.6943.49
|
||||
PKG_RELEASE:=1
|
||||
PKG_VERSION:=143.0.7499.109
|
||||
PKG_RELEASE:=2
|
||||
|
||||
ARCH_PREBUILT:=$(ARCH_PACKAGES)
|
||||
|
||||
@@ -25,47 +25,47 @@ PKG_SOURCE:=naiveproxy-v$(PKG_VERSION)-$(PKG_RELEASE)-openwrt-$(ARCH_PREBUILT).t
|
||||
PKG_SOURCE_URL:=https://github.com/klzgrad/naiveproxy/releases/download/v$(PKG_VERSION)-$(PKG_RELEASE)/
|
||||
|
||||
ifeq ($(ARCH_PREBUILT),aarch64_cortex-a53)
|
||||
PKG_HASH:=070ea4fec533a8ce32f55b6daf8c0431a9b532aba0a0a065583005c6baea77bc
|
||||
PKG_HASH:=e5eec05d7e799c4b6f93adb02129246142a88e427d76d6275a0312872031a1db
|
||||
else ifeq ($(ARCH_PREBUILT),aarch64_cortex-a72)
|
||||
PKG_HASH:=b442d4cd10612de60e88b29ed2f7662149570f0da093305511538194ed99f9cb
|
||||
PKG_HASH:=ca7975f7b711d1936d44b7a3676d4ddec59dd84339da0e28aa8bbc1fa738523a
|
||||
else ifeq ($(ARCH_PREBUILT),aarch64_generic)
|
||||
PKG_HASH:=110c0174bc9aeca41c03d207b1aa714c71528c03a8e148699b094473f8ef53f4
|
||||
PKG_HASH:=a4b34126901ad577a018332dd8cfa015ca5de1dcbbcf445465fb5a89a29a6b29
|
||||
else ifeq ($(ARCH_PREBUILT),arm_arm1176jzf-s_vfp)
|
||||
PKG_HASH:=dac5719da72e253e02533ba1902367289b5f8fc97e2f1b2e3787e3e702922f2d
|
||||
PKG_HASH:=ec0a9a76bc51d7608897db9d87c3e52a889989856b3456cf1b35c4a42891fc40
|
||||
else ifeq ($(ARCH_PREBUILT),arm_arm926ej-s)
|
||||
PKG_HASH:=04f237181162ff3e8d83f9f864efead8dcec60a5d75c69b7b112aa0d3107c7a7
|
||||
PKG_HASH:=bdd03cdec1f7215369cafdc7922f3d78ecd570a59d5cd04e829cab33c6dbc68e
|
||||
else ifeq ($(ARCH_PREBUILT),arm_cortex-a15_neon-vfpv4)
|
||||
PKG_HASH:=ec5bd89729eef1995b58f11f9e52f6495144001fdd3990116da598a9102d5454
|
||||
PKG_HASH:=fce86759321a06cc373ceef1a38fee456cf0383cc466a3762671b9a0fc4e13ba
|
||||
else ifeq ($(ARCH_PREBUILT),arm_cortex-a5_vfpv4)
|
||||
PKG_HASH:=bb06489f76b3c8e6420aa6119afa16fe4398f8a3a29478f3939838f60126e3cd
|
||||
PKG_HASH:=3bb0eef45955ccb656c0b074db40024e35a96c0588250534d25468242b21e067
|
||||
else ifeq ($(ARCH_PREBUILT),arm_cortex-a7)
|
||||
PKG_HASH:=2a5456cc82a92a69407ddc61b1cfc7d44290e6167d96d4c4fd2dfae53df7f4c5
|
||||
PKG_HASH:=42c95ce44d9abb1472f4817b5839252fc418cecd3b1d683a0211ca98e7e9a21f
|
||||
else ifeq ($(ARCH_PREBUILT),arm_cortex-a7_neon-vfpv4)
|
||||
PKG_HASH:=474af81306bbb4278b70d5803cd8b810b0bffa422027b09e0e4e8a6303a6441f
|
||||
PKG_HASH:=7222d40cc5b0f29e5858e6023e713cc69174672b2489a8c8525d031822b38230
|
||||
else ifeq ($(ARCH_PREBUILT),arm_cortex-a7_vfpv4)
|
||||
PKG_HASH:=7f69c052fc6fb35ad3f2f90142c5f03a1ca2d1aa3c5de42ed9c6c5e46db3bff5
|
||||
PKG_HASH:=1c15ceeb689d686e198afd0c1bb72b6c54ef89bde5b347205d6c2cedf359f37a
|
||||
else ifeq ($(ARCH_PREBUILT),arm_cortex-a8_vfpv3)
|
||||
PKG_HASH:=005df4da3739d42852da7931d15846f22442f0e7ef67716b33dbbfc04f6073e5
|
||||
PKG_HASH:=a5f370df608aba401cb5a761c17f994d27d1a912be1aa9c7bcc0417314ecfb62
|
||||
else ifeq ($(ARCH_PREBUILT),arm_cortex-a9)
|
||||
PKG_HASH:=a961140b121be616da691aa97a54e01ccf83d925b06d46f0a2e7f70ce93a337d
|
||||
PKG_HASH:=f5df82bd5d3a45e8869026977c2d30bac6ccc258dadb7046e3306d4e54395741
|
||||
else ifeq ($(ARCH_PREBUILT),arm_cortex-a9_neon)
|
||||
PKG_HASH:=ecd4f18604ee118be763b710a6a183bf4043387950304f0b2fcefb87beec2eeb
|
||||
PKG_HASH:=7600df27693dda5f43c7d38715b9d4664db77ed4488c77da822c690cb28fcf90
|
||||
else ifeq ($(ARCH_PREBUILT),arm_cortex-a9_vfpv3-d16)
|
||||
PKG_HASH:=707ff36bf95a4e71ff98dcc43182890cc1ac15b6d427c28e443134ca00295374
|
||||
PKG_HASH:=c010124d705e19da53e0df4658c23a5ad0ff71e89f8819e01f9e7011160042fa
|
||||
else ifeq ($(ARCH_PREBUILT),arm_mpcore)
|
||||
PKG_HASH:=135796bf6de20e1ddfb80f8aeb7c57098c1dcaeac2a566633255bb59eaf138a4
|
||||
PKG_HASH:=6ccbf7cf6b17b4cf4ab7b29b12a279b1fc79257f2fc569e81a5af6bda18819f4
|
||||
else ifeq ($(ARCH_PREBUILT),arm_xscale)
|
||||
PKG_HASH:=4f7f88885c4318259cfba73ff846eea1c5a94632f5c9d969d664eb1d7795380a
|
||||
PKG_HASH:=5367433f1759aa0b947f6180c9d1944205629d7829db9f3466bd38d40da57ae0
|
||||
else ifeq ($(ARCH_PREBUILT),mipsel_24kc)
|
||||
PKG_HASH:=6759691bfbd271ac310be605a95d73755c34cc9dbac02d506fb272203733a937
|
||||
PKG_HASH:=444a59288e3e7e80b2ca04fb4d6fb9a046a624cb01a9cea2314834c736561433
|
||||
else ifeq ($(ARCH_PREBUILT),mipsel_mips32)
|
||||
PKG_HASH:=543f521ac576667ffeeb3c2a1605cd427badb1dee863e78a562a055e25b6c540
|
||||
PKG_HASH:=fa568b8a8ed8505a99d5ca30568cbdb2539cc48d218c338a321fba116632daa1
|
||||
else ifeq ($(ARCH_PREBUILT),riscv64)
|
||||
PKG_HASH:=8723cdb1e77c59bf90888c6f4ae1dac8ffb0de369b5de69249a62c5eefae2507
|
||||
PKG_HASH:=13c1a43e58cef7219baf828250afb9390fd2ed9379d30f7d7b182db61492fe69
|
||||
else ifeq ($(ARCH_PREBUILT),x86)
|
||||
PKG_HASH:=50729ddb13d31caacc1cd2f6e96d7813478c7e693ae006e3a78e71fea82a2f23
|
||||
PKG_HASH:=8088dd1ea80321109248f68f6f1a7c45f5b4dc0982992aabde725c3503a5b442
|
||||
else ifeq ($(ARCH_PREBUILT),x86_64)
|
||||
PKG_HASH:=eb8fd19699363122f2dbaba8e8dce681e32415b8c485cbb5525ea26c107f1a0f
|
||||
PKG_HASH:=5681e13c833757cfb5769755fd93d1906c47448af190585067bde9de590bdb2e
|
||||
else
|
||||
PKG_HASH:=dummy
|
||||
endif
|
||||
|
||||
@@ -1,34 +1,28 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2021 ImmortalWrt
|
||||
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/procd.sh
|
||||
|
||||
USE_PROCD=1
|
||||
|
||||
START=99
|
||||
STOP=10
|
||||
|
||||
init_conf() {
|
||||
config_load "naiveproxy"
|
||||
config_get "enable" "config" "enable" "0"
|
||||
NAME="naiveproxy"
|
||||
|
||||
start_service() {
|
||||
config_load "$NAME"
|
||||
config_get_bool "enable" "config" "enable" "0"
|
||||
[ "$enable" -eq "1" ] || return 1
|
||||
|
||||
config_get "listen_addr" "config" "listen_addr"
|
||||
config_get "server_addr" "config" "server_addr"
|
||||
config_get "extra_argument" "config" "extra_argument"
|
||||
}
|
||||
|
||||
start_service() {
|
||||
init_conf
|
||||
[ "${enable}" == "1" ] || return 0
|
||||
|
||||
procd_open_instance naiveproxy
|
||||
|
||||
procd_set_param command naive
|
||||
procd_append_param command --listen="${listen_addr}"
|
||||
procd_append_param command --proxy="${server_addr}"
|
||||
[ -n "${extra_argument}" ] && procd_append_param command "${extra_argument}"
|
||||
procd_append_param command --listen="$listen_addr"
|
||||
procd_append_param command --proxy="$server_addr"
|
||||
[ -n "$extra_argument" ] && procd_append_param command $extra_argument
|
||||
|
||||
procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}
|
||||
procd_set_param respawn
|
||||
procd_set_param limits core="unlimited"
|
||||
procd_set_param stdout 1
|
||||
procd_set_param stderr 1
|
||||
@@ -36,12 +30,6 @@ start_service() {
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
reload_service()
|
||||
{
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger "naiveproxy"
|
||||
procd_add_reload_trigger "$NAME"
|
||||
}
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-only
|
||||
#
|
||||
# Copyright (C) 2021 ImmortalWrt.org
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=pdnsd
|
||||
PKG_VERSION:=1.2.9b_pre
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/shadowsocks/pdnsd.git
|
||||
PKG_SOURCE_DATE:=2012-04-26
|
||||
PKG_SOURCE_VERSION:=a8e46ccba7b0fa2230d6c42ab6dcd92926f6c21d
|
||||
PKG_MIRROR_HASH:=e3e9c56cf91b12d8db73def2c247be2f726a052bed012f7a1e48946375f8e478
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
|
||||
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_INSTALL:=1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/pdnsd-alt
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
SUBMENU:=IP Addresses and Names
|
||||
TITLE:=Proxy DNS Server
|
||||
DEPENDS:=+libpthread
|
||||
endef
|
||||
|
||||
define Package/pdnsd-alt/description
|
||||
pdnsd, is an IPv6 capable proxy DNS server with permanent caching (the cache
|
||||
contents are written to hard disk on exit) that is designed to cope with
|
||||
unreachable or down DNS servers (for example in dial-in networking).
|
||||
|
||||
pdnsd can be used with applications that do dns lookups, eg on startup, and
|
||||
can't be configured to change that behaviour, to prevent the often
|
||||
minute-long hangs (or even crashes) that result from stalled dns queries.
|
||||
endef
|
||||
|
||||
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include
|
||||
|
||||
CONFIGURE_ARGS += \
|
||||
--with-cachedir=/var/pdnsd \
|
||||
--with-target=Linux
|
||||
|
||||
define Package/pdnsd-alt/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/pdnsd $(1)/usr/sbin/pdnsd
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/pdnsd-ctl $(1)/usr/sbin/pdnsd-ctl
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,pdnsd-alt))
|
||||
@@ -1,42 +0,0 @@
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
-SUBDIRS = src doc contrib
|
||||
+SUBDIRS = src contrib
|
||||
|
||||
EXTRA_DIST = version ChangeLog.old COPYING.BSD README.par README.par.old PKGBUILD
|
||||
|
||||
--- a/Makefile.in
|
||||
+++ b/Makefile.in
|
||||
@@ -196,7 +196,7 @@ threadlib = @threadlib@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
-SUBDIRS = src doc contrib
|
||||
+SUBDIRS = src contrib
|
||||
EXTRA_DIST = version ChangeLog.old COPYING.BSD README.par README.par.old PKGBUILD
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -15,7 +15,7 @@ EXTRA_DIST = make_rr_types_h.pl rr_types
|
||||
|
||||
## Try to do this last
|
||||
|
||||
-SUBDIRS = . pdnsd-ctl rc test
|
||||
+SUBDIRS = . pdnsd-ctl
|
||||
|
||||
$(pdnsd_OBJECTS): rr_types.h
|
||||
|
||||
--- a/src/Makefile.in
|
||||
+++ b/src/Makefile.in
|
||||
@@ -215,7 +215,7 @@ pdnsd_SOURCES = conf-parser.c conff.c co
|
||||
freebsd_netinet_ip_icmp.h
|
||||
|
||||
EXTRA_DIST = make_rr_types_h.pl rr_types.in
|
||||
-SUBDIRS = . pdnsd-ctl rc test
|
||||
+SUBDIRS = . pdnsd-ctl
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
@@ -1,66 +0,0 @@
|
||||
--- a/src/conff.h
|
||||
+++ b/src/conff.h
|
||||
@@ -32,7 +32,7 @@
|
||||
#include <stdio.h>
|
||||
#include <pthread.h>
|
||||
#include <sys/socket.h>
|
||||
-#include <net/if.h>
|
||||
+#include <linux/if.h>
|
||||
#include "ipvers.h"
|
||||
#include "list.h"
|
||||
|
||||
--- a/src/dns.h
|
||||
+++ b/src/dns.h
|
||||
@@ -27,7 +27,7 @@
|
||||
#include <config.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <sys/socket.h>
|
||||
-#include <net/if.h>
|
||||
+#include <linux/if.h>
|
||||
#include <sys/types.h>
|
||||
#include <inttypes.h>
|
||||
#include "rr_types.h"
|
||||
--- a/src/dns_answer.c
|
||||
+++ b/src/dns_answer.c
|
||||
@@ -37,7 +37,7 @@
|
||||
#include <sys/uio.h>
|
||||
#include <sys/types.h>
|
||||
#ifdef HAVE_SYS_POLL_H
|
||||
-#include <sys/poll.h>
|
||||
+#include <poll.h>
|
||||
#endif
|
||||
#include <sys/param.h>
|
||||
#include <netdb.h>
|
||||
--- a/src/dns_query.c
|
||||
+++ b/src/dns_query.c
|
||||
@@ -23,7 +23,7 @@
|
||||
#include <config.h>
|
||||
#include <sys/types.h>
|
||||
#ifdef HAVE_SYS_POLL_H
|
||||
-#include <sys/poll.h>
|
||||
+#include <poll.h>
|
||||
#endif
|
||||
#include <stdlib.h>
|
||||
#include <netdb.h>
|
||||
--- a/src/icmp.c
|
||||
+++ b/src/icmp.c
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
#include <config.h>
|
||||
#ifdef HAVE_SYS_POLL_H
|
||||
-#include <sys/poll.h>
|
||||
+#include <poll.h>
|
||||
#endif
|
||||
#include <sys/time.h>
|
||||
#include <stdlib.h>
|
||||
--- a/src/netdev.c
|
||||
+++ b/src/netdev.c
|
||||
@@ -59,7 +59,7 @@
|
||||
#include "ipvers.h"
|
||||
#include <sys/stat.h>
|
||||
#include <sys/ioctl.h>
|
||||
-#include <net/if.h>
|
||||
+#include <linux/if.h>
|
||||
#include <netdb.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
43
shadow-tls/Makefile
Normal file
43
shadow-tls/Makefile
Normal file
@@ -0,0 +1,43 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Copyright (C) 2025 ImmortalWrt.org
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=shadow-tls
|
||||
PKG_VERSION:=0.2.25
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/ihciah/shadow-tls/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=1d1d436734823ba0302de6e91883ed892ea710769c722a139990194ff5837224
|
||||
|
||||
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||
PKG_LICENSE:=MIT
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
PKG_BUILD_DEPENDS:=rust/host
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(TOPDIR)/feeds/packages/lang/rust/rust-package.mk
|
||||
|
||||
define Package/shadow-tls
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
SUBMENU:=Web Servers/Proxies
|
||||
TITLE:=A proxy to expose real tls handshake to the firewall
|
||||
URL:=https://github.com/ihciah/shadow-tls
|
||||
DEPENDS:=@(aarch64||arm||x86_64)
|
||||
endef
|
||||
|
||||
define Package/shadow-tls/description
|
||||
A proxy to expose real tls handshake to the firewall.
|
||||
|
||||
It works like trojan but it does not require signing certificate.
|
||||
The firewall will see real tls handshake with valid certificate
|
||||
that you choose.
|
||||
endef
|
||||
|
||||
$(eval $(call RustBinPackage,shadow-tls))
|
||||
$(eval $(call BuildPackage,shadow-tls))
|
||||
@@ -0,0 +1,23 @@
|
||||
From 045014130570dd23d5a9cce124b78b2bb1ddaf5f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=E1=A1=A0=E1=A0=B5=E1=A1=A0=E1=A1=B3=20=E1=A1=A0=E1=A0=B5?=
|
||||
=?UTF-8?q?=E1=A1=A0=20=E1=A0=AE=E1=A0=A0=E1=A0=A8=E1=A1=A9=E1=A0=8B?=
|
||||
=?UTF-8?q?=E1=A0=A0=E1=A0=A8?=
|
||||
<125150101+UjuiUjuMandan@users.noreply.github.com>
|
||||
Date: Thu, 24 Apr 2025 22:39:07 +0000
|
||||
Subject: [PATCH] Fix reading WildcardSNI from sip003_arg (#115)
|
||||
|
||||
---
|
||||
src/main.rs | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/src/main.rs
|
||||
+++ b/src/main.rs
|
||||
@@ -269,7 +269,7 @@ pub(crate) fn get_sip003_arg() -> Option
|
||||
let tls_addrs = parse_server_addrs(tls_addr)
|
||||
.expect("tls param parse failed(like tls=xxx.com:443 or tls=yyy.com:1.2.3.4:443;zzz.com:443;xxx.com)");
|
||||
let wildcard_sni =
|
||||
- WildcardSNI::from_str(opts.get("tls").map(AsRef::as_ref).unwrap_or_default(), true)
|
||||
+ WildcardSNI::from_str(opts.get("wildcard-sni").map(AsRef::as_ref).unwrap_or("off"), true)
|
||||
.expect("wildcard_sni format error");
|
||||
Args {
|
||||
cmd: crate::Commands::Server {
|
||||
@@ -0,0 +1,230 @@
|
||||
From 02dd0bc7bae8a2011729f95021690e694fd8e43e Mon Sep 17 00:00:00 2001
|
||||
From: V <vendettareborn@proton.me>
|
||||
Date: Fri, 25 Apr 2025 18:27:13 +0200
|
||||
Subject: [PATCH] fix: use tls1.2 only website for tls12 test suites (#129)
|
||||
|
||||
* fix: use tls1.2 only website for tls12 test suites
|
||||
---
|
||||
src/helper_v2.rs | 2 ++
|
||||
src/main.rs | 12 +++++++-----
|
||||
src/sip003.rs | 6 +++---
|
||||
src/util.rs | 2 +-
|
||||
tests/tls12.rs | 32 ++++++++++++++++----------------
|
||||
5 files changed, 29 insertions(+), 25 deletions(-)
|
||||
|
||||
--- a/src/helper_v2.rs
|
||||
+++ b/src/helper_v2.rs
|
||||
@@ -26,6 +26,7 @@ use crate::util::prelude::*;
|
||||
|
||||
pub(crate) const HMAC_SIZE_V2: usize = 8;
|
||||
|
||||
+#[allow(unused)]
|
||||
pub(crate) trait HashedStream {
|
||||
fn hash_stream(&self) -> [u8; 20];
|
||||
}
|
||||
@@ -98,6 +99,7 @@ impl<S> HashedWriteStream<S> {
|
||||
})
|
||||
}
|
||||
|
||||
+ #[allow(unused)]
|
||||
pub(crate) fn hash(&self) -> [u8; 20] {
|
||||
self.hmac
|
||||
.borrow()
|
||||
--- a/src/main.rs
|
||||
+++ b/src/main.rs
|
||||
@@ -252,7 +252,7 @@ pub(crate) fn get_sip003_arg() -> Option
|
||||
let opts: HashMap<_, _> = opts.into_iter().collect();
|
||||
|
||||
let threads = opts.get("threads").map(|s| s.parse::<u8>().unwrap());
|
||||
- let v3 = opts.get("v3").is_some();
|
||||
+ let v3 = opts.contains_key("v3");
|
||||
let passwd = opts
|
||||
.get("passwd")
|
||||
.expect("need passwd param(like passwd=123456)");
|
||||
@@ -262,15 +262,17 @@ pub(crate) fn get_sip003_arg() -> Option
|
||||
v3,
|
||||
..Default::default()
|
||||
};
|
||||
- let args = if opts.get("server").is_some() {
|
||||
+ let args = if opts.contains_key("server") {
|
||||
let tls_addr = opts
|
||||
.get("tls")
|
||||
.expect("tls param must be specified(like tls=xxx.com:443)");
|
||||
let tls_addrs = parse_server_addrs(tls_addr)
|
||||
.expect("tls param parse failed(like tls=xxx.com:443 or tls=yyy.com:1.2.3.4:443;zzz.com:443;xxx.com)");
|
||||
- let wildcard_sni =
|
||||
- WildcardSNI::from_str(opts.get("wildcard-sni").map(AsRef::as_ref).unwrap_or("off"), true)
|
||||
- .expect("wildcard_sni format error");
|
||||
+ let wildcard_sni = WildcardSNI::from_str(
|
||||
+ opts.get("wildcard-sni").map(AsRef::as_ref).unwrap_or("off"),
|
||||
+ true,
|
||||
+ )
|
||||
+ .expect("wildcard_sni format error");
|
||||
Args {
|
||||
cmd: crate::Commands::Server {
|
||||
listen: format!("{ss_remote_host}:{ss_remote_port}"),
|
||||
--- a/src/sip003.rs
|
||||
+++ b/src/sip003.rs
|
||||
@@ -6,7 +6,7 @@ pub fn parse_sip003_options(s: &str) ->
|
||||
let mut i = 0;
|
||||
while i < s.len() {
|
||||
// read key
|
||||
- let (offset, key) = index_unescaped(&s[i..], &[b'=', b';']).context("read key")?;
|
||||
+ let (offset, key) = index_unescaped(&s[i..], b"=;").context("read key")?;
|
||||
if key.is_empty() {
|
||||
bail!("empty key in {}", &s[i..]);
|
||||
}
|
||||
@@ -21,7 +21,7 @@ pub fn parse_sip003_options(s: &str) ->
|
||||
// skip equals
|
||||
i += 1;
|
||||
// read value
|
||||
- let (offset, value) = index_unescaped(&s[i..], &[b'=', b';']).context("read value")?;
|
||||
+ let (offset, value) = index_unescaped(&s[i..], b"=;").context("read value")?;
|
||||
i += offset;
|
||||
opts.push((key, value));
|
||||
// Skip the semicolon.
|
||||
@@ -36,7 +36,7 @@ fn index_unescaped(s: &str, term: &[u8])
|
||||
|
||||
while i < s.len() {
|
||||
let mut b: u8 = s.as_bytes()[i];
|
||||
- if term.iter().any(|&e| b == e) {
|
||||
+ if term.contains(&b) {
|
||||
break;
|
||||
}
|
||||
if b == b'\\' {
|
||||
--- a/src/util.rs
|
||||
+++ b/src/util.rs
|
||||
@@ -599,7 +599,7 @@ pub(crate) async fn resolve(addr: &str)
|
||||
addr_iter.next().ok_or_else(|| {
|
||||
std::io::Error::new(
|
||||
std::io::ErrorKind::InvalidInput,
|
||||
- format!("unable to resolve addr: {}", addr),
|
||||
+ format!("unable to resolve addr: {addr}"),
|
||||
)
|
||||
})
|
||||
}
|
||||
--- a/tests/tls12.rs
|
||||
+++ b/tests/tls12.rs
|
||||
@@ -4,7 +4,7 @@ use shadow_tls::{RunningArgs, TlsAddrs,
|
||||
mod utils;
|
||||
use utils::*;
|
||||
|
||||
-// handshake: bing.com(tls1.2 only)
|
||||
+// handshake: badssl.com(tls1.2 only)
|
||||
// data: captive.apple.com:80
|
||||
// protocol: v2
|
||||
#[test]
|
||||
@@ -12,7 +12,7 @@ fn tls12_v2() {
|
||||
let client = RunningArgs::Client {
|
||||
listen_addr: "127.0.0.1:30000".to_string(),
|
||||
target_addr: "127.0.0.1:30001".to_string(),
|
||||
- tls_names: TlsNames::try_from("bing.com").unwrap(),
|
||||
+ tls_names: TlsNames::try_from("badssl.com").unwrap(),
|
||||
tls_ext: TlsExtConfig::new(None),
|
||||
password: "test".to_string(),
|
||||
nodelay: true,
|
||||
@@ -22,7 +22,7 @@ fn tls12_v2() {
|
||||
let server = RunningArgs::Server {
|
||||
listen_addr: "127.0.0.1:30001".to_string(),
|
||||
target_addr: "captive.apple.com:80".to_string(),
|
||||
- tls_addr: TlsAddrs::try_from("bing.com").unwrap(),
|
||||
+ tls_addr: TlsAddrs::try_from("badssl.com").unwrap(),
|
||||
password: "test".to_string(),
|
||||
nodelay: true,
|
||||
fastopen: true,
|
||||
@@ -31,7 +31,7 @@ fn tls12_v2() {
|
||||
test_ok(client, server, CAPTIVE_HTTP_REQUEST, CAPTIVE_HTTP_RESP);
|
||||
}
|
||||
|
||||
-// handshake: bing.com(tls1.2 only)
|
||||
+// handshake: badssl.com(tls1.2 only)
|
||||
// data: captive.apple.com:80
|
||||
// protocol: v3 lossy
|
||||
#[test]
|
||||
@@ -39,7 +39,7 @@ fn tls12_v3_lossy() {
|
||||
let client = RunningArgs::Client {
|
||||
listen_addr: "127.0.0.1:30002".to_string(),
|
||||
target_addr: "127.0.0.1:30003".to_string(),
|
||||
- tls_names: TlsNames::try_from("bing.com").unwrap(),
|
||||
+ tls_names: TlsNames::try_from("badssl.com").unwrap(),
|
||||
tls_ext: TlsExtConfig::new(None),
|
||||
password: "test".to_string(),
|
||||
nodelay: true,
|
||||
@@ -49,7 +49,7 @@ fn tls12_v3_lossy() {
|
||||
let server = RunningArgs::Server {
|
||||
listen_addr: "127.0.0.1:30003".to_string(),
|
||||
target_addr: "captive.apple.com:80".to_string(),
|
||||
- tls_addr: TlsAddrs::try_from("bing.com").unwrap(),
|
||||
+ tls_addr: TlsAddrs::try_from("badssl.com").unwrap(),
|
||||
password: "test".to_string(),
|
||||
nodelay: true,
|
||||
fastopen: true,
|
||||
@@ -58,7 +58,7 @@ fn tls12_v3_lossy() {
|
||||
utils::test_ok(client, server, CAPTIVE_HTTP_REQUEST, CAPTIVE_HTTP_RESP);
|
||||
}
|
||||
|
||||
-// handshake: bing.com(tls1.2 only)
|
||||
+// handshake: badssl.com(tls1.2 only)
|
||||
// data: captive.apple.com:80
|
||||
// protocol: v3 strict
|
||||
// v3 strict cannot work with tls1.2, so it must fail
|
||||
@@ -68,7 +68,7 @@ fn tls12_v3_strict() {
|
||||
let client = RunningArgs::Client {
|
||||
listen_addr: "127.0.0.1:30004".to_string(),
|
||||
target_addr: "127.0.0.1:30005".to_string(),
|
||||
- tls_names: TlsNames::try_from("bing.com").unwrap(),
|
||||
+ tls_names: TlsNames::try_from("badssl.com").unwrap(),
|
||||
tls_ext: TlsExtConfig::new(None),
|
||||
password: "test".to_string(),
|
||||
nodelay: true,
|
||||
@@ -78,7 +78,7 @@ fn tls12_v3_strict() {
|
||||
let server = RunningArgs::Server {
|
||||
listen_addr: "127.0.0.1:30005".to_string(),
|
||||
target_addr: "captive.apple.com:80".to_string(),
|
||||
- tls_addr: TlsAddrs::try_from("bing.com").unwrap(),
|
||||
+ tls_addr: TlsAddrs::try_from("badssl.com").unwrap(),
|
||||
password: "test".to_string(),
|
||||
nodelay: true,
|
||||
fastopen: true,
|
||||
@@ -87,8 +87,8 @@ fn tls12_v3_strict() {
|
||||
utils::test_ok(client, server, CAPTIVE_HTTP_REQUEST, CAPTIVE_HTTP_RESP);
|
||||
}
|
||||
|
||||
-// handshake: bing.com(tls1.2 only)
|
||||
-// data: bing.com:443
|
||||
+// handshake: badssl.com(tls1.2 only)
|
||||
+// data: badssl.com:443
|
||||
// protocol: v2
|
||||
// Note: v2 can not defend against hijack attack.
|
||||
// Here hijack means directly connect to the handshake server.
|
||||
@@ -98,8 +98,8 @@ fn tls12_v3_strict() {
|
||||
fn tls12_v2_hijack() {
|
||||
let client = RunningArgs::Client {
|
||||
listen_addr: "127.0.0.1:30006".to_string(),
|
||||
- target_addr: "bing.com:443".to_string(),
|
||||
- tls_names: TlsNames::try_from("bing.com").unwrap(),
|
||||
+ target_addr: "badssl.com:443".to_string(),
|
||||
+ tls_names: TlsNames::try_from("badssl.com").unwrap(),
|
||||
tls_ext: TlsExtConfig::new(None),
|
||||
password: "test".to_string(),
|
||||
nodelay: true,
|
||||
@@ -109,7 +109,7 @@ fn tls12_v2_hijack() {
|
||||
test_hijack(client);
|
||||
}
|
||||
|
||||
-// handshake: bing.com(tls1.2 only)
|
||||
+// handshake: badssl.com(tls1.2 only)
|
||||
// data: captive.apple.com:80
|
||||
// protocol: v3 lossy
|
||||
// (v3 strict can not work with tls1.2)
|
||||
@@ -121,8 +121,8 @@ fn tls12_v2_hijack() {
|
||||
fn tls12_v3_lossy_hijack() {
|
||||
let client = RunningArgs::Client {
|
||||
listen_addr: "127.0.0.1:30007".to_string(),
|
||||
- target_addr: "bing.com:443".to_string(),
|
||||
- tls_names: TlsNames::try_from("bing.com").unwrap(),
|
||||
+ target_addr: "badssl.com:443".to_string(),
|
||||
+ tls_names: TlsNames::try_from("badssl.com").unwrap(),
|
||||
tls_ext: TlsExtConfig::new(None),
|
||||
password: "test".to_string(),
|
||||
nodelay: true,
|
||||
117
shadow-tls/patches/100-update-monoio.patch
Normal file
117
shadow-tls/patches/100-update-monoio.patch
Normal file
@@ -0,0 +1,117 @@
|
||||
--- a/Cargo.lock
|
||||
+++ b/Cargo.lock
|
||||
@@ -1,6 +1,6 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
-version = 3
|
||||
+version = 4
|
||||
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
@@ -224,14 +224,13 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "flume"
|
||||
-version = "0.10.14"
|
||||
+version = "0.11.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577"
|
||||
+checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
"nanorand",
|
||||
- "pin-project",
|
||||
"spin 0.9.8",
|
||||
]
|
||||
|
||||
@@ -393,9 +392,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
-version = "2.6.4"
|
||||
+version = "2.7.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
|
||||
+checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
|
||||
|
||||
[[package]]
|
||||
name = "memoffset"
|
||||
@@ -420,9 +419,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "monoio"
|
||||
-version = "0.2.0"
|
||||
+version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "c91a9bcc2622991bc92f3b6d7dc495329c4863e4dc530d1748529b009bb2170a"
|
||||
+checksum = "fd5be7ef0eea41e4e5b30fe55aa6fd15288c415118bcdceadd52fd3656816cc7"
|
||||
dependencies = [
|
||||
"auto-const-array",
|
||||
"bytes",
|
||||
@@ -430,9 +429,11 @@ dependencies = [
|
||||
"fxhash",
|
||||
"io-uring",
|
||||
"libc",
|
||||
+ "memchr",
|
||||
"mio",
|
||||
"monoio-macros",
|
||||
"nix 0.26.4",
|
||||
+ "once_cell",
|
||||
"pin-project-lite",
|
||||
"socket2",
|
||||
"threadpool",
|
||||
@@ -538,26 +539,6 @@ source = "registry+https://github.com/ru
|
||||
checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
|
||||
|
||||
[[package]]
|
||||
-name = "pin-project"
|
||||
-version = "1.1.3"
|
||||
-source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422"
|
||||
-dependencies = [
|
||||
- "pin-project-internal",
|
||||
-]
|
||||
-
|
||||
-[[package]]
|
||||
-name = "pin-project-internal"
|
||||
-version = "1.1.3"
|
||||
-source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
|
||||
-dependencies = [
|
||||
- "proc-macro2",
|
||||
- "quote",
|
||||
- "syn",
|
||||
-]
|
||||
-
|
||||
-[[package]]
|
||||
name = "pin-project-lite"
|
||||
version = "0.2.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
--- a/Cargo.toml
|
||||
+++ b/Cargo.toml
|
||||
@@ -10,7 +10,7 @@ repository = "https://github.com/ihciah/
|
||||
version = "0.2.25"
|
||||
|
||||
[dependencies]
|
||||
-monoio = { version = "0.2.0", features = ["sync"] }
|
||||
+monoio = { version = "=0.2.2", features = ["sync"] }
|
||||
monoio-rustls-fork-shadow-tls = { version = "0.3.0-mod.2" }
|
||||
rustls-fork-shadow-tls = { version = "0.20.9-mod.2", default-features = false }
|
||||
|
||||
--- a/src/lib.rs
|
||||
+++ b/src/lib.rs
|
||||
@@ -1,5 +1,3 @@
|
||||
-#![feature(impl_trait_in_assoc_type)]
|
||||
-
|
||||
mod client;
|
||||
mod helper_v2;
|
||||
mod server;
|
||||
--- a/src/main.rs
|
||||
+++ b/src/main.rs
|
||||
@@ -1,5 +1,3 @@
|
||||
-#![feature(type_alias_impl_trait)]
|
||||
-
|
||||
use std::{collections::HashMap, path::PathBuf, process::exit};
|
||||
|
||||
use clap::{Parser, Subcommand, ValueEnum};
|
||||
@@ -20,8 +20,7 @@ PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/shadowsocks/shadowsocks-libev.git
|
||||
PKG_SOURCE_DATE:=2025-1-20
|
||||
PKG_SOURCE_VERSION:=9afa3cacf947f910be46b69fc5a7a1fdd02fd5e6
|
||||
PKG_MIRROR_HASH:=575b21803b28db8ab59ecbdb2cf21c4282881507b3a4267cc24f55bad12819cb
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
|
||||
PKG_MIRROR_HASH:=b56d015394a3217750ec232570e012461a30af17de20d5598c3b026c8fcaa5b5
|
||||
|
||||
PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
|
||||
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=shadowsocks-rust
|
||||
PKG_VERSION:=1.22.0
|
||||
PKG_VERSION:=1.24.0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/shadowsocks/shadowsocks-rust/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=2857372667b66aa7f8ef2d27a8a19209cbf3e5da2e6d1d1d493411d72d173861
|
||||
PKG_HASH:=a89865d1c5203de1b732017dd032e85f943d1592e8d3152eb7d2c4f3fca387bf
|
||||
|
||||
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||
PKG_LICENSE:=MIT
|
||||
|
||||
@@ -14,8 +14,7 @@ PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/shadowsocksrr/shadowsocksr-libev
|
||||
PKG_SOURCE_DATE:=2018-03-07
|
||||
PKG_SOURCE_VERSION:=d63ff863800a5645aca4309d5dd5962bd1e95543
|
||||
PKG_MIRROR_HASH:=34308ed827a5dd4f4e35619914102d55b00604faa44fda051d1d25fb4a319325
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
|
||||
PKG_MIRROR_HASH:=146fa4511a52da2aaa1e11ea0294cfb450e62643156c5da3b10e037ef43961f6
|
||||
|
||||
PKG_LICENSE:=GPL-3.0
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
#
|
||||
# Copyright (C) 2017-2019 Jian Chang <aa65535@live.com>
|
||||
#
|
||||
# Copyright (C) 2021 ImmortalWrt
|
||||
# <https://immortalwrt.org>
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v3.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
@@ -9,55 +12,49 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=simple-obfs
|
||||
PKG_VERSION:=0.0.5
|
||||
PKG_RELEASE:=$(AUTORELEASE)
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/shadowsocks/simple-obfs.git
|
||||
PKG_MIRROR_HASH:=ea8f2b9825bbb87d5d860524e29bade265141687338db2dbf7ecd32690cf02fc
|
||||
PKG_SOURCE_DATE:=2019-08-17
|
||||
PKG_SOURCE_VERSION:=486bebd9208539058e57e23a12f23103016e09b4
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION)
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||
PKG_MIRROR_HASH:=bc97eba511b86a089ab4bcf0ac78d9e4a39c59046d5cde77b79a118245daa0ba
|
||||
|
||||
PKG_LICENSE:=GPL-3.0-or-later
|
||||
PKG_LICENSE_FILES:=COPYING LICENSE
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
PKG_MAINTAINER:=Jian Chang <aa65535@live.com>
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)/$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION)
|
||||
|
||||
PKG_INSTALL:=1
|
||||
PKG_FIXUP:=autoreconf
|
||||
PKG_USE_MIPS16:=0
|
||||
PKG_BUILD_FLAGS:=no-mips16
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_BUILD_DEPENDS:=libev
|
||||
|
||||
PKG_CONFIG_DEPENDS:= CONFIG_SIMPLE_OBFS_STATIC_LINK
|
||||
PKG_FIXUP:=autoreconf
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_INSTALL:=1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/simple-obfs
|
||||
define Package/simple-obfs/template
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=Simple-obfs
|
||||
URL:=https://github.com/shadowsocks/simple-obfs
|
||||
DEPENDS:=+libpthread +!SIMPLE_OBFS_STATIC_LINK:libev
|
||||
DEPENDS:=+libpthread +libev
|
||||
endef
|
||||
|
||||
Package/simple-obfs-server = $(Package/simple-obfs)
|
||||
define Package/simple-obfs-client
|
||||
$(call Package/simple-obfs/template)
|
||||
TITLE+= (client)
|
||||
PROVIDES:=simple-obfs
|
||||
endef
|
||||
|
||||
define Package/simple-obfs-server/config
|
||||
menu "Simple-obfs Compile Configuration"
|
||||
depends on PACKAGE_simple-obfs || PACKAGE_simple-obfs-server
|
||||
config SIMPLE_OBFS_STATIC_LINK
|
||||
bool "enable static link libraries."
|
||||
default n
|
||||
endmenu
|
||||
define Package/simple-obfs-server
|
||||
$(call Package/simple-obfs/template)
|
||||
TITLE+= (server)
|
||||
endef
|
||||
|
||||
define Package/simple-obfs/description
|
||||
Simple-obfs is a simple obfusacting tool, designed as plugin server of shadowsocks.
|
||||
Simple-obfs is a simple obfusacting tool, designed as plugin server of shadowsocks.
|
||||
endef
|
||||
|
||||
Package/simple-obfs-client/description = $(Package/simple-obfs/description)
|
||||
Package/simple-obfs-server/description = $(Package/simple-obfs/description)
|
||||
|
||||
CONFIGURE_ARGS += \
|
||||
@@ -65,21 +62,15 @@ CONFIGURE_ARGS += \
|
||||
--disable-documentation \
|
||||
--disable-assert
|
||||
|
||||
ifeq ($(CONFIG_SIMPLE_OBFS_STATIC_LINK),y)
|
||||
CONFIGURE_ARGS += \
|
||||
--with-ev="$(STAGING_DIR)/usr" \
|
||||
LDFLAGS="-Wl,-static -static -static-libgcc"
|
||||
endif
|
||||
|
||||
define Package/simple-obfs/install
|
||||
define Package/simple-obfs-client/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/obfs-local $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/obfs-local $(1)/usr/bin/obfs-local
|
||||
endef
|
||||
|
||||
define Package/simple-obfs-server/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/obfs-server $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/obfs-server $(1)/usr/bin/obfs-server
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,simple-obfs))
|
||||
$(eval $(call BuildPackage,simple-obfs-client))
|
||||
$(eval $(call BuildPackage,simple-obfs-server))
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
From bc8014cd6637798ee96b9394c716eff46115c002 Mon Sep 17 00:00:00 2001
|
||||
From: DDoSolitary <DDoSolitary@gmail.com>
|
||||
Date: Thu, 12 Mar 2020 12:15:37 +0800
|
||||
Subject: [PATCH] Convert arguments of isdigit to int.
|
||||
|
||||
---
|
||||
src/utils.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/utils.c b/src/utils.c
|
||||
index 67cc250..514a001 100644
|
||||
--- a/src/utils.c
|
||||
+++ b/src/utils.c
|
||||
@@ -92,7 +92,7 @@ int
|
||||
ss_isnumeric(const char *s) {
|
||||
if (!s || !*s)
|
||||
return 0;
|
||||
- while (isdigit(*s))
|
||||
+ while (isdigit((int)*s))
|
||||
++s;
|
||||
return *s == '\0';
|
||||
}
|
||||
@@ -1,141 +1,132 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-only
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v3.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
# Copyright (C) 2022-2023 ImmortalWrt.org
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=sing-box
|
||||
PKG_VERSION:=1.11.3
|
||||
PKG_VERSION:=1.12.14
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/SagerNet/sing-box/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=51b189549395c132dce781e1c70315e4bb8386c207e171c07124759b45481d97
|
||||
PKG_HASH:=f19761d09f88e2d33aadfdb3c4ff471654f34b28561826e4786b9859654ca887
|
||||
|
||||
PKG_LICENSE:=GPL-3.0-or-later
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||
|
||||
PKG_CONFIG_DEPENDS:= \
|
||||
CONFIG_SING_BOX_BUILD_ACME \
|
||||
CONFIG_SING_BOX_BUILD_CLASH_API \
|
||||
CONFIG_SING_BOX_BUILD_DHCP \
|
||||
CONFIG_SING_BOX_BUILD_EMBEDDED_TOR \
|
||||
CONFIG_SING_BOX_BUILD_GRPC \
|
||||
CONFIG_SING_BOX_BUILD_GVISOR \
|
||||
CONFIG_SING_BOX_BUILD_QUIC \
|
||||
CONFIG_SING_BOX_BUILD_TAILSCALE \
|
||||
CONFIG_SING_BOX_BUILD_UTLS \
|
||||
CONFIG_SING_BOX_BUILD_V2RAY_API \
|
||||
CONFIG_SING_BOX_BUILD_WIREGUARD
|
||||
|
||||
PKG_BUILD_DEPENDS:=golang/host
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_USE_MIPS16:=0
|
||||
PKG_BUILD_FLAGS:=no-mips16
|
||||
|
||||
GO_PKG:=github.com/sagernet/sing-box
|
||||
GO_PKG_BUILD_PKG:=$(GO_PKG)/cmd/sing-box
|
||||
GO_PKG_LDFLAGS_X:=$(GO_PKG)/constant.Version=v$(PKG_VERSION)
|
||||
GO_PKG_LDFLAGS_X:=$(GO_PKG)/constant.Version=$(PKG_VERSION)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk
|
||||
|
||||
define Package/$(PKG_NAME)
|
||||
define Package/sing-box
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
SUBMENU:=Web Servers/Proxies
|
||||
TITLE:=The universal proxy platform.
|
||||
URL:=https://sing-box.sagernet.org
|
||||
TITLE:=The universal proxy platform
|
||||
URL:=https://sing-box.sagernet.org/
|
||||
DEPENDS:=$(GO_ARCH_DEPENDS) \
|
||||
+ca-bundle \
|
||||
+kmod-inet-diag \
|
||||
+kmod-netlink-diag \
|
||||
+kmod-tun
|
||||
+SING_BOX_BUILD_GVISOR:kmod-tun
|
||||
USERID:=sing-box=5566:sing-box=5566
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/description
|
||||
Sing-box is a universal proxy platform which supports hysteria, SOCKS,
|
||||
Shadowsocks, ShadowTLS, Tor, trojan, VLess, VMess, WireGuard and so on.
|
||||
define Package/sing-box/description
|
||||
Sing-box is a universal proxy platform which supports hysteria, SOCKS, Shadowsocks,
|
||||
ShadowTLS, Tor, trojan, VLess, VMess, WireGuard and so on.
|
||||
endef
|
||||
|
||||
GO_PKG_TARGET_VARS:=$(filter-out CGO_ENABLED=%,$(GO_PKG_TARGET_VARS)) CGO_ENABLED=1
|
||||
define Package/sing-box/config
|
||||
if PACKAGE_sing-box
|
||||
config SING_BOX_BUILD_ACME
|
||||
bool "Build with ACME TLS certificate issuer support"
|
||||
default y
|
||||
|
||||
define Package/$(PKG_NAME)/config
|
||||
menu "Customizing build tags"
|
||||
depends on PACKAGE_sing-box
|
||||
config SING_BOX_BUILD_CLASH_API
|
||||
bool "Build with Clash API support"
|
||||
default y
|
||||
|
||||
config SING_BOX_WITH_ACME
|
||||
bool "Build with ACME TLS certificate issuer support"
|
||||
default n
|
||||
config SING_BOX_BUILD_DHCP
|
||||
bool "Build with DHCP support"
|
||||
|
||||
config SING_BOX_WITH_CLASH_API
|
||||
bool "Build with Clash API support (EXPERIMENTAL!!!)"
|
||||
default y
|
||||
config SING_BOX_BUILD_EMBEDDED_TOR
|
||||
bool "Build with embedded Tor support"
|
||||
depends on BROKEN
|
||||
|
||||
config SING_BOX_WITH_DHCP
|
||||
bool "Build with DHCP support"
|
||||
default y
|
||||
config SING_BOX_BUILD_GRPC
|
||||
bool "Build with standard gPRC support"
|
||||
help
|
||||
Standard gRPC has good compatibility but poor performance.
|
||||
|
||||
config SING_BOX_WITH_ECH
|
||||
bool "Build with TLS ECH extension support"
|
||||
default y
|
||||
config SING_BOX_BUILD_GVISOR
|
||||
bool "Build with gVisor support"
|
||||
default y
|
||||
|
||||
config SING_BOX_WITH_GRPC
|
||||
bool "Build with standard gRPC support"
|
||||
default n
|
||||
help
|
||||
sing-box has better performance gun-lite gRPC built-in by default.
|
||||
This standard gRPC has better compatibility but poor performance.
|
||||
config SING_BOX_BUILD_QUIC
|
||||
bool "Build with QUIC support"
|
||||
default y
|
||||
help
|
||||
Required by HTTP3 DNS transports, Naive inbound,
|
||||
Hysteria inbound / outbound, and v2ray QUIC transport.
|
||||
|
||||
config SING_BOX_WITH_GVISOR
|
||||
bool "Build with gVisor support"
|
||||
default y
|
||||
config SING_BOX_BUILD_TAILSCALE
|
||||
bool "Build with Tailscale support"
|
||||
default y
|
||||
|
||||
config SING_BOX_WITH_QUIC
|
||||
bool "Build with QUIC support"
|
||||
default y
|
||||
help
|
||||
Required by HTTP3 DNS transports, Naive inbound,
|
||||
Hysteria inbound / outbound, and v2ray QUIC transport.
|
||||
config SING_BOX_BUILD_UTLS
|
||||
bool "Build with uTLS support"
|
||||
default y
|
||||
|
||||
config SING_BOX_WITH_REALITY_SERVER
|
||||
bool "Build with reality TLS server support"
|
||||
default n
|
||||
config SING_BOX_BUILD_V2RAY_API
|
||||
bool "Build with V2Ray API support"
|
||||
|
||||
config SING_BOX_WITH_UTLS
|
||||
bool "Build with uTLS support"
|
||||
default y
|
||||
|
||||
config SING_BOX_WITH_V2RAY_API
|
||||
bool "Build with V2Ray API support (EXPERIMENTAL!!!)"
|
||||
default n
|
||||
|
||||
config SING_BOX_WITH_WIREGUARD
|
||||
bool "Build with WireGuard support"
|
||||
default y
|
||||
|
||||
endmenu
|
||||
config SING_BOX_BUILD_WIREGUARD
|
||||
bool "Build with WireGuard support"
|
||||
default y
|
||||
endif
|
||||
endef
|
||||
|
||||
PKG_CONFIG_DEPENDS:= \
|
||||
CONFIG_SING_BOX_WITH_ACME \
|
||||
CONFIG_SING_BOX_WITH_CLASH_API \
|
||||
CONFIG_SING_BOX_WITH_DHCP \
|
||||
CONFIG_SING_BOX_WITH_ECH \
|
||||
CONFIG_SING_BOX_WITH_GRPC \
|
||||
CONFIG_SING_BOX_WITH_GVISOR \
|
||||
CONFIG_SING_BOX_WITH_QUIC \
|
||||
CONFIG_SING_BOX_WITH_REALITY_SERVER \
|
||||
CONFIG_SING_BOX_WITH_UTLS \
|
||||
CONFIG_SING_BOX_WITH_V2RAY_API \
|
||||
CONFIG_SING_BOX_WITH_WIREGUARD
|
||||
|
||||
GO_PKG_TAGS:=$(subst $(space),$(comma),$(strip \
|
||||
$(if $(CONFIG_SING_BOX_WITH_ACME),with_acme) \
|
||||
$(if $(CONFIG_SING_BOX_WITH_CLASH_API),with_clash_api) \
|
||||
$(if $(CONFIG_SING_BOX_WITH_DHCP),with_dhcp) \
|
||||
$(if $(CONFIG_SING_BOX_WITH_ECH),with_ech) \
|
||||
$(if $(CONFIG_SING_BOX_WITH_GRPC),with_grpc) \
|
||||
$(if $(CONFIG_SING_BOX_WITH_GVISOR),with_gvisor) \
|
||||
$(if $(CONFIG_SING_BOX_WITH_QUIC),with_quic) \
|
||||
$(if $(CONFIG_SING_BOX_WITH_REALITY_SERVER),with_reality_server) \
|
||||
$(if $(CONFIG_SING_BOX_WITH_UTLS),with_utls) \
|
||||
$(if $(CONFIG_SING_BOX_WITH_V2RAY_API),with_v2ray_api) \
|
||||
$(if $(CONFIG_SING_BOX_WITH_WIREGUARD),with_wireguard) \
|
||||
$(if $(CONFIG_SING_BOX_BUILD_ACME),with_acme) \
|
||||
$(if $(CONFIG_SING_BOX_BUILD_CLASH_API),with_clash_api) \
|
||||
$(if $(CONFIG_SING_BOX_BUILD_DHCP),with_dhcp) \
|
||||
$(if $(CONFIG_SING_BOX_BUILD_EMBEDDED_TOR),with_embedded_tor) \
|
||||
$(if $(CONFIG_SING_BOX_BUILD_GRPC),with_grpc) \
|
||||
$(if $(CONFIG_SING_BOX_BUILD_GVISOR),with_gvisor) \
|
||||
$(if $(CONFIG_SING_BOX_BUILD_QUIC),with_quic) \
|
||||
$(if $(CONFIG_SING_BOX_BUILD_TAILSCALE),with_tailscale) \
|
||||
$(if $(CONFIG_SING_BOX_BUILD_UTLS),with_utls) \
|
||||
$(if $(CONFIG_SING_BOX_BUILD_V2RAY_API),with_v2ray_api) \
|
||||
$(if $(CONFIG_SING_BOX_BUILD_WIREGUARD),with_wireguard) \
|
||||
))
|
||||
|
||||
define Package/$(PKG_NAME)/conffiles
|
||||
define Package/sing-box/conffiles
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/install
|
||||
define Package/sing-box/install
|
||||
$(call GoPackage/Package/Install/Bin,$(1))
|
||||
endef
|
||||
|
||||
|
||||
@@ -1,78 +0,0 @@
|
||||
#
|
||||
# Copyright (C) 2017-2018 Jian Chang <aa65535@live.com>
|
||||
#
|
||||
# Copyright (C) 2021 ImmortalWrt
|
||||
# <https://immortalwrt.org>
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v3.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=ssocks
|
||||
PKG_VERSION:=0.0.14
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/tostercx/ssocks.git
|
||||
PKG_SOURCE_DATE:=2020-07-09
|
||||
PKG_SOURCE_VERSION:=c2024789c1ee076d171fd6061d7c133302216ea7
|
||||
PKG_MIRROR_HASH:=3654e9f1fb54646e1e89c19e7aa3e105b84b2e20b5b634662c21c66691d1d22e
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
|
||||
|
||||
PKG_LICENSE:=MIT
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/cmake.mk
|
||||
|
||||
define Package/ssocks/template
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=sSocks
|
||||
URL:=https://github.com/tostercx/ssocks
|
||||
DEPENDS:=+libopenssl
|
||||
endef
|
||||
|
||||
define Package/ssocks
|
||||
$(call Package/ssocks/template)
|
||||
TITLE+= Relay
|
||||
endef
|
||||
|
||||
define Package/ssocksd
|
||||
$(call Package/ssocks/template)
|
||||
TITLE+= Server
|
||||
endef
|
||||
|
||||
define Package/ssocks/description/template
|
||||
sSocks is a package which contains: a socks5 server implements RFC 1928 (SOCKS V5) and
|
||||
RFC 1929 (Authentication for SOCKS V5), a reverse socks server and client, a netcat like tool
|
||||
and a socks5 relay.
|
||||
endef
|
||||
|
||||
Package/ssocks/description = $(Package/ssocks/description/template)
|
||||
Package/ssocksd/description = $(Package/ssocks/description/template)
|
||||
|
||||
define Build/Install
|
||||
true
|
||||
endef
|
||||
|
||||
define Package/ssocks/install/template
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/$(2) $(1)/usr/bin/
|
||||
endef
|
||||
|
||||
define Package/ssocks/install
|
||||
$(call Package/ssocks/install/template,$(1),ssocks)
|
||||
endef
|
||||
|
||||
define Package/ssocksd/install
|
||||
$(call Package/ssocks/install/template,$(1),ssocksd)
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,ssocks))
|
||||
$(eval $(call BuildPackage,ssocksd))
|
||||
@@ -1,15 +0,0 @@
|
||||
--- a/CMakeLists.txt 2020-09-07 14:23:49.000000000 +0800
|
||||
+++ b/CMakeLists.txt 2020-09-07 14:23:24.000000000 +0800
|
||||
@@ -11,7 +11,12 @@
|
||||
endif(WIN32)
|
||||
|
||||
add_executable(ssocks src/ssocks.c ${AUX})
|
||||
+INSTALL(TARGETS ssocks RUNTIME DESTINATION bin)
|
||||
add_executable(ssocksd src/ssocksd.c ${AUX})
|
||||
+INSTALL(TARGETS ssocksd RUNTIME DESTINATION bin)
|
||||
add_executable(nsocks src/nsocks.c ${AUX})
|
||||
+INSTALL(TARGETS nsocks RUNTIME DESTINATION bin)
|
||||
add_executable(rcsocks src/rcsocks.c ${AUX})
|
||||
+INSTALL(TARGETS rcsocks RUNTIME DESTINATION bin)
|
||||
add_executable(rssocks src/rssocks.c ${AUX})
|
||||
+INSTALL(TARGETS rssocks RUNTIME DESTINATION bin)
|
||||
@@ -1,11 +0,0 @@
|
||||
--- a/src/configd-util.h 2020-07-09 05:30:54.000000000 +0800
|
||||
+++ b/src/configd-util.h 2020-09-08 19:35:11.000000000 +0800
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
|
||||
|
||||
-struct globalArgsServer_t {
|
||||
+static struct globalArgsServer_t {
|
||||
char fileauth[255]; // -a option
|
||||
char fileconfig[255]; // -f option
|
||||
char filelog[255]; // -l option
|
||||
@@ -1,46 +1,36 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-only
|
||||
#
|
||||
# Copyright (C) 2014 OpenWrt-dist
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
# Copyright (C) 2021 ImmortalWrt.org
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
|
||||
PKG_NAME:=tcping
|
||||
PKG_VERSION:=0.3
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/Lienol/tcping.git
|
||||
PKG_SOURCE_DATE:=2020-07-04
|
||||
PKG_SOURCE_VERSION:=db9101834732dac9aaa59dbb7fb9c74612dbf723
|
||||
PKG_MIRROR_HASH:=36776bf64c41d0c2c2aeb79525499532831133f7b5e174fc51e9e2d7202d5776
|
||||
|
||||
PKG_LICENSE:=GPL-2.0-only
|
||||
PKG_LICENSE_FILES:=license.txt
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/Lienol/tcping
|
||||
PKG_MIRROR_HASH:=79414cd8e1d124422a36b8fe36a1f296b7d9bde99807b2c90ad81bbd65e200e0
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_SOURCE_VERSION:=db9101834732dac9aaa59dbb7fb9c74612dbf723
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)/$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/tcping
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=tcping measures the latency of a tcp-connection
|
||||
URL:=https://github.com/jlyo/tcping
|
||||
endef
|
||||
|
||||
define Package/tcping/description
|
||||
endef
|
||||
|
||||
define Package/tcping/conffiles
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=tcping measures the latency of a tcp-connection
|
||||
URL:=https://github.com/jlyo/tcping
|
||||
endef
|
||||
|
||||
define Package/tcping/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/tcping $(1)/usr/sbin
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/tcping $(1)/usr/bin/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,tcping))
|
||||
|
||||
@@ -14,8 +14,7 @@ PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/peter-tank/trojan-plus.git
|
||||
PKG_SOURCE_DATE:=2020-09-06
|
||||
PKG_SOURCE_VERSION:=a6394cdd718669b0c7491493a78e61f6f0f899b3
|
||||
PKG_MIRROR_HASH:=2d37d09fe6d39d7981116ad387706f58f2b30b74a34e27fc5608f267dacc9208
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
|
||||
PKG_MIRROR_HASH:=0bc832390044668dc163e9fec3c6cf7ac3037dc30a706e94292d974446c43d97
|
||||
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_BUILD_DEPENDS:=openssl
|
||||
@@ -26,6 +25,7 @@ PKG_MAINTAINER:=Trojan-Plus-Group
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/cmake.mk
|
||||
include ./boost-version.mk
|
||||
|
||||
TARGET_CXXFLAGS += -Wall -Wextra
|
||||
TARGET_CXXFLAGS += $(FPIC)
|
||||
@@ -59,7 +59,8 @@ define Package/trojan-plus
|
||||
URL:=https://github.com/Trojan-Plus-Group/trojan-plus
|
||||
DEPENDS:= \
|
||||
+libpthread +libstdcpp +libopenssl \
|
||||
+boost +boost-system +boost-program_options
|
||||
+boost +boost-program_options \
|
||||
$(if $(filter y,$(NEED_BOOST_SYSTEM)),,+boost-system)
|
||||
endef
|
||||
|
||||
define Package/trojan-plus/install
|
||||
|
||||
12
trojan-plus/boost-version.mk
Normal file
12
trojan-plus/boost-version.mk
Normal file
@@ -0,0 +1,12 @@
|
||||
# boost-version.mk
|
||||
BOOST_MAKEFILE := $(firstword $(shell find -L $(TOPDIR) -type f -path "*/boost/Makefile"))
|
||||
|
||||
BOOST_PKG_VERSION := $(shell grep '^PKG_VERSION:=' $(BOOST_MAKEFILE) | head -n1 | cut -d= -f2)
|
||||
|
||||
BOOST_VER_MAJOR := $(word 1,$(subst ., ,$(BOOST_PKG_VERSION)))
|
||||
BOOST_VER_MINOR := $(word 2,$(subst ., ,$(BOOST_PKG_VERSION)))
|
||||
BOOST_VER_PATCH := $(word 3,$(subst ., ,$(BOOST_PKG_VERSION)))
|
||||
|
||||
BOOST_VERSION_CODE := $(shell echo $$(($(BOOST_VER_MAJOR)*100000 + $(BOOST_VER_MINOR)*100 + $(BOOST_VER_PATCH))))
|
||||
|
||||
NEED_BOOST_SYSTEM := $(if $(shell [ $(BOOST_VERSION_CODE) -ge 108900 ] && echo y),y,n)
|
||||
52
trojan-plus/patches/002-Fix-boost1.89-build.patch
Normal file
52
trojan-plus/patches/002-Fix-boost1.89-build.patch
Normal file
@@ -0,0 +1,52 @@
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -184,26 +184,45 @@ endif()
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
if (ANDROID)
|
||||
- set(ANDROID_MY_LIBS ${PROJECT_SOURCE_DIR}/trojan-plus-android-libs)
|
||||
+ set(ANDROID_MY_LIBS ${PROJECT_SOURCE_DIR}/trojan-plus-android-libs)
|
||||
+
|
||||
+ find_path(BOOST_INCLUDE_DIR
|
||||
+ NAMES boost/version.hpp
|
||||
+ HINTS ${ANDROID_MY_LIBS}/include
|
||||
+ )
|
||||
+
|
||||
set(ANDROID_MY_LIBS_LIBRARIES
|
||||
${ANDROID_MY_LIBS}/lib/${ANDROID_ABI}/libssl.a
|
||||
${ANDROID_MY_LIBS}/lib/${ANDROID_ABI}/libcrypto.a
|
||||
- ${ANDROID_MY_LIBS}/lib/${ANDROID_ABI}/libboost_system.a
|
||||
${ANDROID_MY_LIBS}/lib/${ANDROID_ABI}/libboost_program_options.a)
|
||||
|
||||
+ if(BOOST_INCLUDE_DIR)
|
||||
+ file(STRINGS "${BOOST_INCLUDE_DIR}/boost/version.hpp" BOOST_VERSION_LINE REGEX "^#define BOOST_VERSION ")
|
||||
+ string(REGEX REPLACE "^#define BOOST_VERSION ([0-9]+)" "\\1" BOOST_VERSION ${BOOST_VERSION_LINE})
|
||||
+
|
||||
+ if(${BOOST_VERSION} VERSION_LESS 108900)
|
||||
+ list(APPEND ANDROID_MY_LIBS_LIBRARIES ${ANDROID_MY_LIBS}/lib/${ANDROID_ABI}/libboost_system.a)
|
||||
+ endif()
|
||||
+ endif()
|
||||
+
|
||||
set(OPENSSL_VERSION 1.1.1)
|
||||
|
||||
include_directories(${ANDROID_MY_LIBS}/include)
|
||||
target_link_libraries(trojan ${ANDROID_MY_LIBS_LIBRARIES})
|
||||
else()
|
||||
- find_package(Boost 1.66.0 REQUIRED COMPONENTS system program_options)
|
||||
+ find_package(Boost 1.66.0 REQUIRED)
|
||||
+ if (Boost_MAJOR_VERSION LESS_EQUAL 1 AND Boost_MINOR_VERSION LESS 89)
|
||||
+ find_package(Boost 1.66.0 REQUIRED COMPONENTS system program_options)
|
||||
+ else()
|
||||
+ find_package(Boost 1.66.0 REQUIRED COMPONENTS program_options)
|
||||
+ endif()
|
||||
include_directories(${Boost_INCLUDE_DIR})
|
||||
target_link_libraries(trojan ${Boost_LIBRARIES})
|
||||
if(MSVC)
|
||||
add_definitions(-DBOOST_DATE_TIME_NO_LIB)
|
||||
endif()
|
||||
|
||||
- find_package(OpenSSL 1.1.0 REQUIRED)
|
||||
+ find_package(OpenSSL 1.1.1 REQUIRED)
|
||||
include_directories(${OPENSSL_INCLUDE_DIR})
|
||||
target_link_libraries(trojan ${OPENSSL_LIBRARIES})
|
||||
endif()
|
||||
@@ -1,67 +0,0 @@
|
||||
#
|
||||
# Copyright (C) 2018-2019 wongsyrone
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v3.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=trojan
|
||||
PKG_VERSION:=1.16.0
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/trojan-gfw/trojan/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=86cdb2685bb03a63b62ce06545c41189952f1ec4a0cd9147450312ed70956cbc
|
||||
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_BUILD_DEPENDS:=openssl
|
||||
|
||||
PKG_LICENSE:=GPL-3.0
|
||||
PKG_LICENSE_FILE:=LICENSE
|
||||
PKG_MAINTAINER:=GreaterFire
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/cmake.mk
|
||||
|
||||
TARGET_CXXFLAGS += -Wall -Wextra
|
||||
TARGET_CXXFLAGS += $(FPIC)
|
||||
|
||||
# LTO
|
||||
TARGET_CXXFLAGS += -flto
|
||||
TARGET_LDFLAGS += -flto
|
||||
|
||||
# CXX standard
|
||||
TARGET_CXXFLAGS += -std=c++11
|
||||
TARGET_CXXFLAGS := $(filter-out -O%,$(TARGET_CXXFLAGS)) -O3
|
||||
TARGET_CXXFLAGS += -ffunction-sections -fdata-sections
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections
|
||||
|
||||
CMAKE_OPTIONS += \
|
||||
-DENABLE_MYSQL=OFF \
|
||||
-DENABLE_NAT=ON \
|
||||
-DENABLE_REUSE_PORT=ON \
|
||||
-DENABLE_SSL_KEYLOG=ON \
|
||||
-DENABLE_TLS13_CIPHERSUITES=ON \
|
||||
-DFORCE_TCP_FASTOPEN=OFF \
|
||||
-DSYSTEMD_SERVICE=OFF \
|
||||
-DOPENSSL_USE_STATIC_LIBS=FALSE \
|
||||
-DBoost_DEBUG=ON \
|
||||
-DBoost_NO_BOOST_CMAKE=ON
|
||||
|
||||
define Package/trojan
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=An unidentifiable mechanism that helps you bypass GFW
|
||||
URL:=https://github.com/trojan-gfw/trojan
|
||||
DEPENDS:= \
|
||||
+libpthread +libstdcpp +libopenssl \
|
||||
+boost +boost-system +boost-program_options +boost-date_time
|
||||
endef
|
||||
|
||||
define Package/trojan/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/trojan $(1)/usr/sbin/trojan
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,trojan))
|
||||
@@ -1,11 +0,0 @@
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -43,7 +43,7 @@ if(MSVC)
|
||||
add_definitions(-DBOOST_DATE_TIME_NO_LIB)
|
||||
endif()
|
||||
|
||||
-find_package(OpenSSL 1.1.0 REQUIRED)
|
||||
+find_package(OpenSSL 1.1.1 REQUIRED)
|
||||
include_directories(${OPENSSL_INCLUDE_DIR})
|
||||
target_link_libraries(trojan ${OPENSSL_LIBRARIES})
|
||||
if(OPENSSL_VERSION VERSION_GREATER_EQUAL 1.1.1)
|
||||
@@ -54,7 +54,7 @@ define Package/tuic-client
|
||||
SUBMENU:=Web Servers/Proxies
|
||||
TITLE:=Delicately-TUICed 0-RTT proxy protocol
|
||||
URL:=https://github.com/EAimTY/tuic/
|
||||
DEPENDS:=@USE_MUSL @(aarch64||arm||i386||x86_64) @!(TARGET_x86_geode||TARGET_x86_legacy)
|
||||
DEPENDS:=@USE_MUSL @(aarch64||arm_v7||i386||x86_64) @!(TARGET_x86_geode||TARGET_x86_legacy)
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-only
|
||||
#
|
||||
# Copyright (C) 2021 ImmortalWrt.org
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=v2ray-core
|
||||
PKG_VERSION:=5.29.1
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/v2fly/v2ray-core/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=929706448db0aadd812d2fd2978bc4bcbb709e05c401e69919b21c99122806e7
|
||||
|
||||
PKG_LICENSE:=MIT
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||
|
||||
PKG_BUILD_DEPENDS:=golang/host
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_USE_MIPS16:=0
|
||||
PKG_BUILD_FLAGS:=no-mips16
|
||||
|
||||
GO_PKG:=github.com/v2fly/v2ray-core/v5
|
||||
GO_PKG_BUILD_PKG:=$(GO_PKG)/main
|
||||
GO_PKG_LDFLAGS_X:= \
|
||||
$(GO_PKG).build=OpenWrt \
|
||||
$(GO_PKG).version=$(PKG_VERSION)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk
|
||||
|
||||
define Package/v2ray/template
|
||||
TITLE:=A platform for building proxies to bypass network restrictions
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
URL:=https://www.v2fly.org
|
||||
endef
|
||||
|
||||
define Package/v2ray-core
|
||||
$(call Package/v2ray/template)
|
||||
DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle
|
||||
endef
|
||||
|
||||
define Package/v2ray-extra
|
||||
$(call Package/v2ray/template)
|
||||
TITLE+= (extra resources)
|
||||
DEPENDS:=v2ray-core
|
||||
PKGARCH:=all
|
||||
endef
|
||||
|
||||
define Package/v2ray/description
|
||||
Project V is a set of network tools that help you to build your own computer network.
|
||||
It secures your network connections and thus protects your privacy.
|
||||
endef
|
||||
|
||||
define Package/v2ray-core/description
|
||||
$(call Package/v2ray/description)
|
||||
endef
|
||||
|
||||
define Package/v2ray-extra/description
|
||||
$(call Package/v2ray/description)
|
||||
|
||||
This includes extra resources for v2ray-core.
|
||||
endef
|
||||
|
||||
define Package/v2ray-core/conffiles
|
||||
endef
|
||||
|
||||
define Package/v2ray-core/install
|
||||
$(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR))
|
||||
$(INSTALL_DIR) $(1)/usr/bin/
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/main $(1)/usr/bin/v2ray
|
||||
endef
|
||||
|
||||
define Package/v2ray-extra/install
|
||||
$(INSTALL_DIR) $(1)/usr/share/v2ray/
|
||||
$(CP) $(PKG_BUILD_DIR)/release/extra/* $(1)/usr/share/v2ray/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,v2ray-core))
|
||||
$(eval $(call BuildPackage,v2ray-extra))
|
||||
@@ -5,29 +5,29 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=v2ray-geodata
|
||||
PKG_RELEASE:=$(AUTORELEASE)
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
GEOIP_VER:=202502050123
|
||||
GEOIP_VER:=202512180020
|
||||
GEOIP_FILE:=geoip.dat.$(GEOIP_VER)
|
||||
define Download/geoip
|
||||
URL:=https://github.com/v2fly/geoip/releases/download/$(GEOIP_VER)/
|
||||
URL:=https://github.com/Loyalsoldier/geoip/releases/download/$(GEOIP_VER)/
|
||||
URL_FILE:=geoip.dat
|
||||
FILE:=$(GEOIP_FILE)
|
||||
HASH:=f2f5f03da44d007fa91fb6a37c077c9efae8ad0269ef0e4130cf90b0822873e3
|
||||
HASH:=63c20c159aeec8a13d61be9b89d0d1c82fecf4675f1c177db67e97477c89199d
|
||||
endef
|
||||
|
||||
GEOSITE_VER:=20250219031756
|
||||
GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER)
|
||||
GEOSITE_VER:=202512202213
|
||||
GEOSITE_FILE:=geosite.dat.$(GEOSITE_VER)
|
||||
define Download/geosite
|
||||
URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/
|
||||
URL_FILE:=dlc.dat
|
||||
URL:=https://github.com/Loyalsoldier/v2ray-rules-dat/releases/download/$(GEOSITE_VER)/
|
||||
URL_FILE:=geosite.dat
|
||||
FILE:=$(GEOSITE_FILE)
|
||||
HASH:=7fb82385fe16e44b4932d9f9fbd12fa7e146e9e7929a7fb1865bc699c50ef705
|
||||
HASH:=3f43687438bde815719ce0bcd9ed21c7fa807b69caa98ee1c7d6ed8954a8ff1a
|
||||
endef
|
||||
|
||||
define Package/v2ray-geodata/template
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=v2ray-plugin
|
||||
PKG_VERSION:=5.25.0
|
||||
PKG_VERSION:=5.41.0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/teddysun/v2ray-plugin/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=64d2cc376c16ade97b8e2cce69e0c98d74f530dcf8a30cf7d22255969ca5c10d
|
||||
PKG_HASH:=75d83f24e60fb7e71e7774732f6ebcfbc00a1b3ae27f4702f75afb14055ce606
|
||||
|
||||
PKG_LICENSE:=MIT
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=Xray-core
|
||||
PKG_VERSION:=25.2.21
|
||||
PKG_VERSION:=25.12.8
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/XTLS/Xray-core/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=a565db518d2da12fabb74e123d9bf2bdbc34420b81373938f8fcbc7004fda3ba
|
||||
PKG_HASH:=d4519b2d9bb1871f4d7612aa7a8db1c451573b5a44ac824219bb44d63f404e61
|
||||
|
||||
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||
PKG_LICENSE:=MPL-2.0
|
||||
|
||||
Reference in New Issue
Block a user