add naiveproxy
This commit is contained in:
parent
b0ceba06df
commit
dece5df380
|
@ -19,3 +19,9 @@ src-git bgme https://git.bgme.bid/bgme/openwrt-bgme-feed.git
|
||||||
./scripts/feeds install -a
|
./scripts/feeds install -a
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## LICENSE
|
||||||
|
|
||||||
|
- einat-ebpf: https://github.com/muink/openwrt-einat-ebpf
|
||||||
|
- luci-app-einat: https://github.com/muink/luci-app-einat.git
|
||||||
|
- naiveproxy: https://github.com/immortalwrt/packages/tree/master/net/naiveproxy
|
||||||
|
- smartdns: https://github.com/openwrt/packages/tree/master/net/smartdns
|
||||||
|
|
122
naiveproxy/Makefile
Normal file
122
naiveproxy/Makefile
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
#
|
||||||
|
# Copyright (C) 2021 ImmortalWrt.org
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=naiveproxy
|
||||||
|
PKG_REAL_VERSION:=135.0.7049.38-2
|
||||||
|
PKG_VERSION:=$(subst -,.,$(PKG_REAL_VERSION))
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_REAL_VERSION).tar.gz
|
||||||
|
PKG_SOURCE_URL:=https://codeload.github.com/klzgrad/naiveproxy/tar.gz/v$(PKG_REAL_VERSION)?
|
||||||
|
PKG_HASH:=c06fc41ec61f444a9e12da6dee07b22eec0a848de1f7d580a39d0095e5286342
|
||||||
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_REAL_VERSION)
|
||||||
|
|
||||||
|
PKG_LICENSE:=BSD 3-Clause
|
||||||
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||||
|
|
||||||
|
PKG_BUILD_DEPENDS:=gn/host
|
||||||
|
PKG_BUILD_PARALLEL:=1
|
||||||
|
PKG_BUILD_FLAGS:=no-mips16
|
||||||
|
|
||||||
|
ifneq ($(CONFIG_CPU_TYPE)," ")
|
||||||
|
CPU_TYPE:=$(word 1, $(subst +," ,$(CONFIG_CPU_TYPE)))
|
||||||
|
CPU_SUBTYPE:=$(word 2, $(subst +, ",$(CONFIG_CPU_TYPE)))
|
||||||
|
ifeq ($(CPU_SUBTYPE),)
|
||||||
|
CPU_SUBTYPE:=""
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
CPU_TYPE:=""
|
||||||
|
CPU_SUBTYPE:=""
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Package/naiveproxy
|
||||||
|
SECTION:=net
|
||||||
|
CATEGORY:=Network
|
||||||
|
SUBMENU:=Web Servers/Proxies
|
||||||
|
TITLE:=Make a fortune quietly
|
||||||
|
URL:=https://github.com/klzgrad/naiveproxy
|
||||||
|
DEPENDS:=@!(arc||armeb||loongarch64||mips||mips64||powerpc||TARGET_gemini) +libatomic
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/naiveproxy/description
|
||||||
|
NaïveProxy uses Chrome's network stack to camouflage traffic with strong
|
||||||
|
censorship resistance and low detectability. Reusing Chrome's stack also
|
||||||
|
ensures best practices in performance and security.
|
||||||
|
endef
|
||||||
|
|
||||||
|
ifneq ($(CONFIG_CCACHE),)
|
||||||
|
export CCACHE_SLOPPINESS=time_macros
|
||||||
|
export CCACHE_BASEDIR=$(PKG_BUILD_DIR)/src
|
||||||
|
export CCACHE_CPP2=yes
|
||||||
|
export naive_ccache_flags=cc_wrapper="$(CCACHE)"
|
||||||
|
endif
|
||||||
|
|
||||||
|
CLANG_VER:=21-init-1655-g7b473dfe-1
|
||||||
|
CLANG_FILE:=clang-llvmorg-$(CLANG_VER).tar.xz
|
||||||
|
define Download/CLANG
|
||||||
|
URL:=https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64
|
||||||
|
URL_FILE:=$(CLANG_FILE)
|
||||||
|
FILE:=$(CLANG_FILE)
|
||||||
|
HASH:=5d94230fdb20386df002b32046139c05a1f0f9f98451b202abacdaf918fb3fe8
|
||||||
|
endef
|
||||||
|
|
||||||
|
PGO_VER:=7049-1742902334-660df08dc89b79c863466eae026b99254081ab9d-96ef988d106b9eef4526027fbfdd54a082b5d5e2
|
||||||
|
PGO_FILE:=chrome-linux-$(PGO_VER).profdata
|
||||||
|
define Download/PGO_PROF
|
||||||
|
URL:=https://storage.googleapis.com/chromium-optimization-profiles/pgo_profiles
|
||||||
|
URL_FILE:=$(PGO_FILE)
|
||||||
|
FILE:=$(PGO_FILE)
|
||||||
|
HASH:=b974d2e68a55b7b952253233d00a5f543f9f053ec567ff0ee6e98eec403afbc0
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Prepare
|
||||||
|
$(call Build/Prepare/Default)
|
||||||
|
|
||||||
|
( \
|
||||||
|
pushd $(PKG_BUILD_DIR)/src ; \
|
||||||
|
mkdir -p "chrome/build/pgo_profiles" ; \
|
||||||
|
$(CP) "$(DL_DIR)/$(PGO_FILE)" "chrome/build/pgo_profiles" ; \
|
||||||
|
mkdir -p "third_party/llvm-build/Release+Asserts" ; \
|
||||||
|
$(TAR) -xJf "$(DL_DIR)/$(CLANG_FILE)" -C "third_party/llvm-build/Release+Asserts" ; \
|
||||||
|
echo -e "llvmorg-$(CLANG_VER)" > "third_party/llvm-build/Release+Asserts/cr_build_revision" ; \
|
||||||
|
popd ; \
|
||||||
|
)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Configure
|
||||||
|
( \
|
||||||
|
pushd "$(PKG_BUILD_DIR)/src" ; \
|
||||||
|
. ../init_env.sh "$(ARCH)" $(CPU_TYPE) $(CPU_SUBTYPE) "$(TOOLCHAIN_ROOT_DIR)" ; \
|
||||||
|
export naive_flags+=" $$$${naive_ccache_flags}" ; \
|
||||||
|
mkdir -p "out" ; \
|
||||||
|
gn gen "out/Release" --args="$$$${naive_flags}" --script-executable="$(PYTHON)" ; \
|
||||||
|
popd ; \
|
||||||
|
)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Compile
|
||||||
|
+$(NINJA) -C "$(PKG_BUILD_DIR)/src/out/Release" naive
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/naiveproxy/conffiles
|
||||||
|
/etc/config/naiveproxy
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/naiveproxy/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/bin
|
||||||
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/out/Release/naive $(1)/usr/bin/naive
|
||||||
|
$(INSTALL_DIR) $(1)/etc/config $(1)/etc/init.d
|
||||||
|
$(INSTALL_CONF) $(CURDIR)/files/naiveproxy.config $(1)/etc/config/naiveproxy
|
||||||
|
$(INSTALL_BIN) $(CURDIR)/files/naiveproxy.init $(1)/etc/init.d/naiveproxy
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call Download,CLANG))
|
||||||
|
$(eval $(call Download,PGO_PROF))
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,naiveproxy))
|
6
naiveproxy/files/naiveproxy.config
Normal file
6
naiveproxy/files/naiveproxy.config
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
|
||||||
|
config naiveproxy 'config'
|
||||||
|
option enable '0'
|
||||||
|
option listen_addr ''
|
||||||
|
option server_addr ''
|
||||||
|
option extra_argument ''
|
47
naiveproxy/files/naiveproxy.init
Normal file
47
naiveproxy/files/naiveproxy.init
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
#!/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"
|
||||||
|
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_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}
|
||||||
|
procd_set_param limits core="unlimited"
|
||||||
|
procd_set_param stdout 1
|
||||||
|
procd_set_param stderr 1
|
||||||
|
|
||||||
|
procd_close_instance
|
||||||
|
}
|
||||||
|
|
||||||
|
reload_service()
|
||||||
|
{
|
||||||
|
stop
|
||||||
|
start
|
||||||
|
}
|
||||||
|
|
||||||
|
service_triggers() {
|
||||||
|
procd_add_reload_trigger "naiveproxy"
|
||||||
|
}
|
128
naiveproxy/src/init_env.sh
Normal file
128
naiveproxy/src/init_env.sh
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
#
|
||||||
|
# Copyright (C) 2021 ImmortalWrt.org
|
||||||
|
# --------------------------------------------------------
|
||||||
|
# Init build dependencies for naiveproxy
|
||||||
|
|
||||||
|
# Read args from shell
|
||||||
|
target_arch="$1"
|
||||||
|
cpu_type="$2"
|
||||||
|
cpu_subtype="$3"
|
||||||
|
toolchain_dir="$4"
|
||||||
|
|
||||||
|
# Set arch info
|
||||||
|
case "${target_arch}" in
|
||||||
|
"aarch64")
|
||||||
|
naive_arch="arm64"
|
||||||
|
;;
|
||||||
|
"i386")
|
||||||
|
naive_arch="x86"
|
||||||
|
;;
|
||||||
|
"loongarch64")
|
||||||
|
naive_arch="loong64"
|
||||||
|
;;
|
||||||
|
"x86_64")
|
||||||
|
naive_arch="x64"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
naive_arch="${target_arch}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# OS detection
|
||||||
|
[ "$(uname)" != "Linux" -o "$(uname -m)" != "x86_64" ] && { echo -e "Support Linux AMD64 only."; exit 1; }
|
||||||
|
|
||||||
|
# Create TMP dir
|
||||||
|
mkdir -p "$PWD/tmp"
|
||||||
|
export TMPDIR="$PWD/tmp"
|
||||||
|
|
||||||
|
# Set ENV
|
||||||
|
export DEPOT_TOOLS_WIN_TOOLCHAIN=0
|
||||||
|
export naive_flags="
|
||||||
|
is_official_build=true
|
||||||
|
exclude_unwind_tables=true
|
||||||
|
enable_resource_allowlist_generation=false
|
||||||
|
symbol_level=0
|
||||||
|
|
||||||
|
is_clang=true
|
||||||
|
use_sysroot=false
|
||||||
|
|
||||||
|
fatal_linker_warnings=false
|
||||||
|
treat_warnings_as_errors=false
|
||||||
|
|
||||||
|
is_cronet_build=true
|
||||||
|
chrome_pgo_phase=2
|
||||||
|
|
||||||
|
enable_base_tracing=false
|
||||||
|
use_udev=false
|
||||||
|
use_aura=false
|
||||||
|
use_ozone=false
|
||||||
|
use_gio=false
|
||||||
|
use_platform_icu_alternatives=true
|
||||||
|
use_glib=false
|
||||||
|
|
||||||
|
disable_file_support=true
|
||||||
|
enable_websockets=false
|
||||||
|
use_kerberos=false
|
||||||
|
disable_file_support=true
|
||||||
|
disable_zstd_filter=false
|
||||||
|
enable_mdns=false
|
||||||
|
enable_reporting=false
|
||||||
|
include_transport_security_state_preload_list=false
|
||||||
|
enable_device_bound_sessions=false
|
||||||
|
enable_bracketed_proxy_uris=true
|
||||||
|
enable_quic_proxy_support=true
|
||||||
|
|
||||||
|
use_nss_certs=false
|
||||||
|
|
||||||
|
enable_backup_ref_ptr_support=false
|
||||||
|
enable_dangling_raw_ptr_checks=false
|
||||||
|
enable_shadow_metadata=false
|
||||||
|
|
||||||
|
target_os=\"openwrt\"
|
||||||
|
target_cpu=\"${naive_arch}\"
|
||||||
|
target_sysroot=\"${toolchain_dir}\""
|
||||||
|
|
||||||
|
case "${target_arch}" in
|
||||||
|
"arm")
|
||||||
|
naive_flags+=" arm_version=0 arm_cpu=\"${cpu_type}\""
|
||||||
|
case "${cpu_type}" in "arm1176jzf-s"|"arm926ej-s"|"mpcore"|"xscale") naive_flags+=" arm_use_thumb=false" ;; esac
|
||||||
|
if [ -n "${cpu_subtype}" ]; then
|
||||||
|
if grep -q "neon" <<< "${cpu_subtype}"; then
|
||||||
|
neon_flag="arm_use_neon=true"
|
||||||
|
else
|
||||||
|
neon_flag="arm_use_neon=false"
|
||||||
|
fi
|
||||||
|
naive_flags+=" arm_fpu=\"${cpu_subtype}\" arm_float_abi=\"hard\" ${neon_flag}"
|
||||||
|
else
|
||||||
|
naive_flags+=" arm_float_abi=\"soft\" arm_use_neon=false"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# LLVM does not accept muslgnueabi as the target triple environment
|
||||||
|
if [ -d "$toolchain_dir/lib/gcc/arm-openwrt-linux-muslgnueabi" ] && [ ! -d "$toolchain_dir/lib/gcc/arm-openwrt-linux-musleabi" ]; then
|
||||||
|
ln -sf "$toolchain_dir/lib/gcc/arm-openwrt-linux-muslgnueabi" "$toolchain_dir/lib/gcc/arm-openwrt-linux-musleabi"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"arm64")
|
||||||
|
[ -n "${cpu_type}" ] && naive_flags+=" arm_cpu=\"${cpu_type}\""
|
||||||
|
;;
|
||||||
|
"mipsel"|"mips64el")
|
||||||
|
naive_flags+=" use_thin_lto=false chrome_pgo_phase=0"
|
||||||
|
if [ -z "${cpu_type}" ] || [ "${cpu_type}" == "mips32" ]; then
|
||||||
|
naive_flags+=" mips_arch_variant=\"r1\""
|
||||||
|
else
|
||||||
|
naive_flags+=" mips_arch_variant=\"r2\""
|
||||||
|
fi
|
||||||
|
if [ "${target_arch}" == "mipsel" ]; then
|
||||||
|
if [ "${cpu_subtype}" == "24kf" ]; then
|
||||||
|
naive_flags+=" mips_float_abi=\"hard\""
|
||||||
|
else
|
||||||
|
naive_flags+=" mips_float_abi=\"soft\""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"x86_64")
|
||||||
|
naive_flags+=" use_cfi_icall=false"
|
||||||
|
;;
|
||||||
|
esac
|
Loading…
Reference in a new issue