From a29848f36acb59fd4bbf1bba29130e004ef3b132 Mon Sep 17 00:00:00 2001 From: UjuiUjuMandan <125150101+UjuiUjuMandan@users.noreply.github.com> Date: Fri, 31 Jan 2025 03:01:17 +0000 Subject: [PATCH 1/4] copying from https://github.com/2dust/AndroidLibXrayLite/commit/df181a30659867653270d7306780da5aa7c03a6d --- .gitmodules | 6 +++ badvpn | 1 + compile-tun2socks.sh | 33 ++++++++++++ libancillary | 1 + tun2socks.mk | 122 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 163 insertions(+) create mode 160000 badvpn create mode 100644 compile-tun2socks.sh create mode 160000 libancillary create mode 100644 tun2socks.mk diff --git a/.gitmodules b/.gitmodules index 5823c38a7..2bdafca37 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,9 @@ [submodule "AndroidLibXrayLite"] path = AndroidLibXrayLite url = https://github.com/2dust/AndroidLibXrayLite +[submodule "badvpn"] + path = badvpn + url = https://github.com/XTLS/badvpn +[submodule "libancillary"] + path = libancillary + url = https://github.com/shadowsocks/libancillary diff --git a/badvpn b/badvpn new file mode 160000 index 000000000..3cb49ab81 --- /dev/null +++ b/badvpn @@ -0,0 +1 @@ +Subproject commit 3cb49ab81072dc84a27011937659d31467d18a0a diff --git a/compile-tun2socks.sh b/compile-tun2socks.sh new file mode 100644 index 000000000..11bea0d24 --- /dev/null +++ b/compile-tun2socks.sh @@ -0,0 +1,33 @@ +#!/bin/bash +set -o errexit +set -o pipefail +set -o nounset +# Set magic variables for current file & dir +__dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +__file="${__dir}/$(basename "${BASH_SOURCE[0]}")" +__base="$(basename ${__file} .sh)" +if [[ ! -d $NDK_HOME ]]; then + echo "Android NDK: NDK_HOME not found. please set env \$NDK_HOME" + exit 1 +fi +TMPDIR=$(mktemp -d) +clear_tmp () { + rm -rf $TMPDIR +} +trap 'echo -e "Aborted, error $? in command: $BASH_COMMAND"; trap ERR; clear_tmp; exit 1' ERR INT +install -m644 $__dir/tun2socks.mk $TMPDIR/ +pushd $TMPDIR +ln -s $__dir/badvpn badvpn +ln -s $__dir/libancillary libancillary +$NDK_HOME/ndk-build \ + NDK_PROJECT_PATH=. \ + APP_BUILD_SCRIPT=./tun2socks.mk \ + APP_ABI=all \ + APP_PLATFORM=android-19 \ + NDK_LIBS_OUT=$TMPDIR/libs \ + NDK_OUT=$TMPDIR/tmp \ + APP_SHORT_COMMANDS=false LOCAL_SHORT_COMMANDS=false -B -j4 \ + LOCAL_LDFLAGS=-Wl,--build-id=none +tar cvfz $__dir/libtun2socks.so.tgz libs +popd +rm -rf $TMPDIR diff --git a/libancillary b/libancillary new file mode 160000 index 000000000..232d69a5e --- /dev/null +++ b/libancillary @@ -0,0 +1 @@ +Subproject commit 232d69a5ebb4461b572bd3f3b97088091e01c243 diff --git a/tun2socks.mk b/tun2socks.mk new file mode 100644 index 000000000..078fa384c --- /dev/null +++ b/tun2socks.mk @@ -0,0 +1,122 @@ +# Copyright (C) 2009 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +LOCAL_PATH := $(call my-dir) +ROOT_PATH := $(LOCAL_PATH) +######################################################## +## libancillary +######################################################## +include $(CLEAR_VARS) +ANCILLARY_SOURCE := fd_recv.c fd_send.c +LOCAL_MODULE := libancillary +#LOCAL_CFLAGS += -I$(LOCAL_PATH)/libancillary +LOCAL_C_INCLUDES := $(LOCAL_PATH)/libancillary +LOCAL_SRC_FILES := $(addprefix libancillary/, $(ANCILLARY_SOURCE)) +include $(BUILD_STATIC_LIBRARY) +######################################################## +## tun2socks +######################################################## +include $(CLEAR_VARS) +LOCAL_CFLAGS := -std=gnu99 +LOCAL_CFLAGS += -DBADVPN_THREADWORK_USE_PTHREAD -DBADVPN_LINUX -DBADVPN_BREACTOR_BADVPN -D_GNU_SOURCE +LOCAL_CFLAGS += -DBADVPN_USE_SIGNALFD -DBADVPN_USE_EPOLL +LOCAL_CFLAGS += -DBADVPN_LITTLE_ENDIAN -DBADVPN_THREAD_SAFE +LOCAL_CFLAGS += -DNDEBUG -DANDROID +LOCAL_CFLAGS += -I +LOCAL_STATIC_LIBRARIES := libancillary +LOCAL_C_INCLUDES := \ + $(LOCAL_PATH)/badvpn/libancillary \ + $(LOCAL_PATH)/badvpn/lwip/src/include/ipv4 \ + $(LOCAL_PATH)/badvpn/lwip/src/include/ipv6 \ + $(LOCAL_PATH)/badvpn/lwip/src/include \ + $(LOCAL_PATH)/badvpn/lwip/custom \ + $(LOCAL_PATH)/badvpn \ + $(LOCAL_PATH)/libancillary +TUN2SOCKS_SOURCES := \ + base/BLog_syslog.c \ + system/BReactor_badvpn.c \ + system/BSignal.c \ + system/BConnection_common.c \ + system/BConnection_unix.c \ + system/BTime.c \ + system/BUnixSignal.c \ + system/BNetwork.c \ + flow/StreamRecvInterface.c \ + flow/PacketRecvInterface.c \ + flow/PacketPassInterface.c \ + flow/StreamPassInterface.c \ + flow/SinglePacketBuffer.c \ + flow/BufferWriter.c \ + flow/PacketBuffer.c \ + flow/PacketStreamSender.c \ + flow/PacketPassConnector.c \ + flow/PacketProtoFlow.c \ + flow/PacketPassFairQueue.c \ + flow/PacketProtoEncoder.c \ + flow/PacketProtoDecoder.c \ + socksclient/BSocksClient.c \ + tuntap/BTap.c \ + lwip/src/core/udp.c \ + lwip/src/core/memp.c \ + lwip/src/core/init.c \ + lwip/src/core/pbuf.c \ + lwip/src/core/tcp.c \ + lwip/src/core/tcp_out.c \ + lwip/src/core/netif.c \ + lwip/src/core/def.c \ + lwip/src/core/ip.c \ + lwip/src/core/mem.c \ + lwip/src/core/tcp_in.c \ + lwip/src/core/stats.c \ + lwip/src/core/inet_chksum.c \ + lwip/src/core/timeouts.c \ + lwip/src/core/ipv4/icmp.c \ + lwip/src/core/ipv4/igmp.c \ + lwip/src/core/ipv4/ip4_addr.c \ + lwip/src/core/ipv4/ip4_frag.c \ + lwip/src/core/ipv4/ip4.c \ + lwip/src/core/ipv4/autoip.c \ + lwip/src/core/ipv6/ethip6.c \ + lwip/src/core/ipv6/inet6.c \ + lwip/src/core/ipv6/ip6_addr.c \ + lwip/src/core/ipv6/mld6.c \ + lwip/src/core/ipv6/dhcp6.c \ + lwip/src/core/ipv6/icmp6.c \ + lwip/src/core/ipv6/ip6.c \ + lwip/src/core/ipv6/ip6_frag.c \ + lwip/src/core/ipv6/nd6.c \ + lwip/custom/sys.c \ + tun2socks/tun2socks.c \ + base/DebugObject.c \ + base/BLog.c \ + base/BPending.c \ + system/BDatagram_unix.c \ + flowextra/PacketPassInactivityMonitor.c \ + tun2socks/SocksUdpGwClient.c \ + udpgw_client/UdpGwClient.c +LOCAL_MODULE := tun2socks +LOCAL_LDLIBS := -ldl -llog +LOCAL_SRC_FILES := $(addprefix badvpn/, $(TUN2SOCKS_SOURCES)) +LOCAL_BUILD_SCRIPT := BUILD_EXECUTABLE +LOCAL_MAKEFILE := $(local-makefile) +$(call check-defined-LOCAL_MODULE,$(LOCAL_BUILD_SCRIPT)) +$(call check-LOCAL_MODULE,$(LOCAL_MAKEFILE)) +$(call check-LOCAL_MODULE_FILENAME) +# we are building target objects +my := TARGET_ +$(call handle-module-filename,lib,$(TARGET_SONAME_EXTENSION)) +$(call handle-module-built) +LOCAL_MODULE_CLASS := EXECUTABLE +include $(BUILD_SYSTEM)/build-module.mk From f485cce4ef6f24d52b5e69a28475ac383d5020c5 Mon Sep 17 00:00:00 2001 From: UjuiUjuMandan <125150101+UjuiUjuMandan@users.noreply.github.com> Date: Fri, 31 Jan 2025 03:05:19 +0000 Subject: [PATCH 2/4] add missing includes of https://github.com/XTLS/badvpn/commit/dc99ade18dbd32a286bb4159bf9a9779c21a66ed --- tun2socks.mk | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tun2socks.mk b/tun2socks.mk index 078fa384c..04ac8df32 100644 --- a/tun2socks.mk +++ b/tun2socks.mk @@ -53,6 +53,8 @@ TUN2SOCKS_SOURCES := \ system/BTime.c \ system/BUnixSignal.c \ system/BNetwork.c \ + system/BDatagram_common.c \ + system/BDatagram_unix.c \ flow/StreamRecvInterface.c \ flow/PacketRecvInterface.c \ flow/PacketPassInterface.c \ @@ -102,10 +104,10 @@ TUN2SOCKS_SOURCES := \ base/DebugObject.c \ base/BLog.c \ base/BPending.c \ - system/BDatagram_unix.c \ flowextra/PacketPassInactivityMonitor.c \ tun2socks/SocksUdpGwClient.c \ - udpgw_client/UdpGwClient.c + udpgw_client/UdpGwClient.c \ + socks_udp_client/SocksUdpClient.c LOCAL_MODULE := tun2socks LOCAL_LDLIBS := -ldl -llog LOCAL_SRC_FILES := $(addprefix badvpn/, $(TUN2SOCKS_SOURCES)) From dd6a469f4f37b931eb4c705e8936be7e9df0d274 Mon Sep 17 00:00:00 2001 From: UjuiUjuMandan <125150101+UjuiUjuMandan@users.noreply.github.com> Date: Fri, 31 Jan 2025 03:05:57 +0000 Subject: [PATCH 3/4] update workflow --- .github/workflows/build.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1aa753f43..75f36fb02 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: uses: actions/cache/restore@v4 with: path: ${{ github.workspace }}/AndroidLibXrayLite/libs - key: libtun2socks-${{ runner.os }}-${{ hashFiles('.git/modules/AndroidLibXrayLite/modules/badvpn/HEAD') }}-${{ hashFiles('.git/modules/AndroidLibXrayLite/modules/libancillary/HEAD') }} + key: libtun2socks-${{ runner.os }}-${{ hashFiles('.git/modules/libancillary/refs/heads/main') }}-${{ hashFiles('.git/modules/libancillary/refs/heads/main') }} - name: Setup Android NDK uses: nttld/setup-ndk@v1 @@ -51,7 +51,6 @@ jobs: - name: Build libtun2socks if: steps.cache-libtun2socks-restore.outputs.cache-hit != 'true' run: | - cd ${{ github.workspace }}/AndroidLibXrayLite bash compile-tun2socks.sh tar -xvzf libtun2socks.so.tgz env: @@ -61,12 +60,12 @@ jobs: if: steps.cache-libtun2socks-restore.outputs.cache-hit != 'true' uses: actions/cache/save@v4 with: - path: ${{ github.workspace }}/AndroidLibXrayLite/libs - key: libtun2socks-${{ runner.os }}-${{ hashFiles('.git/modules/AndroidLibXrayLite/modules/badvpn/HEAD') }}-${{ hashFiles('.git/modules/AndroidLibXrayLite/modules/libancillary/HEAD') }} + path: ${{ github.workspace }}/libs + key: libtun2socks-${{ runner.os }}-${{ hashFiles('.git/modules/libancillary/refs/heads/main') }}-${{ hashFiles('.git/modules/libancillary/refs/heads/main') }} - name: Copy libtun2socks run: | - cp -r ${{ github.workspace }}/AndroidLibXrayLite/libs ${{ github.workspace }}/V2rayNG/app + cp -r ${{ github.workspace }}/libs ${{ github.workspace }}/V2rayNG/app - name: Fetch AndroidLibXrayLite tag run: | From 67c55c113ae0b35ad582fdf024927decec4ace8a Mon Sep 17 00:00:00 2001 From: UjuiUjuMandan <125150101+UjuiUjuMandan@users.noreply.github.com> Date: Fri, 31 Jan 2025 03:16:40 +0000 Subject: [PATCH 4/4] fixup! update workflow --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 75f36fb02..999b84a2a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: uses: actions/cache/restore@v4 with: path: ${{ github.workspace }}/AndroidLibXrayLite/libs - key: libtun2socks-${{ runner.os }}-${{ hashFiles('.git/modules/libancillary/refs/heads/main') }}-${{ hashFiles('.git/modules/libancillary/refs/heads/main') }} + key: libtun2socks-${{ runner.os }}-${{ hashFiles('.git/modules/badvpn/refs/heads/main') }}-${{ hashFiles('.git/modules/libancillary/refs/heads/shadowsocks-android') }} - name: Setup Android NDK uses: nttld/setup-ndk@v1 @@ -61,7 +61,7 @@ jobs: uses: actions/cache/save@v4 with: path: ${{ github.workspace }}/libs - key: libtun2socks-${{ runner.os }}-${{ hashFiles('.git/modules/libancillary/refs/heads/main') }}-${{ hashFiles('.git/modules/libancillary/refs/heads/main') }} + key: libtun2socks-${{ runner.os }}-${{ hashFiles('.git/modules/badvpn/refs/heads/main') }}-${{ hashFiles('.git/modules/libancillary/refs/heads/shadowsocks-android') }} - name: Copy libtun2socks run: |