Compare commits
5 Commits
3d0ca816ff
...
05e035925f
Author | SHA1 | Date | |
---|---|---|---|
05e035925f | |||
71ce454986 | |||
c777ac570c | |||
bb8b4c9a0b | |||
f31165f6f5 |
@ -5,7 +5,6 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
"sync"
|
||||
|
||||
@ -35,6 +34,17 @@ type dnsexitDTO struct {
|
||||
Delete *dns.Record `json:"delete,omitempty"`
|
||||
}
|
||||
|
||||
func convertInterfaceSliceToStruct(slice []interface{}) *[]dns.Record {
|
||||
var domains []dns.Record
|
||||
|
||||
for _, domain := range slice {
|
||||
fmt.Println(domain)
|
||||
}
|
||||
|
||||
return &domains
|
||||
}
|
||||
|
||||
|
||||
func (c *client) AddRecord(rec *dns.Record) (error, *dns.Response) {
|
||||
c.Locker.Lock()
|
||||
defer c.Locker.Unlock()
|
||||
@ -46,7 +56,6 @@ func (c *client) AddRecord(rec *dns.Record) (error, *dns.Response) {
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
log.Println("Smth going wrong marshalling data for adding record")
|
||||
return err, nil
|
||||
}
|
||||
|
||||
@ -68,7 +77,6 @@ func (c *client) AddRecord(rec *dns.Record) (error, *dns.Response) {
|
||||
return err, nil
|
||||
}
|
||||
|
||||
log.Println(string(body))
|
||||
return nil, &dns.Response{Message: string(body)}
|
||||
}
|
||||
|
||||
@ -99,7 +107,6 @@ func (c *client) DeleteRecord(rec *dns.Record) (error, *dns.Response) {
|
||||
if err != nil {
|
||||
return err, nil
|
||||
}
|
||||
log.Println(string(body))
|
||||
|
||||
return nil, &dns.Response{Message: string(body)}
|
||||
}
|
||||
@ -131,13 +138,12 @@ func (c *client) UpdateRecord(rec *dns.Record) (error, *dns.Response) {
|
||||
if err != nil {
|
||||
return err, nil
|
||||
}
|
||||
log.Println(string(body))
|
||||
|
||||
return nil, &dns.Response{Message: string(body)}
|
||||
}
|
||||
|
||||
func (c *client) GetRecords() (error, []*dns.Record) {
|
||||
var subdomains []*dns.Record
|
||||
var subdomains = CreateSet()
|
||||
var wg sync.WaitGroup
|
||||
|
||||
result_chan := make(chan []*dns.Record)
|
||||
@ -174,11 +180,13 @@ func (c *client) GetRecords() (error, []*dns.Record) {
|
||||
select {
|
||||
case records, ok := <-result_chan:
|
||||
if !ok {
|
||||
return nil, subdomains
|
||||
return nil, convertInterfaceSliceToStruct(subdomains.List())
|
||||
}
|
||||
|
||||
subdomains = append(subdomains, records...)
|
||||
case _, _ = <-err_chan:
|
||||
|
||||
for record := range records {
|
||||
subdomains.Add(record)
|
||||
}
|
||||
case _, _ = <-err_chan:
|
||||
}
|
||||
}
|
||||
|
||||
|
33
set.go
Normal file
33
set.go
Normal file
@ -0,0 +1,33 @@
|
||||
package dnsexit_manager
|
||||
|
||||
|
||||
type Set struct {
|
||||
elements map[interface{}]struct{}
|
||||
}
|
||||
|
||||
func CreateSet() *Set {
|
||||
return &Set{
|
||||
elements: make(map[interface{}]struct{}),
|
||||
}
|
||||
}
|
||||
|
||||
func (set *Set) Add(value interface{}) {
|
||||
_, found := set.elements[value]
|
||||
|
||||
if !found{
|
||||
set.elements[value] = struct{}{}
|
||||
}
|
||||
}
|
||||
|
||||
func (set *Set) Delete(value interface{}) {
|
||||
delete(set.elements, value)
|
||||
}
|
||||
|
||||
func (set *Set) List() []interface{} {
|
||||
keys := make([]interface{}, 0, len(set.elements))
|
||||
for key := range set.elements {
|
||||
keys = append(keys, key)
|
||||
}
|
||||
|
||||
return keys
|
||||
}
|
Reference in New Issue
Block a user