ios_config_profile 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +9 -0
  3. data/.gitignore +35 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +602 -0
  6. data/.simplecov +4 -0
  7. data/CHANGELOG.md +67 -0
  8. data/CODE_OF_CONDUCT.md +13 -0
  9. data/Gemfile +5 -0
  10. data/LICENSE +661 -0
  11. data/README.md +15 -0
  12. data/Rakefile +5 -0
  13. data/ios_config_profile.gemspec +28 -0
  14. data/lib/ios_config_profile.rb +8 -0
  15. data/lib/ios_config_profile/basic_payload.rb +31 -0
  16. data/lib/ios_config_profile/command_payload.rb +24 -0
  17. data/lib/ios_config_profile/content/install_application_payload.rb +23 -0
  18. data/lib/ios_config_profile/content/install_book_payload.rb +23 -0
  19. data/lib/ios_config_profile/content/install_doc_payload.rb +27 -0
  20. data/lib/ios_config_profile/content/install_market_app_payload.rb +23 -0
  21. data/lib/ios_config_profile/content/installed_application_list_payload.rb +17 -0
  22. data/lib/ios_config_profile/content/remove_application_payload.rb +22 -0
  23. data/lib/ios_config_profile/content/remove_book_payload.rb +23 -0
  24. data/lib/ios_config_profile/content/remove_doc_payload.rb +23 -0
  25. data/lib/ios_config_profile/content/web_clip_payload.rb +38 -0
  26. data/lib/ios_config_profile/device/app_lock_payload.rb +33 -0
  27. data/lib/ios_config_profile/device/clear_passcode_payload.rb +24 -0
  28. data/lib/ios_config_profile/device/dep_payload.rb +40 -0
  29. data/lib/ios_config_profile/device/device_information_payload.rb +69 -0
  30. data/lib/ios_config_profile/device/enrollment_payload.rb +25 -0
  31. data/lib/ios_config_profile/device/erase_device_payload.rb +18 -0
  32. data/lib/ios_config_profile/device/install_profile_payload.rb +22 -0
  33. data/lib/ios_config_profile/device/lock_device_payload.rb +17 -0
  34. data/lib/ios_config_profile/device/mdm_payload.rb +40 -0
  35. data/lib/ios_config_profile/device/remove_profile_payload.rb +22 -0
  36. data/lib/ios_config_profile/device/restrictions_payload.rb +144 -0
  37. data/lib/ios_config_profile/device/scep_payload.rb +34 -0
  38. data/lib/ios_config_profile/device/security_payload.rb +32 -0
  39. data/lib/ios_config_profile/device/set_device_name_payload.rb +22 -0
  40. data/lib/ios_config_profile/device/vpn_payload.rb +86 -0
  41. data/lib/ios_config_profile/encrypted_payload.rb +14 -0
  42. data/lib/ios_config_profile/version.rb +4 -0
  43. data/spec/basic_payload_spec.rb +53 -0
  44. data/spec/command_payload_spec.rb +12 -0
  45. data/spec/content/install_application_payload_spec.rb +15 -0
  46. data/spec/content/install_book_payload_spec.rb +14 -0
  47. data/spec/content/install_doc_payload_spec.rb +16 -0
  48. data/spec/content/install_market_app_payload_spec.rb +15 -0
  49. data/spec/content/installed_application_list_payload_spec.rb +13 -0
  50. data/spec/content/remove_application_payoad_spec.rb +13 -0
  51. data/spec/content/remove_book_payload_spec.rb +14 -0
  52. data/spec/content/remove_doc_payload_spec.rb +18 -0
  53. data/spec/content/web_clip_payload_spec.rb +22 -0
  54. data/spec/device/app_lock_payload_spec.rb +23 -0
  55. data/spec/device/clear_passcode_payload_spec.rb +14 -0
  56. data/spec/device/dep_payload_spec.rb +18 -0
  57. data/spec/device/device_information_payload_spec.rb +28 -0
  58. data/spec/device/enrollment_payload_spec.rb +18 -0
  59. data/spec/device/erase_device_payload_spec.rb +11 -0
  60. data/spec/device/install_profile_payload_spec.rb +13 -0
  61. data/spec/device/lock_device_payload_spec.rb +11 -0
  62. data/spec/device/mdm_payload_spec.rb +41 -0
  63. data/spec/device/remove_profile_payload_spec.rb +14 -0
  64. data/spec/device/restrictions_payload_spec.rb +42 -0
  65. data/spec/device/scep_payload_spec.rb +14 -0
  66. data/spec/device/security_payload_spec.rb +29 -0
  67. data/spec/device/set_device_name_payload_spec.rb +14 -0
  68. data/spec/device/vpn_payload_spec.rb +75 -0
  69. data/spec/encrypted_payload_spec.rb +26 -0
  70. data/spec/spec_helper.rb +14 -0
  71. metadata +241 -0
@@ -0,0 +1,11 @@
1
+ require "spec_helper"
2
+
3
+ describe IOSConfigProfile::EraseDevicePayload do
4
+ subject { IOSConfigProfile::EraseDevicePayload }
5
+
6
+ describe "#initialize" do
7
+ it "has an EraseDevice payload" do
8
+ expect(subject.new["RequestType"]).to eq "EraseDevice"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ require "spec_helper"
2
+
3
+ describe IOSConfigProfile::InstallProfilePayload do
4
+ subject { IOSConfigProfile::InstallProfilePayload }
5
+
6
+ describe "#initialize" do
7
+ it "has the correct payload" do
8
+ payload = subject.new("asdf")
9
+ expect(payload["RequestType"]).to eq "InstallProfile"
10
+ expect(payload["Payload"].gets).to eq "asdf"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ require "spec_helper"
2
+
3
+ describe IOSConfigProfile::LockDevicePayload do
4
+ subject { IOSConfigProfile::LockDevicePayload }
5
+
6
+ describe "#initialize" do
7
+ it "has an LockDevicePayload payload" do
8
+ expect(subject.new["RequestType"]).to eq "DeviceLock"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,41 @@
1
+ require "spec_helper"
2
+
3
+ describe IOSConfigProfile::MDMPayload do
4
+ let(:mdm_payload_attributes) do
5
+ {
6
+ "Topic" => "user id from apple push notification certificate",
7
+ "ServerURL" => "https://example.com/command",
8
+ "CheckInURL" => "https://example.com/checkin",
9
+ "PayloadUUID" => "00000000-0000-0000-0000-000000000000",
10
+ "IdentityCertificateUUID" => "11111111-1111-1111-1111-111111111111",
11
+
12
+ "SignMessage" => false,
13
+ "AccessRights" => 8191,
14
+ "UseDevelopmentAPNS" => false,
15
+ "CheckOutWhenRemoved" => true,
16
+
17
+ "PayloadType" => "com.apple.mdm",
18
+ "PayloadVersion" => 1,
19
+ "PayloadIdentifier" => "com.cellabusipcu.profile.mdm",
20
+ "PayloadDisplayName" => "Mobile Device Management",
21
+ "PayloadDescription" => "Configures Mobile Device Management",
22
+ "PayloadOrganization" => "Cellabus, Inc.",
23
+ }
24
+ end
25
+ let(:url) { "https://example.com" }
26
+ let(:security_payload) { double uuid: "11111111-1111-1111-1111-111111111111" }
27
+ let(:topic) { "user id from apple push notification certificate" }
28
+
29
+ before do
30
+ allow_any_instance_of(IOSConfigProfile::MDMPayload).to receive_messages random_uuid: "00000000-0000-0000-0000-000000000000"
31
+ end
32
+
33
+ subject do
34
+ IOSConfigProfile::MDMPayload.new(url, security_payload, topic)
35
+ end
36
+
37
+ it { is_expected.to eq(mdm_payload_attributes) }
38
+ it "requires an https url" do
39
+ expect { IOSConfigProfile::MDMPayload.new("http://example.com", security_payload, topic) }.to raise_error RuntimeError
40
+ end
41
+ end
@@ -0,0 +1,14 @@
1
+ require "spec_helper"
2
+
3
+ describe IOSConfigProfile::RemoveProfilePayload do
4
+ let(:remove_profile_payload_attributes) do
5
+ {
6
+ "RequestType" => "RemoveProfile",
7
+ "Identifier" => "profile-identifier",
8
+ }
9
+ end
10
+
11
+ subject { IOSConfigProfile::RemoveProfilePayload.new "profile-identifier" }
12
+
13
+ it { is_expected.to eq(remove_profile_payload_attributes) }
14
+ end
@@ -0,0 +1,42 @@
1
+ require "spec_helper"
2
+
3
+ describe IOSConfigProfile::RestrictionsPayload do
4
+ let(:payload) { { "allowAppInstallation" => true } }
5
+ let(:crap_payload) { { "asdf" => false } }
6
+
7
+ describe "IOSConfigProfile::RestrictionsPayload.generate_restrictions" do
8
+ it "defaults to empty payload" do
9
+ expect(IOSConfigProfile::RestrictionsPayload.new.send(:generate_restrictions, nil).length).to eq(0)
10
+ end
11
+ it "allows for additional payloads" do
12
+ payload["allowAppInstallation"] = false
13
+ expect(IOSConfigProfile::RestrictionsPayload.new.send(:generate_restrictions, payload).length).to eq(1)
14
+ end
15
+ it "will ignore default values" do
16
+ expect(IOSConfigProfile::RestrictionsPayload.new.send(:generate_restrictions, payload).length).to eq(0)
17
+ end
18
+ it "will ignore unrecognized values" do
19
+ expect(IOSConfigProfile::RestrictionsPayload.new.send(:generate_restrictions, crap_payload).length).to eq(0)
20
+ end
21
+ end
22
+
23
+ describe "IOSConfigProfile::RestrictionsPayload.new" do
24
+ it "adds boilerplate on top of restrictions" do
25
+ expect(IOSConfigProfile::RestrictionsPayload.new.length).to eq(6)
26
+ expect(IOSConfigProfile::RestrictionsPayload.new["PayloadContent"][0].length).to eq(6)
27
+ expect(IOSConfigProfile::RestrictionsPayload.new["PayloadContent"][0]["PayloadType"]).to eq("com.apple.applicationaccess")
28
+ end
29
+ end
30
+
31
+ its(:length) { should == 6 }
32
+
33
+ describe "available_payloads" do
34
+ subject { IOSConfigProfile::RestrictionsPayload.available_payloads }
35
+ it { is_expected.to be_instance_of Hash }
36
+ end
37
+
38
+ describe "available_supervised_payloads" do
39
+ subject { IOSConfigProfile::RestrictionsPayload.available_supervised_payloads }
40
+ it { is_expected.to be_instance_of Hash }
41
+ end
42
+ end
@@ -0,0 +1,14 @@
1
+ require "spec_helper"
2
+
3
+ describe IOSConfigProfile::SCEPPayload do
4
+ subject { IOSConfigProfile::SCEPPayload }
5
+ let(:url) { "https://asdf.com/" }
6
+
7
+ describe "#initialize" do
8
+ it "must be initialized with an SCEP server url" do
9
+ payload = subject.new url
10
+ expect(payload["URL"]).to eq url
11
+ expect(payload["PayloadType"]).to eq "com.apple.security.scep"
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ describe IOSConfigProfile::SecurityPayload do
4
+ let(:security_payload_attributes) do
5
+ {
6
+ "Password" => "password",
7
+ "PayloadUUID" => "00000000-0000-0000-0000-000000000000",
8
+ "PayloadCertificateFileName" => "identity.p12",
9
+
10
+ "PayloadType" => "com.apple.security.pkcs12",
11
+ "PayloadVersion" => 1,
12
+ "PayloadIdentifier" => "com.cellabusipcu.profile.credential",
13
+ "PayloadDisplayName" => "Security",
14
+ "PayloadDescription" => "Provides device authentication (certificate or identity).",
15
+ "PayloadOrganization" => "Cellabus, Inc.",
16
+ }
17
+ end
18
+
19
+ before do
20
+ allow_any_instance_of(IOSConfigProfile::SecurityPayload).to receive_messages random_uuid: "00000000-0000-0000-0000-000000000000"
21
+ end
22
+
23
+ subject { IOSConfigProfile::SecurityPayload.new("identity", "password") }
24
+
25
+ it { is_expected.to include security_payload_attributes }
26
+ it "contains valid PayloadContent" do
27
+ expect(subject["PayloadContent"].read).to eq("identity")
28
+ end
29
+ end
@@ -0,0 +1,14 @@
1
+ require "spec_helper"
2
+
3
+ describe IOSConfigProfile::SetDeviceNamePayload do
4
+ subject { IOSConfigProfile::SetDeviceNamePayload }
5
+
6
+ describe "#initialize" do
7
+ it "has an Settings payload" do
8
+ payload = subject.new("asdf")
9
+ expect(payload["RequestType"]).to eq "Settings"
10
+ expect(payload["Settings"][0]["Item"]).to eq "DeviceName"
11
+ expect(payload["Settings"][0]["DeviceName"]).to eq "asdf"
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,75 @@
1
+ require "spec_helper"
2
+
3
+ describe IOSConfigProfile::VPNPayload do
4
+ subject { IOSConfigProfile::VPNPayload }
5
+ let(:config) { { override_primary: "asdf", vpn_type: "L2TP" } }
6
+
7
+ describe "#initialize" do
8
+ it "must be initialized with a config" do
9
+ payload = subject.new config
10
+ expect(payload.vpn_config).to eq config
11
+ expect { subject.new nil }.to raise_error RuntimeError
12
+ end
13
+ it "has a uuid" do
14
+ payload1 = subject.new config
15
+ payload2 = subject.new config
16
+ expect(payload1["PayloadUUID"]).to_not eq payload2["PayloadUUID"]
17
+ end
18
+ end
19
+
20
+ describe "#vpn_payload" do
21
+ subject { IOSConfigProfile::VPNPayload.new config }
22
+ it "calls #get_vendor_config" do
23
+ expect(subject).to receive(:get_vendor_config).once
24
+ subject.send :vpn_payload
25
+ end
26
+ it "has a proper payload type" do
27
+ expect(subject["PayloadContent"][0]["PayloadType"]).to eq "com.apple.vpn.managed"
28
+ end
29
+ it "has the proper vpn type" do
30
+ expect(subject["PayloadContent"][0]["VPNType"]).to eq "L2TP"
31
+ end
32
+ end
33
+
34
+ describe "#get_vendor_config" do
35
+ subject { IOSConfigProfile::VPNPayload.new config }
36
+ it "raises errors for unimplemented vpn types" do
37
+ subject.send :get_vendor_config
38
+ subject.vpn_config[:vpn_type] = "AlwaysOn"
39
+ expect { subject.send :get_vendor_config }.to raise_error NotImplementedError
40
+ subject.vpn_config[:vpn_type] = "asdf"
41
+ expect { subject.send :get_vendor_config }.to raise_error NotImplementedError
42
+ end
43
+ it "calls appropriate function" do
44
+ expect(subject).to receive(:get_l2tp_config).and_return "asdf"
45
+ expect(subject.send :get_vendor_config).to eq "asdf"
46
+ end
47
+ end
48
+
49
+ describe "#get_l2tp_config" do
50
+ let(:config) { { vpn_type: "L2TP", auth_name: "name", auth_password: "password", comm_remote_access: "asdf.com" } }
51
+ subject { IOSConfigProfile::VPNPayload.new config }
52
+ it "returns the l2tp configuration" do
53
+ config = subject.send :get_l2tp_config
54
+ expect(config["AuthName"]).to eq "name"
55
+ expect(config["TokenCard"]).to eq false
56
+ expect(config["CommRemoteAccess"]).to eq "asdf.com"
57
+ end
58
+ end
59
+
60
+ describe "#get_ipsec_config" do
61
+ let(:config) { { vpn_type: "IPSec", remote_address: "asdf.com" } }
62
+ subject { IOSConfigProfile::VPNPayload.new config }
63
+ it "returns the IPSec configuration" do
64
+ config = subject.send :get_ipsec_config
65
+ expect(config["RemoteAddress"]).to eq "asdf.com"
66
+ expect(config.include? "LocalIdentifier").to be_falsey
67
+ end
68
+ it "adds in local identifier if using shared secret" do
69
+ subject.vpn_config[:authentication_method] = "SharedSecret"
70
+ subject.vpn_config[:local_identifier] = "asdf"
71
+ config = subject.send :get_ipsec_config
72
+ expect(config["LocalIdentifier"]).to eq "asdf"
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,26 @@
1
+ require "spec_helper"
2
+
3
+ describe IOSConfigProfile::EncryptedPayload do
4
+ let(:wrapped_payload) { double to_plist: "wrapped payload in plist form" }
5
+
6
+ subject { IOSConfigProfile::EncryptedPayload.new wrapped_payload }
7
+
8
+ its(:payload) { should == "wrapped payload in plist form" }
9
+
10
+ # This way we ensure super was called in the #initialize
11
+ its(:url) { should be }
12
+ its(:identifier) { should be }
13
+ its(:description) { should be }
14
+ its(:display_name) { should be }
15
+ its(:organization) { should be }
16
+
17
+ describe "#encrypted_configuration" do
18
+ it "can return an encrypted configuration" do
19
+ mock = double
20
+ expect(subject).to receive(:encrypt).with("cert").and_return(mock)
21
+ expect(mock).to receive(:certificate).and_return("asdf")
22
+ expect(subject).to receive(:configuration).and_return("encrypted_cert")
23
+ expect(subject.encrypted_configuration "cert").to eq "encrypted_cert"
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,14 @@
1
+ require "codeclimate-test-reporter"
2
+ CodeClimate::TestReporter.start
3
+
4
+ require "ios_config_profile"
5
+ require "rspec/its"
6
+
7
+ IOSCertEnrollment.configure do |config|
8
+ config.ssl_key = lambda { "test_ssl_key" }
9
+ config.ssl_certificate = lambda { "test_ssl_certificate" }
10
+ config.base_url = lambda { "https://example.com/" }
11
+ config.identifier = "Test Identifier"
12
+ config.display_name = "Test Display Name"
13
+ config.organization = "Test Organization"
14
+ end
metadata ADDED
@@ -0,0 +1,241 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ios_config_profile
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.3.0
5
+ platform: ruby
6
+ authors:
7
+ - Albert Wang
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: CFPropertyList
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: plist
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.3'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.4'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.4'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.4'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.4'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec-its
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.2'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.2'
97
+ - !ruby/object:Gem::Dependency
98
+ name: codeclimate-test-reporter
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.4'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.4'
111
+ description: Generate Apple iOS configuration profiles and payloads
112
+ email:
113
+ - albert@cellabus.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - ".codeclimate.yml"
119
+ - ".gitignore"
120
+ - ".rspec"
121
+ - ".rubocop.yml"
122
+ - ".simplecov"
123
+ - CHANGELOG.md
124
+ - CODE_OF_CONDUCT.md
125
+ - Gemfile
126
+ - LICENSE
127
+ - README.md
128
+ - Rakefile
129
+ - ios_config_profile.gemspec
130
+ - lib/ios_config_profile.rb
131
+ - lib/ios_config_profile/basic_payload.rb
132
+ - lib/ios_config_profile/command_payload.rb
133
+ - lib/ios_config_profile/content/install_application_payload.rb
134
+ - lib/ios_config_profile/content/install_book_payload.rb
135
+ - lib/ios_config_profile/content/install_doc_payload.rb
136
+ - lib/ios_config_profile/content/install_market_app_payload.rb
137
+ - lib/ios_config_profile/content/installed_application_list_payload.rb
138
+ - lib/ios_config_profile/content/remove_application_payload.rb
139
+ - lib/ios_config_profile/content/remove_book_payload.rb
140
+ - lib/ios_config_profile/content/remove_doc_payload.rb
141
+ - lib/ios_config_profile/content/web_clip_payload.rb
142
+ - lib/ios_config_profile/device/app_lock_payload.rb
143
+ - lib/ios_config_profile/device/clear_passcode_payload.rb
144
+ - lib/ios_config_profile/device/dep_payload.rb
145
+ - lib/ios_config_profile/device/device_information_payload.rb
146
+ - lib/ios_config_profile/device/enrollment_payload.rb
147
+ - lib/ios_config_profile/device/erase_device_payload.rb
148
+ - lib/ios_config_profile/device/install_profile_payload.rb
149
+ - lib/ios_config_profile/device/lock_device_payload.rb
150
+ - lib/ios_config_profile/device/mdm_payload.rb
151
+ - lib/ios_config_profile/device/remove_profile_payload.rb
152
+ - lib/ios_config_profile/device/restrictions_payload.rb
153
+ - lib/ios_config_profile/device/scep_payload.rb
154
+ - lib/ios_config_profile/device/security_payload.rb
155
+ - lib/ios_config_profile/device/set_device_name_payload.rb
156
+ - lib/ios_config_profile/device/vpn_payload.rb
157
+ - lib/ios_config_profile/encrypted_payload.rb
158
+ - lib/ios_config_profile/version.rb
159
+ - spec/basic_payload_spec.rb
160
+ - spec/command_payload_spec.rb
161
+ - spec/content/install_application_payload_spec.rb
162
+ - spec/content/install_book_payload_spec.rb
163
+ - spec/content/install_doc_payload_spec.rb
164
+ - spec/content/install_market_app_payload_spec.rb
165
+ - spec/content/installed_application_list_payload_spec.rb
166
+ - spec/content/remove_application_payoad_spec.rb
167
+ - spec/content/remove_book_payload_spec.rb
168
+ - spec/content/remove_doc_payload_spec.rb
169
+ - spec/content/web_clip_payload_spec.rb
170
+ - spec/device/app_lock_payload_spec.rb
171
+ - spec/device/clear_passcode_payload_spec.rb
172
+ - spec/device/dep_payload_spec.rb
173
+ - spec/device/device_information_payload_spec.rb
174
+ - spec/device/enrollment_payload_spec.rb
175
+ - spec/device/erase_device_payload_spec.rb
176
+ - spec/device/install_profile_payload_spec.rb
177
+ - spec/device/lock_device_payload_spec.rb
178
+ - spec/device/mdm_payload_spec.rb
179
+ - spec/device/remove_profile_payload_spec.rb
180
+ - spec/device/restrictions_payload_spec.rb
181
+ - spec/device/scep_payload_spec.rb
182
+ - spec/device/security_payload_spec.rb
183
+ - spec/device/set_device_name_payload_spec.rb
184
+ - spec/device/vpn_payload_spec.rb
185
+ - spec/encrypted_payload_spec.rb
186
+ - spec/spec_helper.rb
187
+ homepage: https://github.com/cellabus/ios_config_profile
188
+ licenses:
189
+ - AGPL-3.0
190
+ metadata: {}
191
+ post_install_message:
192
+ rdoc_options: []
193
+ require_paths:
194
+ - lib
195
+ required_ruby_version: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ required_rubygems_version: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - ">="
203
+ - !ruby/object:Gem::Version
204
+ version: '0'
205
+ requirements: []
206
+ rubyforge_project:
207
+ rubygems_version: 2.5.1
208
+ signing_key:
209
+ specification_version: 4
210
+ summary: This gem provides an easy way to generate configuration profiles for use
211
+ with Apple iOS devices. These profiles and payloads can be delivered via Apple MDM,
212
+ Apple's Configurator, or the iPhone Configuration Utility (IPCU).
213
+ test_files:
214
+ - spec/basic_payload_spec.rb
215
+ - spec/command_payload_spec.rb
216
+ - spec/content/install_application_payload_spec.rb
217
+ - spec/content/install_book_payload_spec.rb
218
+ - spec/content/install_doc_payload_spec.rb
219
+ - spec/content/install_market_app_payload_spec.rb
220
+ - spec/content/installed_application_list_payload_spec.rb
221
+ - spec/content/remove_application_payoad_spec.rb
222
+ - spec/content/remove_book_payload_spec.rb
223
+ - spec/content/remove_doc_payload_spec.rb
224
+ - spec/content/web_clip_payload_spec.rb
225
+ - spec/device/app_lock_payload_spec.rb
226
+ - spec/device/clear_passcode_payload_spec.rb
227
+ - spec/device/dep_payload_spec.rb
228
+ - spec/device/device_information_payload_spec.rb
229
+ - spec/device/enrollment_payload_spec.rb
230
+ - spec/device/erase_device_payload_spec.rb
231
+ - spec/device/install_profile_payload_spec.rb
232
+ - spec/device/lock_device_payload_spec.rb
233
+ - spec/device/mdm_payload_spec.rb
234
+ - spec/device/remove_profile_payload_spec.rb
235
+ - spec/device/restrictions_payload_spec.rb
236
+ - spec/device/scep_payload_spec.rb
237
+ - spec/device/security_payload_spec.rb
238
+ - spec/device/set_device_name_payload_spec.rb
239
+ - spec/device/vpn_payload_spec.rb
240
+ - spec/encrypted_payload_spec.rb
241
+ - spec/spec_helper.rb