diff --git a/OpenVPNAdapter.podspec b/OpenVPNAdapter.podspec index 397d94a..c89a6f3 100644 --- a/OpenVPNAdapter.podspec +++ b/OpenVPNAdapter.podspec @@ -1,137 +1,150 @@ -# -# Be sure to run `pod spec lint OpenVPNAdapter.podspec' to ensure this is a -# valid spec and to remove all comments including this before submitting the spec. -# -# To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html -# To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/ -# - Pod::Spec.new do |s| # ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # - # - # These will help people to find your library, and whilst it - # can feel like a chore to fill in it's definitely to your advantage. The - # summary should be tweet-length, and the description more in depth. - # - s.name = "OpenVPNAdapter" - s.version = "0.0.1" - s.summary = "A short description of OpenVPNAdapter." + s.name = "OpenVPNAdapter" + s.version = "0.1.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. + It is based on the original openvpn3 library so it has every feature the library has. The framework is designed to use in conjunction + with NetworkExtension framework and doesn't use any private Apple API. Compatible with iOS and macOS and also Swift friendly. + DESC - # This description is used to generate tags and improve search results. - # * Think: What does it do? Why did you write it? What is the focus? - # * Try to keep it short, snappy and to the point. - # * Write the description between the DESC delimiters below. - # * Finally, don't worry about the indent, CocoaPods strips it! - s.description = <<-DESC - DESC - - s.homepage = "http://EXAMPLE/OpenVPNAdapter" - # s.screenshots = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif" + s.homepage = "https://github.com/ss-abramchuk/OpenVPNAdapter" # ――― Spec License ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # - # - # Licensing your code is important. See http://choosealicense.com for more info. - # CocoaPods will detect a license file if there is a named LICENSE* - # Popular ones are 'MIT', 'BSD' and 'Apache License, Version 2.0'. - # - s.license = "MIT (example)" - # s.license = { :type => "MIT", :file => "FILE_LICENSE" } + s.license = "AGPLv3" # ――― Author Metadata ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # - # - # Specify the authors of the library, with email addresses. Email addresses - # of the authors are extracted from the SCM log. E.g. $ git log. CocoaPods also - # accepts just a name if you'd rather not provide an email address. - # - # Specify a social_media_url where others can refer to, for example a twitter - # profile URL. - # - s.author = { "Sergey Abramchuk" => "personal@ss-abramchuk.me" } - # Or just: s.author = "Sergey Abramchuk" - # s.authors = { "Sergey Abramchuk" => "personal@ss-abramchuk.me" } - # s.social_media_url = "http://twitter.com/Sergey Abramchuk" + s.author = { "Sergey Abramchuk" => "personal@ss-abramchuk.me" } + # ――― Platform Specifics ――――――――――――――――――――――――――――――――――――――――――――――――――――――― # - # - # If this Pod runs only on iOS or OS X, then specify the platform and - # the deployment target. You can optionally include the target after the platform. - # - # s.platform = :ios - # s.platform = :ios, "5.0" - - # When using multiple platforms - # s.ios.deployment_target = "5.0" - # s.osx.deployment_target = "10.7" - # s.watchos.deployment_target = "2.0" - # s.tvos.deployment_target = "9.0" + s.ios.deployment_target = "9.0" + s.osx.deployment_target = "10.11" # ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # - # - # Specify the location from where the source should be retrieved. - # Supports git, hg, bzr, svn and HTTP. - # - s.source = { :git => "http://EXAMPLE/OpenVPNAdapter.git", :tag => "#{s.version}" } + s.source = { :git => "https://github.com/ss-abramchuk/OpenVPNAdapter.git", :branch => "develop" } # ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # - # - # CocoaPods is smart about how it includes source code. For source files - # giving a folder will include any swift, h, m, mm, c & cpp files. - # For header files it will include any header in the folder. - # Not including the public_header_files will make all headers public. - # - s.source_files = "Classes", "Classes/**/*.{h,m}" - s.exclude_files = "Classes/Exclude" + framework_path = "Sources/OpenVPNAdapter" + vendors_path = "#{framework_path}/Libraries/Vendors" - # s.public_header_files = "Classes/**/*.h" + 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" + ] - # ――― Resources ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # - # - # A list of resources included with the Pod. These are copied into the - # target bundle with a build phase script. Anything else will be cleaned. - # You can preserve files from being cleaned, please don't preserve - # non-essential files like tests, examples and documentation. - # - - # s.resource = "icon.png" - # s.resources = "Resources/*.png" - - # s.preserve_paths = "FilesToSave", "MoreFilesToSave" + s.module_map = "Configuration/OpenVPNAdapter.modulemap" # ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # - # - # Link your library with frameworks, or libraries. Libraries do not include - # the lib prefix of their name. - # - # s.framework = "SomeFramework" - # s.frameworks = "SomeFramework", "AnotherFramework" + s.ios.frameworks = "Foundation", "NetworkExtension", "SystemConfiguration", "UIKit" + s.osx.frameworks = "Foundation", "NetworkExtension", "SystemConfiguration" - # s.library = "iconv" - # s.libraries = "iconv", "xml2" + s.libraries = "lz4", "mbedcrypto", "mbedtls", "mbedx509" # ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # - # - # If your library depends on compiler flags you can set them in the xcconfig hash - # where they will only apply to your library. If you depend on other Podspecs - # you can include multiple dependencies to ensure it works. - # s.requires_arc = true + s.requires_arc = true + s.prefix_header_file = false - # s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" } - # s.dependency "JSONKit", "~> 1.4" + 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" + } + + + # ――― Subspecs ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + + s.subspec "lz4" do |lz4| + lz4_path = "#{vendors_path}/lz4" + + 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/**" + } + 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" + + 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" + + openvpn.source_files = "#{openvpn_path}/client/*.{hpp,cpp}" + openvpn.private_header_files = "#{openvpn_path}/client/*.hpp" + + openvpn.preserve_paths = "#{openvpn_path}/openvpn/**/*.hpp" + + openvpn.compiler_flags = "-x objective-c++" + + openvpn.xcconfig = { + "HEADER_SEARCH_PATHS" => "${PODS_TARGET_SRCROOT}/#{openvpn_path}/**", + "OTHER_CPLUSPLUSFLAGS" => "$(OTHER_CFLAGS) -DUSE_ASIO -DUSE_ASIO_THREADLOCAL -DASIO_STANDALONE -DASIO_NO_DEPRECATED -DHAVE_LZ4 -DUSE_MBEDTLS -DOPENVPN_FORCE_TUN_NULL -DUSE_TUN_BUILDER" + } + end end diff --git a/OpenVPNAdapter.xcodeproj/project.pbxproj b/OpenVPNAdapter.xcodeproj/project.pbxproj index d1db83e..57aed9b 100644 --- a/OpenVPNAdapter.xcodeproj/project.pbxproj +++ b/OpenVPNAdapter.xcodeproj/project.pbxproj @@ -103,10 +103,6 @@ C9A50F2E21763A2C0010C0D4 /* NSArray+OpenVPNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = C9A50F2B21763A2C0010C0D4 /* NSArray+OpenVPNAdditions.h */; }; C9A50F2F21763A2C0010C0D4 /* NSArray+OpenVPNAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = C9A50F2C21763A2C0010C0D4 /* NSArray+OpenVPNAdditions.m */; }; C9A50F3021763A2C0010C0D4 /* NSArray+OpenVPNAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = C9A50F2C21763A2C0010C0D4 /* NSArray+OpenVPNAdditions.m */; }; - C9A50F3321763CBC0010C0D4 /* NSSet+OpenVPNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = C9A50F3121763CBC0010C0D4 /* NSSet+OpenVPNAdditions.h */; }; - C9A50F3421763CBC0010C0D4 /* NSSet+OpenVPNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = C9A50F3121763CBC0010C0D4 /* NSSet+OpenVPNAdditions.h */; }; - C9A50F3521763CBC0010C0D4 /* NSSet+OpenVPNAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = C9A50F3221763CBC0010C0D4 /* NSSet+OpenVPNAdditions.m */; }; - C9A50F3621763CBC0010C0D4 /* NSSet+OpenVPNAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = C9A50F3221763CBC0010C0D4 /* NSSet+OpenVPNAdditions.m */; }; C9B7955E1F1D16AA00CF35FE /* OpenVPNReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = C9B7955C1F1D16AA00CF35FE /* OpenVPNReachability.h */; settings = {ATTRIBUTES = (Public, ); }; }; C9B7955F1F1D16AA00CF35FE /* OpenVPNReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = C9B7955C1F1D16AA00CF35FE /* OpenVPNReachability.h */; settings = {ATTRIBUTES = (Public, ); }; }; C9B795601F1D16AA00CF35FE /* OpenVPNReachability.mm in Sources */ = {isa = PBXBuildFile; fileRef = C9B7955D1F1D16AA00CF35FE /* OpenVPNReachability.mm */; }; @@ -240,8 +236,6 @@ C98467AA1EAA5BB500272A9A /* OpenVPNConfiguration+Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OpenVPNConfiguration+Internal.h"; path = "OpenVPNAdapter/OpenVPNConfiguration+Internal.h"; sourceTree = ""; }; C9A50F2B21763A2C0010C0D4 /* NSArray+OpenVPNAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "NSArray+OpenVPNAdditions.h"; path = "Sources/OpenVPNAdapter/NSArray+OpenVPNAdditions.h"; sourceTree = SOURCE_ROOT; }; C9A50F2C21763A2C0010C0D4 /* NSArray+OpenVPNAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "NSArray+OpenVPNAdditions.m"; path = "Sources/OpenVPNAdapter/NSArray+OpenVPNAdditions.m"; sourceTree = SOURCE_ROOT; }; - C9A50F3121763CBC0010C0D4 /* NSSet+OpenVPNAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "NSSet+OpenVPNAdditions.h"; path = "Sources/OpenVPNAdapter/NSSet+OpenVPNAdditions.h"; sourceTree = SOURCE_ROOT; }; - C9A50F3221763CBC0010C0D4 /* NSSet+OpenVPNAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "NSSet+OpenVPNAdditions.m"; path = "Sources/OpenVPNAdapter/NSSet+OpenVPNAdditions.m"; sourceTree = SOURCE_ROOT; }; C9B7955C1F1D16AA00CF35FE /* OpenVPNReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenVPNReachability.h; path = OpenVPNAdapter/OpenVPNReachability.h; sourceTree = ""; }; C9B7955D1F1D16AA00CF35FE /* OpenVPNReachability.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = OpenVPNReachability.mm; path = OpenVPNAdapter/OpenVPNReachability.mm; sourceTree = ""; }; C9B795621F1D182500CF35FE /* OpenVPNReachabilityTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenVPNReachabilityTracker.h; path = OpenVPNAdapter/OpenVPNReachabilityTracker.h; sourceTree = ""; }; @@ -586,8 +580,6 @@ C9E350C0200F6EC0000820D9 /* NSError+OpenVPNError.m */, C9A50F2B21763A2C0010C0D4 /* NSArray+OpenVPNAdditions.h */, C9A50F2C21763A2C0010C0D4 /* NSArray+OpenVPNAdditions.m */, - C9A50F3121763CBC0010C0D4 /* NSSet+OpenVPNAdditions.h */, - C9A50F3221763CBC0010C0D4 /* NSSet+OpenVPNAdditions.m */, ); name = Extensions; sourceTree = ""; @@ -628,7 +620,6 @@ C9657A5E1EB0D60700EFF210 /* OpenVPNTransportProtocol.h in Headers */, C9657A1D1EB0A8D800EFF210 /* OpenVPNConnectionInfo+Internal.h in Headers */, C9B7955E1F1D16AA00CF35FE /* OpenVPNReachability.h in Headers */, - C9A50F3321763CBC0010C0D4 /* NSSet+OpenVPNAdditions.h in Headers */, C915F1F41F612F3300B3DF23 /* OpenVPNPrivateKey.h in Headers */, C9657A171EB0A7F800EFF210 /* OpenVPNConnectionInfo.h in Headers */, C9310BC120FF6E9700838910 /* Umbrella-Header.h in Headers */, @@ -676,7 +667,6 @@ C9657A5F1EB0D60700EFF210 /* OpenVPNTransportProtocol.h in Headers */, C9657A1E1EB0A8D800EFF210 /* OpenVPNConnectionInfo+Internal.h in Headers */, C9B7955F1F1D16AA00CF35FE /* OpenVPNReachability.h in Headers */, - C9A50F3421763CBC0010C0D4 /* NSSet+OpenVPNAdditions.h in Headers */, C915F1F51F612F3300B3DF23 /* OpenVPNPrivateKey.h in Headers */, C9657A181EB0A7F800EFF210 /* OpenVPNConnectionInfo.h in Headers */, C9310BC220FF6E9700838910 /* Umbrella-Header.h in Headers */, @@ -946,7 +936,6 @@ ABD6EF121F8F93AB007D3D90 /* OpenVPNPacketFlowBridge.mm in Sources */, C9657A311EB0B7A900EFF210 /* OpenVPNTransportStats.mm in Sources */, C9B795661F1D182500CF35FE /* OpenVPNReachabilityTracker.mm in Sources */, - C9A50F3521763CBC0010C0D4 /* NSSet+OpenVPNAdditions.m in Sources */, C9657A581EB0CE1300EFF210 /* OpenVPNProperties.mm in Sources */, C9CA4DD51F602F7B00C4F184 /* OpenVPNCertificate.m in Sources */, C9CDFDDD200781AF00323B73 /* OpenVPNClient.mm in Sources */, @@ -989,7 +978,6 @@ ABD6EF131F8F93AB007D3D90 /* OpenVPNPacketFlowBridge.mm in Sources */, C9657A301EB0B7A600EFF210 /* OpenVPNTransportStats.mm in Sources */, C9B795671F1D182500CF35FE /* OpenVPNReachabilityTracker.mm in Sources */, - C9A50F3621763CBC0010C0D4 /* NSSet+OpenVPNAdditions.m in Sources */, C9657A591EB0CE1400EFF210 /* OpenVPNProperties.mm in Sources */, C9CA4DD61F602F7B00C4F184 /* OpenVPNCertificate.m in Sources */, C9CDFDDE200781AF00323B73 /* OpenVPNClient.mm in Sources */, diff --git a/Sources/OpenVPNAdapter/NSSet+OpenVPNAdditions.h b/Sources/OpenVPNAdapter/NSSet+OpenVPNAdditions.h deleted file mode 100644 index f7e7c37..0000000 --- a/Sources/OpenVPNAdapter/NSSet+OpenVPNAdditions.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// NSSet+OpenVPNAdditions.h -// OpenVPNAdapter -// -// Created by Sergey Abramchuk on 16/10/2018. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface NSSet (OpenVPNEmptySet) - -@property (nonatomic, readonly) BOOL ovpn_isNotEmpty; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Sources/OpenVPNAdapter/NSSet+OpenVPNAdditions.m b/Sources/OpenVPNAdapter/NSSet+OpenVPNAdditions.m deleted file mode 100644 index 0af8b0f..0000000 --- a/Sources/OpenVPNAdapter/NSSet+OpenVPNAdditions.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// NSSet+OpenVPNAdditions.m -// OpenVPNAdapter -// -// Created by Sergey Abramchuk on 16/10/2018. -// - -#import "NSSet+OpenVPNAdditions.h" - -@implementation NSSet (OpenVPNEmptySet) - -- (BOOL)ovpn_isNotEmpty { - return (self.count > 0) ? YES : NO; -} - -@end diff --git a/Sources/OpenVPNAdapter/OpenVPNClient.h b/Sources/OpenVPNAdapter/OpenVPNClient.h index 4ffad1e..1996e25 100644 --- a/Sources/OpenVPNAdapter/OpenVPNClient.h +++ b/Sources/OpenVPNAdapter/OpenVPNClient.h @@ -7,7 +7,7 @@ #import -#include +#include "ovpncli.hpp" @class NEIPv4Route; @class NEIPv6Route; diff --git a/Sources/OpenVPNAdapter/OpenVPNConfiguration+Internal.h b/Sources/OpenVPNAdapter/OpenVPNConfiguration+Internal.h index 4bd4030..406149c 100644 --- a/Sources/OpenVPNAdapter/OpenVPNConfiguration+Internal.h +++ b/Sources/OpenVPNAdapter/OpenVPNConfiguration+Internal.h @@ -8,7 +8,7 @@ #import "OpenVPNConfiguration.h" -#include +#include "ovpncli.hpp" using namespace openvpn; diff --git a/Sources/OpenVPNAdapter/OpenVPNConnectionInfo+Internal.h b/Sources/OpenVPNAdapter/OpenVPNConnectionInfo+Internal.h index c03fb21..19d255f 100644 --- a/Sources/OpenVPNAdapter/OpenVPNConnectionInfo+Internal.h +++ b/Sources/OpenVPNAdapter/OpenVPNConnectionInfo+Internal.h @@ -8,7 +8,7 @@ #import "OpenVPNConnectionInfo.h" -#include +#include "ovpncli.hpp" using namespace openvpn; diff --git a/Sources/OpenVPNAdapter/OpenVPNCredentials+Internal.h b/Sources/OpenVPNAdapter/OpenVPNCredentials+Internal.h index 8cb7831..0b048bf 100644 --- a/Sources/OpenVPNAdapter/OpenVPNCredentials+Internal.h +++ b/Sources/OpenVPNAdapter/OpenVPNCredentials+Internal.h @@ -7,7 +7,7 @@ // #import "OpenVPNCredentials.h" -#include +#include "ovpncli.hpp" using namespace openvpn; diff --git a/Sources/OpenVPNAdapter/OpenVPNInterfaceStats+Internal.h b/Sources/OpenVPNAdapter/OpenVPNInterfaceStats+Internal.h index 735e605..ae8b127 100644 --- a/Sources/OpenVPNAdapter/OpenVPNInterfaceStats+Internal.h +++ b/Sources/OpenVPNAdapter/OpenVPNInterfaceStats+Internal.h @@ -8,7 +8,7 @@ #import "OpenVPNInterfaceStats.h" -#include +#include "ovpncli.hpp" using namespace openvpn; diff --git a/Sources/OpenVPNAdapter/OpenVPNNetworkSettingsBuilder.m b/Sources/OpenVPNAdapter/OpenVPNNetworkSettingsBuilder.m index f95433c..10d5e5d 100644 --- a/Sources/OpenVPNAdapter/OpenVPNNetworkSettingsBuilder.m +++ b/Sources/OpenVPNAdapter/OpenVPNNetworkSettingsBuilder.m @@ -10,7 +10,6 @@ #import #import "NSArray+OpenVPNAdditions.h" -#import "NSSet+OpenVPNAdditions.h" @interface OpenVPNNetworkSettingsBuilder () diff --git a/Sources/OpenVPNAdapter/OpenVPNProperties+Internal.h b/Sources/OpenVPNAdapter/OpenVPNProperties+Internal.h index d6bee9a..a276e2c 100644 --- a/Sources/OpenVPNAdapter/OpenVPNProperties+Internal.h +++ b/Sources/OpenVPNAdapter/OpenVPNProperties+Internal.h @@ -8,7 +8,7 @@ #import "OpenVPNProperties.h" -#include +#include "ovpncli.hpp" using namespace openvpn; diff --git a/Sources/OpenVPNAdapter/OpenVPNServerEntry+Internal.h b/Sources/OpenVPNAdapter/OpenVPNServerEntry+Internal.h index b4e44fe..0ef67b3 100644 --- a/Sources/OpenVPNAdapter/OpenVPNServerEntry+Internal.h +++ b/Sources/OpenVPNAdapter/OpenVPNServerEntry+Internal.h @@ -8,7 +8,7 @@ #import "OpenVPNServerEntry.h" -#include +#include "ovpncli.hpp" using namespace openvpn; diff --git a/Sources/OpenVPNAdapter/OpenVPNSessionToken+Internal.h b/Sources/OpenVPNAdapter/OpenVPNSessionToken+Internal.h index b1c9026..1ee326f 100644 --- a/Sources/OpenVPNAdapter/OpenVPNSessionToken+Internal.h +++ b/Sources/OpenVPNAdapter/OpenVPNSessionToken+Internal.h @@ -8,7 +8,7 @@ #import "OpenVPNSessionToken.h" -#include +#include "ovpncli.hpp" using namespace openvpn; diff --git a/Sources/OpenVPNAdapter/OpenVPNTransportStats+Internal.h b/Sources/OpenVPNAdapter/OpenVPNTransportStats+Internal.h index df7e129..bd8eea0 100644 --- a/Sources/OpenVPNAdapter/OpenVPNTransportStats+Internal.h +++ b/Sources/OpenVPNAdapter/OpenVPNTransportStats+Internal.h @@ -8,7 +8,7 @@ #import "OpenVPNTransportStats.h" -#include +#include "ovpncli.hpp" using namespace openvpn;