Skip to content

altinsoft/powerdns-pdns-api-vb.net

Repository files navigation

powerdns-pdns-api-vb.net

PowerDns (pdns) Api Vb.net and C# examples

Usage

Note : Please install PowerDns.Client Nuget package !

Variables

Dim PowerDnsHostname As String = "127.0.0.1" // power dns server ip address

Dim ApiSecret As String = "api secret key"

Dim Ns1 As String = "ns1.your-nameserver.net"

Dim Ns2 As String = "ns2.your-nameserver.net"

Dim Ns3 As String = "ns3.your-nameserver.net"

Dim Ns4 As String = "ns4.your-nameserver.net"

Read Zones List

Async Sub ReadALLZones()
    Try
        Liste.Items.Clear()
        Dim client = New PowerDnsClient(uri:=New Uri("http://" + PowerDnsHostname + ":8081/"), apiKey:=ApiSecret)
        Dim zonesEndpoint = client.Servers("localhost").Zones
        Dim zones As List(Of Zone) = Await zonesEndpoint.ReadAllAsync
        For index = 0 To zones.Count - 1
            Liste.Items.Add(zones(index).Name)
        Next
    Catch ex As Exception
        MessageBox.Show(ex.ToString)
    End Try
End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    ReadALLZones()
End Sub

Create Zone (powerdns api create zone example)

Async Function CreateZone(ZoneName As String) As Task(Of String)
    Try
        Dim client = New PowerDnsClient(uri:=New Uri("http://" + PowerDnsHostname + ":8081/"), apiKey:=ApiSecret)
        Dim zonesEndpoint = client.Servers("localhost").Zones
        Dim zone As New Zone
        zone.Name = ZoneName
        zone.Kind = ZoneKind.Master
        Dim a As New List(Of CanonicalName)
        a.Add(Ns1)
        a.Add(Ns2)
        a.Add(Ns3)
        a.Add(Ns4)
        zone.Nameservers = a
        Await zonesEndpoint.CreateAsync(zone)
        Return "ok"
    Catch ex As Exception
        Return ex.ToString.ToLower
    End Try
End Function

Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim task As Task(Of String) = CreateZone(ZName.Text)
    Dim result As String = Await task
    MessageBox.Show(result)
End Sub

Delete Zone


Async Function DeleteZone(ZoneName As String) As Task(Of String)
        Try
            Dim client = New PowerDnsClient(uri:=New Uri("http://" + PowerDnsHostname + ":8081/"), apiKey:=ApiSecret)
            Dim zonesEndpoint = client.Servers("localhost").Zones
            Dim zone As New Zone
            zone.Name = ZoneName
            Await zonesEndpoint.Item(zone).DeleteAsync()
            Return "ok"
        Catch ex As Exception
            Dim ErrorStr As String = ex.ToString.ToLower
            If ErrorStr.IndexOf("could not find") <> -1 Then
                Return "ok"
            Else
                Return ErrorStr
            End If
        End Try
End Function

Private Async Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim task As Task(Of String) = DeleteZone(ZName.Text) Dim result As String = Await task MessageBox.Show(result) End Sub

Add Record (powerdns api create record example)


Async Function RecordAdd(ZoneName As String, RecordName As String, Content As String, RecordType As RecordType) As Task(Of String)
        Try
            Dim client = New PowerDnsClient(uri:=New Uri("http://" + PowerDnsHostname + ":8081/"), apiKey:=ApiSecret)
            Dim zonesEndpoint = client.Servers("localhost").Zones
            Dim recordSet As New RecordSet
            recordSet.Name = RecordName
            recordSet.Type = RecordType
            recordSet.Ttl = 3600
            Dim a As New Record
            a.Content = Content
            recordSet.Records.Add(a)
            recordSet.ChangeType = ChangeType.Replace
            Await zonesEndpoint.Item(ZoneName).PatchRecordSetAsync(recordSet)
            Return "ok"
        Catch ex As Exception
            Return ex.ToString.ToLower
        End Try
End Function

Private Async Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click Dim task As Task(Of String) = RecordAdd("altinsoft.net", "www.altinsoft.net", "125.125.125.126", RecordType.A) Dim result As String = Await task MessageBox.Show(result) End Sub

Delete Record


Async Function RecordDelete(ZoneName As String, RecordName As String, RecordType As RecordType) As Task(Of String)
        Try
            Dim client = New PowerDnsClient(uri:=New Uri("http://" + PowerDnsHostname + ":8081/"), apiKey:=ApiSecret)
            Dim zonesEndpoint = client.Servers("localhost").Zones
            Dim recordSet As New RecordSet
            recordSet.Name = RecordName
            recordSet.Type = RecordType
            recordSet.ChangeType = ChangeType.Delete
            Await zonesEndpoint.Item(ZoneName).PatchRecordSetAsync(recordSet)
            Return "ok"
        Catch ex As Exception
            Return ex.ToString.ToLower
        End Try
End Function

Private Async Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click Dim task As Task(Of String) = RecordDelete("altinsoft.com", "www.altinsoft.com", RecordType.A) Dim result As String = Await task MessageBox.Show(result) End Sub

Update Record


  Async Function RecordUpdate(ZoneName As String, RecordName As String, OldContent As String, NewContent As String, RecordType As RecordType) As Task(Of String)
        Try
            Dim client = New PowerDnsClient(uri:=New Uri("http://" + PowerDnsHostname + ":8081/"), apiKey:=ApiSecret)
            Dim zonesEndpoint = client.Servers("localhost").Zones
            Dim recordSet As RecordSet = Await zonesEndpoint.Item(ZoneName).GetRecordSetAsync(RecordName)
            recordSet.Type = RecordType
            Dim IsError As Boolean = True
            For i = 0 To recordSet.Records.Count - 1
                Dim a As New Record
                a = recordSet.Records(i)
                If a.Content = OldContent Then
                    IsError = False
                    a.Content = NewContent
                End If
            Next
            If IsError Then
                Return "Record Not Found !"
            Else
                recordSet.ChangeType = ChangeType.Replace
                Await zonesEndpoint.Item(ZoneName).PatchRecordSetAsync(recordSet)
                Return "ok"
            End If
        Catch ex As Exception
            Return ex.ToString.ToLower
        End Try
 End Function

Private Async Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click Dim task As Task(Of String) = RecordUpdate("altinsoft.net", "www.altinsoft.net", "125.125.125.126", "125.125.125.127", RecordType.A) Dim result As String = Await task MessageBox.Show(result) End Sub

AltinSoft Information Technologies www.altinsoft.net

About

PowerDns (pdns) Api C# and Vb.net examples

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published