ovpnmcgen.rb 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fdb5a1d34606c4cbb5765c7054f2e467c535b54d
4
- data.tar.gz: 03169243a1c65f06da0c35ae43d4cbca470de610
3
+ metadata.gz: 8fa9ddfe28aee021b09d926a49dfd609833591e0
4
+ data.tar.gz: f7174a981ed646aa74c9da396cc0fb9ec9b41dda
5
5
  SHA512:
6
- metadata.gz: 20331f1211f7fc4848f936c6d4b72d06b6cc01dfcb6dc89f8d558ba4fdaa76ff0c91484928aea0ca56aef253ef0e1c9dbd05747f6ccfa8e97065fc68ea576da2
7
- data.tar.gz: 0e30f9454ec12d9f8d3f9cbc7df5246925aba72a88c7ba14ca7a75119ebbbd7b8846f9b0165b8a772722b375f66a5e74ef2dff3f7ec71a821bcd02cd4790211e
6
+ metadata.gz: 0c8d34469745b11850ba9eedb63dc85675294f05071afdc2393c4c9e52248cb182c3747d73cd4c74b630088ddcb602c458a97dd53ba79d45fccea4f5fe072187
7
+ data.tar.gz: 59525bbf6cf3ae0cc9fb468bafc10e11e3cd119fe9c0adfe45d06954badad08799cbdc80d7edea13e4c8feb486b3480fca605578254bbd90fb7bf2fbde95d3e2
data/.travis.yml ADDED
@@ -0,0 +1,15 @@
1
+ language: ruby
2
+ before_install:
3
+ - gem update bundler
4
+ - bundle version
5
+ rvm:
6
+ - 1.9.3
7
+ - 2.0.0
8
+ - 2.1-head
9
+ - ruby-head
10
+ - jruby-19mode
11
+
12
+ matrix:
13
+ fast_finish: true
14
+ allow_failures:
15
+ - rvm: ruby-head
data/ChangeLog CHANGED
@@ -1,3 +1,8 @@
1
+ = 0.2.1 / Unreleased
2
+ * Implement unit testing.
3
+ * Switch to a portable and native uuidgen implementation.
4
+ * Minor documentation improvements.
5
+
1
6
  = 0.2.0 / 2014-04-18
2
7
  * Support custom UUID value overrides.
3
8
  * Support for security level, i.e. paranoid, high (default), medium.
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  OpenVPN iOS Configuration Profile Utility
4
4
 
5
+ [![GitHub version](https://badge.fury.io/gh/iphoting%2Fovpnmcgen.rb.svg)](http://badge.fury.io/gh/iphoting%2Fovpnmcgen.rb) [![Gem Version](https://badge.fury.io/rb/ovpnmcgen.rb.svg)](http://badge.fury.io/rb/ovpnmcgen.rb) [![Build Status](https://travis-ci.org/iphoting/ovpnmcgen.rb.svg?branch=master)](https://travis-ci.org/iphoting/ovpnmcgen.rb)
6
+
5
7
  Generates iOS configuration profiles (.mobileconfig) that configures OpenVPN for use with VPN-on-Demand that are not accessible through the Apple Configurator or the iPhone Configuration Utility.
6
8
 
7
9
  Although there are many possible VPN-on-Demand (VoD) triggers, this utility currently only implements `SSIDMatch` and `InterfaceTypeMatch`. For 'high' (default) security level, the following algorithm is executed upon network changes, in order:
@@ -297,6 +299,20 @@ Output similar to above:
297
299
  -inkey path/to/john-ipad.key -in path/to/john-ipad.crt \
298
300
  -passout pass:p12passphrase -name john-ipad@vpn.example.com
299
301
 
302
+ ## Known Issues
303
+
304
+ - "Not connected to Internet" error/behaviour when VPN should be established.
305
+
306
+ There is a bug in the iOS/OS X network routing code that hangs the routing system, preventing the gateway or IP address from being set. This happens more frequently when the tunnel is brought up/down more frequently.
307
+
308
+ Workaround: Hard-restart iOS. Press and hold down both the home and sleep/wake buttons until iOS turns off and back on with the Apple boot up screen. Release when the Apple boot up screen appears.
309
+
310
+ - Weird Rapid Connecting…/Disconnected behaviour.
311
+
312
+ Usually happens when the VoD component is stuck in an infinite loop. Not sure what triggers it.
313
+
314
+ Workaround: Hard-restart iOS. Press and hold down both the home and sleep/wake buttons until iOS turns off and back on with the Apple boot up screen. Release when the Apple boot up screen appears.
315
+
300
316
  ## TODO
301
317
 
302
318
  - Config file to specify global options, such as `--cafile`, `--tafile`, `--host`, `--[un]trusted-ssids`.
data/Rakefile CHANGED
@@ -1 +1,10 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'cucumber/rake/task'
3
+
4
+ Cucumber::Rake::Task.new do |t|
5
+ end
6
+
7
+ desc "Run cucumber tests"
8
+ task :test => :cucumber
9
+
10
+ task :default => :test
@@ -0,0 +1,198 @@
1
+ Feature: Basic Generate Functionality
2
+ In order to generate a properly formatted plist mobileconfig
3
+ As a CLI
4
+ Some basic inputs are required
5
+
6
+ Background:
7
+ Given a file named "ca.crt" with:
8
+ """
9
+ Contents of CA file
10
+ With newlines
11
+ And more newlines
12
+ That should appear as one line
13
+ """
14
+ And a file named "p12file.p12" with:
15
+ """
16
+ p12file that should appear
17
+ In base64 encoding as <data/>
18
+ """
19
+
20
+ Scenario: I need help
21
+ When I run `ovpnmcgen.rb help g`
22
+ Then the output should contain "Usage:"
23
+
24
+ Scenario: Missing 2 arguments
25
+ When I run `ovpnmcgen.rb g`
26
+ Then the output should contain "error: "
27
+ And the output should contain "arguments"
28
+
29
+ Scenario: Missing 1 argument
30
+ When I run `ovpnmcgen.rb g cucumber`
31
+ Then the output should contain "error: "
32
+ And the output should contain "arguments"
33
+
34
+ Scenario: Correct number of arguments but missing required flags
35
+ When I run `ovpnmcgen.rb g cucumber aruba`
36
+ Then the output should contain "error: "
37
+
38
+ Scenario: Correct arguments but missing required flags, except the host flag.
39
+ When I run `ovpnmcgen.rb g --host aruba.cucumber.org cucumber aruba`
40
+ And the output should not contain "error: Host"
41
+ Then the output should contain "error: "
42
+
43
+ Scenario: Correct arguments but missing required flags, except the host, cafile flag.
44
+ When I run `ovpnmcgen.rb g --host aruba.cucumber.org --cafile ca.crt cucumber aruba`
45
+ And the output should not contain "error: Host"
46
+ And the output should not contain "error: cafile"
47
+ Then the output should contain "error: "
48
+
49
+ Scenario: Correct arguments will all required flags, host, cafile, p12file.
50
+ When I run `ovpnmcgen.rb g --host aruba.cucumber.org --cafile ca.crt --p12file p12file.p12 cucumber aruba`
51
+ And the output should not contain "error: Host"
52
+ And the output should not contain "error: cafile"
53
+ And the output should not contain "error: PKCS#12"
54
+ Then the output should contain:
55
+ """
56
+ <?xml version="1.0" encoding="UTF-8"?>
57
+ <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
58
+ <plist version="1.0">
59
+ """
60
+ And the output should match:
61
+ """
62
+ <key>remote</key>
63
+ \s*<string>aruba.cucumber.org 1194 udp</string>
64
+ """
65
+ And the output should match:
66
+ """
67
+ <key>ca</key>
68
+ \s*<string>Contents of CA file\\nWith newlines\\nAnd more newlines\\nThat should appear as one line</string>
69
+ """
70
+ And the output should match:
71
+ """
72
+ <key>PayloadCertificateFileName</key>\s*
73
+ \s*<string>cucumber-aruba.p12</string>
74
+ \s*<key>PayloadContent</key>
75
+ \s*<data>
76
+ \s*cDEyZmlsZSB0aGF0IHNob3VsZCBhcHBlYXIKSW4gYmFzZTY0IGVuY29kaW5n
77
+ \s*IGFzIDxkYXRhLz4=
78
+ \s*</data>
79
+ """
80
+ And the output should match:
81
+ """
82
+ <key>OnDemandEnabled</key>
83
+ \s*<integer>1</integer>
84
+ """
85
+
86
+ Scenario: The p12pass flag is set.
87
+ When I run `ovpnmcgen.rb g --host aruba.cucumber.org --cafile ca.crt --p12file p12file.p12 --p12pass p12passphrase cucumber aruba`
88
+ Then the output should match:
89
+ """
90
+ <key>Password</key>
91
+ \s*<string>p12passphrase</string>
92
+ """
93
+
94
+ Scenario: The tafile flag is set.
95
+ Given a file named "ta.key" with:
96
+ """
97
+ Contents of TLS-Auth Key file
98
+ With newlines
99
+ And more newlines
100
+ That should appear as one line
101
+ """
102
+ When I run `ovpnmcgen.rb g --host aruba.cucumber.org --cafile ca.crt --p12file p12file.p12 --tafile ta.key cucumber aruba`
103
+ Then the output should match:
104
+ """
105
+ <key>tls-auth</key>
106
+ \s*<string>Contents of TLS-Auth Key file\\nWith newlines\\nAnd more newlines\\nThat should appear as one line</string>
107
+ """
108
+
109
+ Scenario: The proto and port flags are set.
110
+ When I run `ovpnmcgen.rb g --host aruba.cucumber.org --cafile ca.crt --p12file p12file.p12 --proto tcp --port 1234 cucumber aruba`
111
+ Then the output should match:
112
+ """
113
+ <key>remote</key>
114
+ \s*<string>aruba.cucumber.org 1234 tcp</string>
115
+ """
116
+
117
+ Scenario: The no-vod flag is set.
118
+ When I run `ovpnmcgen.rb g --host aruba.cucumber.org --cafile ca.crt --p12file p12file.p12 --no-vod cucumber aruba`
119
+ Then the output should match:
120
+ """
121
+ <key>OnDemandEnabled</key>
122
+ \s*<integer>0</integer>
123
+ """
124
+
125
+ Scenario: The [un]trusted-ssids flags are set.
126
+ When I run `ovpnmcgen.rb g --host aruba.cucumber.org --cafile ca.crt --p12file p12file.p12 --trusted-ssids trusted1,trusted2 --untrusted-ssids evil3,evil4 cucumber aruba`
127
+ Then the output should match:
128
+ """
129
+ <string>Disconnect</string>
130
+ \s*<key>SSIDMatch</key>
131
+ \s*<array>
132
+ \s*<string>trusted1</string>
133
+ \s*<string>trusted2</string>
134
+ \s*</array>
135
+ """
136
+ And the output should match:
137
+ """
138
+ <string>Connect</string>
139
+ \s*<key>SSIDMatch</key>
140
+ \s*<array>
141
+ \s*<string>evil3</string>
142
+ \s*<string>evil4</string>
143
+ \s*</array>
144
+ """
145
+
146
+ Scenario: The security-level flag is set to paranoid.
147
+ When I run `ovpnmcgen.rb g --host aruba.cucumber.org --cafile ca.crt --p12file p12file.p12 --security-level paranoid cucumber aruba`
148
+ Then the output should match:
149
+ """
150
+ <key>Action</key>
151
+ \s*<string>Connect</string>
152
+ \s*<key>InterfaceTypeMatch</key>
153
+ \s*<string>Cellular</string>
154
+ """
155
+
156
+ Scenario: The security-level flag is set to high.
157
+ When I run `ovpnmcgen.rb g --host aruba.cucumber.org --cafile ca.crt --p12file p12file.p12 --security-level high cucumber aruba`
158
+ Then the output should match:
159
+ """
160
+ <key>Action</key>
161
+ \s*<string>Connect</string>
162
+ \s*<key>InterfaceTypeMatch</key>
163
+ \s*<string>WiFi</string>
164
+ """
165
+ And the output should match:
166
+ """
167
+ <key>Action</key>
168
+ \s*<string>Ignore</string>
169
+ \s*<key>InterfaceTypeMatch</key>
170
+ \s*<string>Cellular</string>
171
+ """
172
+
173
+ Scenario: The security-level flag is set to medium.
174
+ When I run `ovpnmcgen.rb g --host aruba.cucumber.org --cafile ca.crt --p12file p12file.p12 --security-level medium cucumber aruba`
175
+ Then the output should match:
176
+ """
177
+ <key>Action</key>
178
+ \s*<string>Ignore</string>
179
+ \s*<key>InterfaceTypeMatch</key>
180
+ \s*<string>WiFi</string>
181
+ """
182
+ And the output should match:
183
+ """
184
+ <key>Action</key>
185
+ \s*<string>Disconnect</string>
186
+ \s*<key>InterfaceTypeMatch</key>
187
+ \s*<string>Cellular</string>
188
+ """
189
+
190
+ Scenario: The output file flag is set.
191
+ When I run `ovpnmcgen.rb g --host aruba.cucumber.org --cafile ca.crt --p12file p12file.p12 --output fileout.mobileconfig cucumber aruba`
192
+ Then the stdout should not contain anything
193
+ And the file "fileout.mobileconfig" should contain:
194
+ """
195
+ <?xml version="1.0" encoding="UTF-8"?>
196
+ <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
197
+ <plist version="1.0">
198
+ """
@@ -0,0 +1,169 @@
1
+ Feature: Generate Functionality From Supplied OpenVPN Config File
2
+ In order to generate a properly formatted plist mobileconfig from supplied openvpn configfile
3
+ As a CLI
4
+ The specified openvpn file needs to be parsed properly
5
+
6
+ Background:
7
+ Given a file named "ca.crt" with:
8
+ """
9
+ Contents of CA file
10
+ With newlines
11
+ And more newlines
12
+ That should appear as one line
13
+ """
14
+ And a file named "p12file.p12" with:
15
+ """
16
+ p12file that should appear
17
+ In base64 encoding as <data/>
18
+ """
19
+ And a file named "clean.ovpn" with:
20
+ """
21
+ ##############################################
22
+ # Sample client-side OpenVPN 2.0 config file #
23
+ # for connecting to multi-client server. #
24
+ # #
25
+ # This configuration can be used by multiple #
26
+ # clients, however each client should have #
27
+ # its own cert and key files. #
28
+ # #
29
+ # On Windows, you might want to rename this #
30
+ # file so it has a .ovpn extension #
31
+ ##############################################
32
+
33
+ # Specify that we are a client and that we
34
+ # will be pulling certain config file directives
35
+ # from the server.
36
+ client
37
+
38
+ # Use the same setting as you are using on
39
+ # the server.
40
+ # On most systems, the VPN will not function
41
+ # unless you partially or fully disable
42
+ # the firewall for the TUN/TAP interface.
43
+ ;dev tap
44
+ dev tun
45
+
46
+ # Windows needs the TAP-Win32 adapter name
47
+ # from the Network Connections panel
48
+ # if you have more than one. On XP SP2,
49
+ # you may need to disable the firewall
50
+ # for the TAP adapter.
51
+ ;dev-node MyTap
52
+
53
+ # Are we connecting to a TCP or
54
+ # UDP server? Use the same setting as
55
+ # on the server.
56
+ ;proto tcp
57
+ proto udp
58
+
59
+ # The hostname/IP and port of the server.
60
+ # You can have multiple remote entries
61
+ # to load balance between the servers.
62
+ remote should.not.appear 1194
63
+ ;remote my-server-2 1194
64
+
65
+ # Choose a random host from the remote
66
+ # list for load-balancing. Otherwise
67
+ # try hosts in the order specified.
68
+ ;remote-random
69
+
70
+ # Keep trying indefinitely to resolve the
71
+ # host name of the OpenVPN server. Very useful
72
+ # on machines which are not permanently connected
73
+ # to the internet such as laptops.
74
+ resolv-retry infinite
75
+
76
+ # Most clients don't need to bind to
77
+ # a specific local port number.
78
+ nobind
79
+
80
+ # Downgrade privileges after initialization (non-Windows only)
81
+ user nobody
82
+ group nobody
83
+
84
+ # Try to preserve some state across restarts.
85
+ persist-key
86
+ persist-tun
87
+
88
+ # If you are connecting through an
89
+ # HTTP proxy to reach the actual OpenVPN
90
+ # server, put the proxy server/IP and
91
+ # port number here. See the man page
92
+ # if your proxy server requires
93
+ # authentication.
94
+ ;http-proxy-retry # retry on connection failures
95
+ ;http-proxy [proxy server] [proxy port #]
96
+
97
+ # Wireless networks often produce a lot
98
+ # of duplicate packets. Set this flag
99
+ # to silence duplicate packet warnings.
100
+ ;mute-replay-warnings
101
+
102
+ # SSL/TLS parms.
103
+ # See the server config file for more
104
+ # description. It's best to use
105
+ # a separate .crt/.key file pair
106
+ # for each client. A single ca
107
+ # file can be used for all clients.
108
+ ;ca ca.crt
109
+ ;cert client.crt
110
+ ;key client.key
111
+ pkcs12 client.p12
112
+
113
+ # Verify server certificate by checking
114
+ # that the certicate has the nsCertType
115
+ # field set to "server". This is an
116
+ # important precaution to protect against
117
+ # a potential attack discussed here:
118
+ # http://openvpn.net/howto.html#mitm
119
+ #
120
+ # To use this feature, you will need to generate
121
+ # your server certificates with the nsCertType
122
+ # field set to "server". The build-key-server
123
+ # script in the easy-rsa folder will do this.
124
+ #ns-cert-type server
125
+
126
+ remote-cert-tls server
127
+
128
+ # If a tls-auth key is used on the server
129
+ # then every client must also have the key.
130
+ tls-auth ta.key 1
131
+
132
+ # Select a cryptographic cipher.
133
+ # If the cipher option is used on the server
134
+ # then you must also specify it here.
135
+ ;cipher x
136
+
137
+ # Enable compression on the VPN link.
138
+ # Don't enable this unless it is also
139
+ # enabled in the server config file.
140
+ comp-lzo
141
+
142
+ # Set log file verbosity.
143
+ verb 3
144
+
145
+ # Silence repeating messages
146
+ ;mute 20
147
+ """
148
+
149
+ Scenario: A decent openvpn config file is specified.
150
+ When I run `ovpnmcgen.rb g --host aruba.cucumber.org --cafile ca.crt --p12file p12file.p12 --ovpnconfigfile clean.ovpn cucumber aruba`
151
+ Then the output should contain:
152
+ """
153
+ <?xml version="1.0" encoding="UTF-8"?>
154
+ <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
155
+ <plist version="1.0">
156
+ """
157
+ And the output should contain "aruba.cucumber.org 1194 udp"
158
+ And the output should not contain "should.not.appear 1194"
159
+ And the output should not contain "persist-key"
160
+ And the output should not contain "persist-tun"
161
+ And the output should not contain "<key>pkcs12</key>"
162
+ And the output should not contain "<key>cert</key>"
163
+ And the output should not contain "<key>key</key>"
164
+ And the output should not contain "<key>resolv-retry</key>"
165
+ And the output should match:
166
+ """
167
+ <key>comp-lzo</key>
168
+ \s*<string>NOARGS</string>
169
+ """
@@ -0,0 +1,6 @@
1
+ require 'aruba/cucumber'
2
+ require 'aruba/jruby'
3
+
4
+ Before do
5
+ @aruba_timeout_seconds = 60
6
+ end if RUBY_PLATFORM == 'java'
data/lib/ovpnmcgen.rb CHANGED
@@ -1,21 +1,18 @@
1
1
  require "ovpnmcgen/version"
2
2
  require "ovpnmcgen/ovpnconfig"
3
+ require "ovpnmcgen/stringdata"
3
4
  require 'plist'
4
5
  require 'base64'
6
+ require 'securerandom'
5
7
 
6
8
  module Ovpnmcgen
7
- class StringData < String
8
- def to_plist_node
9
- return "<data>\n#{self}\n</data>"
10
- end
11
- end
12
9
 
13
10
  def generate(inputs = {})
14
11
  identifier = inputs[:identifier] || inputs[:host].split('.').reverse!.join('.')
15
12
  port = inputs[:port] || 1194
16
- certUUID = inputs[:cert_uuid] || `uuidgen`.chomp.upcase
17
- vpnUUID = inputs[:vpn_uuid] || `uuidgen`.chomp.upcase
18
- plistUUID = inputs[:profile_uuid] || `uuidgen`.chomp.upcase
13
+ certUUID = inputs[:cert_uuid] || SecureRandom.uuid.chomp.upcase
14
+ vpnUUID = inputs[:vpn_uuid] || SecureRandom.uuid.chomp.upcase
15
+ plistUUID = inputs[:profile_uuid] || SecureRandom.uuid.chomp.upcase
19
16
  user, device, domain, host, proto, enableVOD = inputs[:user], inputs[:device], inputs[:host], inputs[:host], inputs[:proto], inputs[:enableVOD]
20
17
  p12pass = inputs[:p12pass] || ''
21
18
  trusted_ssids = inputs[:trusted_ssids] || false
@@ -14,7 +14,7 @@ module Ovpnmcgen
14
14
  end
15
15
 
16
16
  # TODO: Handle multiple remote lines.
17
- # Currently, the last remote line will be used.
17
+ # Currently, all remote lines are ignored.
18
18
 
19
19
  # map to key => value pairs for plist purposes. Singular verbs will be: 'verb' => 'NOARGS'.
20
20
  ovpnhash = Hash[ovpnfile.map do |l|
@@ -0,0 +1,8 @@
1
+
2
+ module Ovpnmcgen
3
+ class StringData < String
4
+ def to_plist_node
5
+ return "<data>\n#{self}</data>"
6
+ end
7
+ end
8
+ end
@@ -1,4 +1,4 @@
1
1
  module Ovpnmcgen
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  SUMMARY = "An OpenVPN iOS Configuration Profile (.mobileconfig) Utility"
4
4
  end
data/ovpnmcgen.rb.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["myself@iphoting.com"]
11
11
  spec.summary = Ovpnmcgen::SUMMARY
12
12
  spec.description = "Generates iOS configuration profiles (.mobileconfig) that configures OpenVPN for use with VPN-on-Demand that are not accessible through the Apple Configurator or the iPhone Configuration Utility."
13
- spec.homepage = ""
13
+ spec.homepage = "https://github.com/iphoting/ovpnmcgen.rb"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
@@ -21,7 +21,8 @@ Gem::Specification.new do |spec|
21
21
  spec.required_ruby_version = '>= 1.9.3'
22
22
 
23
23
  spec.add_development_dependency "bundler", "~> 1.5"
24
- spec.add_development_dependency "rake"
25
- spec.add_runtime_dependency "plist"
26
- spec.add_runtime_dependency "commander", "~> 4.1"
24
+ spec.add_development_dependency "rake", "~> 10.0"
25
+ spec.add_development_dependency "aruba", "~> 0.5", ">= 0.5.4"
26
+ spec.add_runtime_dependency "plist", "~> 3.1", ">= 3.1.0"
27
+ spec.add_runtime_dependency "commander", "~> 4.1", ">= 4.1.6"
27
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ovpnmcgen.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ronald Ip
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-18 00:00:00.000000000 Z
11
+ date: 2014-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,30 +28,56 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: aruba
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.5'
31
48
  - - ">="
32
49
  - !ruby/object:Gem::Version
33
- version: '0'
50
+ version: 0.5.4
34
51
  type: :development
35
52
  prerelease: false
36
53
  version_requirements: !ruby/object:Gem::Requirement
37
54
  requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '0.5'
38
58
  - - ">="
39
59
  - !ruby/object:Gem::Version
40
- version: '0'
60
+ version: 0.5.4
41
61
  - !ruby/object:Gem::Dependency
42
62
  name: plist
43
63
  requirement: !ruby/object:Gem::Requirement
44
64
  requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.1'
45
68
  - - ">="
46
69
  - !ruby/object:Gem::Version
47
- version: '0'
70
+ version: 3.1.0
48
71
  type: :runtime
49
72
  prerelease: false
50
73
  version_requirements: !ruby/object:Gem::Requirement
51
74
  requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '3.1'
52
78
  - - ">="
53
79
  - !ruby/object:Gem::Version
54
- version: '0'
80
+ version: 3.1.0
55
81
  - !ruby/object:Gem::Dependency
56
82
  name: commander
57
83
  requirement: !ruby/object:Gem::Requirement
@@ -59,6 +85,9 @@ dependencies:
59
85
  - - "~>"
60
86
  - !ruby/object:Gem::Version
61
87
  version: '4.1'
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: 4.1.6
62
91
  type: :runtime
63
92
  prerelease: false
64
93
  version_requirements: !ruby/object:Gem::Requirement
@@ -66,6 +95,9 @@ dependencies:
66
95
  - - "~>"
67
96
  - !ruby/object:Gem::Version
68
97
  version: '4.1'
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: 4.1.6
69
101
  description: Generates iOS configuration profiles (.mobileconfig) that configures
70
102
  OpenVPN for use with VPN-on-Demand that are not accessible through the Apple Configurator
71
103
  or the iPhone Configuration Utility.
@@ -77,17 +109,22 @@ extensions: []
77
109
  extra_rdoc_files: []
78
110
  files:
79
111
  - ".gitignore"
112
+ - ".travis.yml"
80
113
  - ChangeLog
81
114
  - Gemfile
82
115
  - LICENSE.txt
83
116
  - README.md
84
117
  - Rakefile
85
118
  - bin/ovpnmcgen.rb
119
+ - features/gen_basic.feature
120
+ - features/gen_ovpnconfigfile_input.feature
121
+ - features/support/setup.rb
86
122
  - lib/ovpnmcgen.rb
87
123
  - lib/ovpnmcgen/ovpnconfig.rb
124
+ - lib/ovpnmcgen/stringdata.rb
88
125
  - lib/ovpnmcgen/version.rb
89
126
  - ovpnmcgen.rb.gemspec
90
- homepage: ''
127
+ homepage: https://github.com/iphoting/ovpnmcgen.rb
91
128
  licenses:
92
129
  - MIT
93
130
  metadata: {}
@@ -111,4 +148,7 @@ rubygems_version: 2.2.2
111
148
  signing_key:
112
149
  specification_version: 4
113
150
  summary: An OpenVPN iOS Configuration Profile (.mobileconfig) Utility
114
- test_files: []
151
+ test_files:
152
+ - features/gen_basic.feature
153
+ - features/gen_ovpnconfigfile_input.feature
154
+ - features/support/setup.rb