diff --git a/dnsexit_manager.go b/dnsexit_manager.go index ac28b26..ad3a861 100644 --- a/dnsexit_manager.go +++ b/dnsexit_manager.go @@ -37,8 +37,8 @@ type dnsexitDTO struct { func convertInterfaceSliceToStruct(slice []interface{}) *[]dns.Record { var domains []dns.Record - for _, domain := range slice { - fmt.Println(domain) + for k, domain := range slice { + fmt.Println(k, domain) } return &domains @@ -142,7 +142,7 @@ func (c *client) UpdateRecord(rec *dns.Record) (error, *dns.Response) { } func (c *client) GetRecords() (error, *[]dns.Record) { - var subdomains = CreateSet() + var subdomains = NewRecordSet() var wg sync.WaitGroup result_chan := make(chan []*dns.Record) @@ -179,11 +179,10 @@ func (c *client) GetRecords() (error, *[]dns.Record) { select { case records, ok := <-result_chan: if !ok { - records_new := convertInterfaceSliceToStruct(subdomains.List()) - return nil, records_new + return nil, subdomains.List() } - for record := range records { + for _, record := range records { subdomains.Add(record) } case _, _ = <-err_chan: diff --git a/go.mod b/go.mod index fa0839d..cde9f41 100644 --- a/go.mod +++ b/go.mod @@ -3,11 +3,14 @@ module git.uoc.run.place/OxFF/dnsexit-manager go 1.23.4 require ( - git.uoc.run.place/OxFF/dns-manager v0.0.0-20250114185820-a31877a751b9 // indirect - github.com/miekg/dns v1.1.62 // indirect - golang.org/x/mod v0.18.0 // indirect - golang.org/x/net v0.27.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.22.0 // indirect - golang.org/x/tools v0.22.0 // indirect + git.uoc.run.place/OxFF/dns-manager v0.0.2 + github.com/miekg/dns v1.1.62 +) + +require ( + golang.org/x/mod v0.22.0 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.29.0 // indirect + golang.org/x/tools v0.29.0 // indirect ) diff --git a/set.go b/set.go index 2762ad9..9023b23 100644 --- a/set.go +++ b/set.go @@ -1,32 +1,35 @@ package dnsexit_manager -type Set struct { - elements map[interface{}]struct{} +import dns "git.uoc.run.place/OxFF/dns-manager" + +type RecordSet struct { + records map[dns.Record]struct{} } -func CreateSet() *Set { - return &Set{ - elements: make(map[interface{}]struct{}), +func NewRecordSet() *RecordSet { + return &RecordSet{ + records: make(map[dns.Record]struct{}), } } -func (set *Set) Add(value interface{}) { - _, found := set.elements[value] - - if !found { - set.elements[value] = struct{}{} - } +func (s *RecordSet) Add(record *dns.Record) { + s.records[*record] = struct{}{} } -func (set *Set) Delete(value interface{}) { - delete(set.elements, value) +func (s *RecordSet) Remove(record dns.Record) { + delete(s.records, record) } -func (set *Set) List() []interface{} { - keys := make([]interface{}, 0, len(set.elements)) - for _, key := range set.elements { - keys = append(keys, key) +func (s *RecordSet) Contains(record *dns.Record) bool { + _, exists := s.records[*record] + return exists +} + +func (s *RecordSet) List() *[]dns.Record { + records := make([]dns.Record, 0, len(s.records)) + for record := range s.records { + records = append(records, record) } - return keys + return &records }