VPN over Shadowsocks, three providers added, still unstable (testing, not for production)
This commit is contained in:
parent
7c46e42820
commit
db527be97c
575 changed files with 991 additions and 40930 deletions
|
|
@ -44,15 +44,6 @@ WORKINGDIR=`pwd`
|
|||
PATCH="/usr/bin/patch"
|
||||
export PATH=$GOPATH:$PATH
|
||||
|
||||
compile_openvpn_adapter() {
|
||||
cd 3rd/OpenVPNAdapter
|
||||
|
||||
$XCODEBUILD -scheme OpenVPNAdapter -configuration Release -xcconfig Configuration/amnezia.xcconfig -sdk iphoneos -destination 'generic/platform=iOS' -project OpenVPNAdapter.xcodeproj
|
||||
|
||||
cd ../../
|
||||
}
|
||||
|
||||
|
||||
prepare_to_build_vpn() {
|
||||
cat $WORKINGDIR/3rd/OpenVPNAdapter/Configuration/Project.xcconfig > $WORKINGDIR/3rd/OpenVPNAdapter/Configuration/amnezia.xcconfig
|
||||
cat << EOF >> $WORKINGDIR/3rd/OpenVPNAdapter/Configuration/amnezia.xcconfig
|
||||
|
|
@ -62,8 +53,19 @@ prepare_to_build_vpn() {
|
|||
EOF
|
||||
}
|
||||
|
||||
compile_openvpn_adapter() {
|
||||
cd 3rd/OpenVPNAdapter
|
||||
$XCODEBUILD -scheme OpenVPNAdapter -configuration Release -xcconfig Configuration/amnezia.xcconfig -sdk iphoneos -destination 'generic/platform=iOS' -project OpenVPNAdapter.xcodeproj
|
||||
cd ../../
|
||||
}
|
||||
|
||||
prepare_to_build_ss() {
|
||||
cat $WORKINGDIR/scripts/ss_ios.xcconfig > $WORKINGDIR/3rd/ShadowSocks/ss_ios.xcconfig
|
||||
cat << EOF >> $WORKINGDIR/3rd/ShadowSocks/ss_ios.xcconfig
|
||||
PROJECT_TEMP_DIR = $WORKINGDIR/3rd/ShadowSocks/build/ShadowSocks.build
|
||||
CONFIGURATION_BUILD_DIR = $WORKINGDIR/3rd/ShadowSocks/build/Release-iphoneos
|
||||
BUILT_PRODUCTS_DIR = $WORKINGDIR/3rd/ShadowSocks/build/Release-iphoneos
|
||||
EOF
|
||||
}
|
||||
|
||||
patch_ss() {
|
||||
|
|
@ -82,25 +84,58 @@ patch_ss() {
|
|||
|
||||
compile_ss_frameworks() {
|
||||
$XCODEBUILD -scheme ShadowSocks -configuration Release -xcconfig ss_ios.xcconfig -sdk iphoneos -destination 'generic/platform=iOS' -project ShadowSocks.xcodeproj
|
||||
|
||||
cd ../../
|
||||
}
|
||||
|
||||
prepare_to_build_pp() {
|
||||
cat $WORKINGDIR/scripts/pp_ios.xcconfig > $WORKINGDIR/3rd/PacketProcessor/pp_ios.xcconfig
|
||||
#prepare_to_build_pp() {
|
||||
# cat $WORKINGDIR/scripts/pp_ios.xcconfig > $WORKINGDIR/3rd/PacketProcessor/pp_ios.xcconfig
|
||||
# cat << EOF >> $WORKINGDIR/3rd/PacketProcessor/pp_ios.xcconfig
|
||||
#PROJECT_TEMP_DIR = $WORKINGDIR/3rd/PacketProcessor/build/OpenVPNAdapter.build
|
||||
#CONFIGURATION_BUILD_DIR = $WORKINGDIR/3rd/PacketProcessor/build/Release-iphoneos
|
||||
#BUILT_PRODUCTS_DIR = $WORKINGDIR/3rd/PacketProcessor/build/Release-iphoneos
|
||||
#EOF
|
||||
#}
|
||||
#
|
||||
#compile_packet_processor() {
|
||||
# cd 3rd/PacketProcessor
|
||||
# $XCODEBUILD -scheme PacketProcessor -configuration Release -xcconfig pp_ios.xcconfig -sdk iphoneos -destination 'generic/platform=iOS' -project PacketProcessor.xcodeproj
|
||||
# cd ../../
|
||||
#}
|
||||
|
||||
prepare_to_build_cas() {
|
||||
cat $WORKINGDIR/scripts/cas_ios.xcconfig > $WORKINGDIR/3rd/CocoaAsyncSocket/cas_ios.xcconfig
|
||||
cat << EOF >> $WORKINGDIR/3rd/CocoaAsyncSocket/cas_ios.xcconfig
|
||||
PROJECT_TEMP_DIR = $WORKINGDIR/3rd/CocoaAsyncSocket/build/CocoaAsyncSocket.build
|
||||
CONFIGURATION_BUILD_DIR = $WORKINGDIR/3rd/CocoaAsyncSocket/build/Release-iphoneos
|
||||
BUILT_PRODUCTS_DIR = $WORKINGDIR/3rd/CocoaAsyncSocket/build/Release-iphoneos
|
||||
EOF
|
||||
}
|
||||
|
||||
|
||||
compile_packet_processor() {
|
||||
cd 3rd/PacketProcessor
|
||||
|
||||
$XCODEBUILD -scheme PacketProcessor -configuration Release -xcconfig pp_ios.xcconfig -sdk iphoneos -destination 'generic/platform=iOS' -project PacketProcessor.xcodeproj
|
||||
|
||||
compile_cocoa_async_socket() {
|
||||
cd 3rd/CocoaAsyncSocket
|
||||
$XCODEBUILD -scheme 'iOS Framework' -configuration Release -xcconfig cas_ios.xcconfig -sdk iphoneos -destination 'generic/platform=iOS' -project CocoaAsyncSocket.xcodeproj
|
||||
cd ../../
|
||||
}
|
||||
|
||||
compile_tun2socks() {
|
||||
gomobile bind -a -ldflags="-w -s" -bundleid org.amnezia.tun2socks -target=ios/arm64 -tags ios -o ./build/ios/Tun2Socks.xcframework github.com/Jigsaw-Code/outline-go-tun2socks/outline/apple github.com/Jigsaw-Code/outline-go-tun2socks/outline/shadowsocks
|
||||
cd 3rd/outline-go-tun2socks
|
||||
GOOS=ios GOARCH=arm64 GOFLAGS="-tags=ios" CC=iphoneos-clang CXX=iphoneos-clang++ CGO_CFLAGS="-isysroot iphoneos -miphoneos-version-min=12.0 -fembed-bitcode -arch arm64" CGO_CXXFLAGS="-isysroot iphoneos -miphoneos-version-min=12.0 -fembed-bitcode -arch arm64" CGO_LDFLAGS="-isysroot iphoneos -miphoneos-version-min=12.0 -fembed-bitcode -arch arm64" CGO_ENABLED=1 DARWIN_SDK=iphoneos gomobile bind -a -ldflags="-w -s" -bundleid org.amnezia.tun2socks -target=ios/arm64 -tags ios -o ./build/ios/Tun2Socks.xcframework github.com/Jigsaw-Code/outline-go-tun2socks/outline/apple github.com/Jigsaw-Code/outline-go-tun2socks/outline/shadowsocks
|
||||
cd ../../
|
||||
}
|
||||
|
||||
prepare_to_build_cl() {
|
||||
cat $WORKINGDIR/scripts/cl_ios.xcconfig > $WORKINGDIR/3rd/CocoaLumberjack/cl_ios.xcconfig
|
||||
cat << EOF >> $WORKINGDIR/3rd/CocoaLumberjack/cl_ios.xcconfig
|
||||
PROJECT_TEMP_DIR = $WORKINGDIR/3rd/CocoaLumberjack/build/CocoaLumberjack.build
|
||||
CONFIGURATION_BUILD_DIR = $WORKINGDIR/3rd/CocoaLumberjack/build/Release-iphoneos
|
||||
BUILT_PRODUCTS_DIR = $WORKINGDIR/3rd/CocoaLumberjack/build/Release-iphoneos
|
||||
EOF
|
||||
}
|
||||
|
||||
compile_cocoalamberjack() {
|
||||
cd 3rd/CocoaLumberjack
|
||||
$XCODEBUILD -scheme 'CocoaLumberjack' -configuration Release -xcconfig cl_ios.xcconfig -sdk iphoneos -destination 'generic/platform=iOS' -project Lumberjack.xcodeproj
|
||||
cd ../../
|
||||
}
|
||||
|
||||
die() {
|
||||
|
|
|
|||
|
|
@ -232,13 +232,30 @@ else
|
|||
print Y "No ShadowSocket Library will be built"
|
||||
fi
|
||||
|
||||
if [ "$OS" = "ios" ]; then
|
||||
print Y "Prepare to build CocoaAsyncSocket..."
|
||||
prepare_to_build_cas
|
||||
print Y "Building CocoaAsyncSocket Framework..."
|
||||
compile_cocoa_async_socket
|
||||
else
|
||||
print Y "No CocoaAsyncSocket will be built"
|
||||
fi
|
||||
|
||||
if [ "$OS" = "ios" ]; then
|
||||
print Y "Prepare to build Tun2Socks..."
|
||||
print Y "Building Tun2Socks Framework..."
|
||||
compile_tun2socks
|
||||
else
|
||||
print Y "No Tun2Socks will be built"
|
||||
fi
|
||||
|
||||
#if [ "$OS" = "ios" ]; then
|
||||
# print Y "Prepare to build Packet Processor..."
|
||||
# prepare_to_build_pp
|
||||
# print Y "Building PacketProcessor Framework..."
|
||||
# compile_packet_processor
|
||||
# print Y "Prepare to build CocoaLamberjack..."
|
||||
# prepare_to_build_cl
|
||||
# print Y "Building CocoaLamberjack Framework..."
|
||||
# compile_cocoalamberjack
|
||||
#else
|
||||
# print Y "No Packet Processor will be built"
|
||||
# print Y "No CocoaLamberjack will be built"
|
||||
#fi
|
||||
|
||||
print Y "Creating the xcode project via qmake..."
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
SUPPORTED_PLATFORMS = iphoneos
|
||||
TARGETED_DEVICE_FAMILY = 1,2
|
||||
|
||||
HEADER_SEARCH_PATHS = $(inherited) $(SRCROOT)/client/3rd/PacketProcessor/PacketProcessor
|
||||
HEADER_SEARCH_PATHS = $(inherited) $(SRCROOT)/PacketProcessor
|
||||
//CLANG_CXX_LANGUAGE_STANDARD = gnu++14
|
||||
//CLANG_CXX_LIBRARY = libc++
|
||||
|
||||
|
|
@ -16,7 +16,3 @@ SDKROOT[arch=armv7] = iphoneos
|
|||
SDKROOT[arch=armv7s] = iphoneos
|
||||
|
||||
VALID_ARCHS[sdk=iphoneos*] = arm64
|
||||
|
||||
PROJECT_TEMP_DIR = $(SRCROOT)/client/3rd/PacketProcessor/build/PacketProcessor.build
|
||||
CONFIGURATION_BUILD_DIR = $(SRCROOT)/client/3rd/PacketProcessor/build/Release-iphoneos
|
||||
BUILT_PRODUCTS_DIR = $(SRCROOT)/client/3rd/PacketProcessor/build/Release-iphoneos
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
SUPPORTED_PLATFORMS = iphoneos
|
||||
TARGETED_DEVICE_FAMILY = 1,2
|
||||
|
||||
HEADER_SEARCH_PATHS = $(inherited) $(SRCROOT)/client/3rd/ShadowSocks/ShadowSocks
|
||||
//HEADER_SEARCH_PATHS = $(inherited) $(SRCROOT)/client/3rd/ShadowSocks/ShadowSocks $(SRCROOT)/client/3rd/ShadowSocks/ShadowSocks/libcares/include $(SRCROOT)/client/3rd/ShadowSocks/ShadowSocks/libev/arm64/include $(SRCROOT)/client/3rd/ShadowSocks/ShadowSocks/libsodium/include $(SRCROOT)/client/3rd/ShadowSocks/ShadowSocks/mbedtls/include $(SRCROOT)/client/3rd/ShadowSocks/ShadowSocks/pcre/arm64/include $(SRCROOT)/client/3rd/ShadowSocks/ShadowSocks/shadowsocks-libev/include
|
||||
HEADER_SEARCH_PATHS = $(inherited) $(SRCROOT)/ShadowSocks
|
||||
//HEADER_SEARCH_PATHS = $(inherited) $(SRCROOT)/ShadowSocks $(SRCROOT)/ShadowSocks/libcares/include $(SRCROOT)/ShadowSocks/libev/arm64/include $(SRCROOT)/ShadowSocks/libsodium/include $(SRCROOT)/ShadowSocks/mbedtls/include $(SRCROOT)/ShadowSocks/pcre/arm64/include $(SRCROOT)/ShadowSocks/shadowsocks-libev/include
|
||||
|
||||
//CLANG_CXX_LANGUAGE_STANDARD = gnu++14
|
||||
//CLANG_CXX_LIBRARY = libc++
|
||||
|
|
@ -18,7 +18,3 @@ SDKROOT[arch=armv7] = iphoneos
|
|||
SDKROOT[arch=armv7s] = iphoneos
|
||||
|
||||
VALID_ARCHS[sdk=iphoneos*] = arm64
|
||||
|
||||
PROJECT_TEMP_DIR = $(SRCROOT)/client/3rd/ShadowSocks/build/ShadowSocks.build
|
||||
CONFIGURATION_BUILD_DIR = $(SRCROOT)/client/3rd/ShadowSocks/build/Release-iphoneos
|
||||
BUILT_PRODUCTS_DIR = $(SRCROOT)/client/3rd/ShadowSocks/build/Release-iphoneos
|
||||
|
|
@ -11,8 +11,9 @@ class XCodeprojPatcher
|
|||
|
||||
def run(file, shortVersion, fullVersion, platform, networkExtension, configHash, adjust_sdk_token)
|
||||
open_project file
|
||||
setup_project
|
||||
open_target_main
|
||||
|
||||
|
||||
die 'IOS requires networkExtension mode' if not networkExtension and platform == 'ios'
|
||||
|
||||
group = @project.main_group.new_group('Configuration')
|
||||
|
|
@ -43,6 +44,12 @@ class XCodeprojPatcher
|
|||
@project = Xcodeproj::Project.open(file)
|
||||
die 'Failed to open the project file: ' + file if @project.nil?
|
||||
end
|
||||
|
||||
def setup_project
|
||||
@project.build_configurations.each do |config|
|
||||
config.build_settings['SYMROOT'] = 'build'
|
||||
end
|
||||
end
|
||||
|
||||
def open_target_main
|
||||
@target_main = @project.targets.find { |target| target.to_s == 'AmneziaVPN' }
|
||||
|
|
@ -50,6 +57,7 @@ class XCodeprojPatcher
|
|||
|
||||
die 'Unable to open AmneziaVPN target'
|
||||
end
|
||||
|
||||
|
||||
def setup_target_main(shortVersion, fullVersion, platform, networkExtension, configHash, adjust_sdk_token)
|
||||
@target_main.build_configurations.each do |config|
|
||||
|
|
@ -63,10 +71,11 @@ class XCodeprojPatcher
|
|||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3rd",
|
||||
"$(PROJECT_DIR)/3rd/OpenVPNAdapter/build/Release-iphoneos",
|
||||
# "$(PROJECT_DIR)/3rd/ShadowSocks/build/Release-iphoneos",
|
||||
"$(PROJECT_DIR)/3rd/ShadowSocks/build/Release-iphoneos",
|
||||
# "$(PROJECT_DIR)/3rd/PacketProcessor/build/Release-iphoneos",
|
||||
# "$(PROJECT_DIR)/3rd/outline-go-tun2socks/build/ios",
|
||||
# "${PROJECT_DIR}/3rd/PacketProcessor/PacketProcessor/CocoaAsyncSocket",
|
||||
"$(PROJECT_DIR)/3rd/outline-go-tun2socks/build/ios",
|
||||
"${PROJECT_DIR}/3rd/CocoaAsyncSocket/build/Release-iphoneos",
|
||||
# "${PROJECT_DIR}/3rd/CocoaLumberjack/build/Release-iphoneos",
|
||||
]
|
||||
|
||||
# Versions and names
|
||||
|
|
@ -265,15 +274,17 @@ class XCodeprojPatcher
|
|||
config.build_settings['SWIFT_OBJC_BRIDGING_HEADER'] ||= 'macos/networkextension/WireGuardNetworkExtension-Bridging-Header.h'
|
||||
config.build_settings['SWIFT_PRECOMPILE_BRIDGING_HEADER'] = 'NO'
|
||||
config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'YES'
|
||||
# config.build_settings['STRIP_BITCODE_FROM_COPIED_FILES'] = 'NO'
|
||||
config.build_settings['STRIP_BITCODE_FROM_COPIED_FILES'] = 'NO'
|
||||
config.build_settings['FRAMEWORK_SEARCH_PATHS'] ||= [
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3rd",
|
||||
"$(PROJECT_DIR)/3rd/OpenVPNAdapter/build/Release-iphoneos",
|
||||
# "$(PROJECT_DIR)/3rd/ShadowSocks/build/Release-iphoneos",
|
||||
"$(PROJECT_DIR)/3rd/libleaf/include",
|
||||
"$(PROJECT_DIR)/3rd/ShadowSocks/build/Release-iphoneos",
|
||||
# "$(PROJECT_DIR)/3rd/PacketProcessor/build/Release-iphoneos",
|
||||
# "$(PROJECT_DIR)/3rd/outline-go-tun2socks/build/ios",
|
||||
# "${PROJECT_DIR}/3rd/PacketProcessor/PacketProcessor/CocoaAsyncSocket",
|
||||
"$(PROJECT_DIR)/3rd/outline-go-tun2socks/build/ios",
|
||||
"${PROJECT_DIR}/3rd/CocoaAsyncSocket/build/Release-iphoneos",
|
||||
# "${PROJECT_DIR}/3rd/CocoaLumberjack/build/Release-iphoneos",
|
||||
]
|
||||
|
||||
# Versions and names
|
||||
|
|
@ -357,13 +368,19 @@ class XCodeprojPatcher
|
|||
|
||||
[
|
||||
'platforms/ios/iostunnel.swift',
|
||||
'platforms/ios/iosglue.mm',
|
||||
'platforms/ios/ioslogger.swift',
|
||||
# 'platforms/ios/Shadowsocks.h',
|
||||
# 'platforms/ios/Shadowsocks.m',
|
||||
# 'platforms/ios/ShadowsocksConnectivity.h',
|
||||
# 'platforms/ios/ShadowsocksConnectivity.m',
|
||||
# 'platforms/ios/Subnet.swift',
|
||||
'platforms/ios/iosinterface.swift',
|
||||
'platforms/ios/ssprovider.swift',
|
||||
'platforms/ios/iosglue.mm',
|
||||
'platforms/ios/ssconnectivity.h',
|
||||
'platforms/ios/ssconnectivity.m',
|
||||
'platforms/ios/iosopenvpn2ssadapter.h',
|
||||
'platforms/ios/iosopenvpn2ssadapter.m',
|
||||
'platforms/ios/sspacket.h',
|
||||
'platforms/ios/sspacket.m',
|
||||
'platforms/ios/ssadapterpacketflow.h',
|
||||
'platforms/ios/tun2ssprovider.swift',
|
||||
'platforms/ios/tun2sockswriter.swift',
|
||||
].each { |filename|
|
||||
file = group.new_file(filename)
|
||||
@target_extension.add_file_references([file])
|
||||
|
|
@ -376,6 +393,9 @@ class XCodeprojPatcher
|
|||
|
||||
framework_ref = frameworks_group.new_file('libwg-go.a')
|
||||
frameworks_build_phase.add_file_reference(framework_ref)
|
||||
|
||||
framework_ref = frameworks_group.new_file('3rd/libleaf/lib/libleaf.a')
|
||||
frameworks_build_phase.add_file_reference(framework_ref)
|
||||
|
||||
framework_ref = frameworks_group.new_file('NetworkExtension.framework')
|
||||
frameworks_build_phase.add_file_reference(framework_ref)
|
||||
|
|
@ -392,15 +412,20 @@ class XCodeprojPatcher
|
|||
framework_ref = frameworks_group.new_file('3rd/OpenVPNAdapter/build/Release-iphoneos/OpenVPNAdapter.framework')
|
||||
frameworks_build_phase.add_file_reference(framework_ref)
|
||||
|
||||
# framework_ref = frameworks_group.new_file('3rd/ShadowSocks/build/Release-iphoneos/ShadowSocks.framework')
|
||||
# frameworks_build_phase.add_file_reference(framework_ref)
|
||||
#
|
||||
# framework_ref = frameworks_group.new_file('3rd/PacketProcessor/PacketProcessor/CocoaAsyncSocket/CocoaAsyncSocket.framework')
|
||||
# frameworks_build_phase.add_file_reference(framework_ref)
|
||||
#
|
||||
# framework_ref = frameworks_group.new_file('3rd/outline-go-tun2socks/build/ios/Tun2socks.framework')
|
||||
framework_ref = frameworks_group.new_file('3rd/ShadowSocks/build/Release-iphoneos/ShadowSocks.framework')
|
||||
frameworks_build_phase.add_file_reference(framework_ref)
|
||||
|
||||
framework_ref = frameworks_group.new_file('3rd/CocoaAsyncSocket/build/Release-iphoneos/CocoaAsyncSocket.framework')
|
||||
frameworks_build_phase.add_file_reference(framework_ref)
|
||||
|
||||
framework_ref = frameworks_group.new_file('3rd/outline-go-tun2socks/build/ios/Tun2socks.xcframework')
|
||||
frameworks_build_phase.add_file_reference(framework_ref)
|
||||
|
||||
# framework_ref = frameworks_group.new_file('3rd/CocoaLumberjack/build/Release-iphoneos/CocoaLumberjack.framework')
|
||||
# frameworks_build_phase.add_file_reference(framework_ref)
|
||||
|
||||
|
||||
|
||||
|
||||
# This fails: @target_main.add_dependency @target_extension
|
||||
container_proxy = @project.new(Xcodeproj::Project::PBXContainerItemProxy)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue