Compare commits
2 Commits
v0.0.8-deb
...
main
Author | SHA1 | Date | |
---|---|---|---|
62704fac46 | |||
6a1c07d3f5 |
@ -34,16 +34,6 @@ type dnsexitDTO struct {
|
|||||||
Delete *dns.Record `json:"delete,omitempty"`
|
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) {
|
func (c *client) AddRecord(rec *dns.Record) (error, *dns.Response) {
|
||||||
c.Locker.Lock()
|
c.Locker.Lock()
|
||||||
defer c.Locker.Unlock()
|
defer c.Locker.Unlock()
|
||||||
@ -142,7 +132,7 @@ func (c *client) UpdateRecord(rec *dns.Record) (error, *dns.Response) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *client) GetRecords() (error, *[]dns.Record) {
|
func (c *client) GetRecords() (error, *[]dns.Record) {
|
||||||
var subdomains = CreateSet()
|
var subdomains = NewRecordSet()
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
|
|
||||||
result_chan := make(chan []*dns.Record)
|
result_chan := make(chan []*dns.Record)
|
||||||
@ -179,11 +169,10 @@ func (c *client) GetRecords() (error, *[]dns.Record) {
|
|||||||
select {
|
select {
|
||||||
case records, ok := <-result_chan:
|
case records, ok := <-result_chan:
|
||||||
if !ok {
|
if !ok {
|
||||||
records_new := convertInterfaceSliceToStruct(subdomains.List())
|
return nil, subdomains.List()
|
||||||
return nil, records_new
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for record := range records {
|
for _, record := range records {
|
||||||
subdomains.Add(record)
|
subdomains.Add(record)
|
||||||
}
|
}
|
||||||
case _, _ = <-err_chan:
|
case _, _ = <-err_chan:
|
||||||
|
17
go.mod
17
go.mod
@ -3,11 +3,14 @@ module git.uoc.run.place/OxFF/dnsexit-manager
|
|||||||
go 1.23.4
|
go 1.23.4
|
||||||
|
|
||||||
require (
|
require (
|
||||||
git.uoc.run.place/OxFF/dns-manager v0.0.0-20250114185820-a31877a751b9 // indirect
|
git.uoc.run.place/OxFF/dns-manager v0.0.2
|
||||||
github.com/miekg/dns v1.1.62 // indirect
|
github.com/miekg/dns v1.1.62
|
||||||
golang.org/x/mod v0.18.0 // indirect
|
)
|
||||||
golang.org/x/net v0.27.0 // indirect
|
|
||||||
golang.org/x/sync v0.7.0 // indirect
|
require (
|
||||||
golang.org/x/sys v0.22.0 // indirect
|
golang.org/x/mod v0.22.0 // indirect
|
||||||
golang.org/x/tools 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
|
||||||
)
|
)
|
||||||
|
39
set.go
39
set.go
@ -1,32 +1,35 @@
|
|||||||
package dnsexit_manager
|
package dnsexit_manager
|
||||||
|
|
||||||
type Set struct {
|
import dns "git.uoc.run.place/OxFF/dns-manager"
|
||||||
elements map[interface{}]struct{}
|
|
||||||
|
type RecordSet struct {
|
||||||
|
records map[dns.Record]struct{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateSet() *Set {
|
func NewRecordSet() *RecordSet {
|
||||||
return &Set{
|
return &RecordSet{
|
||||||
elements: make(map[interface{}]struct{}),
|
records: make(map[dns.Record]struct{}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (set *Set) Add(value interface{}) {
|
func (s *RecordSet) Add(record *dns.Record) {
|
||||||
_, found := set.elements[value]
|
s.records[*record] = struct{}{}
|
||||||
|
|
||||||
if !found {
|
|
||||||
set.elements[value] = struct{}{}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (set *Set) Delete(value interface{}) {
|
func (s *RecordSet) Remove(record dns.Record) {
|
||||||
delete(set.elements, value)
|
delete(s.records, record)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (set *Set) List() []interface{} {
|
func (s *RecordSet) Contains(record *dns.Record) bool {
|
||||||
keys := make([]interface{}, 0, len(set.elements))
|
_, exists := s.records[*record]
|
||||||
for _, key := range set.elements {
|
return exists
|
||||||
keys = append(keys, key)
|
}
|
||||||
|
|
||||||
|
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
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user