82 Commits
0.3.0 ... 0.5.0

Author SHA1 Message Date
Sergey Abramchuk
b3196ad6aa Merge branch 'release/0.5.0' 2020-03-11 13:28:29 +03:00
Sergey Abramchuk
e6d64ab981 Add changelog file 2020-03-11 13:27:45 +03:00
Sergey Abramchuk
eef09bdb28 Bump version number 2020-03-11 13:17:20 +03:00
Sergey Abramchuk
f077c32fa6 Merge branch 'feature/spm' into develop 2020-03-11 13:12:07 +03:00
Sergey Abramchuk
947ac7a34b Add Swift Package Manager section 2020-03-11 13:11:33 +03:00
Sergey Abramchuk
46543218e6 Update minimum Xcode version 2020-03-11 12:50:22 +03:00
Sergey Abramchuk
14fed5527d Fix incorrect language 2020-03-11 12:41:48 +03:00
Sergey Abramchuk
16069c0127 Merge branch 'feature/network-issue' into feature/spm 2020-03-11 12:04:52 +03:00
Sergey Abramchuk
8a4755d51f Use only prefix to determine protocol family 2020-03-11 11:26:15 +03:00
Sergey Abramchuk
afdb988ae9 Remove runpath search paths from config 2020-03-11 10:06:31 +03:00
Sergey Abramchuk
f2ef611283 Fix incorrect deployment target 2020-03-06 12:48:11 +03:00
Sergey Abramchuk
7294157182 Merge branch 'feature/tests' into feature/spm 2020-03-06 12:31:18 +03:00
Sergey Abramchuk
d75dc24a8c Add OpenVPNAdapterTests target 2020-03-06 12:25:55 +03:00
Sergey Abramchuk
63f8838172 Move OpenVPNAdapter tests to their own subfolder 2020-03-06 12:25:09 +03:00
Sergey Abramchuk
e793320734 Change location of the modulemap and umbrella header 2020-03-06 12:19:17 +03:00
Sergey Abramchuk
aff379ba21 Delete excess ruby scripts 2020-03-06 11:02:46 +03:00
Sergey Abramchuk
02d1895396 Update gitignore 2020-03-06 10:56:07 +03:00
Sergey Abramchuk
05217a5d55 Merge branch 'feature/carthage' into feature/spm 2020-03-06 10:49:05 +03:00
Sergey Abramchuk
3372aca957 Delete excess config files 2020-03-06 10:43:44 +03:00
Sergey Abramchuk
618b086aa6 Add missing headers to the OpenVPNAdapter 2020-03-06 10:38:41 +03:00
Sergey Abramchuk
b4b0ef1aca Configure module map and umbrella header 2020-03-06 10:38:25 +03:00
Sergey Abramchuk
0d2c4e99b5 Delete redundant config files 2020-03-06 09:48:35 +03:00
Sergey Abramchuk
45213a2d8e Configure targets 2020-03-05 15:04:05 +03:00
Sergey Abramchuk
fb9560b7a0 Define config for each target 2020-03-05 14:57:46 +03:00
Sergey Abramchuk
51b3e19450 Generate new xcode project 2020-03-05 13:47:21 +03:00
Sergey Abramchuk
cc2663779f Merge branch 'feature/cocoapods' into feature/spm 2020-03-05 12:52:25 +03:00
Sergey Abramchuk
5129f6ecb2 Fix missing public headers 2020-03-05 12:42:58 +03:00
Sergey Abramchuk
4d794cc279 Fix missing preserve path 2020-03-05 11:15:00 +03:00
Sergey Abramchuk
adcb23702e Update podspec to reflect latest changes of the project structure 2020-03-05 11:10:58 +03:00
Sergey Abramchuk
6b782a9309 Apply patches to openvpn3 dependencies 2020-03-04 11:57:35 +03:00
Sergey Abramchuk
1e77a600a4 Add scripts to apply patches 2020-03-04 11:52:03 +03:00
Sergey Abramchuk
e66d4b04a2 Change order of definitions 2020-03-03 14:24:51 +03:00
Sergey Abramchuk
02b1077795 Delete redundant definitions 2020-03-03 14:21:08 +03:00
Sergey Abramchuk
82d2694a57 Delete redundant symlinks 2020-03-03 14:02:16 +03:00
Sergey Abramchuk
43e011aa12 Move guard header to the OpenVPNClient target 2020-03-03 14:01:36 +03:00
Sergey Abramchuk
8a79798c2c Rename target to OpenVPNClient and create separate folder for it 2020-03-03 13:59:35 +03:00
Sergey Abramchuk
ea77618c28 Define necessary directives for OpenVPNAdapter 2020-03-03 13:46:17 +03:00
Sergey Abramchuk
dd08e51a19 Update configuration of the OpenVPNAdapter target 2020-03-03 13:33:44 +03:00
Sergey Abramchuk
e3266c3792 Rename openvpn header 2020-03-03 13:25:36 +03:00
Sergey Abramchuk
23fcbf55a9 Add guard header for ovpncli 2020-03-03 13:22:45 +03:00
Sergey Abramchuk
d7ca445f35 Create symlinks for the public headers 2020-03-03 12:46:32 +03:00
Sergey Abramchuk
7d53a7f396 Move source files into library folder 2020-03-03 12:46:01 +03:00
Sergey Abramchuk
990326e52f Configure targets for lz4, mbedTLS and OpenVPN3 2020-03-02 14:55:09 +03:00
Sergey Abramchuk
2bd0879a3b Create symlinks for openvpn source files 2020-03-02 14:53:11 +03:00
Sergey Abramchuk
9dd887db5c Create symlinks for public header of lz4 2020-03-02 14:37:31 +03:00
Sergey Abramchuk
32f1555929 Merge commit '86cc97e55fe346502462284d2e636a2b3708163e' as 'Sources/OpenVPN3' 2020-02-24 14:43:11 +03:00
Sergey Abramchuk
86cc97e55f Squashed 'Sources/OpenVPN3/' content from commit 0a6e0b6e54
git-subtree-dir: Sources/OpenVPN3
git-subtree-split: 0a6e0b6e542c2d19de1f416c4caccd899d72831a
2020-02-24 14:43:11 +03:00
Sergey Abramchuk
133b3756e6 Merge commit 'c0cd028912e0be1386fca1fd6bb4e6324047e763' as 'Sources/LZ4' 2020-02-24 14:40:17 +03:00
Sergey Abramchuk
c0cd028912 Squashed 'Sources/LZ4/' content from commit 641b453d9d
git-subtree-dir: Sources/LZ4
git-subtree-split: 641b453d9db536ee020851bfcb1dc39f61006f0a
2020-02-24 14:40:17 +03:00
Sergey Abramchuk
175080ea69 Merge commit '1dd2f4645226bd269f2407d5ed431acc3f66e7a6' as 'Sources/ASIO' 2020-02-24 14:37:39 +03:00
Sergey Abramchuk
1dd2f46452 Squashed 'Sources/ASIO/' content from commit 8d4c8c3ce4
git-subtree-dir: Sources/ASIO
git-subtree-split: 8d4c8c3ce43c866f609d2eda9a43fe5b334620be
2020-02-24 14:37:39 +03:00
Sergey Abramchuk
c274ea6ecc Merge commit '1a3a83f33224876bfe5e8131542a8e124f4bc89b' as 'Sources/mbedTLS' 2020-02-24 14:36:19 +03:00
Sergey Abramchuk
1a3a83f332 Squashed 'Sources/mbedTLS/' content from commit 432b4b7989
git-subtree-dir: Sources/mbedTLS
git-subtree-split: 432b4b7989445a34940658e45557072e6e782d62
2020-02-24 14:36:19 +03:00
Sergey Abramchuk
9b6210faab Update location of a few files 2020-02-24 14:35:44 +03:00
Sergey Abramchuk
1639547f74 Delete Libraries folder 2020-02-24 14:25:35 +03:00
Sergey Abramchuk
4c1704d1a2 Fix incorrect brackets 2019-12-01 21:27:12 +03:00
Sergey Abramchuk
d387eb4f5f Merge tag '0.4.0' into develop 2019-11-03 15:03:06 +03:00
Sergey Abramchuk
f4f98ddf88 Merge branch 'release/0.4.0' 2019-11-03 15:03:04 +03:00
Sergey Abramchuk
b04a285210 Update readme file 2019-11-03 15:02:14 +03:00
Sergey Abramchuk
2d1fdfb019 Update version number in the Podfile 2019-11-03 15:00:03 +03:00
Sergey Abramchuk
ad77627ca9 Bump version number 2019-11-03 14:55:00 +03:00
Sergey Abramchuk
d8a55bc358 Merge branch 'feature/update-dependencies' into develop 2019-11-03 11:16:36 +03:00
Sergey Abramchuk
76e5488aa1 Fix get/set settings test 2019-11-03 11:13:43 +03:00
Sergey Abramchuk
c3ed67b67d Reset tun without any conditions and drop idea to override remote server 2019-11-03 11:05:14 +03:00
Sergey Abramchuk
f9d506ffca Reset packet flow within resetTun method 2019-11-03 11:04:12 +03:00
Sergey Abramchuk
ef93e5adc9 Fix missing symbols for arm archs 2019-11-02 13:13:31 +03:00
Sergey Abramchuk
3db23628cb Disable Catalyst support 2019-11-02 11:26:59 +03:00
Sergey Abramchuk
7331ae5fad Add new properties to the OpenVPNCOnfiguration 2019-11-02 10:29:21 +03:00
Sergey Abramchuk
aa396dad2d Add new OpenVPN events and errors 2019-10-26 10:20:37 +03:00
Sergey Abramchuk
29bd59f78f Merge commit 'f44694ce5f781924b6094c4c18f8bf83a3da7857' into feature/update-dependencies 2019-10-25 20:20:11 +03:00
Sergey Abramchuk
f44694ce5f Squashed 'Sources/OpenVPNAdapter/Libraries/Vendors/asio/' changes from 90f32660cd..8d4c8c3ce4
8d4c8c3ce4 asio version 1.14.0 released
30336a0873 Revision history.
2a1f68845a On Windows, ensure global object destructors are run.
6f55aeecd0 Fix move-based async_accept between sockets with different executor types.
c1c068c6ad The executor is copied, not moved, when the I/O object moves.
37c8d91d21 Add runtime detection of native I/O executors when using polymorphic wrapper.

git-subtree-dir: Sources/OpenVPNAdapter/Libraries/Vendors/asio
git-subtree-split: 8d4c8c3ce43c866f609d2eda9a43fe5b334620be
2019-10-25 20:20:10 +03:00
Sergey Abramchuk
238abab032 Merge commit '688ce110819545502762729feaa505b67e2fe58e' into feature/update-dependencies 2019-10-25 20:14:12 +03:00
Sergey Abramchuk
688ce11081 Squashed 'Sources/OpenVPNAdapter/Libraries/Vendors/openvpn/' changes from 7db7a009b0..29e060ffb3
29e060ffb3 CryptoAlgs: Don't report any digests for ciphers not using them
87d40ed8da ovpncli.cpp: socket_protect implementation for agent-enabled builds
12763bbbb8 win/client/tunsetup.hpp: implement add_bypass_route() method
c445361969 vcxprox: add missing file
0d7143c4bf transport: enable socket_protect call for all platforms
a6cae41285 cliopt.hpp: disable remote list bypass for agent-enabled build
3166957e2e add error codes for better error management at profile parsing time

git-subtree-dir: Sources/OpenVPNAdapter/Libraries/Vendors/openvpn
git-subtree-split: 29e060ffb34b8a4067d8d01f6506bdb2d220df02
2019-10-25 20:14:12 +03:00
Sergey Abramchuk
3980fb9be5 Merge commit '8e87aecebf66f50957e35966c547d77a6fb526ab' into feature/update-dependencies 2019-10-12 15:50:03 +03:00
Sergey Abramchuk
8e87aecebf Squashed 'Sources/OpenVPNAdapter/Libraries/Vendors/openvpn/' changes from 275cf80efb..7db7a009b0
7db7a009b0 proto: Client complains about stub compressors
390154d0e4 Update Build instructions for OSX
1b92069834 deps: Update to mbedtls-2.7.12
8cab79540d compression: Extend compression alert to include server pushes
67b4641a99 CompressContext: Add is_any_stub() method
cdf9e7bece compression: Issue an Event if compression is activated
fa38064403 build script: added a new PROF type "auto" that tries to automatically determine the local platform
7ce7b52b7c MTRand: added OPENVPN_INSECURE_RANDOM compile flag that allows MTRand to masquerade as a secure RNG
85e7e49f72 MTRand: added constructor accepting an initialization seed
1fa3229a10 IPv4, IPv6: added #include <openvpn/common/hash.hpp>
48e9217d26 vcxproj: add missing header file
d2a2601b2f Wintun: unmap ring buffers
e320bc63ff openssl: Improve OpenSSLContext fencing against multiple declarations
2f8fe2d318 openssl: Missing inline keyword in a couple of compat functions
32b984c0ff enum_dir: use a function template
725ee04593 VPNServerNetblock::Netblock::to_string(): show prefix_len
409d1c52b8 ManClientInstance::Send::describe_user(): added bool show_userprop parameter
e05fc16b20 string::indent(): try to fix all the corner cases
4e1645ea80 RunContext: mark virtual Stop* async_stop() with override attribute
e8b31c5454 cli: advertise "openurl" as supported SSO method
80b45731eb ICMPv6: added DEST_UNREACH code
679003094d AsioTimerSafe: refactor to allow as drop-in replacement for AsioTimer
f7845578f1 RunContext: check for halt in timer closure
84483eda25 AsioPolySock: add support for socket shutdown
1b3402aec3 tcplinkcommon.hpp: added missing include
2e26c7565c time: added nanotime_t typedef
c3c8ab7f6b string: added additional detail to split() comment
95ce4f22c8 string: added to_delim() method then redefined first_line() method to use it
448218b1e1 string: added add_leading() method
e3b0bf4f5c MSF iterator: allow conversion from ordinary iterator and added exists() method
11412ac50a AsioPolySock: in remote_endpoint_str() method, test for alt_routing_enabled()
9fb4e705f9 Added TimeSkew to skew a time duration by a random flux
7496383002 write_binary_atomic: reduce the length of the temporary filename
b31d9c0191 auth-token-user: increase size limit to 340 chars
c82644c03a Added BufferLineIterator
115cb656b6 RandomAPI: added randbyte() and randbool() methods
4fa8348689 RunContext: ASIO SIGNAL message now shows signal name rather than number
ebfce58513 Added StaticBuffer, a constant-length Buffer for writing that cannot be extended
c8f9cb88a4 string::split(): call reserve() on return vector
f15e566065 read_binary_unix_fast: should return an int (i.e. errno), not a bool
60501b4513 random: factor out rand32_distribute() from RandomAPI::randrange32()
90123495a5 wintun: get device interfaces list only once
ec790df73b wintun: read packets in bulk
0f85d3f729 wintun: use correct io_context when performing initial read
a6151cdeab wintun: use auto-reset events
29acfd95f3 libs: update ASIO to 1.14.0
438a0ef287 Remove outdated and unused android build files
e9df57969f Merge remote-tracking branch 'origin/released'
44725ad094 ssl: Fix building with OpenSSL 1.0.2
efe3f1f635 version: Reset version reference for git master
8c79c06d94 Make tls-crypt/tls-cryptv2 compile with multiple compilation units
4d18aaeb88 Fix LLVM warnings reported during OS X build
8c9496bb4d Use const_cast for SSL_session_reused
33be562a39 Add missing override keywords to openssl/sslctx.hpp
2c5435a000 dcocli: use compile time define for Tun methods instead of hardcoded iproute
7c39088f00 Allow overriding reported HW_ADDR and support IV_PLAT_VER
7bb1ea19ee Move sending IV_UI_VER and IV_SSO to build_peer_info
23959fa705 Add reporting of IV_SSL_VER
63ab5b5e46 Only initialise static member in OpenSSLContext once
ecebb40304 Merge remote-tracking branch 'origin/qa'
52c9702502 wintun: replace volatiles with atomics
d720c7104c appveyor: install Strawberry perl
60a253a7ef appveyor: update to VS2019
48f2b5100b wintun: support for privilege separation
6f266be3d8 wintun: ring buffers support
baa1ce2ccf vcxproj: bump VS version to 2019
98bfd037e3 tun/win: factor out ClientConfig into separate header
aeb5ce0ad7 wintun: open device with SetupAPI
3998d303ce Finalizing the OpenVPN 3 Core library 3.3 release
728733aee7 deps/mbedtls: rebase "enable unsupported critical extensions" patch
43e36ca45a lib-version: update to mbedtls-2.7.11
4dbcd85e50 openssl/cipher.hpp: add missing include <compat.hpp>
69d72ed64f DCOTransport: Fix server side specific trunk handling
ff732e3b5d Fix OpenVPN Core build with OpenSSL 1.1.0
0da42f393f Do not use deprecated OpenSSL 1.1.0 methods
35062c0b60 travis.yml: update environment
47046cf6d2 Merge branch 'qa'
6933c395a4 [OVPN3-423] cliconnect.hpp: fix reconnect on Windows after sleep
462c36c813 random_subnet(): added comment
ac1d447156 IP::Addr::from_byte_string(): fixed bug for IPv6 case
d6eaea3468 string::split(): minor implementation tweaks
ca15b7cdf4 hexstr: added dump_hex() variant accepting void *
0e61a2afd7 SessionIDType::find_weak: added conflict parameter
089aec00b1 DCOTransport: new routing code for trunk links
5befbd430f build: added CAP=1 -- build with libcap
eb85ada21e signals: added trivial signal_name() function
f89013ef92 RunContext: don't try to catch SIGQUIT by default
e0ee540135 SessionIDType: added hash() method
f0e1f8aa42 logging: added basic components for logrotate
fbb0c81f29 UMask: added UMaskDaemon, a umask context object appropriate for daemons
1c7bac90d9 build script: when building with DEBUG=1 on Linux, use -ggdb instead of -g
73cce80e43 OpenSSL: added openssl_reseed_rng() function
25780cf798 OpenSSL: fixed some memory leaks in CipherContextGCM and TokenEncrypt
168dba95f5 OpenSSL: define OPENSSL_SERVER_SNI when OpenSSL version is at least 1.1
84e78d8fed SNI: added OpenVPN client support for SNI (currently OpenSSL only)
310766b270 build: added MTLS_DIST setting
4eaa46a879 MbedTLS: added MBEDTLS_DISABLE_NAME_CONSTRAINTS preprocessor flag
16226d1b05 OpenSSLSign: updated for OpenSSL 1.1
aed0678c96 SSL: added SNI::Metadata, an abstract base class for packaging app-specific SNI metadata in AuthCert
001b731fe2 SNI: create SNI namespace and rename SNIHandlerBase -> SNI::HandlerBase
4bd5869305 README.rst: Make Windows-specific build steps up to date.
ac365ee977 wintun: support for 0.4
9245056a2a wintun: support for 0.3
b73d484950 mbedtls: throw exception on unsupported SSL:Const::PEER_CERT_OPTIONAL option
1d6bae4b5b tcplinkcommon: bubble up real exception error
c18c8bd156 tcpcli: ensure SSL Factory survives as long as TLS link
4192193087 tls: parse and load TLS specific CA
2a19b7fcff win/tuncli.hpp: fix Wintun padding calculation
44cb9f44da appveyor: make ReleaseOpenSSL default configuration
5485de19a2 win/impersonate: refactor impersonate logic
29a655147b win/tunsetup.hpp: remove unneeded parameter
61794b0efd win: link OpenSSL dynamically
e569b84465 win/tuncli.hpp: fix indentation
374c57e708 frame_init.hpp: tweak wintun read buf size
c3c45c9b38 tun: added Error::TUN_HALT for tun_error() signaling
acd7af5e9a RandomAPI: added randrange32() method
c1a7f8cc68 std::clamp() is useful but only available in C++17 and up, so we add our own clamp()
f8c71ef1ce Minor change to Error::INACTIVE_TIMEOUT handler
3202ab5fce OpenSSLSign: renamed OpenSSLPKI::X509Base to OpenSSLPKI::X509 to conform to changes in OpenSSLPKI
8d767febb5 ReachabilityBase: added virtual destructor
6a4826965f MbedTLS: update json_override() prototype
bee0d8d187 SSL: added SSLConst::SEND_CLIENT_CA_LIST server-side flag and implemented for OpenSSL
5eb39c1dea AuthCert: save the SNI name
3b34449d0e SSLAPI: auth_cert() can now be const
a672e91631 SNI server-side: support additional JSON configuration settings
95e761f3cc OpenSSL PKI cleanup
d5eb77c53c AuthCert::Fail cleanup
6e98b9aadc SSLAPI: move PKType from SSLConfigAPI into standalone header to avoid dependency inversion
bbae814864 OpenSSL: added SNI implementation
5def1d23ab OpenSSLContext: in constructor, removed redundant if statement
1a0747e783 OpenSSLContext: in constructor, consolidate sslopt fixed flags
eef9868816 OpenSSLContext::SSL::ssl_handshake_details(): include leaf-cert CN in details
f9631cd90f AuthCert::Fail: use std::string for the reason string (instead of const char *)
a17b77641f OpenSSLPKI::X509: copy constructor doesn't need erase() and define X509::Ptr
78cae5bb52 OpenSSLPKI::DH: copy constructor doesn't need erase()
c0d43a4153 RCPtr: added static_pointer_cast() method
34a3f264f5 [OVPN-314] Add support for signalling SSO support via IV_SSO
7d112eb3e5 cli: enable utf8 console output
980ef1eff8 win/call.hpp: re-encode command output to utf8
fddb440e99 unicode.hpp: customize utf16 conversion routine
4d7c12ac4d [OVPN3-405] Support for non-ASCII profile path on Windows

git-subtree-dir: Sources/OpenVPNAdapter/Libraries/Vendors/openvpn
git-subtree-split: 7db7a009b0b4eca0fc3733c99c50aff7f7c2556f
2019-10-12 15:50:02 +03:00
Sergey Abramchuk
828011bbd3 Update mbedTLS library 2019-10-12 15:24:52 +03:00
Sergey Abramchuk
a6e3758c68 Add macOS generated items to the gitignore 2019-10-12 13:00:26 +03:00
Sergey Abramchuk
fb23b2a92e Define TUNNEL_CONFIGURATION_TIMEOUT macro 2019-09-26 13:21:24 +03:00
Sergey Abramchuk
7faa96b809 OpenVPNClient should be responsible for copying of config 2019-09-26 13:17:06 +03:00
Sergey Abramchuk
8d167952b1 Reset tunnel depending on tunPersist settings 2019-09-26 13:01:20 +03:00
Sergey Abramchuk
d1f794ae57 Expose tunPersist setting 2019-09-26 10:35:53 +03:00
Sergey Abramchuk
96cf2d1804 Merge tag '0.3.0' into develop
no message
2019-06-29 10:39:58 +03:00
2921 changed files with 202428 additions and 3486 deletions

35
.gitignore vendored
View File

@@ -48,3 +48,38 @@ playground.xcworkspace
# Carthage/Checkouts
Carthage/Build
# Swift PM
.build/
.swiftpm
## macOS generated
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

6
CHANGELOG.md Normal file
View File

@@ -0,0 +1,6 @@
# Changelog
## 0.5.0
- **Added**: Swift Package Manager support;
- **Updated**: openvpn3 library 3.5.4 version;
- **Fixed**: Network issue when adapter used in macOS projects.

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1 @@
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) XXH_NAMESPACE=LZ4_

View 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

View 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

View File

@@ -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

View File

@@ -1,5 +0,0 @@
#include "Framework.xcconfig"
ONLY_ACTIVE_ARCH = NO
SWIFT_OPTIMIZATION_LEVEL = -Owholemodule
BITCODE_GENERATION_MODE = bitcode

View File

@@ -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

View File

@@ -0,0 +1 @@
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) MBEDTLS_MD4_C MBEDTLS_RELAXED_X509_DATE _FILE_OFFSET_BITS=64

View File

@@ -3,7 +3,7 @@ Pod::Spec.new do |s|
# ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.name = "OpenVPNAdapter"
s.version = "0.3.0"
s.version = "0.5.0"
s.summary = "Objective-C wrapper for OpenVPN library. Compatible with iOS and macOS."
s.description = <<-DESC
OpenVPNAdapter is an Objective-C framework that allows to easily configure and establish VPN connection using OpenVPN protocol.
@@ -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

View File

@@ -15,7 +15,9 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>0.3.0</string>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>

View 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>

View 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>

View 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

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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
View 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
)

View File

@@ -3,8 +3,10 @@
![Platforms](https://img.shields.io/badge/Platforms-iOS%20%7C%20macOS-lightgrey.svg)
![iOS Versions](https://img.shields.io/badge/iOS-9.0+-yellow.svg)
![macOS Versions](https://img.shields.io/badge/macOS-10.11+-yellow.svg)
![Xcode Version](https://img.shields.io/badge/Xcode-9.0+-yellow.svg)
![Xcode Version](https://img.shields.io/badge/Xcode-11.0+-yellow.svg)
![Carthage Compatible](https://img.shields.io/badge/Carthage-Compatible-4BC51D.svg?style=flat)
![Cocoapods Compatible](https://img.shields.io/badge/Cocoapods-Compatible-4BC51D.svg?style=flat)
![Swift Package Manager Compatible](https://img.shields.io/badge/Swift%20Package%20Manager-Compatible-4BC51D.svg?style=flat)
![License](https://img.shields.io/badge/License-AGPLv3-lightgrey.svg)
## 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`.
@@ -33,12 +35,15 @@ To install OpenVPNAdapter with Cocoapods, add the following lines to your `Podfi
```ruby
target 'Your Target Name' do
use_frameworks!
pod 'OpenVPNAdapter', :git => 'https://github.com/ss-abramchuk/OpenVPNAdapter.git', :tag => '0.3.0'
pod 'OpenVPNAdapter', :git => 'https://github.com/ss-abramchuk/OpenVPNAdapter.git', :tag => '0.5.0'
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.
@@ -177,6 +182,9 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
// Additional parameters as key:value pairs may be provided here
]
// Add this line if you want to keep TUN interface active during pauses or reconnections
configuration.tunPersist = true
// Apply OpenVPN configuration
let properties: OpenVPNProperties
do {

19
Scripts/apply_patches.sh Executable file
View 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

View File

@@ -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

View File

@@ -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
View 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
}

View File

@@ -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 %>
}

View File

@@ -1,4 +1,4 @@
asio version 1.13.0
Released Tuesday, 12 March 2019.
asio version 1.14.0
Released Sunday, 14 April 2019.
See doc/index.html for API documentation and a tutorial.

View File

@@ -1,4 +1,4 @@
AC_INIT(asio, [1.13.0])
AC_INIT(asio, [1.14.0])
AC_CONFIG_SRCDIR(include/asio.hpp)
AM_MAINTAINER_MODE
AM_INIT_AUTOMAKE([tar-ustar])

View File

@@ -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