Class: Comet::UserProfileConfig

Inherits:
Object
  • Object
show all
Defined in:
lib/comet/models/user_profile_config.rb

Overview

UserProfileConfig is a typed class wrapper around the underlying Comet Server API data structure. This is the main data structure for a user’s profile.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeUserProfileConfig

Returns a new instance of UserProfileConfig.



175
176
177
# File 'lib/comet/models/user_profile_config.rb', line 175

def initialize
  clear
end

Instance Attribute Details

#account_nameObject

A longer descriptive name for this account. It is not necessarily unique to the Comet Server. The end-user might be able to change it inside the Comet Backup desktop app.



24
25
26
# File 'lib/comet/models/user_profile_config.rb', line 24

def 
  @account_name
end

#all_protected_items_quota_bytesObject

A limit on the total Size of all Protected Items in this account. It is enforced if AllProtectedItemsQuotaEnabled is true.



92
93
94
# File 'lib/comet/models/user_profile_config.rb', line 92

def all_protected_items_quota_bytes
  @all_protected_items_quota_bytes
end

#all_protected_items_quota_enabledObject

A limit on the total Size of all Protected Items in this account. The number of bytes should be configured in AllProtectedItemsQuotaBytes.



87
88
89
# File 'lib/comet/models/user_profile_config.rb', line 87

def all_protected_items_quota_enabled
  @all_protected_items_quota_enabled
end

#allow_password_and_totploginObject

If true, then TOTP is required to open the desktop app or the Comet Server web interface with this user’s credentials.



146
147
148
# File 'lib/comet/models/user_profile_config.rb', line 146

def allow_password_and_totplogin
  @allow_password_and_totplogin
end

#allow_password_loginObject

Returns the value of attribute allow_password_login.



141
142
143
# File 'lib/comet/models/user_profile_config.rb', line 141

def 
  @allow_password_login
end

#backup_rulesObject

Schedules The string keys can be any unique key. Using a GUID is recommended, but optional.



66
67
68
# File 'lib/comet/models/user_profile_config.rb', line 66

def backup_rules
  @backup_rules
end

#create_timeObject

Unix timestamp in seconds



161
162
163
# File 'lib/comet/models/user_profile_config.rb', line 161

def create_time
  @create_time
end

#creation_guidObject

A random GUID that is allocated when the user profile is created for the first time. You can use this to help disambiguate users with the same username across multiple Comet Servers.



166
167
168
# File 'lib/comet/models/user_profile_config.rb', line 166

def creation_guid
  @creation_guid
end

#destinationsObject

Storage Vaults The string keys can be any unique key. Using a GUID is recommended, but optional.



56
57
58
# File 'lib/comet/models/user_profile_config.rb', line 56

def destinations
  @destinations
end

#devicesObject

Devices The string keys are the device’s ID. The device ID is generated automatically based on a mix of hardware and software identifiers on the installed PC. To revoke a device, use the AdminRevokeDevice API instead of accessing these fields directly. This API can also remove associated Protected Items, uninstall the remote device, and disconnect its live connection.



75
76
77
# File 'lib/comet/models/user_profile_config.rb', line 75

def devices
  @devices
end

#emailsObject

A list of email addresses to send reports to.



41
42
43
# File 'lib/comet/models/user_profile_config.rb', line 41

def emails
  @emails
end

#is_suspendedObject

Returns the value of attribute is_suspended.



78
79
80
# File 'lib/comet/models/user_profile_config.rb', line 78

def is_suspended
  @is_suspended
end

#language_codeObject

One of the supported languages, such as en_US (DEFAULT_LANGUAGE).



33
34
35
# File 'lib/comet/models/user_profile_config.rb', line 33

def language_code
  @language_code
end

#last_suspendedObject

Unix timestamp in seconds. Zero if the device is not suspended.



82
83
84
# File 'lib/comet/models/user_profile_config.rb', line 82

def last_suspended
  @last_suspended
end

#local_timezoneObject

Timezone in IANA format. Individual devices may declare a more specific timezone in the Devices field.



29
30
31
# File 'lib/comet/models/user_profile_config.rb', line 29

def local_timezone
  @local_timezone
end

#maximum_devicesObject

A limit on the total number of devices registered in this account. Set to zero to allow unlimited devices.



97
98
99
# File 'lib/comet/models/user_profile_config.rb', line 97

def maximum_devices
  @maximum_devices
end

#organization_idObject

Tenant



37
38
39
# File 'lib/comet/models/user_profile_config.rb', line 37

def organization_id
  @organization_id
end

#override_email_settingsObject

By default, all the email addresses in the Emails field will receieve the policy-default or server-wide-default style of email report. Add an override for a specific email address in here to allow customizing the email report that will be received.



47
48
49
# File 'lib/comet/models/user_profile_config.rb', line 47

def override_email_settings
  @override_email_settings
end

#password_formatObject

One of the PASSWORD_FORMAT_ constants To change the user’s password, use the AdminResetUserPassword API instead of accessing these fields directly. Otherwise, other encrypted fields in the user profile may become corrupted.



129
130
131
# File 'lib/comet/models/user_profile_config.rb', line 129

def password_format
  @password_format
end

#password_hashObject

Returns the value of attribute password_hash.



132
133
134
# File 'lib/comet/models/user_profile_config.rb', line 132

def password_hash
  @password_hash
end

#password_recoveryObject

If this field is empty, the “Allow administrator to reset my password” feature is turned off. If this field is filled, it contains a cryptographic root of trust that can decrypt and re-encrypt other secrets in this profile.



138
139
140
# File 'lib/comet/models/user_profile_config.rb', line 138

def password_recovery
  @password_recovery
end

#policyObject

The Policy field contains a read-only copy of the effective Policy that is applied to this user account.



123
124
125
# File 'lib/comet/models/user_profile_config.rb', line 123

def policy
  @policy
end

#policy_idObject

If the PolicyID field is set to a non-empty string, the Comet Server will enforce the contents of the Policy field based on the matching server’s policy. Otherwise if the PolicyID field is set to an empty string, the administrator may configure any custom values in the Policy field.



118
119
120
# File 'lib/comet/models/user_profile_config.rb', line 118

def policy_id
  @policy_id
end

#quota_hyper_vguestsObject

A limit on the total number of Hyper-V guests across all Hyper-V Protected Items in this account. Set to zero to allow unlimited Office 365 Protected Accounts.



107
108
109
# File 'lib/comet/models/user_profile_config.rb', line 107

def quota_hyper_vguests
  @quota_hyper_vguests
end

#quota_office_365protected_accountsObject

A limit on the total number of Office 365 Protected Accounts across all Office 365 Protected Items in this account. Set to zero to allow unlimited Office 365 Protected Accounts.



102
103
104
# File 'lib/comet/models/user_profile_config.rb', line 102

def quota_office_365protected_accounts
  @quota_office_365protected_accounts
end

#quota_vmware_guestsObject

A limit on the total number of VMware guests across all VMware Protected Items in this account. Set to zero to allow unlimited Office 365 Protected Accounts.



112
113
114
# File 'lib/comet/models/user_profile_config.rb', line 112

def quota_vmware_guests
  @quota_vmware_guests
end

#require_password_changeObject

This field is available in Comet 20.3.4 and later.



157
158
159
# File 'lib/comet/models/user_profile_config.rb', line 157

def require_password_change
  @require_password_change
end

#send_email_reportsObject

This option can be used to control whether any email reports are sent.



51
52
53
# File 'lib/comet/models/user_profile_config.rb', line 51

def send_email_reports
  @send_email_reports
end

#server_configObject

Additional server-wide settings that are enforced for this user profile



170
171
172
# File 'lib/comet/models/user_profile_config.rb', line 170

def server_config
  @server_config
end

#sourcesObject

Protected Items The string keys can be any unique key. Using a GUID is recommended, but optional.



61
62
63
# File 'lib/comet/models/user_profile_config.rb', line 61

def sources
  @sources
end

#totpkeyObject

Returns the value of attribute totpkey.



153
154
155
# File 'lib/comet/models/user_profile_config.rb', line 153

def totpkey
  @totpkey
end

#totpkey_encryption_formatObject

One of the ENCRYPTIONMETHOD_ constants



150
151
152
# File 'lib/comet/models/user_profile_config.rb', line 150

def totpkey_encryption_format
  @totpkey_encryption_format
end

#unknown_json_fieldsObject

Returns the value of attribute unknown_json_fields.



173
174
175
# File 'lib/comet/models/user_profile_config.rb', line 173

def unknown_json_fields
  @unknown_json_fields
end

#usernameObject

The name for this account. It uniquely identifies this UserProfileConfig across the entire Comet Server. It cannot be changed directly.



19
20
21
# File 'lib/comet/models/user_profile_config.rb', line 19

def username
  @username
end

Instance Method Details

#clearObject



179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
# File 'lib/comet/models/user_profile_config.rb', line 179

def clear
  @username = ''
  @account_name = ''
  @local_timezone = ''
  @language_code = ''
  @organization_id = ''
  @emails = []
  @override_email_settings = {}
  @destinations = {}
  @sources = {}
  @backup_rules = {}
  @devices = {}
  @last_suspended = 0
  @all_protected_items_quota_bytes = 0
  @maximum_devices = 0
  @quota_office_365protected_accounts = 0
  @quota_hyper_vguests = 0
  @quota_vmware_guests = 0
  @policy_id = ''
  @policy = Comet::UserPolicy.new
  @password_format = 0
  @password_hash = ''
  @password_recovery = ''
  @totpkey_encryption_format = 0
  @totpkey = ''
  @create_time = 0
  @creation_guid = ''
  @server_config = Comet::UserServerConfig.new
  @unknown_json_fields = {}
end

#from_hash(obj) ⇒ Object

Parameters:

  • obj (Hash)

    The complete object as a Ruby hash

Raises:

  • (TypeError)


218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
# File 'lib/comet/models/user_profile_config.rb', line 218

def from_hash(obj)
  raise TypeError, "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash

  obj.each do |k, v|
    case k
    when 'Username'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @username = v
    when 'AccountName'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @account_name = v
    when 'LocalTimezone'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @local_timezone = v
    when 'LanguageCode'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @language_code = v
    when 'OrganizationID'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @organization_id = v
    when 'Emails'
      if v.nil?
        @emails = []
      else
        @emails = Array.new(v.length)
        v.each_with_index do |v1, i1|
          raise TypeError, "'v1' expected String, got #{v1.class}" unless v1.is_a? String

          @emails[i1] = v1
        end
      end
    when 'OverrideEmailSettings'
      @override_email_settings = {}
      if v.nil?
        @override_email_settings = {}
      else
        v.each do |k1, v1|
          @override_email_settings[k1] = Comet::UserCustomEmailSettings.new
          @override_email_settings[k1].from_hash(v1)
        end
      end
    when 'SendEmailReports'
      @send_email_reports = v
    when 'Destinations'
      @destinations = {}
      if v.nil?
        @destinations = {}
      else
        v.each do |k1, v1|
          @destinations[k1] = Comet::DestinationConfig.new
          @destinations[k1].from_hash(v1)
        end
      end
    when 'Sources'
      @sources = {}
      if v.nil?
        @sources = {}
      else
        v.each do |k1, v1|
          @sources[k1] = Comet::SourceConfig.new
          @sources[k1].from_hash(v1)
        end
      end
    when 'BackupRules'
      @backup_rules = {}
      if v.nil?
        @backup_rules = {}
      else
        v.each do |k1, v1|
          @backup_rules[k1] = Comet::BackupRuleConfig.new
          @backup_rules[k1].from_hash(v1)
        end
      end
    when 'Devices'
      @devices = {}
      if v.nil?
        @devices = {}
      else
        v.each do |k1, v1|
          @devices[k1] = Comet::DeviceConfig.new
          @devices[k1].from_hash(v1)
        end
      end
    when 'IsSuspended'
      @is_suspended = v
    when 'LastSuspended'
      raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric

      @last_suspended = v
    when 'AllProtectedItemsQuotaEnabled'
      @all_protected_items_quota_enabled = v
    when 'AllProtectedItemsQuotaBytes'
      raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric

      @all_protected_items_quota_bytes = v
    when 'MaximumDevices'
      raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric

      @maximum_devices = v
    when 'QuotaOffice365ProtectedAccounts'
      raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric

      @quota_office_365protected_accounts = v
    when 'QuotaHyperVGuests'
      raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric

      @quota_hyper_vguests = v
    when 'QuotaVMwareGuests'
      raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric

      @quota_vmware_guests = v
    when 'PolicyID'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @policy_id = v
    when 'Policy'
      @policy = Comet::UserPolicy.new
      @policy.from_hash(v)
    when 'PasswordFormat'
      raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric

      @password_format = v
    when 'PasswordHash'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @password_hash = v
    when 'PasswordRecovery'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @password_recovery = v
    when 'AllowPasswordLogin'
      @allow_password_login = v
    when 'AllowPasswordAndTOTPLogin'
      @allow_password_and_totplogin = v
    when 'TOTPKeyEncryptionFormat'
      raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric

      @totpkey_encryption_format = v
    when 'TOTPKey'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @totpkey = v
    when 'RequirePasswordChange'
      @require_password_change = v
    when 'CreateTime'
      raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric

      @create_time = v
    when 'CreationGUID'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @creation_guid = v
    when 'ServerConfig'
      @server_config = Comet::UserServerConfig.new
      @server_config.from_hash(v)
    else
      @unknown_json_fields[k] = v
    end
  end
end

#from_json(json_string) ⇒ Object

Parameters:

  • json_string (String)

    The complete object in JSON format

Raises:

  • (TypeError)


211
212
213
214
215
# File 'lib/comet/models/user_profile_config.rb', line 211

def from_json(json_string)
  raise TypeError, "'json_string' expected String, got #{json_string.class}" unless json_string.is_a? String

  from_hash(JSON.parse(json_string))
end

#to_hHash

Returns The complete object as a Ruby hash.

Returns:

  • (Hash)

    The complete object as a Ruby hash



435
436
437
# File 'lib/comet/models/user_profile_config.rb', line 435

def to_h
  to_hash
end

#to_hashHash

Returns The complete object as a Ruby hash.

Returns:

  • (Hash)

    The complete object as a Ruby hash



385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
# File 'lib/comet/models/user_profile_config.rb', line 385

def to_hash
  ret = {}
  ret['Username'] = @username
  ret['AccountName'] = @account_name
  ret['LocalTimezone'] = @local_timezone
  ret['LanguageCode'] = @language_code
  unless @organization_id.nil?
    ret['OrganizationID'] = @organization_id
  end
  ret['Emails'] = @emails
  ret['OverrideEmailSettings'] = @override_email_settings
  ret['SendEmailReports'] = @send_email_reports
  ret['Destinations'] = @destinations
  ret['Sources'] = @sources
  ret['BackupRules'] = @backup_rules
  ret['Devices'] = @devices
  ret['IsSuspended'] = @is_suspended
  unless @last_suspended.nil?
    ret['LastSuspended'] = @last_suspended
  end
  ret['AllProtectedItemsQuotaEnabled'] = @all_protected_items_quota_enabled
  ret['AllProtectedItemsQuotaBytes'] = @all_protected_items_quota_bytes
  ret['MaximumDevices'] = @maximum_devices
  ret['QuotaOffice365ProtectedAccounts'] = @quota_office_365protected_accounts
  ret['QuotaHyperVGuests'] = @quota_hyper_vguests
  ret['QuotaVMwareGuests'] = @quota_vmware_guests
  ret['PolicyID'] = @policy_id
  ret['Policy'] = @policy
  ret['PasswordFormat'] = @password_format
  ret['PasswordHash'] = @password_hash
  unless @password_recovery.nil?
    ret['PasswordRecovery'] = @password_recovery
  end
  ret['AllowPasswordLogin'] = @allow_password_login
  ret['AllowPasswordAndTOTPLogin'] = @allow_password_and_totplogin
  ret['TOTPKeyEncryptionFormat'] = @totpkey_encryption_format
  ret['TOTPKey'] = @totpkey
  ret['RequirePasswordChange'] = @require_password_change
  ret['CreateTime'] = @create_time
  ret['CreationGUID'] = @creation_guid
  unless @server_config.nil?
    ret['ServerConfig'] = @server_config
  end
  @unknown_json_fields.each do |k, v|
    ret[k] = v
  end
  ret
end

#to_json(options = {}) ⇒ String

Returns The complete object as a JSON string.

Returns:

  • (String)

    The complete object as a JSON string



440
441
442
# File 'lib/comet/models/user_profile_config.rb', line 440

def to_json(options = {})
  to_hash.to_json(options)
end