ios_config_profile 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.codeclimate.yml +9 -0
- data/.gitignore +35 -0
- data/.rspec +2 -0
- data/.rubocop.yml +602 -0
- data/.simplecov +4 -0
- data/CHANGELOG.md +67 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/Gemfile +5 -0
- data/LICENSE +661 -0
- data/README.md +15 -0
- data/Rakefile +5 -0
- data/ios_config_profile.gemspec +28 -0
- data/lib/ios_config_profile.rb +8 -0
- data/lib/ios_config_profile/basic_payload.rb +31 -0
- data/lib/ios_config_profile/command_payload.rb +24 -0
- data/lib/ios_config_profile/content/install_application_payload.rb +23 -0
- data/lib/ios_config_profile/content/install_book_payload.rb +23 -0
- data/lib/ios_config_profile/content/install_doc_payload.rb +27 -0
- data/lib/ios_config_profile/content/install_market_app_payload.rb +23 -0
- data/lib/ios_config_profile/content/installed_application_list_payload.rb +17 -0
- data/lib/ios_config_profile/content/remove_application_payload.rb +22 -0
- data/lib/ios_config_profile/content/remove_book_payload.rb +23 -0
- data/lib/ios_config_profile/content/remove_doc_payload.rb +23 -0
- data/lib/ios_config_profile/content/web_clip_payload.rb +38 -0
- data/lib/ios_config_profile/device/app_lock_payload.rb +33 -0
- data/lib/ios_config_profile/device/clear_passcode_payload.rb +24 -0
- data/lib/ios_config_profile/device/dep_payload.rb +40 -0
- data/lib/ios_config_profile/device/device_information_payload.rb +69 -0
- data/lib/ios_config_profile/device/enrollment_payload.rb +25 -0
- data/lib/ios_config_profile/device/erase_device_payload.rb +18 -0
- data/lib/ios_config_profile/device/install_profile_payload.rb +22 -0
- data/lib/ios_config_profile/device/lock_device_payload.rb +17 -0
- data/lib/ios_config_profile/device/mdm_payload.rb +40 -0
- data/lib/ios_config_profile/device/remove_profile_payload.rb +22 -0
- data/lib/ios_config_profile/device/restrictions_payload.rb +144 -0
- data/lib/ios_config_profile/device/scep_payload.rb +34 -0
- data/lib/ios_config_profile/device/security_payload.rb +32 -0
- data/lib/ios_config_profile/device/set_device_name_payload.rb +22 -0
- data/lib/ios_config_profile/device/vpn_payload.rb +86 -0
- data/lib/ios_config_profile/encrypted_payload.rb +14 -0
- data/lib/ios_config_profile/version.rb +4 -0
- data/spec/basic_payload_spec.rb +53 -0
- data/spec/command_payload_spec.rb +12 -0
- data/spec/content/install_application_payload_spec.rb +15 -0
- data/spec/content/install_book_payload_spec.rb +14 -0
- data/spec/content/install_doc_payload_spec.rb +16 -0
- data/spec/content/install_market_app_payload_spec.rb +15 -0
- data/spec/content/installed_application_list_payload_spec.rb +13 -0
- data/spec/content/remove_application_payoad_spec.rb +13 -0
- data/spec/content/remove_book_payload_spec.rb +14 -0
- data/spec/content/remove_doc_payload_spec.rb +18 -0
- data/spec/content/web_clip_payload_spec.rb +22 -0
- data/spec/device/app_lock_payload_spec.rb +23 -0
- data/spec/device/clear_passcode_payload_spec.rb +14 -0
- data/spec/device/dep_payload_spec.rb +18 -0
- data/spec/device/device_information_payload_spec.rb +28 -0
- data/spec/device/enrollment_payload_spec.rb +18 -0
- data/spec/device/erase_device_payload_spec.rb +11 -0
- data/spec/device/install_profile_payload_spec.rb +13 -0
- data/spec/device/lock_device_payload_spec.rb +11 -0
- data/spec/device/mdm_payload_spec.rb +41 -0
- data/spec/device/remove_profile_payload_spec.rb +14 -0
- data/spec/device/restrictions_payload_spec.rb +42 -0
- data/spec/device/scep_payload_spec.rb +14 -0
- data/spec/device/security_payload_spec.rb +29 -0
- data/spec/device/set_device_name_payload_spec.rb +14 -0
- data/spec/device/vpn_payload_spec.rb +75 -0
- data/spec/encrypted_payload_spec.rb +26 -0
- data/spec/spec_helper.rb +14 -0
- metadata +241 -0
@@ -0,0 +1,69 @@
|
|
1
|
+
module IOSConfigProfile
|
2
|
+
class DeviceInformationPayload < Hash
|
3
|
+
include IOSConfigProfile::BasicPayload
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
merge! device_information_request_payload
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def device_information_request_payload
|
12
|
+
{
|
13
|
+
"RequestType" => "DeviceInformation",
|
14
|
+
"Queries" => queries,
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
def queries
|
19
|
+
GENERAL + ITUNES + DEVICE + NETWORK
|
20
|
+
end
|
21
|
+
|
22
|
+
GENERAL = %w[UDID Languages Locales DeviceID OrganizationInfo].freeze
|
23
|
+
|
24
|
+
ITUNES = %w[iTunesStoreAccountIsActive iTunesStoreAccountHash].freeze
|
25
|
+
|
26
|
+
DEVICE = %w[
|
27
|
+
DeviceName
|
28
|
+
OSVersion
|
29
|
+
BuildVersion
|
30
|
+
ModelName
|
31
|
+
Model
|
32
|
+
ProductName
|
33
|
+
SerialNumber
|
34
|
+
DeviceCapacity
|
35
|
+
AvailableDeviceCapacity
|
36
|
+
BatteryLevel
|
37
|
+
CellularTechnology
|
38
|
+
IMEI
|
39
|
+
MEID
|
40
|
+
ModemFirmwareVersion
|
41
|
+
IsSupervised
|
42
|
+
IsDeviceLocatorServiceEnabled
|
43
|
+
IsActivationLockEnabled
|
44
|
+
IsDoNotDisturbInEffect
|
45
|
+
DeviceID
|
46
|
+
EASDeviceIdentifier
|
47
|
+
].freeze
|
48
|
+
|
49
|
+
NETWORK = %w[
|
50
|
+
ICCID
|
51
|
+
BluetoothMAC
|
52
|
+
WiFiMAC
|
53
|
+
EthernetMACs
|
54
|
+
CurrentCarrierNetwork
|
55
|
+
SIMCarrierNetwork
|
56
|
+
SubscriberCarrierNetwork
|
57
|
+
CarrierSettingsVersion
|
58
|
+
PhoneNumber
|
59
|
+
VoiceRoamingEnabled
|
60
|
+
DataRoamingEnabled
|
61
|
+
IsRoaming
|
62
|
+
PersonalHotspotEnabled
|
63
|
+
SubscriberMCC
|
64
|
+
SubscriberMNC
|
65
|
+
CurrentMCC
|
66
|
+
CurrentMNC
|
67
|
+
].freeze
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module IOSConfigProfile
|
2
|
+
class EnrollmentPayload < Array
|
3
|
+
include IOSConfigProfile::BasicPayload
|
4
|
+
|
5
|
+
attr_reader :url, :topic, :identity_cert, :identity_cert_password
|
6
|
+
|
7
|
+
def initialize(url, topic, identity_cert, identity_cert_password)
|
8
|
+
@url = url
|
9
|
+
@topic = topic
|
10
|
+
@identity_cert = identity_cert
|
11
|
+
@identity_cert_password = identity_cert_password
|
12
|
+
require_attributes :url, :topic, :identity_cert, :identity_cert_password
|
13
|
+
push security_payload
|
14
|
+
push mdm_payload
|
15
|
+
end
|
16
|
+
|
17
|
+
def mdm_payload
|
18
|
+
@mdm_payload ||= IOSConfigProfile::MDMPayload.new(url, security_payload, topic)
|
19
|
+
end
|
20
|
+
|
21
|
+
def security_payload
|
22
|
+
@security_payload ||= IOSConfigProfile::SecurityPayload.new(identity_cert, identity_cert_password)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module IOSConfigProfile
|
2
|
+
class EraseDevicePayload < Hash
|
3
|
+
include IOSConfigProfile::BasicPayload
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
merge! erase_device_payload
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def erase_device_payload
|
12
|
+
{
|
13
|
+
"RequestType" => "EraseDevice",
|
14
|
+
|
15
|
+
}
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module IOSConfigProfile
|
2
|
+
class InstallProfilePayload < Hash
|
3
|
+
include IOSConfigProfile::BasicPayload
|
4
|
+
|
5
|
+
attr_accessor :profile
|
6
|
+
|
7
|
+
def initialize(profile)
|
8
|
+
self.profile = profile
|
9
|
+
require_attributes :profile
|
10
|
+
merge! install_profile_payload
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def install_profile_payload
|
16
|
+
{
|
17
|
+
"RequestType" => "InstallProfile",
|
18
|
+
"Payload" => StringIO.new(profile),
|
19
|
+
}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module IOSConfigProfile
|
2
|
+
class LockDevicePayload < Hash
|
3
|
+
include IOSConfigProfile::BasicPayload
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
merge! lock_device_payload
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def lock_device_payload
|
12
|
+
{
|
13
|
+
"RequestType" => "DeviceLock",
|
14
|
+
}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module IOSConfigProfile
|
2
|
+
class MDMPayload < Hash
|
3
|
+
include IOSConfigProfile::BasicPayload
|
4
|
+
|
5
|
+
attr_reader :url, :security_payload, :topic
|
6
|
+
|
7
|
+
def initialize(url, security_payload, topic)
|
8
|
+
raise "url must be https" if url[0, 5] != "https"
|
9
|
+
@url = url
|
10
|
+
@security_payload = security_payload
|
11
|
+
@topic = topic
|
12
|
+
require_attributes :url, :topic, :security_payload
|
13
|
+
replace mdm_payload
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def mdm_payload
|
19
|
+
{
|
20
|
+
"Topic" => topic,
|
21
|
+
"ServerURL" => "#{url}/command",
|
22
|
+
"CheckInURL" => "#{url}/checkin",
|
23
|
+
"PayloadUUID" => uuid,
|
24
|
+
"IdentityCertificateUUID" => security_payload.uuid,
|
25
|
+
|
26
|
+
"SignMessage" => false,
|
27
|
+
"AccessRights" => 8191,
|
28
|
+
"UseDevelopmentAPNS" => false,
|
29
|
+
"CheckOutWhenRemoved" => true,
|
30
|
+
|
31
|
+
"PayloadType" => "com.apple.mdm",
|
32
|
+
"PayloadVersion" => 1,
|
33
|
+
"PayloadIdentifier" => "com.cellabusipcu.profile.mdm",
|
34
|
+
"PayloadDisplayName" => "Mobile Device Management",
|
35
|
+
"PayloadDescription" => "Configures Mobile Device Management",
|
36
|
+
"PayloadOrganization" => "Cellabus, Inc.",
|
37
|
+
}
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module IOSConfigProfile
|
2
|
+
class RemoveProfilePayload < Hash
|
3
|
+
include IOSConfigProfile::BasicPayload
|
4
|
+
|
5
|
+
attr_accessor :device_profile_identifier
|
6
|
+
|
7
|
+
def initialize(device_profile_identifier)
|
8
|
+
self.device_profile_identifier = device_profile_identifier
|
9
|
+
require_attributes :device_profile_identifier
|
10
|
+
merge! remove_profile_payload
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def remove_profile_payload
|
16
|
+
{
|
17
|
+
"RequestType" => "RemoveProfile",
|
18
|
+
"Identifier" => device_profile_identifier,
|
19
|
+
}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,144 @@
|
|
1
|
+
module IOSConfigProfile
|
2
|
+
class RestrictionsPayload < Hash
|
3
|
+
include IOSConfigProfile::BasicPayload
|
4
|
+
|
5
|
+
def initialize(custom_values = nil)
|
6
|
+
payload = generate_restrictions(custom_values)
|
7
|
+
payload = add_boilerplate payload
|
8
|
+
merge! payload
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.available_payloads
|
12
|
+
# key => [english description, default, (options)]
|
13
|
+
{
|
14
|
+
"allowAssistant" => ["Allow Siri", true],
|
15
|
+
"allowAssistantWhileLocked" => ["Allow Siri while device is locked", true],
|
16
|
+
"allowCamera" => ["Allow camera usage", true],
|
17
|
+
"allowCloudBackup" => ["Allow iCloud", true],
|
18
|
+
"allowCloudKeychainSync" => ["Allow cloud keychain synchronization", true],
|
19
|
+
"allowDiagnosticSubmission" => ["Allow automatic submission of diagnostic reports to Apple", true],
|
20
|
+
"allowFingerprintForUnlock" => ["Allow Touch ID (fingerprint) to unlock device", true],
|
21
|
+
"allowGlobalBackgroundFetchWhenRoaming" => ["Allow global background fetch activity when device is roaming", true],
|
22
|
+
"allowInAppPurchases" => ["Allow in-app purchasing", true],
|
23
|
+
"allowLockScreenControlCenter" => ["Allow Control Center on the Lock screen", true],
|
24
|
+
"allowLockScreenNotificationView" => ["Allow Notifications view in Notification Center on the lock screen", true],
|
25
|
+
"allowLockScreenTodayView" => ["Allow Today view in Notification Center on the lock screen", true],
|
26
|
+
"allowOpenFromManagedToUnmanaged" => ["Allow documents in managed apps and accounts to be opened in unmanaged apps and accounts", true],
|
27
|
+
"allowOpenFromUnmanagedToManaged" => ["Allow documents in unmanaged apps and accounts to be opened in managed apps and accounts", true],
|
28
|
+
"allowOTAPKIUpdates" => ["Allow over-the-air PKI updates", true],
|
29
|
+
"allowPassbookWhileLocked" => ["Allow Passbook notifications on the lock screen", true],
|
30
|
+
"allowPhotoStream" => ["Allow Photo Stream", true],
|
31
|
+
"safariAllowAutoFill" => ["Allow Safari auto-fill", true],
|
32
|
+
"safariForceFraudWarning" => ["Force Safari fraud warning", true],
|
33
|
+
"safariAllowJavascript" => ["Allow Safari to execute JavaScript", true],
|
34
|
+
"safariAllowPopups" => ["Allow Safari to show pop-up tabs", true],
|
35
|
+
"allowSharedStream" => ["Allow Shared Photo Stream", true],
|
36
|
+
"allowUntrustedTLSPrompt" => ["Allow untrusted HTTPS certificates", true],
|
37
|
+
"allowVoiceDialing" => ["Allow voice dialing", true],
|
38
|
+
"allowYouTube" => ["Allow YouTube", true],
|
39
|
+
"forceAssistantProfanityFilter" => ["Force profanity filter assistant", false],
|
40
|
+
"forceEncryptedBackup" => ["Force encrypt all backups", false],
|
41
|
+
"forceITunesStorePasswordEntry" => ["Force require iTunes password for each transaction", false],
|
42
|
+
"forceLimitAdTracking" => ["Limit ad tracking", false],
|
43
|
+
"forceAirPlayOutgoingRequestsPairingPassword" => ["Force all devices receiving AirPlay requests from this device to use a pairing password", false],
|
44
|
+
"forceAirPlayIncomingRequestsPairingPassword" => ["Force all devices sending AirPlay requests to this device to use a password", false],
|
45
|
+
"allowManagedAppsCloudSync" => ["Allow managed applications to use cloud sync", true],
|
46
|
+
"allowActivityContinuation" => ["Allow Activity Continuation", true],
|
47
|
+
"allowEnterpriseBookBackup" => ["Allow Enterprise books to be backed up", true],
|
48
|
+
"allowEnterpriseBookMetadataSync" => ["Allow Enterprise book notes and highlights to be synchronized", true],
|
49
|
+
"forceAirDropUnmanaged" => ["Consider AirDrop to be an unmanaged drop target (iOS 9+)", false],
|
50
|
+
"allowScreenShot" => ["Allow display screenshots (also allow screen recording for iOS 9+)", true],
|
51
|
+
|
52
|
+
}
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.available_supervised_payloads
|
56
|
+
# key => [english description, default, (options)]
|
57
|
+
{
|
58
|
+
"allowiTunes" => ["Allow iTunes Music Store", true],
|
59
|
+
"allowVideoConferencing" => ["Allow video conferencing", true],
|
60
|
+
"allowAppInstallation" => ["Allow App Store installations and updates", true],
|
61
|
+
"allowAddingGameCenterFriends" => ["Allow adding Game Center friends", true],
|
62
|
+
"allowAppRemoval" => ["Allow removal of apps from iOS device", true],
|
63
|
+
"allowCloudDocumentSync" => ["Allow document and key-value syncing with iCloud", true],
|
64
|
+
"allowExplicitContent" => ["Allow explicit music or video content from iTunes Store", true],
|
65
|
+
"allowMultiplayerGaming" => ["Allow multiplayer gaming", true],
|
66
|
+
"allowSafari" => ["Allow Safari", true],
|
67
|
+
"allowAccountModification" => ["Allow account modification", true],
|
68
|
+
"allowAirDrop" => ["Allow AirDrop", true],
|
69
|
+
"allowAppCellularDataModification" => ["Allow changes to cellular data usage for apps", true],
|
70
|
+
"allowAssistantUserGeneratedContent" => ["Allow Siri to query user-generated content from the web", true],
|
71
|
+
"allowBookstore" => ["Allow iBookstore", true],
|
72
|
+
"allowBookstoreErotica" => ["Allow iBookstore media that has been tagged as erotica", true],
|
73
|
+
"allowChat" => ["Allow Messages app", true],
|
74
|
+
"allowFindMyFriendsModification" => ["Allow changes to Find My Friends", true],
|
75
|
+
"allowGameCenter" => ["Allow Game Center", true],
|
76
|
+
"allowHostPairing" => ["Allow host pairing (except for supervision host)", true],
|
77
|
+
"allowUIConfigurationProfileInstallation" => ["Allow installing configuration profiles and certificates interactively", true],
|
78
|
+
"allowEraseContentAndSettings" => ['Allow the "Erase All Content And Settings" option in the Reset UI', true],
|
79
|
+
"allowSpotlightInternetResults" => ["Allow Spotlight to return Internet search results", true],
|
80
|
+
"allowEnablingRestrictions" => ['Enable the "Enable Restrictions" option in the Restrictions UI in Settings', true],
|
81
|
+
"allowPodcasts" => ["Allow podcasts", true],
|
82
|
+
"allowDefinitionLookup" => ["Allow definition lookups", true],
|
83
|
+
"allowPredictiveKeyboard" => ["Allow predictive keyboards", true],
|
84
|
+
"allowAutoCorrection" => ["Allow keyboard auto-correction", true],
|
85
|
+
"allowSpellCheck" => ["Allow keyboard spell-check", true],
|
86
|
+
"allowUIAppInstallation" => ["Allow App Store (iOS 9+)", true],
|
87
|
+
"allowKeyboardShortcuts" => ["Allow keyboard shortcuts (iOS 9+)", true],
|
88
|
+
"allowPairedWatch" => ["Allow pairing of Apple watch (iOS 9+)", true],
|
89
|
+
"allowPasscodeModification" => ["Allow pairing of Apple watch (iOS 9+)", true],
|
90
|
+
"allowDeviceNameModification" => ["Allow device name to be changed (iOS 9+)", true],
|
91
|
+
"allowWallpaperModification" => ["Allow wallpaper to be changed (iOS 9+)", true],
|
92
|
+
"allowAutomaticAppDownloads" => ["Allow automatic downloading of apps purchased on other devices for the same iTunes account (iOS 9+)", false],
|
93
|
+
"allowEnterpriseAppTrust" => ["Trust enterprise apps (iOS 9+)", true],
|
94
|
+
"allowCloudPhotoLibrary" => ["Allow iCloud Photo Library (iOS 9+)", true],
|
95
|
+
"allowNews" => ["Allow Apple News", true],
|
96
|
+
}
|
97
|
+
end
|
98
|
+
|
99
|
+
private
|
100
|
+
|
101
|
+
def restrictions_payload
|
102
|
+
default_payload = {}
|
103
|
+
IOSConfigProfile::RestrictionsPayload.available_payloads.each { |k, v| default_payload[k] = v[1] }
|
104
|
+
IOSConfigProfile::RestrictionsPayload.available_supervised_payloads.each { |k, v| default_payload[k] = v[1] }
|
105
|
+
default_payload
|
106
|
+
end
|
107
|
+
|
108
|
+
def generate_restrictions(custom_values)
|
109
|
+
if not custom_values.is_a? Hash
|
110
|
+
custom_values = Hash.new
|
111
|
+
end
|
112
|
+
default_payload = restrictions_payload
|
113
|
+
payload = {}
|
114
|
+
custom_values.each do |k, v|
|
115
|
+
if not default_payload.has_key? k
|
116
|
+
next
|
117
|
+
end
|
118
|
+
if default_payload[k].to_s != v.to_s
|
119
|
+
payload[k] = v
|
120
|
+
end
|
121
|
+
end
|
122
|
+
payload
|
123
|
+
end
|
124
|
+
|
125
|
+
def add_boilerplate(payload)
|
126
|
+
content = {
|
127
|
+
"PayloadType" => "com.apple.applicationaccess",
|
128
|
+
"PayloadIdentifier" => "com.cellabus.restrictions",
|
129
|
+
"PayloadDescription" => "Restrict device capabilities",
|
130
|
+
"PayloadUUID" => uuid,
|
131
|
+
"PayloadRemovalDisallowed" => true,
|
132
|
+
"PayloadVersion" => 1,
|
133
|
+
}.merge payload
|
134
|
+
{
|
135
|
+
"PayloadContent" => [content],
|
136
|
+
"PayloadType" => "Configuration",
|
137
|
+
"PayloadDisplayName" => "Cellabus Device Restrictions",
|
138
|
+
"PayloadIdentifier" => "com.cellabus.config.mdm.#{SecureRandom.urlsafe_base64}",
|
139
|
+
"PayloadUUID" => uuid,
|
140
|
+
"PayloadVersion" => 1,
|
141
|
+
}
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module IOSConfigProfile
|
2
|
+
class SCEPPayload < Hash
|
3
|
+
include IOSConfigProfile::BasicPayload
|
4
|
+
|
5
|
+
attr_accessor :url
|
6
|
+
|
7
|
+
def initialize(url)
|
8
|
+
self.url = url
|
9
|
+
require_attributes :url
|
10
|
+
merge! security_payload
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def security_payload
|
16
|
+
{
|
17
|
+
"URL" => url,
|
18
|
+
# 'Name' => 'Cellabus SCEP Payload',
|
19
|
+
# 'Subject' => '',
|
20
|
+
# 'Challenge' => '',
|
21
|
+
# 'Keysize' => 1024,
|
22
|
+
# 'Key Type' => 'RSA',
|
23
|
+
# 'Key Usage' => 5,
|
24
|
+
|
25
|
+
"PayloadType" => "com.apple.security.scep",
|
26
|
+
"PayloadVersion" => 1,
|
27
|
+
"PayloadIdentifier" => "com.cellabus.profile.scep",
|
28
|
+
"PayloadDisplayName" => "Security",
|
29
|
+
"PayloadDescription" => "Provides device authentication (certificate or identity).",
|
30
|
+
"PayloadOrganization" => "",
|
31
|
+
}
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module IOSConfigProfile
|
2
|
+
class SecurityPayload < Hash
|
3
|
+
include IOSConfigProfile::BasicPayload
|
4
|
+
|
5
|
+
attr_accessor :content, :password
|
6
|
+
|
7
|
+
def initialize(content, password)
|
8
|
+
self.content = content
|
9
|
+
self.password = password
|
10
|
+
require_attributes :content, :password
|
11
|
+
merge! security_payload
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def security_payload
|
17
|
+
{
|
18
|
+
"Password" => password,
|
19
|
+
"PayloadUUID" => uuid,
|
20
|
+
"PayloadContent" => StringIO.new(content),
|
21
|
+
"PayloadCertificateFileName" => "identity.p12",
|
22
|
+
|
23
|
+
"PayloadType" => "com.apple.security.pkcs12",
|
24
|
+
"PayloadVersion" => 1,
|
25
|
+
"PayloadIdentifier" => "com.cellabusipcu.profile.credential",
|
26
|
+
"PayloadDisplayName" => "Security",
|
27
|
+
"PayloadDescription" => "Provides device authentication (certificate or identity).",
|
28
|
+
"PayloadOrganization" => "Cellabus, Inc.",
|
29
|
+
}
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module IOSConfigProfile
|
2
|
+
class SetDeviceNamePayload < Hash
|
3
|
+
include IOSConfigProfile::BasicPayload
|
4
|
+
|
5
|
+
attr_accessor :new_device_name
|
6
|
+
|
7
|
+
def initialize(new_device_name)
|
8
|
+
self.new_device_name = new_device_name
|
9
|
+
require_attributes :new_device_name
|
10
|
+
merge! set_device_name_payload
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def set_device_name_payload
|
16
|
+
{
|
17
|
+
"RequestType" => "Settings",
|
18
|
+
"Settings" => [{ "Item" => "DeviceName", "DeviceName" => new_device_name }],
|
19
|
+
}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|