mirror of
https://github.com/deneraraujo/OpenVPNAdapter.git
synced 2026-02-11 00:00:08 +08:00
Merge branch 'feature/spm' into develop
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@@ -49,6 +49,11 @@ playground.xcworkspace
|
||||
|
||||
Carthage/Build
|
||||
|
||||
# Swift PM
|
||||
|
||||
.build/
|
||||
.swiftpm
|
||||
|
||||
## macOS generated
|
||||
|
||||
# General
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
#include "Framework.xcconfig"
|
||||
|
||||
ONLY_ACTIVE_ARCH = YES
|
||||
SWIFT_OPTIMIZATION_LEVEL = -Onone
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = $(inherited) DEBUG
|
||||
BITCODE_GENERATION_MODE = marker
|
||||
@@ -1,16 +0,0 @@
|
||||
PRODUCT_NAME = OpenVPNAdapter
|
||||
PRODUCT_BUNDLE_IDENTIFIER = me.ss-abramchuk.openvpn-adapter
|
||||
INFOPLIST_FILE = Configuration/Info-Framework.plist
|
||||
MODULEMAP_FILE = Configuration/OpenVPNAdapter.modulemap
|
||||
DYLIB_CURRENT_VERSION = $(CURRENT_PROJECT_VERSION)
|
||||
APPLICATION_EXTENSION_API_ONLY = YES
|
||||
CLANG_CXX_LANGUAGE_STANDARD = gnu++14
|
||||
CLANG_CXX_LIBRARY = libc++
|
||||
VENDORS_DIR = $(PROJECT_DIR)/Sources/OpenVPNAdapter/Libraries/Vendors
|
||||
HEADER_SEARCH_PATHS = "$(VENDORS_DIR)/asio/asio/include" "$(VENDORS_DIR)/lz4/include" "$(VENDORS_DIR)/mbedtls/include" "$(VENDORS_DIR)/openvpn"
|
||||
LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*] = "$(VENDORS_DIR)/lz4/lib/ios" "$(VENDORS_DIR)/mbedtls/lib/ios"
|
||||
LIBRARY_SEARCH_PATHS[sdk=iphoneos*] = "$(VENDORS_DIR)/lz4/lib/ios" "$(VENDORS_DIR)/mbedtls/lib/ios"
|
||||
LIBRARY_SEARCH_PATHS[sdk=macosx*] = "$(VENDORS_DIR)/lz4/lib/macos" "$(VENDORS_DIR)/mbedtls/lib/macos"
|
||||
OTHER_LDFLAGS = -lmbedtls -lmbedx509 -lmbedcrypto -llz4
|
||||
OTHER_CPLUSPLUSFLAGS = $(OTHER_CFLAGS) -DUSE_ASIO -DUSE_ASIO_THREADLOCAL -DASIO_STANDALONE -DASIO_NO_DEPRECATED -DASIO_HAS_STD_STRING_VIEW -DHAVE_LZ4 -DUSE_MBEDTLS -DOPENVPN_FORCE_TUN_NULL -DUSE_TUN_BUILDER
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = NO
|
||||
1
Configuration/LZ4.xcconfig
Normal file
1
Configuration/LZ4.xcconfig
Normal file
@@ -0,0 +1 @@
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) XXH_NAMESPACE=LZ4_
|
||||
3
Configuration/OpenVPNAdapter.xcconfig
Normal file
3
Configuration/OpenVPNAdapter.xcconfig
Normal file
@@ -0,0 +1,3 @@
|
||||
MODULEMAP_FILE = Sources/OpenVPNAdapter/module.modulemap
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) USE_ASIO
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = NO
|
||||
2
Configuration/OpenVPNClient.xcconfig
Normal file
2
Configuration/OpenVPNClient.xcconfig
Normal file
@@ -0,0 +1,2 @@
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) USE_ASIO USE_ASIO_THREADLOCAL ASIO_STANDALONE ASIO_NO_DEPRECATED ASIO_HAS_STD_STRING_VIEW USE_MBEDTLS HAVE_LZ4 OPENVPN_FORCE_TUN_NULL USE_TUN_BUILDER
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = NO
|
||||
@@ -1,24 +1,31 @@
|
||||
SUPPORTED_PLATFORMS = iphoneos iphonesimulator macosx
|
||||
TARGETED_DEVICE_FAMILY = 1,2
|
||||
|
||||
HEADER_SEARCH_PATHS = $(inherited) $(SRCROOT)/Sources/OpenVPNAdapter/include $(SRCROOT)/Sources/OpenVPNClient/include $(SRCROOT)/Sources/LZ4/include $(SRCROOT)/Sources/mbedTLS/include $(SRCROOT)/Sources/ASIO/asio/include $(SRCROOT)/Sources/OpenVPN3
|
||||
|
||||
CLANG_CXX_LANGUAGE_STANDARD = gnu++14
|
||||
CLANG_CXX_LIBRARY = libc++
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// iOS-specific settings
|
||||
//
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0
|
||||
|
||||
SDKROOT[arch=arm64] = iphoneos
|
||||
SDKROOT[arch=armv7] = iphoneos
|
||||
SDKROOT[arch=armv7s] = iphoneos
|
||||
|
||||
VALID_ARCHS[sdk=iphoneos*] = arm64 armv7 armv7s
|
||||
VALID_ARCHS[sdk=iphonesimulator*] = i386 x86_64
|
||||
|
||||
LD_RUNPATH_SEARCH_PATHS[sdk=iphoneos*] = @executable_path/Frameworks @loader_path/Frameworks
|
||||
LD_RUNPATH_SEARCH_PATHS[sdk=iphonesimulator*] = @executable_path/Frameworks @loader_path/Frameworks
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// macOS-specific settings
|
||||
//
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.11
|
||||
|
||||
VALID_ARCHS[sdk=macosx*] = i386 x86_64
|
||||
SDKROOT[arch=i386] = macosx
|
||||
SDKROOT[arch=x86_64] = macosx
|
||||
|
||||
LD_RUNPATH_SEARCH_PATHS[sdk=macosx*] = @executable_path/../Frameworks @loader_path/../Frameworks
|
||||
VALID_ARCHS[sdk=macosx*] = i386 x86_64
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
#include "Framework.xcconfig"
|
||||
|
||||
ONLY_ACTIVE_ARCH = NO
|
||||
SWIFT_OPTIMIZATION_LEVEL = -Owholemodule
|
||||
BITCODE_GENERATION_MODE = bitcode
|
||||
@@ -1,5 +0,0 @@
|
||||
PRODUCT_NAME = OpenVPNAdapterTests
|
||||
PRODUCT_BUNDLE_IDENTIFIER = me.ss-abramchuk.openvpn-adapter.tests
|
||||
INFOPLIST_FILE = Configuration/Info-Tests.plist
|
||||
SWIFT_OPTIMIZATION_LEVEL = -Onone
|
||||
ONLY_ACTIVE_ARCH = YES
|
||||
1
Configuration/mbedTLS.xcconfig
Normal file
1
Configuration/mbedTLS.xcconfig
Normal file
@@ -0,0 +1 @@
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) MBEDTLS_MD4_C MBEDTLS_RELAXED_X509_DATE _FILE_OFFSET_BITS=64
|
||||
@@ -35,116 +35,70 @@ Pod::Spec.new do |s|
|
||||
s.source = { :git => "https://github.com/ss-abramchuk/OpenVPNAdapter.git", :tag => "#{s.version}" }
|
||||
|
||||
|
||||
# ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
|
||||
framework_path = "Sources/OpenVPNAdapter"
|
||||
vendors_path = "#{framework_path}/Libraries/Vendors"
|
||||
|
||||
s.source_files = "#{framework_path}/*.{h,m,mm}"
|
||||
|
||||
s.public_header_files = "#{framework_path}/*.h"
|
||||
s.private_header_files = [
|
||||
"#{framework_path}/*+Internal.h",
|
||||
"#{framework_path}/OpenVPNReachabilityTracker.h",
|
||||
"#{framework_path}/OpenVPNClient.h",
|
||||
"#{framework_path}/OpenVPNNetworkSettingsBuilder.h",
|
||||
"#{framework_path}/OpenVPNPacket.h",
|
||||
"#{framework_path}/OpenVPNPacketFlowBridge.h",
|
||||
"#{framework_path}/NSError+OpenVPNError.h",
|
||||
"#{framework_path}/NSArray+OpenVPNAdditions.h"
|
||||
]
|
||||
|
||||
s.module_map = "Configuration/OpenVPNAdapter.modulemap"
|
||||
|
||||
|
||||
# ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
|
||||
s.ios.frameworks = "Foundation", "NetworkExtension", "SystemConfiguration", "UIKit"
|
||||
s.osx.frameworks = "Foundation", "NetworkExtension", "SystemConfiguration"
|
||||
|
||||
s.libraries = "lz4", "mbedcrypto", "mbedtls", "mbedx509"
|
||||
|
||||
|
||||
# ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
|
||||
s.requires_arc = true
|
||||
s.prefix_header_file = false
|
||||
|
||||
adapter_path = "Sources/OpenVPNAdapter"
|
||||
asio_path = "Sources/ASIO"
|
||||
lz4_path = "Sources/LZ4"
|
||||
mbedtls_path = "Sources/mbedTLS"
|
||||
openvpn_path = "Sources/OpenVPN3"
|
||||
client_path = "Sources/OpenVPNClient"
|
||||
|
||||
s.xcconfig = {
|
||||
"APPLICATION_EXTENSION_API_ONLY" => "YES",
|
||||
"CLANG_CXX_LANGUAGE_STANDARD" => "gnu++14",
|
||||
"CLANG_CXX_LIBRARY" => "libc++",
|
||||
"GCC_WARN_64_TO_32_BIT_CONVERSION" => "NO",
|
||||
"CLANG_WARN_DOCUMENTATION_COMMENTS" => "NO"
|
||||
"CLANG_WARN_DOCUMENTATION_COMMENTS" => "NO",
|
||||
"HEADER_SEARCH_PATHS" => "\"${PODS_TARGET_SRCROOT}/#{asio_path}/asio/include/**\" \"${PODS_TARGET_SRCROOT}/#{mbedtls_path}/include/**\" \"${PODS_TARGET_SRCROOT}/#{openvpn_path}/**\""
|
||||
}
|
||||
|
||||
|
||||
# ――― Subspecs ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
|
||||
s.subspec "lz4" do |lz4|
|
||||
lz4_path = "#{vendors_path}/lz4"
|
||||
s.subspec "OpenVPNAdapter" do |adapter|
|
||||
adapter.source_files = "#{adapter_path}/library/*.{h,m,mm}", "#{adapter_path}/include/*.h"
|
||||
adapter.public_header_files = "#{adapter_path}/include/*.h"
|
||||
|
||||
lz4.preserve_paths = "#{lz4_path}/include/*.h"
|
||||
|
||||
lz4.ios.vendored_libraries = [
|
||||
"#{lz4_path}/lib/ios/liblz4.a"
|
||||
]
|
||||
|
||||
lz4.osx.vendored_libraries = [
|
||||
"#{lz4_path}/lib/macos/liblz4.a"
|
||||
]
|
||||
|
||||
lz4.xcconfig = {
|
||||
"HEADER_SEARCH_PATHS" => "${PODS_TARGET_SRCROOT}/#{lz4_path}/include/**"
|
||||
}
|
||||
adapter.compiler_flags = "-DUSE_ASIO"
|
||||
end
|
||||
|
||||
s.subspec "mbedtls" do |mbedtls|
|
||||
mbedtls_path = "#{vendors_path}/mbedtls"
|
||||
|
||||
mbedtls.preserve_paths = "#{mbedtls_path}/include/**/*.h"
|
||||
|
||||
mbedtls.ios.vendored_libraries = [
|
||||
"#{mbedtls_path}/lib/ios/libmbedcrypto.a",
|
||||
"#{mbedtls_path}/lib/ios/libmbedtls.a",
|
||||
"#{mbedtls_path}/lib/ios/libmbedx509.a"
|
||||
]
|
||||
|
||||
mbedtls.osx.vendored_libraries = [
|
||||
"#{mbedtls_path}/lib/macos/libmbedcrypto.a",
|
||||
"#{mbedtls_path}/lib/macos/libmbedtls.a",
|
||||
"#{mbedtls_path}/lib/macos/libmbedx509.a"
|
||||
]
|
||||
|
||||
mbedtls.xcconfig = {
|
||||
"HEADER_SEARCH_PATHS" => "${PODS_TARGET_SRCROOT}/#{mbedtls_path}/include/**"
|
||||
}
|
||||
end
|
||||
|
||||
s.subspec "asio" do |asio|
|
||||
asio_path = "#{vendors_path}/asio"
|
||||
|
||||
s.subspec "ASIO" do |asio|
|
||||
asio.preserve_paths = "#{asio_path}/asio/include/**/*.{hpp,ipp}"
|
||||
|
||||
asio.xcconfig = {
|
||||
"HEADER_SEARCH_PATHS" => "${PODS_TARGET_SRCROOT}/#{asio_path}/asio/include/**"
|
||||
}
|
||||
end
|
||||
|
||||
s.subspec "openvpn" do |openvpn|
|
||||
openvpn_path = "#{vendors_path}/openvpn"
|
||||
s.subspec "LZ4" do |lz4|
|
||||
lz4.source_files = "#{lz4_path}/lib/*.{h,c}",
|
||||
lz4.private_header_files = "#{lz4_path}/lib/*.{h,c}"
|
||||
|
||||
openvpn.source_files = "#{openvpn_path}/client/*.{hpp,cpp}"
|
||||
openvpn.private_header_files = "#{openvpn_path}/client/*.hpp"
|
||||
lz4.compiler_flags = "-DXXH_NAMESPACE=LZ4_"
|
||||
end
|
||||
|
||||
openvpn.preserve_paths = "#{openvpn_path}/openvpn/**/*.hpp"
|
||||
s.subspec "mbedTLS" do |mbedtls|
|
||||
mbedtls.source_files = "#{mbedtls_path}/library/*.{c}"
|
||||
mbedtls.preserve_paths = "#{mbedtls_path}/include/**/*.{h}"
|
||||
|
||||
openvpn.compiler_flags = "-x objective-c++"
|
||||
mbedtls.compiler_flags = "-DMBEDTLS_MD4_C", "-DMBEDTLS_RELAXED_X509_DATE", "-D_FILE_OFFSET_BITS=64"
|
||||
end
|
||||
|
||||
openvpn.xcconfig = {
|
||||
"HEADER_SEARCH_PATHS" => "${PODS_TARGET_SRCROOT}/#{openvpn_path}/**",
|
||||
"OTHER_CPLUSPLUSFLAGS" => "$(OTHER_CFLAGS) -DUSE_ASIO -DUSE_ASIO_THREADLOCAL -DASIO_STANDALONE -DASIO_NO_DEPRECATED -DASIO_HAS_STD_STRING_VIEW -DHAVE_LZ4 -DUSE_MBEDTLS -DOPENVPN_FORCE_TUN_NULL -DUSE_TUN_BUILDER"
|
||||
}
|
||||
s.subspec "OpenVPN3" do |openvpn|
|
||||
openvpn.preserve_paths = "#{openvpn_path}/openvpn/**/*.hpp", "#{openvpn_path}/client/*.{hpp,cpp}"
|
||||
end
|
||||
|
||||
s.subspec "OpenVPNClient" do |client|
|
||||
client.source_files = "#{client_path}/library/*.{mm}", "#{client_path}/include/*.{hpp}"
|
||||
client.private_header_files = "#{client_path}/include/*.{hpp}"
|
||||
|
||||
client.compiler_flags = "-x objective-c++", "-DUSE_ASIO", "-DUSE_ASIO_THREADLOCAL", "-DASIO_STANDALONE", "-DASIO_NO_DEPRECATED", "-DASIO_HAS_STD_STRING_VIEW", "-DHAVE_LZ4", "-DUSE_MBEDTLS", "-DOPENVPN_FORCE_TUN_NULL", "-DUSE_TUN_BUILDER"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -15,7 +15,9 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.4.0</string>
|
||||
<string>$(MARKETING_VERSION)</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
26
OpenVPNAdapter.xcodeproj/OpenVPNAdapter_Info.plist
Normal file
26
OpenVPNAdapter.xcodeproj/OpenVPNAdapter_Info.plist
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>$(MARKETING_VERSION)</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
26
OpenVPNAdapter.xcodeproj/OpenVPNClient_Info.plist
Normal file
26
OpenVPNAdapter.xcodeproj/OpenVPNClient_Info.plist
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>$(MARKETING_VERSION)</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
26
OpenVPNAdapter.xcodeproj/mbedTLS_Info.plist
Normal file
26
OpenVPNAdapter.xcodeproj/mbedTLS_Info.plist
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>$(MARKETING_VERSION)</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2,6 +2,6 @@
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:/Users/ss.abramchuk/Sources.localized/open-source.localized/openvpn-adapter/OpenVPNAdapter.xcodeproj">
|
||||
location = "self:">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
</Workspace>
|
||||
@@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict/>
|
||||
</plist>
|
||||
<dict>
|
||||
<key>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,100 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1020"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "C9D2ABD81EA20F99007EDF9D"
|
||||
BuildableName = "OpenVPNAdapter.framework"
|
||||
BlueprintName = "OpenVPNAdapter macOS"
|
||||
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
codeCoverageEnabled = "YES"
|
||||
shouldUseLaunchSchemeArgsEnv = "NO">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "C9D2ABF21EA212A3007EDF9D"
|
||||
BuildableName = "OpenVPNAdapterTests.xctest"
|
||||
BlueprintName = "OpenVPNAdapter macOS Tests"
|
||||
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "C9D2ABD81EA20F99007EDF9D"
|
||||
BuildableName = "OpenVPNAdapter.framework"
|
||||
BlueprintName = "OpenVPNAdapter macOS"
|
||||
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "C9D2ABD81EA20F99007EDF9D"
|
||||
BuildableName = "OpenVPNAdapter.framework"
|
||||
BlueprintName = "OpenVPNAdapter macOS"
|
||||
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "C9D2ABD81EA20F99007EDF9D"
|
||||
BuildableName = "OpenVPNAdapter.framework"
|
||||
BlueprintName = "OpenVPNAdapter macOS"
|
||||
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1020"
|
||||
LastUpgradeVersion = "9999"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
@@ -14,9 +14,51 @@
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "C9BB475B1E71663A00F3F98C"
|
||||
BlueprintIdentifier = "OpenVPNAdapter::mbedTLS"
|
||||
BuildableName = "mbedTLS.framework"
|
||||
BlueprintName = "mbedTLS"
|
||||
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "OpenVPNAdapter::LZ4"
|
||||
BuildableName = "LZ4.framework"
|
||||
BlueprintName = "LZ4"
|
||||
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "OpenVPNAdapter::OpenVPNClient"
|
||||
BuildableName = "OpenVPNClient.framework"
|
||||
BlueprintName = "OpenVPNClient"
|
||||
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "OpenVPNAdapter::OpenVPNAdapter"
|
||||
BuildableName = "OpenVPNAdapter.framework"
|
||||
BlueprintName = "OpenVPNAdapter iOS"
|
||||
BlueprintName = "OpenVPNAdapter"
|
||||
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
@@ -26,31 +68,24 @@
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
codeCoverageEnabled = "YES"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "C9BB478D1E71821A00F3F98C"
|
||||
BlueprintIdentifier = "C97E5FCC24123F2E005C2EBC"
|
||||
BuildableName = "OpenVPNAdapterTests.xctest"
|
||||
BlueprintName = "OpenVPNAdapter iOS Tests"
|
||||
BlueprintName = "OpenVPNAdapterTests"
|
||||
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
|
||||
</BuildableReference>
|
||||
<SkippedTests>
|
||||
<Test
|
||||
Identifier = "OpenVPNReachabilityTests">
|
||||
</Test>
|
||||
</SkippedTests>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "C9BB475B1E71663A00F3F98C"
|
||||
BuildableName = "OpenVPNAdapter.framework"
|
||||
BlueprintName = "OpenVPNAdapter iOS"
|
||||
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
@@ -62,17 +97,6 @@
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "C9BB475B1E71663A00F3F98C"
|
||||
BuildableName = "OpenVPNAdapter.framework"
|
||||
BlueprintName = "OpenVPNAdapter iOS"
|
||||
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
@@ -83,9 +107,9 @@
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "C9BB475B1E71663A00F3F98C"
|
||||
BuildableName = "OpenVPNAdapter.framework"
|
||||
BlueprintName = "OpenVPNAdapter iOS"
|
||||
BlueprintIdentifier = "OpenVPNAdapter::OpenVPNClient"
|
||||
BuildableName = "OpenVPNClient.framework"
|
||||
BlueprintName = "OpenVPNClient"
|
||||
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
67
Package.swift
Normal file
67
Package.swift
Normal file
@@ -0,0 +1,67 @@
|
||||
// swift-tools-version:5.1
|
||||
|
||||
import PackageDescription
|
||||
|
||||
let package = Package(
|
||||
name: "OpenVPNAdapter",
|
||||
platforms: [
|
||||
.iOS("9.0"),
|
||||
.macOS("10.11"),
|
||||
],
|
||||
products: [
|
||||
.library(name: "OpenVPNAdapter", type: .static, targets: ["OpenVPNAdapter"]),
|
||||
],
|
||||
targets: [
|
||||
.target(
|
||||
name: "OpenVPNAdapter",
|
||||
dependencies: [
|
||||
.target(name: "mbedTLS"),
|
||||
.target(name: "OpenVPNClient")
|
||||
],
|
||||
sources: ["library"],
|
||||
cxxSettings: [
|
||||
.headerSearchPath("../ASIO/asio/include"),
|
||||
.headerSearchPath("../OpenVPN3"),
|
||||
.define("USE_ASIO")
|
||||
]
|
||||
),
|
||||
.target(
|
||||
name: "LZ4",
|
||||
sources: ["lib"],
|
||||
cSettings: [
|
||||
.define("XXH_NAMESPACE", to: "LZ4_")
|
||||
]
|
||||
),
|
||||
.target(
|
||||
name: "mbedTLS",
|
||||
sources: ["library"],
|
||||
cSettings: [
|
||||
.define("MBEDTLS_MD4_C"),
|
||||
.define("MBEDTLS_RELAXED_X509_DATE"),
|
||||
.define("_FILE_OFFSET_BITS", to: "64"),
|
||||
]
|
||||
),
|
||||
.target(
|
||||
name: "OpenVPNClient",
|
||||
dependencies: [
|
||||
.target(name: "LZ4"),
|
||||
.target(name: "mbedTLS")
|
||||
],
|
||||
sources: ["library"],
|
||||
cxxSettings: [
|
||||
.headerSearchPath("../ASIO/asio/include"),
|
||||
.headerSearchPath("../OpenVPN3"),
|
||||
.define("USE_ASIO"),
|
||||
.define("USE_ASIO_THREADLOCAL"),
|
||||
.define("ASIO_STANDALONE"),
|
||||
.define("ASIO_NO_DEPRECATED"),
|
||||
.define("ASIO_HAS_STD_STRING_VIEW"),
|
||||
.define("USE_MBEDTLS"),
|
||||
.define("HAVE_LZ4"),
|
||||
.define("OPENVPN_FORCE_TUN_NULL"),
|
||||
.define("USE_TUN_BUILDER")
|
||||
]
|
||||
)
|
||||
],
|
||||
cxxLanguageStandard: .gnucxx14
|
||||
)
|
||||
@@ -3,8 +3,10 @@
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
## Overview
|
||||
@@ -16,7 +18,7 @@ The framework is designed to use in conjunction with [`NetworkExtension`](https:
|
||||
|
||||
### Requirements
|
||||
- iOS 9.0+ or macOS 10.11+
|
||||
- Xcode 9.0+
|
||||
- Xcode 11.0+
|
||||
|
||||
### Carthage
|
||||
To install OpenVPNAdapter with Carthage, add the following line to your `Cartfile`.
|
||||
@@ -39,6 +41,9 @@ end
|
||||
|
||||
And run `$ pod install`.
|
||||
|
||||
### Swift Package Manager
|
||||
Add `OpenVPNAdapter` package to your project using File > Swift Packages > Add Package Dependency menu. Xcode 11 will automatically retrieve all necessary dependencies. In addition to that you need to add `SystemConfiguration` framework to the Frameworks and Libraries. If you work on iOS project add `UIKit` as well.
|
||||
|
||||
## Usage
|
||||
At first, you need to add a Packet Tunnel Provider extension to the project and configure provision profiles for both the container app and the extension. There are official documentation and many tutorials describing how to do it so we won't dwell on this in detail.
|
||||
|
||||
|
||||
19
Scripts/apply_patches.sh
Executable file
19
Scripts/apply_patches.sh
Executable file
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
. functions.sh
|
||||
|
||||
ASIO_SRC_DIR="../Sources/ASIO"
|
||||
ASIO_PATCH_DIR="../Sources/OpenVPN3/deps/asio/patches"
|
||||
|
||||
MBEDTLS_SRC_DIR="../Sources/mbedTLS"
|
||||
MBEDTLS_PATCH_DIR="../Sources/OpenVPN3/deps/mbedtls/patches"
|
||||
|
||||
if [ "$1" = "--reverse" ]; then
|
||||
reverse_patches ${ASIO_SRC_DIR} ${ASIO_PATCH_DIR}
|
||||
reverse_patches ${MBEDTLS_SRC_DIR} ${MBEDTLS_PATCH_DIR}
|
||||
else
|
||||
apply_patches ${ASIO_SRC_DIR} ${ASIO_PATCH_DIR}
|
||||
apply_patches ${MBEDTLS_SRC_DIR} ${MBEDTLS_PATCH_DIR}
|
||||
fi
|
||||
@@ -1,64 +0,0 @@
|
||||
# Your OpenVPN username
|
||||
if ENV["OPENVPN_USERNAME"].nil?
|
||||
ENV["OPENVPN_USERNAME"] = "Username"
|
||||
end
|
||||
|
||||
# Your OpenVPN password
|
||||
if ENV["OPENVPN_PASSWORD"].nil?
|
||||
ENV["OPENVPN_PASSWORD"] = "Password"
|
||||
end
|
||||
|
||||
# Your OpenVPN configuration
|
||||
if ENV["OPENVPN_CONFIGURATION"].nil?
|
||||
ENV["OPENVPN_CONFIGURATION"] = <<~END
|
||||
client
|
||||
dev tun
|
||||
proto udp
|
||||
|
||||
remote X.X.X.X 1194
|
||||
|
||||
remote-random
|
||||
resolv-retry infinite
|
||||
nobind
|
||||
cipher AES-256-CBC
|
||||
auth SHA512
|
||||
comp-lzo no
|
||||
verb 3
|
||||
|
||||
tun-mtu 1500
|
||||
tun-mtu-extra 32
|
||||
mssfix 1450
|
||||
persist-key
|
||||
persist-tun
|
||||
|
||||
reneg-sec 0
|
||||
|
||||
remote-cert-tls server
|
||||
auth-user-pass
|
||||
pull
|
||||
fast-io
|
||||
|
||||
<ca>
|
||||
-----BEGIN CERTIFICATE-----
|
||||
...
|
||||
-----END CERTIFICATE-----
|
||||
</ca>
|
||||
|
||||
key-direction 1
|
||||
|
||||
<tls-auth>
|
||||
# 2048 bit OpenVPN static key
|
||||
-----BEGIN OpenVPN Static key V1-----
|
||||
...
|
||||
-----END OpenVPN Static key V1-----
|
||||
</tls-auth>
|
||||
END
|
||||
end
|
||||
|
||||
if ENV["OPENVPN_REMOTE_HOST"].nil?
|
||||
ENV["OPENVPN_REMOTE_HOST"] = "Remote Host Address"
|
||||
end
|
||||
|
||||
if ENV["OPENVPN_REMOTE_PORT"].nil?
|
||||
ENV["OPENVPN_REMOTE_PORT"] = "Remote Host Port"
|
||||
end
|
||||
@@ -1,35 +0,0 @@
|
||||
environment_file = File.join(ENV["SRCROOT"], "Scripts", "environment.rb")
|
||||
if File.exist?(environment_file)
|
||||
require "#{environment_file}"
|
||||
end
|
||||
|
||||
require "erb"
|
||||
|
||||
if ENV["OPENVPN_USERNAME"].nil? || ENV["OPENVPN_PASSWORD"].nil? || ENV["OPENVPN_CONFIGURATION"].nil?
|
||||
puts "warning: VPN profile data is missing, you need to fill VPNProfile.swift manually."
|
||||
exit(true)
|
||||
end
|
||||
|
||||
template_file = File.join(ENV["SRCROOT"], "Scripts", "vpn_profile_template.erb")
|
||||
unless File.exist?(template_file)
|
||||
puts "error: Template file does not exist."
|
||||
exit(false)
|
||||
end
|
||||
|
||||
output_file = File.join(ENV["SRCROOT"], "Tests", "VPNProfile.swift")
|
||||
unless File.exist?(output_file)
|
||||
puts "error: Output file does not exist."
|
||||
exit(false)
|
||||
end
|
||||
|
||||
OPENVPN_USERNAME = ENV["OPENVPN_USERNAME"]
|
||||
OPENVPN_PASSWORD = ENV["OPENVPN_PASSWORD"]
|
||||
OPENVPN_CONFIGURATION = ENV["OPENVPN_CONFIGURATION"]
|
||||
OPENVPN_REMOTE_HOST = ENV["OPENVPN_REMOTE_HOST"]
|
||||
OPENVPN_REMOTE_PORT = ENV["OPENVPN_REMOTE_PORT"]
|
||||
|
||||
template_content = File.read(template_file)
|
||||
erb_template = ERB.new(template_content, nil, ">")
|
||||
|
||||
result = erb_template.result
|
||||
File.write(output_file, result)
|
||||
37
Scripts/functions.sh
Normal file
37
Scripts/functions.sh
Normal file
@@ -0,0 +1,37 @@
|
||||
function apply_patches()
|
||||
{
|
||||
DEP_SRC_DIR=$1
|
||||
DEP_PATCH_DIR=$2
|
||||
|
||||
CURRENT_DIR=$(pwd)
|
||||
|
||||
pushd ${CURRENT_DIR}
|
||||
|
||||
cd /tmp
|
||||
|
||||
for file in ${CURRENT_DIR}/${DEP_PATCH_DIR}/*.patch; do
|
||||
echo Applying patch: $file
|
||||
git apply --directory ${CURRENT_DIR}/${DEP_SRC_DIR} --unsafe-path $file
|
||||
done
|
||||
|
||||
popd
|
||||
}
|
||||
|
||||
function reverse_patches()
|
||||
{
|
||||
DEP_SRC_DIR=$1
|
||||
DEP_PATCH_DIR=$2
|
||||
|
||||
CURRENT_DIR=$(pwd)
|
||||
|
||||
pushd ${CURRENT_DIR}
|
||||
|
||||
cd /tmp
|
||||
|
||||
for file in ${CURRENT_DIR}/${DEP_PATCH_DIR}/*.patch; do
|
||||
echo Reverse patch: $file
|
||||
git apply --reverse --directory ${CURRENT_DIR}/${DEP_SRC_DIR} --unsafe-path $file
|
||||
done
|
||||
|
||||
popd
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
//
|
||||
// VPNProfile.swift
|
||||
// OpenVPNAdapter
|
||||
//
|
||||
// Created by Sergey Abramchuk on 27/09/2018.
|
||||
//
|
||||
// Do not commit changes of this file to the repo!
|
||||
|
||||
import Foundation
|
||||
|
||||
struct VPNProfile {
|
||||
|
||||
static let username: String = "<%= OPENVPN_USERNAME %>"
|
||||
static let password: String = "<%= OPENVPN_PASSWORD %>"
|
||||
|
||||
static let configuration: String = """
|
||||
<% OPENVPN_CONFIGURATION.each_line do |line| %>
|
||||
<%= line %>
|
||||
<% end %>
|
||||
"""
|
||||
|
||||
static let remoteHost: String = "<%= OPENVPN_REMOTE_HOST %>"
|
||||
static let remotePort: Int = <%= OPENVPN_REMOTE_PORT %>
|
||||
|
||||
}
|
||||
@@ -950,6 +950,8 @@ public:
|
||||
{
|
||||
const protocol_type protocol = peer_endpoint.protocol();
|
||||
impl_.get_service().open(impl_.get_implementation(), protocol, open_ec);
|
||||
if (!open_ec)
|
||||
async_connect_post_open(protocol, open_ec);
|
||||
}
|
||||
|
||||
return async_initiate<ConnectHandler, void (asio::error_code)>(
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user