mirror of
https://github.com/deneraraujo/OpenVPNAdapter.git
synced 2026-02-11 00:00:08 +08:00
Merge branch 'feature/test-refactoring' into develop
This commit is contained in:
4
.gitattributes
vendored
4
.gitattributes
vendored
@@ -1,4 +0,0 @@
|
||||
# Telling GIT that Xcode pbxproj remote and local files
|
||||
# should be merged using union of differences
|
||||
*.pbxproj binary merge=union
|
||||
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -16,6 +16,7 @@ DerivedData
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
xcuserdata/
|
||||
Scripts/environment.rb
|
||||
|
||||
## Other
|
||||
*.xccheckout
|
||||
@@ -47,4 +48,3 @@ playground.xcworkspace
|
||||
# Carthage/Checkouts
|
||||
|
||||
Carthage/Build
|
||||
|
||||
|
||||
137
OpenVPNAdapter.podspec
Normal file
137
OpenVPNAdapter.podspec
Normal file
@@ -0,0 +1,137 @@
|
||||
#
|
||||
# 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."
|
||||
|
||||
# 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"
|
||||
|
||||
|
||||
# ――― 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" }
|
||||
|
||||
|
||||
# ――― 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"
|
||||
|
||||
# ――― 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"
|
||||
|
||||
|
||||
# ――― 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}" }
|
||||
|
||||
|
||||
# ――― 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"
|
||||
|
||||
# s.public_header_files = "Classes/**/*.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"
|
||||
|
||||
|
||||
# ――― 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.library = "iconv"
|
||||
# s.libraries = "iconv", "xml2"
|
||||
|
||||
|
||||
# ――― 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.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
|
||||
# s.dependency "JSONKit", "~> 1.4"
|
||||
|
||||
end
|
||||
@@ -35,6 +35,10 @@
|
||||
C915F2231F61B0E700B3DF23 /* keyfile-decrypted.3des in Resources */ = {isa = PBXBuildFile; fileRef = C915F2211F61B0E700B3DF23 /* keyfile-decrypted.3des */; };
|
||||
C915F2251F61B22300B3DF23 /* test-ca.crt in Resources */ = {isa = PBXBuildFile; fileRef = C915F2241F61B22300B3DF23 /* test-ca.crt */; };
|
||||
C915F2261F61B22300B3DF23 /* test-ca.crt in Resources */ = {isa = PBXBuildFile; fileRef = C915F2241F61B22300B3DF23 /* test-ca.crt */; };
|
||||
C924E19E215CEBFC00AEDEB5 /* VPNProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = C924E19D215CEBFC00AEDEB5 /* VPNProfile.swift */; };
|
||||
C924E19F215CEBFC00AEDEB5 /* VPNProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = C924E19D215CEBFC00AEDEB5 /* VPNProfile.swift */; };
|
||||
C924E1A2215CF37300AEDEB5 /* environment.rb.example in Resources */ = {isa = PBXBuildFile; fileRef = C924E1A1215CF37300AEDEB5 /* environment.rb.example */; };
|
||||
C924E1A3215CF37300AEDEB5 /* environment.rb.example in Resources */ = {isa = PBXBuildFile; fileRef = C924E1A1215CF37300AEDEB5 /* environment.rb.example */; };
|
||||
C9310BBE20FF63A400838910 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9310BBD20FF63A400838910 /* UIKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
|
||||
C9310BC120FF6E9700838910 /* Umbrella-Header.h in Headers */ = {isa = PBXBuildFile; fileRef = C9310BC020FF6E9700838910 /* Umbrella-Header.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C9310BC220FF6E9700838910 /* Umbrella-Header.h in Headers */ = {isa = PBXBuildFile; fileRef = C9310BC020FF6E9700838910 /* Umbrella-Header.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
@@ -91,16 +95,12 @@
|
||||
C9657A681EB0D73200EFF210 /* OpenVPNMinTLSVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = C9657A661EB0D73200EFF210 /* OpenVPNMinTLSVersion.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C9657A6A1EB0D75700EFF210 /* OpenVPNTLSCertProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = C9657A691EB0D75700EFF210 /* OpenVPNTLSCertProfile.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C9657A6B1EB0D75700EFF210 /* OpenVPNTLSCertProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = C9657A691EB0D75700EFF210 /* OpenVPNTLSCertProfile.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C98467A21EAA559B00272A9A /* local_vpn_server.ovpn in Resources */ = {isa = PBXBuildFile; fileRef = C98467A11EAA559B00272A9A /* local_vpn_server.ovpn */; };
|
||||
C98467A31EAA559B00272A9A /* local_vpn_server.ovpn in Resources */ = {isa = PBXBuildFile; fileRef = C98467A11EAA559B00272A9A /* local_vpn_server.ovpn */; };
|
||||
C98467A61EAA5B7700272A9A /* OpenVPNConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = C98467A41EAA5B7700272A9A /* OpenVPNConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C98467A71EAA5B7700272A9A /* OpenVPNConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = C98467A41EAA5B7700272A9A /* OpenVPNConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C98467A81EAA5B7700272A9A /* OpenVPNConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = C98467A51EAA5B7700272A9A /* OpenVPNConfiguration.mm */; };
|
||||
C98467A91EAA5B7700272A9A /* OpenVPNConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = C98467A51EAA5B7700272A9A /* OpenVPNConfiguration.mm */; };
|
||||
C98467AB1EAA5BE100272A9A /* OpenVPNConfiguration+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = C98467AA1EAA5BB500272A9A /* OpenVPNConfiguration+Internal.h */; };
|
||||
C98467AC1EAA5BE200272A9A /* OpenVPNConfiguration+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = C98467AA1EAA5BB500272A9A /* OpenVPNConfiguration+Internal.h */; };
|
||||
C9B03A7C1EABA82200268B85 /* ProfileLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9B03A7A1EABA6B500268B85 /* ProfileLoader.swift */; };
|
||||
C9B03A7D1EABA82300268B85 /* ProfileLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9B03A7A1EABA6B500268B85 /* ProfileLoader.swift */; };
|
||||
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 */; };
|
||||
@@ -122,8 +122,6 @@
|
||||
C9BCE25B1EB3C0D9009D6AC1 /* OpenVPNSessionToken.mm in Sources */ = {isa = PBXBuildFile; fileRef = C9BCE2571EB3C0D9009D6AC1 /* OpenVPNSessionToken.mm */; };
|
||||
C9BCE25E1EB3C201009D6AC1 /* OpenVPNSessionToken+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = C9BCE25C1EB3C201009D6AC1 /* OpenVPNSessionToken+Internal.h */; };
|
||||
C9BCE25F1EB3C201009D6AC1 /* OpenVPNSessionToken+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = C9BCE25C1EB3C201009D6AC1 /* OpenVPNSessionToken+Internal.h */; };
|
||||
C9C1E4101FA47117006ECA7D /* remote_vpn_server.ovpn in Resources */ = {isa = PBXBuildFile; fileRef = C9C1E40F1FA47117006ECA7D /* remote_vpn_server.ovpn */; };
|
||||
C9C1E4111FA47117006ECA7D /* remote_vpn_server.ovpn in Resources */ = {isa = PBXBuildFile; fileRef = C9C1E40F1FA47117006ECA7D /* remote_vpn_server.ovpn */; };
|
||||
C9C1E4141FA475B7006ECA7D /* CustomFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9C1E4131FA475B7006ECA7D /* CustomFlow.swift */; };
|
||||
C9C1E4151FA475B7006ECA7D /* CustomFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9C1E4131FA475B7006ECA7D /* CustomFlow.swift */; };
|
||||
C9C2B2B7200CB42F00CA0FF3 /* OpenVPNAdapterPacketFlow.h in Headers */ = {isa = PBXBuildFile; fileRef = C9C2B2B6200CB42F00CA0FF3 /* OpenVPNAdapterPacketFlow.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
@@ -199,6 +197,10 @@
|
||||
C915F21E1F6199E300B3DF23 /* keyfile-encrypted.3des */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "keyfile-encrypted.3des"; sourceTree = "<group>"; };
|
||||
C915F2211F61B0E700B3DF23 /* keyfile-decrypted.3des */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "keyfile-decrypted.3des"; sourceTree = "<group>"; };
|
||||
C915F2241F61B22300B3DF23 /* test-ca.crt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "test-ca.crt"; sourceTree = "<group>"; };
|
||||
C924E19C215CE9BC00AEDEB5 /* vpn_profile_template.erb */ = {isa = PBXFileReference; lastKnownFileType = text; path = vpn_profile_template.erb; sourceTree = "<group>"; };
|
||||
C924E19D215CEBFC00AEDEB5 /* VPNProfile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPNProfile.swift; sourceTree = "<group>"; };
|
||||
C924E1A0215CEDE600AEDEB5 /* fill_vpn_profile.rb */ = {isa = PBXFileReference; lastKnownFileType = text.script.ruby; path = fill_vpn_profile.rb; sourceTree = "<group>"; };
|
||||
C924E1A1215CF37300AEDEB5 /* environment.rb.example */ = {isa = PBXFileReference; lastKnownFileType = text; path = environment.rb.example; sourceTree = "<group>"; };
|
||||
C9310BBD20FF63A400838910 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.4.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
|
||||
C9310BC020FF6E9700838910 /* Umbrella-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "Umbrella-Header.h"; path = "OpenVPNAdapter/Umbrella-Header.h"; sourceTree = "<group>"; };
|
||||
C9354F431F1E49A500F4C935 /* OpenVPNReachabilityTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenVPNReachabilityTests.swift; sourceTree = "<group>"; };
|
||||
@@ -227,11 +229,9 @@
|
||||
C9657A631EB0D6AD00EFF210 /* OpenVPNCompressionMode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OpenVPNCompressionMode.h; path = OpenVPNAdapter/OpenVPNCompressionMode.h; sourceTree = "<group>"; };
|
||||
C9657A661EB0D73200EFF210 /* OpenVPNMinTLSVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenVPNMinTLSVersion.h; path = OpenVPNAdapter/OpenVPNMinTLSVersion.h; sourceTree = "<group>"; };
|
||||
C9657A691EB0D75700EFF210 /* OpenVPNTLSCertProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenVPNTLSCertProfile.h; path = OpenVPNAdapter/OpenVPNTLSCertProfile.h; sourceTree = "<group>"; };
|
||||
C98467A11EAA559B00272A9A /* local_vpn_server.ovpn */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = local_vpn_server.ovpn; sourceTree = "<group>"; };
|
||||
C98467A41EAA5B7700272A9A /* OpenVPNConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenVPNConfiguration.h; path = OpenVPNAdapter/OpenVPNConfiguration.h; sourceTree = "<group>"; };
|
||||
C98467A51EAA5B7700272A9A /* OpenVPNConfiguration.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = OpenVPNConfiguration.mm; path = OpenVPNAdapter/OpenVPNConfiguration.mm; sourceTree = "<group>"; };
|
||||
C98467AA1EAA5BB500272A9A /* OpenVPNConfiguration+Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OpenVPNConfiguration+Internal.h"; path = "OpenVPNAdapter/OpenVPNConfiguration+Internal.h"; sourceTree = "<group>"; };
|
||||
C9B03A7A1EABA6B500268B85 /* ProfileLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProfileLoader.swift; sourceTree = "<group>"; };
|
||||
C9B7955C1F1D16AA00CF35FE /* OpenVPNReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenVPNReachability.h; path = OpenVPNAdapter/OpenVPNReachability.h; sourceTree = "<group>"; };
|
||||
C9B7955D1F1D16AA00CF35FE /* OpenVPNReachability.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = OpenVPNReachability.mm; path = OpenVPNAdapter/OpenVPNReachability.mm; sourceTree = "<group>"; };
|
||||
C9B795621F1D182500CF35FE /* OpenVPNReachabilityTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenVPNReachabilityTracker.h; path = OpenVPNAdapter/OpenVPNReachabilityTracker.h; sourceTree = "<group>"; };
|
||||
@@ -247,7 +247,6 @@
|
||||
C9BCE2561EB3C0D9009D6AC1 /* OpenVPNSessionToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenVPNSessionToken.h; path = OpenVPNAdapter/OpenVPNSessionToken.h; sourceTree = "<group>"; };
|
||||
C9BCE2571EB3C0D9009D6AC1 /* OpenVPNSessionToken.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = OpenVPNSessionToken.mm; path = OpenVPNAdapter/OpenVPNSessionToken.mm; sourceTree = "<group>"; };
|
||||
C9BCE25C1EB3C201009D6AC1 /* OpenVPNSessionToken+Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "OpenVPNSessionToken+Internal.h"; path = "OpenVPNAdapter/OpenVPNSessionToken+Internal.h"; sourceTree = "<group>"; };
|
||||
C9C1E40F1FA47117006ECA7D /* remote_vpn_server.ovpn */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = remote_vpn_server.ovpn; sourceTree = "<group>"; };
|
||||
C9C1E4131FA475B7006ECA7D /* CustomFlow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomFlow.swift; sourceTree = "<group>"; };
|
||||
C9C2B2B6200CB42F00CA0FF3 /* OpenVPNAdapterPacketFlow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OpenVPNAdapterPacketFlow.h; path = OpenVPNAdapter/OpenVPNAdapterPacketFlow.h; sourceTree = "<group>"; };
|
||||
C9C2B2B9200CC42A00CA0FF3 /* OpenVPNPacket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OpenVPNPacket.h; path = OpenVPNAdapter/OpenVPNPacket.h; sourceTree = "<group>"; };
|
||||
@@ -322,6 +321,7 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C90BAD251E73F47E00DEFB32 /* Configuration */,
|
||||
C924E19B215CE76600AEDEB5 /* Scripts */,
|
||||
C9BB475D1E71663A00F3F98C /* Sources */,
|
||||
C9BB478F1E71821A00F3F98C /* Tests */,
|
||||
C91031031E47237A0004DFFE /* Products */,
|
||||
@@ -395,6 +395,24 @@
|
||||
path = ..;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C924E19A215CE50B00AEDEB5 /* Extensions */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C9BB47A11E7183DB00F3F98C /* Bundle.swift */,
|
||||
);
|
||||
name = Extensions;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C924E19B215CE76600AEDEB5 /* Scripts */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C924E19C215CE9BC00AEDEB5 /* vpn_profile_template.erb */,
|
||||
C924E1A1215CF37300AEDEB5 /* environment.rb.example */,
|
||||
C924E1A0215CEDE600AEDEB5 /* fill_vpn_profile.rb */,
|
||||
);
|
||||
path = Scripts;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C9310BBF20FF667F00838910 /* OpenVPNAdapter */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -524,9 +542,8 @@
|
||||
C9BB479E1E7183B800F3F98C /* Libraries */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C9C1E40E1FA470EB006ECA7D /* Configuration */,
|
||||
C9C1E4121FA47586006ECA7D /* Base */,
|
||||
C9BB479F1E7183C200F3F98C /* Helpers */,
|
||||
C924E19A215CE50B00AEDEB5 /* Extensions */,
|
||||
);
|
||||
name = Libraries;
|
||||
sourceTree = "<group>";
|
||||
@@ -534,37 +551,12 @@
|
||||
C9BB479F1E7183C200F3F98C /* Helpers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C9BB47A01E7183CA00F3F98C /* Utils */,
|
||||
C9C1E4131FA475B7006ECA7D /* CustomFlow.swift */,
|
||||
C924E19D215CEBFC00AEDEB5 /* VPNProfile.swift */,
|
||||
);
|
||||
name = Helpers;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C9BB47A01E7183CA00F3F98C /* Utils */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C9BB47A11E7183DB00F3F98C /* Bundle.swift */,
|
||||
C9B03A7A1EABA6B500268B85 /* ProfileLoader.swift */,
|
||||
);
|
||||
name = Utils;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C9C1E40E1FA470EB006ECA7D /* Configuration */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C98467A11EAA559B00272A9A /* local_vpn_server.ovpn */,
|
||||
C9C1E40F1FA47117006ECA7D /* remote_vpn_server.ovpn */,
|
||||
);
|
||||
name = Configuration;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C9C1E4121FA47586006ECA7D /* Base */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C9C1E4131FA475B7006ECA7D /* CustomFlow.swift */,
|
||||
);
|
||||
name = Base;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C9CA4DD01F602D8300C4F184 /* Certificates and Keys */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -715,6 +707,7 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = C9BB47961E71821A00F3F98C /* Build configuration list for PBXNativeTarget "OpenVPNAdapter iOS Tests" */;
|
||||
buildPhases = (
|
||||
C924E1A5215D15C600AEDEB5 /* Fill VPN Profile */,
|
||||
C9BB478A1E71821A00F3F98C /* Sources */,
|
||||
C9BB478B1E71821A00F3F98C /* Frameworks */,
|
||||
C9BB478C1E71821A00F3F98C /* Resources */,
|
||||
@@ -752,6 +745,7 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = C9D2ABFC1EA212A3007EDF9D /* Build configuration list for PBXNativeTarget "OpenVPNAdapter macOS Tests" */;
|
||||
buildPhases = (
|
||||
C924E1A4215D021B00AEDEB5 /* Fill VPN Profile */,
|
||||
C9D2ABF51EA212A3007EDF9D /* Sources */,
|
||||
C9D2ABF81EA212A3007EDF9D /* Frameworks */,
|
||||
C9D2ABFA1EA212A3007EDF9D /* Resources */,
|
||||
@@ -828,11 +822,10 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
C98467A21EAA559B00272A9A /* local_vpn_server.ovpn in Resources */,
|
||||
C915F2221F61B0E700B3DF23 /* keyfile-decrypted.3des in Resources */,
|
||||
C915F2251F61B22300B3DF23 /* test-ca.crt in Resources */,
|
||||
C9C1E4101FA47117006ECA7D /* remote_vpn_server.ovpn in Resources */,
|
||||
C915F21F1F6199E300B3DF23 /* keyfile-encrypted.3des in Resources */,
|
||||
C924E1A2215CF37300AEDEB5 /* environment.rb.example in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -847,17 +840,52 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
C98467A31EAA559B00272A9A /* local_vpn_server.ovpn in Resources */,
|
||||
C915F2231F61B0E700B3DF23 /* keyfile-decrypted.3des in Resources */,
|
||||
C915F2261F61B22300B3DF23 /* test-ca.crt in Resources */,
|
||||
C9C1E4111FA47117006ECA7D /* remote_vpn_server.ovpn in Resources */,
|
||||
C915F2201F6199E300B3DF23 /* keyfile-encrypted.3des in Resources */,
|
||||
C924E1A3215CF37300AEDEB5 /* environment.rb.example in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
C924E1A4215D021B00AEDEB5 /* Fill VPN Profile */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Fill VPN Profile";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "ruby \"${SRCROOT}/Scripts/fill_vpn_profile.rb\"\n";
|
||||
};
|
||||
C924E1A5215D15C600AEDEB5 /* Fill VPN Profile */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Fill VPN Profile";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "ruby \"${SRCROOT}/Scripts/fill_vpn_profile.rb\"\n";
|
||||
};
|
||||
C9BB476E1E716E7000F3F98C /* Check Warning And Error Tags */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -921,10 +949,10 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
C9C1E4141FA475B7006ECA7D /* CustomFlow.swift in Sources */,
|
||||
C924E19E215CEBFC00AEDEB5 /* VPNProfile.swift in Sources */,
|
||||
C94605E91EAA656B00971516 /* OpenVPNConfigurationTests.swift in Sources */,
|
||||
C9BB47911E71821A00F3F98C /* OpenVPNAdapterTests.swift in Sources */,
|
||||
C915F1F91F615BB400B3DF23 /* OpenVPNPrivateKeyTests.swift in Sources */,
|
||||
C9B03A7C1EABA82200268B85 /* ProfileLoader.swift in Sources */,
|
||||
C9CA4DE11F603A5300C4F184 /* OpenVPNCertificateTests.swift in Sources */,
|
||||
C9BB47A21E7183DB00F3F98C /* Bundle.swift in Sources */,
|
||||
);
|
||||
@@ -961,12 +989,12 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
C924E19F215CEBFC00AEDEB5 /* VPNProfile.swift in Sources */,
|
||||
C94605EA1EAA65F200971516 /* OpenVPNConfigurationTests.swift in Sources */,
|
||||
C9D2ABF61EA212A3007EDF9D /* OpenVPNAdapterTests.swift in Sources */,
|
||||
C9CA4DE21F603A5300C4F184 /* OpenVPNCertificateTests.swift in Sources */,
|
||||
C9354F471F1E4AE200F4C935 /* OpenVPNReachabilityTests.swift in Sources */,
|
||||
C915F1FA1F615BB400B3DF23 /* OpenVPNPrivateKeyTests.swift in Sources */,
|
||||
C9B03A7D1EABA82300268B85 /* ProfileLoader.swift in Sources */,
|
||||
C9C1E4151FA475B7006ECA7D /* CustomFlow.swift in Sources */,
|
||||
C9D2ABF71EA212A3007EDF9D /* Bundle.swift in Sources */,
|
||||
);
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
codeCoverageEnabled = "YES"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
shouldUseLaunchSchemeArgsEnv = "NO">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
|
||||
64
Scripts/environment.rb.example
Normal file
64
Scripts/environment.rb.example
Normal file
@@ -0,0 +1,64 @@
|
||||
# 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
|
||||
35
Scripts/fill_vpn_profile.rb
Normal file
35
Scripts/fill_vpn_profile.rb
Normal file
@@ -0,0 +1,35 @@
|
||||
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)
|
||||
25
Scripts/vpn_profile_template.erb
Normal file
25
Scripts/vpn_profile_template.erb
Normal file
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// 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 %>
|
||||
|
||||
}
|
||||
@@ -30,12 +30,14 @@ class OpenVPNAdapterTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testApplyConfiguration() {
|
||||
guard let vpnConfiguration = VPNProfile.configuration.data(using: .utf8) else { fatalError() }
|
||||
|
||||
let adapter = OpenVPNAdapter()
|
||||
|
||||
|
||||
let configuration = OpenVPNConfiguration()
|
||||
configuration.fileContent = ProfileLoader.getVPNProfile(type: .localVPNServer)
|
||||
configuration.fileContent = vpnConfiguration
|
||||
configuration.settings = ["auth-user-pass": ""]
|
||||
|
||||
|
||||
let result: OpenVPNProperties
|
||||
do {
|
||||
result = try adapter.apply(configuration: configuration)
|
||||
@@ -43,10 +45,9 @@ class OpenVPNAdapterTests: XCTestCase {
|
||||
XCTFail("Failed to configure OpenVPN adapted due to error: \(error)")
|
||||
return
|
||||
}
|
||||
|
||||
XCTAssert(result.remoteHost == "192.168.1.200")
|
||||
XCTAssert(result.remotePort == 1194)
|
||||
XCTAssert(result.remoteProto == .UDP)
|
||||
|
||||
XCTAssert(result.remoteHost == VPNProfile.remoteHost)
|
||||
XCTAssert(result.remotePort == VPNProfile.remotePort)
|
||||
XCTAssert(result.autologin == false)
|
||||
}
|
||||
|
||||
@@ -65,67 +66,28 @@ class OpenVPNAdapterTests: XCTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
// Test connection with local VPN server
|
||||
func testLocalConection() {
|
||||
let adapter = OpenVPNAdapter()
|
||||
|
||||
let configuration = OpenVPNConfiguration()
|
||||
configuration.fileContent = ProfileLoader.getVPNProfile(type: .localVPNServer)
|
||||
configuration.settings = ["auth-user-pass": ""]
|
||||
|
||||
let result: OpenVPNProperties
|
||||
do {
|
||||
result = try adapter.apply(configuration: configuration)
|
||||
} catch {
|
||||
XCTFail("Failed to configure OpenVPN adapted due to error: \(error)")
|
||||
return
|
||||
}
|
||||
|
||||
guard !result.autologin else {
|
||||
XCTFail()
|
||||
return
|
||||
}
|
||||
|
||||
let credentials = OpenVPNCredentials()
|
||||
credentials.username = "testuser"
|
||||
credentials.password = "nonsecure"
|
||||
|
||||
do {
|
||||
try adapter.provide(credentials: credentials)
|
||||
} catch {
|
||||
XCTFail("Failed to provide credentials. \(error)")
|
||||
return
|
||||
}
|
||||
|
||||
expectations[.connection] = expectation(description: "me.ss-abramchuk.openvpn-adapter.connection")
|
||||
|
||||
adapter.delegate = self
|
||||
adapter.connect()
|
||||
|
||||
waitForExpectations(timeout: 30.0) { (error) in
|
||||
adapter.disconnect()
|
||||
}
|
||||
}
|
||||
|
||||
// Test connection with remote VPN server
|
||||
func testRemoteConnection() {
|
||||
// Test connection to the VPN server
|
||||
func testConnection() {
|
||||
guard let vpnConfiguration = VPNProfile.configuration.data(using: .utf8) else { fatalError() }
|
||||
|
||||
let adapter = OpenVPNAdapter()
|
||||
|
||||
|
||||
let configuration = OpenVPNConfiguration()
|
||||
configuration.fileContent = ProfileLoader.getVPNProfile(type: .remoteVPNServer)
|
||||
|
||||
configuration.fileContent = vpnConfiguration
|
||||
|
||||
do {
|
||||
_ = try adapter.apply(configuration: configuration)
|
||||
} catch {
|
||||
XCTFail("Failed to configure OpenVPN adapted due to error: \(error)")
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
expectations[.connection] = expectation(description: "me.ss-abramchuk.openvpn-adapter.connection")
|
||||
|
||||
|
||||
adapter.delegate = self
|
||||
adapter.connect()
|
||||
|
||||
|
||||
waitForExpectations(timeout: 30.0) { (error) in
|
||||
adapter.disconnect()
|
||||
}
|
||||
@@ -155,9 +117,11 @@ extension OpenVPNAdapterTests: OpenVPNAdapterDelegate {
|
||||
|
||||
func openVPNAdapter(_ openVPNAdapter: OpenVPNAdapter, handleError error: Error) {
|
||||
if let connectionExpectation = expectations[.connection] {
|
||||
XCTFail("Failed to establish conection. \(error.localizedDescription)")
|
||||
XCTFail("Failed to establish conection.")
|
||||
connectionExpectation.fulfill()
|
||||
}
|
||||
|
||||
dump(error)
|
||||
}
|
||||
|
||||
func openVPNAdapter(_ openVPNAdapter: OpenVPNAdapter, handleLogMessage logMessage: String) {
|
||||
|
||||
@@ -24,7 +24,7 @@ class OpenVPNConfigurationTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testGetSetProfile() {
|
||||
let originalProfile = ProfileLoader.getVPNProfile(type: .localVPNServer)
|
||||
guard let originalProfile = VPNProfile.configuration.data(using: .utf8) else { fatalError() }
|
||||
|
||||
let configuration = OpenVPNConfiguration()
|
||||
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
//
|
||||
// ProfileLoader.swift
|
||||
// OpenVPN Adapter
|
||||
//
|
||||
// Created by Sergey Abramchuk on 22.04.17.
|
||||
//
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
enum ProfileType: String {
|
||||
case localVPNServer = "local_vpn_server"
|
||||
case remoteVPNServer = "remote_vpn_server"
|
||||
}
|
||||
|
||||
struct ProfileLoader {
|
||||
|
||||
static func getVPNProfile(type: ProfileType) -> Data {
|
||||
let fileName = type.rawValue
|
||||
|
||||
guard
|
||||
let path = Bundle.current.url(forResource: fileName, withExtension: "ovpn"),
|
||||
let profile = try? Data(contentsOf: path)
|
||||
else {
|
||||
fatalError("Failed to retrieve OpenVPN profile")
|
||||
}
|
||||
|
||||
return profile
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
19
Tests/VPNProfile.swift
Normal file
19
Tests/VPNProfile.swift
Normal file
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// 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#>
|
||||
|
||||
static let remoteHost: String = <#OPENVPN_REMOTE_HOST#>
|
||||
static let remotePort: Int = <#OPENVPN_REMOTE_PORT#>
|
||||
}
|
||||
@@ -1,89 +0,0 @@
|
||||
dev tun
|
||||
proto udp
|
||||
remote 192.168.1.200 1194
|
||||
cipher AES-256-CBC
|
||||
resolv-retry infinite
|
||||
nobind
|
||||
persist-key
|
||||
persist-tun
|
||||
client
|
||||
verb 3
|
||||
<ca>
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDpjCCAo6gAwIBAgIBADANBgkqhkiG9w0BAQsFADBSMRUwEwYDVQQDEww5ZTQ3
|
||||
NThlOTVlZTIxFTATBgNVBAoTDDllNDc1OGU5NWVlMjEVMBMGA1UECxMMOWU0NzU4
|
||||
ZTk1ZWUyMQswCQYDVQQGEwJVUzAeFw0xNzA0MjgxODU3MjhaFw0zNzEyMzExODU3
|
||||
MjhaMFIxFTATBgNVBAMTDDllNDc1OGU5NWVlMjEVMBMGA1UEChMMOWU0NzU4ZTk1
|
||||
ZWUyMRUwEwYDVQQLEww5ZTQ3NThlOTVlZTIxCzAJBgNVBAYTAlVTMIIBIjANBgkq
|
||||
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3ecfScl3JGwRhbmHgIrNx7LItVyTX9V3
|
||||
CSZOjBOZymXIKt7/vNt9w6suebtK64/YCRAyPsUbvqUwYqfZhd6jngua/917LrnO
|
||||
SKHMrGtwDLfnxKY3WTPl1tI5GlrojgF2Z3wCgzRr/+KkFAk8Fq2iffJDRi2Iptqn
|
||||
5PlOosGfpA1fQKYsedKx7DAXbwTvXPbE/tJ0m8WfdiHIUkWWrNxAFOuctWLk+oBi
|
||||
vAmlb3/GSctXEIcVPHdF5AKU/GR5AjY1Qqde4LcMS+54YV+g/rpFYNUFsySNSvLQ
|
||||
Lxg3zZ79HAd9DMwYSt47MP9pih8dT2jdt7df6y+/RXq32B6SoqrYPwIDAQABo4GG
|
||||
MIGDMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgH2MGMGA1UdJQRcMFoGCCsG
|
||||
AQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDBQYI
|
||||
KwYBBQUHAwYGCCsGAQUFBwMHBggrBgEFBQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcN
|
||||
AQELBQADggEBAKnWRxFiKPR7mhbH+JKg8uxu1ONe8TpBygMw6B0XM0WXFY0byTnK
|
||||
7IX1X1TzIeJNaeDiBKvrm8o4SJGXy8qC1DM+tFAlcRCwwBl5Yi89TcbLup0SSYnw
|
||||
QEJQ169+u1WNS6H14ED2p0Um8kslRXqSC04yLjImy3Sr4d52h1TQNjkpSGKggBbN
|
||||
L6YR29j8LX+3ls+Jx5e+allaw6v9Dft+jjsPEZE6KznhtQa6Zyw6Afk44yPLWjne
|
||||
ShcnY1Au3meaU98Q/S891i7o1tEFUKNBy+n4Qu3J/BnK77NPw1g7FJOcOD0JZIUq
|
||||
XtjqsiTviTpsUFcwp/Bl3BTXT0b6BwKi978=
|
||||
-----END CERTIFICATE-----
|
||||
</ca>
|
||||
<cert>
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIID0DCCArigAwIBAgIBADANBgkqhkiG9w0BAQsFADBnMRwwGgYDVQQDExM2OTg1
|
||||
MzIwMzIwNzkwNTYyMDkzMRwwGgYDVQQKExM2OTg1MzIwMzIwNzkwNTYyMDkzMRww
|
||||
GgYDVQQLExM2OTg1MzIwMzIwNzkwNTYyMDkzMQswCQYDVQQGEwJVUzAeFw0xNzA0
|
||||
MjgxODU3MzFaFw0zNzEyMzExODU3MzFaMGcxHDAaBgNVBAMTEzY5ODUzMjAzMjA3
|
||||
OTA1NjIwOTMxHDAaBgNVBAoTEzY5ODUzMjAzMjA3OTA1NjIwOTMxHDAaBgNVBAsT
|
||||
EzY5ODUzMjAzMjA3OTA1NjIwOTMxCzAJBgNVBAYTAlVTMIIBIjANBgkqhkiG9w0B
|
||||
AQEFAAOCAQ8AMIIBCgKCAQEAx9oRmlK91IFxB3WWjrRJkR8l4csle9EmrH+6r6US
|
||||
Utq/Ik9SctVZz7n8L5IrJc1/hpPvdSyD8uq3lI0U9/h0eDca5pKy0b9Oe4qS75wv
|
||||
JFkebg/5V2grRL9//125ux/2zytOPG3WIQF0p2NT4Y4OSOPG0RCdQRd2pZBS1sIu
|
||||
AMO+jRZGlrLxc+QyokR64wlkTHnv3dWJBUm8iuVaQpr5X22a5urCPk3H79zRPJuO
|
||||
1u74a0AaMRREzAp9F547VghvMWKxd6y38jOVteSQyB6E4c/T7rnO0MWk8GPO3JEj
|
||||
qNQ/9N0OE9kVWNuKVQf6UHV2cknyfHyg9Va0IgWvRoLt7QIDAQABo4GGMIGDMA8G
|
||||
A1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgH2MGMGA1UdJQRcMFoGCCsGAQUFBwMB
|
||||
BggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDBQYIKwYBBQUH
|
||||
AwYGCCsGAQUFBwMHBggrBgEFBQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQELBQAD
|
||||
ggEBAFZZJLTP84lo46eZkaRfvXiv0qKO2FHHTSJtrHl7C6mR9ffZzp6nTd0EPB6T
|
||||
AkQZong8LqjcDmTk+3JGTHDSdy+5E6TkDTp1oiOoVApxRd13TIFmxpPslBczyHwt
|
||||
u5MrWNMMk+urGHK4tm/TBCm13AQAv20CQBsI+s+3pW3blcUpD7HbZvahZgNg978h
|
||||
g/y5hFtffBJbCEzJpYV9bvh7tyI0ndhyxB6ew93jfaGukDtIbpTjLTD1qvmnaGvW
|
||||
dEY8VmtmQ7gKuSMvfkW7ClN0XxTfDwkT8jxADF4P9RGHeUW2AUwMKw2dV2LbX933
|
||||
BNZuIgS6Lcaxso+R20VwQnefPvM=
|
||||
-----END CERTIFICATE-----
|
||||
</cert>
|
||||
<key>
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDH2hGaUr3UgXEH
|
||||
dZaOtEmRHyXhyyV70Sasf7qvpRJS2r8iT1Jy1VnPufwvkislzX+Gk+91LIPy6reU
|
||||
jRT3+HR4NxrmkrLRv057ipLvnC8kWR5uD/lXaCtEv3//Xbm7H/bPK048bdYhAXSn
|
||||
Y1Phjg5I48bREJ1BF3alkFLWwi4Aw76NFkaWsvFz5DKiRHrjCWRMee/d1YkFSbyK
|
||||
5VpCmvlfbZrm6sI+Tcfv3NE8m47W7vhrQBoxFETMCn0XnjtWCG8xYrF3rLfyM5W1
|
||||
5JDIHoThz9Puuc7QxaTwY87ckSOo1D/03Q4T2RVY24pVB/pQdXZySfJ8fKD1VrQi
|
||||
Ba9Ggu3tAgMBAAECggEAU6V8FKFo/pam3j5jI5tl5y2oR1cleytRCoXzdyyZ/L+9
|
||||
m/ijQ5j0nDL10FtXX90g8Qzd/qcBGx0OdUiPbDI7XU2DHtprqcpuaNrZIRy3xnje
|
||||
eaaJ8AGTipS0WAe8gwuf25n+huBZ7TqUvrKeGxu/8tYTEtHnX6UYbbd4VJa1dm+5
|
||||
16LfueOIricLu5JJ7TFLls4kFY6R//cFu6wzmlHwYvU7xsTQg8yWReojCifyvPqW
|
||||
yvF/MARb+1XWGCWKfT9B/A64uy8a4vqT52JHoG53t35luAjtHni65r+HDdiEf2Ph
|
||||
+gvpH/g0bOBBDFLQe5j1CdZr1PdzBNv9a1rxVVVgAQKBgQDoyKM9pTbNjmMPSb64
|
||||
3SsbBpF8M4JuIVg2qmu+xs25CoRKT+S6sMnnY/2uLzvYeUQWAQRPCqjL6jYWoLyZ
|
||||
AwDAl3uvAGG6LNuMqscSkDfO5hpr2y+fXRyh1+vTl9Fau3ZCSlCwJy/wBIfKbls9
|
||||
4Y0aLBlaS4AivMh9dSJe7e9MAQKBgQDbyJ+wcS8QcyRtOAZ7MQMRqsLjXRk6E2aY
|
||||
1a/WhLDfcsew56dh6F6VGE75DTvnOVmw19+HHj+bmmqbwU4Ook46E+BIWeonK6yZ
|
||||
8hBq6VFYutNaiid9MzV+90u1VYPT1C7/H28WkQ5F2obzSEdpQUs+z/Kb2wTRbgEx
|
||||
ECYTGe2R7QKBgF3Do21LRR3bQq9/xuDzxU8ngCaFIP53U+8BClFYBrmIMO017S39
|
||||
0/XuYtpskDCL+A7c7f1gj8lDV/IZYJ5JhV4OJnXBM5woQW8RwwoJKVGfgfj72tzY
|
||||
RpYyQP2D44ImjGX7RTEPN9H4ITI67Wmplop6ROQIEV7sp91Q9z1BnegBAoGAHMU3
|
||||
ej5mvc2E0DNMTeYNk8t5tY+jVMHjZVBbs0YtbSK2V0cL1zo232eONvXviIYuYoLv
|
||||
xN1F0FW3bOoyEKJYgSvG6VGz4CrMbl6MnaIrPuU985UwNCh28UboBzXJivo0qLrx
|
||||
rM+SQbyoe8JTbsjYU8Ge7Z4PFGdFCqolgcycF8UCgYBEVR50Ze1j8XK8oyySePqn
|
||||
YN1/CPQHkMv4Z9J511uDOw+rZpo8BtZX19jj4MWpFtcR7EAj4OyCe8gdn7YRv/n9
|
||||
Hw+zm4o54mkL4tgWg0/9jt0eCR3j3Ph03mTlkqwE/PPXaRIb1E8EmEYSwT0hDzjc
|
||||
Wb3dqIAxzkHucnvInG+TEw==
|
||||
-----END PRIVATE KEY-----
|
||||
</key>
|
||||
@@ -1,214 +0,0 @@
|
||||
###############################################################################
|
||||
# OpenVPN 2.0 Sample Configuration File
|
||||
# for PacketiX VPN / SoftEther VPN Server
|
||||
#
|
||||
# !!! AUTO-GENERATED BY SOFTETHER VPN SERVER MANAGEMENT TOOL !!!
|
||||
#
|
||||
# !!! YOU HAVE TO REVIEW IT BEFORE USE AND MODIFY IT AS NECESSARY !!!
|
||||
#
|
||||
# This configuration file is auto-generated. You might use this config file
|
||||
# in order to connect to the PacketiX VPN / SoftEther VPN Server.
|
||||
# However, before you try it, you should review the descriptions of the file
|
||||
# to determine the necessity to modify to suitable for your real environment.
|
||||
# If necessary, you have to modify a little adequately on the file.
|
||||
# For example, the IP address or the hostname as a destination VPN Server
|
||||
# should be confirmed.
|
||||
#
|
||||
# Note that to use OpenVPN 2.0, you have to put the certification file of
|
||||
# the destination VPN Server on the OpenVPN Client computer when you use this
|
||||
# config file. Please refer the below descriptions carefully.
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Specify the type of the layer of the VPN connection.
|
||||
#
|
||||
# To connect to the VPN Server as a "Remote-Access VPN Client PC",
|
||||
# specify 'dev tun'. (Layer-3 IP Routing Mode)
|
||||
#
|
||||
# To connect to the VPN Server as a bridging equipment of "Site-to-Site VPN",
|
||||
# specify 'dev tap'. (Layer-2 Ethernet Bridgine Mode)
|
||||
|
||||
dev tun
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Specify the underlying protocol beyond the Internet.
|
||||
# Note that this setting must be correspond with the listening setting on
|
||||
# the VPN Server.
|
||||
#
|
||||
# Specify either 'proto tcp' or 'proto udp'.
|
||||
|
||||
proto udp
|
||||
|
||||
|
||||
###############################################################################
|
||||
# The destination hostname / IP address, and port number of
|
||||
# the target VPN Server.
|
||||
#
|
||||
# You have to specify as 'remote <HOSTNAME> <PORT>'. You can also
|
||||
# specify the IP address instead of the hostname.
|
||||
#
|
||||
# Note that the auto-generated below hostname are a "auto-detected
|
||||
# IP address" of the VPN Server. You have to confirm the correctness
|
||||
# beforehand.
|
||||
#
|
||||
# When you want to connect to the VPN Server by using TCP protocol,
|
||||
# the port number of the destination TCP port should be same as one of
|
||||
# the available TCP listeners on the VPN Server.
|
||||
#
|
||||
# When you use UDP protocol, the port number must same as the configuration
|
||||
# setting of "OpenVPN Server Compatible Function" on the VPN Server.
|
||||
|
||||
remote vpn152461132.opengw.net 1840
|
||||
|
||||
|
||||
###############################################################################
|
||||
# The HTTP/HTTPS proxy setting.
|
||||
#
|
||||
# Only if you have to use the Internet via a proxy, uncomment the below
|
||||
# two lines and specify the proxy address and the port number.
|
||||
# In the case of using proxy-authentication, refer the OpenVPN manual.
|
||||
|
||||
;http-proxy-retry
|
||||
;http-proxy [proxy server] [proxy port]
|
||||
|
||||
|
||||
###############################################################################
|
||||
# The encryption and authentication algorithm.
|
||||
#
|
||||
# Default setting is good. Modify it as you prefer.
|
||||
# When you specify an unsupported algorithm, the error will occur.
|
||||
#
|
||||
# The supported algorithms are as follows:
|
||||
# cipher: [NULL-CIPHER] NULL AES-128-CBC AES-192-CBC AES-256-CBC BF-CBC
|
||||
# CAST-CBC CAST5-CBC DES-CBC DES-EDE-CBC DES-EDE3-CBC DESX-CBC
|
||||
# RC2-40-CBC RC2-64-CBC RC2-CBC
|
||||
# auth: SHA SHA1 MD5 MD4 RMD160
|
||||
|
||||
cipher AES-128-CBC
|
||||
auth SHA1
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Other parameters necessary to connect to the VPN Server.
|
||||
#
|
||||
# It is not recommended to modify it unless you have a particular need.
|
||||
|
||||
resolv-retry infinite
|
||||
nobind
|
||||
persist-key
|
||||
persist-tun
|
||||
client
|
||||
verb 3
|
||||
|
||||
|
||||
###############################################################################
|
||||
# The certificate file of the destination VPN Server.
|
||||
#
|
||||
# The CA certificate file is embedded in the inline format.
|
||||
# You can replace this CA contents if necessary.
|
||||
# Please note that if the server certificate is not a self-signed, you have to
|
||||
# specify the signer's root certificate (CA) here.
|
||||
|
||||
<ca>
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB
|
||||
hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
|
||||
A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV
|
||||
BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5
|
||||
MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT
|
||||
EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
|
||||
Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh
|
||||
dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR
|
||||
6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X
|
||||
pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC
|
||||
9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV
|
||||
/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf
|
||||
Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z
|
||||
+pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w
|
||||
qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah
|
||||
SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC
|
||||
u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf
|
||||
Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq
|
||||
crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E
|
||||
FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB
|
||||
/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl
|
||||
wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM
|
||||
4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV
|
||||
2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna
|
||||
FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ
|
||||
CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK
|
||||
boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke
|
||||
jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL
|
||||
S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb
|
||||
QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl
|
||||
0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB
|
||||
NVOFBkpdn627G190
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
</ca>
|
||||
|
||||
|
||||
###############################################################################
|
||||
# The client certificate file (dummy).
|
||||
#
|
||||
# In some implementations of OpenVPN Client software
|
||||
# (for example: OpenVPN Client for iOS),
|
||||
# a pair of client certificate and private key must be included on the
|
||||
# configuration file due to the limitation of the client.
|
||||
# So this sample configuration file has a dummy pair of client certificate
|
||||
# and private key as follows.
|
||||
|
||||
<cert>
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICxjCCAa4CAQAwDQYJKoZIhvcNAQEFBQAwKTEaMBgGA1UEAxMRVlBOR2F0ZUNs
|
||||
aWVudENlcnQxCzAJBgNVBAYTAkpQMB4XDTEzMDIxMTAzNDk0OVoXDTM3MDExOTAz
|
||||
MTQwN1owKTEaMBgGA1UEAxMRVlBOR2F0ZUNsaWVudENlcnQxCzAJBgNVBAYTAkpQ
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5h2lgQQYUjwoKYJbzVZA
|
||||
5VcIGd5otPc/qZRMt0KItCFA0s9RwReNVa9fDRFLRBhcITOlv3FBcW3E8h1Us7RD
|
||||
4W8GmJe8zapJnLsD39OSMRCzZJnczW4OCH1PZRZWKqDtjlNca9AF8a65jTmlDxCQ
|
||||
CjntLIWk5OLLVkFt9/tScc1GDtci55ofhaNAYMPiH7V8+1g66pGHXAoWK6AQVH67
|
||||
XCKJnGB5nlQ+HsMYPV/O49Ld91ZN/2tHkcaLLyNtywxVPRSsRh480jju0fcCsv6h
|
||||
p/0yXnTB//mWutBGpdUlIbwiITbAmrsbYnjigRvnPqX1RNJUbi9Fp6C2c/HIFJGD
|
||||
ywIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQChO5hgcw/4oWfoEFLu9kBa1B//kxH8
|
||||
hQkChVNn8BRC7Y0URQitPl3DKEed9URBDdg2KOAz77bb6ENPiliD+a38UJHIRMqe
|
||||
UBHhllOHIzvDhHFbaovALBQceeBzdkQxsKQESKmQmR832950UCovoyRB61UyAV7h
|
||||
+mZhYPGRKXKSJI6s0Egg/Cri+Cwk4bjJfrb5hVse11yh4D9MHhwSfCOH+0z4hPUT
|
||||
Fku7dGavURO5SVxMn/sL6En5D+oSeXkadHpDs+Airym2YHh15h0+jPSOoR6yiVp/
|
||||
6zZeZkrN43kuS73KpKDFjfFPh8t4r1gOIjttkNcQqBccusnplQ7HJpsk
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
</cert>
|
||||
|
||||
<key>
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEA5h2lgQQYUjwoKYJbzVZA5VcIGd5otPc/qZRMt0KItCFA0s9R
|
||||
wReNVa9fDRFLRBhcITOlv3FBcW3E8h1Us7RD4W8GmJe8zapJnLsD39OSMRCzZJnc
|
||||
zW4OCH1PZRZWKqDtjlNca9AF8a65jTmlDxCQCjntLIWk5OLLVkFt9/tScc1GDtci
|
||||
55ofhaNAYMPiH7V8+1g66pGHXAoWK6AQVH67XCKJnGB5nlQ+HsMYPV/O49Ld91ZN
|
||||
/2tHkcaLLyNtywxVPRSsRh480jju0fcCsv6hp/0yXnTB//mWutBGpdUlIbwiITbA
|
||||
mrsbYnjigRvnPqX1RNJUbi9Fp6C2c/HIFJGDywIDAQABAoIBAERV7X5AvxA8uRiK
|
||||
k8SIpsD0dX1pJOMIwakUVyvc4EfN0DhKRNb4rYoSiEGTLyzLpyBc/A28Dlkm5eOY
|
||||
fjzXfYkGtYi/Ftxkg3O9vcrMQ4+6i+uGHaIL2rL+s4MrfO8v1xv6+Wky33EEGCou
|
||||
QiwVGRFQXnRoQ62NBCFbUNLhmXwdj1akZzLU4p5R4zA3QhdxwEIatVLt0+7owLQ3
|
||||
lP8sfXhppPOXjTqMD4QkYwzPAa8/zF7acn4kryrUP7Q6PAfd0zEVqNy9ZCZ9ffho
|
||||
zXedFj486IFoc5gnTp2N6jsnVj4LCGIhlVHlYGozKKFqJcQVGsHCqq1oz2zjW6LS
|
||||
oRYIHgECgYEA8zZrkCwNYSXJuODJ3m/hOLVxcxgJuwXoiErWd0E42vPanjjVMhnt
|
||||
KY5l8qGMJ6FhK9LYx2qCrf/E0XtUAZ2wVq3ORTyGnsMWre9tLYs55X+ZN10Tc75z
|
||||
4hacbU0hqKN1HiDmsMRY3/2NaZHoy7MKnwJJBaG48l9CCTlVwMHocIECgYEA8jby
|
||||
dGjxTH+6XHWNizb5SRbZxAnyEeJeRwTMh0gGzwGPpH/sZYGzyu0SySXWCnZh3Rgq
|
||||
5uLlNxtrXrljZlyi2nQdQgsq2YrWUs0+zgU+22uQsZpSAftmhVrtvet6MjVjbByY
|
||||
DADciEVUdJYIXk+qnFUJyeroLIkTj7WYKZ6RjksCgYBoCFIwRDeg42oK89RFmnOr
|
||||
LymNAq4+2oMhsWlVb4ejWIWeAk9nc+GXUfrXszRhS01mUnU5r5ygUvRcarV/T3U7
|
||||
TnMZ+I7Y4DgWRIDd51znhxIBtYV5j/C/t85HjqOkH+8b6RTkbchaX3mau7fpUfds
|
||||
Fq0nhIq42fhEO8srfYYwgQKBgQCyhi1N/8taRwpk+3/IDEzQwjbfdzUkWWSDk9Xs
|
||||
H/pkuRHWfTMP3flWqEYgW/LW40peW2HDq5imdV8+AgZxe/XMbaji9Lgwf1RY005n
|
||||
KxaZQz7yqHupWlLGF68DPHxkZVVSagDnV/sztWX6SFsCqFVnxIXifXGC4cW5Nm9g
|
||||
va8q4QKBgQCEhLVeUfdwKvkZ94g/GFz731Z2hrdVhgMZaU/u6t0V95+YezPNCQZB
|
||||
wmE9Mmlbq1emDeROivjCfoGhR3kZXW1pTKlLh6ZMUQUOpptdXva8XxfoqQwa3enA
|
||||
M7muBbF0XN7VO80iJPv+PmIZdEIAkpwKfi201YB+BafCIuGxIF50Vg==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
|
||||
</key>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user