class ZmLdifExport::Account

Attributes

ldif[RW]

Public Class Methods

add(resource) click to toggle source
# File lib/zmldifexport.rb, line 330
def self.add(resource)
  @resources.push resource
end
all() click to toggle source
# File lib/zmldifexport.rb, line 326
def self.all
  return @resources
end
new(ldif) click to toggle source
# File lib/zmldifexport.rb, line 338
def initialize(ldif)
  @name = ldif[:uid]
  @ldif = ldif
  @attributes = parse_attributes(ldif: ldif, exclude: [:uid])
end

Public Instance Methods

ace_to_json(zm_attr = '') click to toggle source
# File lib/zmldifexport.rb, line 375
def ace_to_json(zm_attr = '')
  ace = {}
  keys_and_values = zm_attr.split(';')
  keys_and_values.each do |kv|
    key, value = kv.split(':')
    ace[key] = kv[value]
  end
  return ace
end
aces(zma) click to toggle source
# File lib/zmldifexport.rb, line 385
def aces(zma)
  aces = []
  zma.each do |zm|
    aces.push(ace_to_json(zm))
  end

  return aces
end
has_alias?() click to toggle source
# File lib/zmldifexport.rb, line 334
def has_alias?
  attributes['zimbramailalias'] ? attributes['zimbramailalias'].any? : false
end
zmprov_aaa(print: false, domain:) click to toggle source
# File lib/zmldifexport.rb, line 362
def zmprov_aaa(print: false, domain:)
  aliases = attributes['zimbramailalias']
  return if aliases.nil? || aliases.empty?
  lines = []
  aliases.each do |mail|
    lines.push("aaa #{name(:zmprov, domain)} #{mail}")
  end
  
  cmd = lines.join("\n")
  puts cmd if print
  return cmd
end
zmprov_ca(domain: '', mail_host: nil, skip: [], print: false) click to toggle source
# File lib/zmldifexport.rb, line 345
def zmprov_ca(domain: '', mail_host: nil, skip: [], print: false)
  line = [ 
    '/opt/zimbra/bin/zmprov ca',
    name(:zmprov, domain),
    'P4ssW04r..,. '
  ]
  line.push "zimbraMailHost #{mail_host} " unless mail_host.nil?
  attributes.each do |name, value|
    next if name =~ /(zimbramailalias|admin|zimbracosid|zimbraace|zimbrasharedItem|signature|zimbramailsievescript)/i
    next if skip.include?(name)
    line << attr_to_zmprov(attr_name: name, value: value)
  end
  cmd = line.join(' ')
  puts cmd if print
  return cmd
end
zmprov_sharing(print: false, domain:) click to toggle source
# File lib/zmldifexport.rb, line 394
def zmprov_sharing(print: false, domain:)
  return nil if attributes['zimbrashareditem'].nil?
  line = []
  zimbra_shares = aces(attributes['zimbrashareditem'])
  zimbra_shares.each do |ace|
    next if ace['granteeName'] == 'null'
    line.push("zmmailbox -z -m #{name(:zmprov, domain)} mfg '#{ace['folderPath']}' account #{ace['granteeName']} #{ace['rights']}")
  end

  cmd = line.size > 0 ? line.join("\n") + "\n" : nil
  puts cmd if print
  return cmd
end
zmprov_signatures(print: false, domain:) click to toggle source
# File lib/zmldifexport.rb, line 408
def zmprov_signatures(print: false, domain:)
  return nil if attributes['zimbraprefmailsignaturehtml'].nil?
  line = []
  zimbra_shares = attributes['zimbraprefmailsignaturehtml']
  zimbra_shares.each do |ace|
    ace = ace.gsub(/'/, '"')
    line.push("ma #{name(:zmprov, domain)} zimbraPrefMailSignatureHtml '#{ace}'")
  end

  cmd = line.size > 0 ? line.join("\n") + "\n" : nil
  puts cmd if print
  return cmd
end