Bluecat.Address.Manager.psm1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
function Convert-BamProperty {
  param (
    [parameter(
      mandatory = $true,
      valueFromPipeline = $true
    )]
    [psobject] $bamObject
  )
  begin {}
  process {
    $prop = $bamObject.properties.trim("|") -split "\|"
    foreach ($p in $prop) {
      $member = $p -split "="
      $bamObject | Add-Member -NotePropertyName $member[0] -NotePropertyValue $member[1]
    }
    $bamObject | select -property * -excludeproperty properties
  }
  end {}
}

function Connect-Bam {
  param(
    [Parameter(Mandatory = $true)]
    [string] 
      $uri,
    [Parameter(Mandatory = $true)]
    [pscredential] 
      $credential
  )
  
  [Net.ServicePointManager]::SecurityProtocol = 'Tls12'
  $proxy = New-WebServiceProxy -uri $uri
  $proxy.CookieContainer = New-Object System.Net.CookieContainer
  $proxy.login($Credential.UserName, ($Credential.GetNetworkCredential()).Password)
  $Global:defaultBam = $proxy
  return $proxy
}

function Get-BamConfiguration {
  param(
    $name,
    $bam = $defaultBam
  )
  $bam.getentitybyname(0,$name,"Configuration")
}

function Get-BamDnsZone {
  param(
    $ConfigurationName,
    $ZoneName,
    $bam = $defaultBam
  )
  $cfg = get-BamConfiguration $ConfigurationName
  $bam.getZonesByHint($cfg.id, 0, 10, "hint=$ZoneName")
}

function Get-BamDnsView {
  param(
    $ConfigurationName,
    $ViewName,
    $bam = $defaultBam
  )
  $cfg = get-BamConfiguration $ConfigurationName
  $bam.getentitybyname($cfg.id,$ViewName,"View")
}

function Get-BamServer {
  param(
    $ConfigurationName,
    $bam = $defaultBam
  )
  $cfg = get-BamConfiguration $ConfigurationName
  $bam.getentities($cfg.id, "Server", 0, [int32]::MaxValue)
}

function Get-BamDnsRecord {
  param(
    $Zone,
    [ValidateSet(
      "HostRecord",
      "AliasRecord",
      "MXRecord",
      "TXTRecord",
      "SRVRecord",
      "GenericRecord",
      "HINFORecord",
      "NAPTRRecord"
    )]
    $type,
    $bam = $defaultBam
  )
  $bam.getEntities($zone.id, $type, 0, [int32]::MaxValue)
}

function Add-BamDnsHostRecord {
  param(
    $view,
    $fqdn,
    $ip,
    $ttl,
    $bam = $defaultBam
  )
  $bam.addHostRecord($view.id, $fqdn, $ip, $ttl, "reverseRecord=true")
}

function Add-BamDnsAliasRecord {
  param(
    $view,
    $fqdn,
    $targetFqdn,
    $ttl,
    $bam = $defaultBam
  )
  $bam.addAliasRecord($view.id, $fqdn, $targetFqdn, $ttl, "")
}