2021-01-25 16:40:03 +08:00
|
|
|
package dns
|
2020-11-14 21:28:07 +08:00
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"encoding/json"
|
2024-07-27 14:15:25 +08:00
|
|
|
|
2021-06-02 18:13:48 +08:00
|
|
|
"github.com/TeaOSLab/EdgeAPI/internal/dnsclients/dnstypes"
|
2020-11-14 21:28:07 +08:00
|
|
|
)
|
|
|
|
|
|
2021-06-02 18:13:48 +08:00
|
|
|
// DecodeRoutes 获取所有的线路
|
|
|
|
|
func (this *DNSDomain) DecodeRoutes() ([]*dnstypes.Route, error) {
|
2022-03-21 21:39:36 +08:00
|
|
|
if len(this.Routes) == 0 {
|
2020-11-14 21:28:07 +08:00
|
|
|
return nil, nil
|
|
|
|
|
}
|
2021-06-02 18:13:48 +08:00
|
|
|
result := []*dnstypes.Route{}
|
2022-03-21 21:39:36 +08:00
|
|
|
err := json.Unmarshal(this.Routes, &result)
|
2020-11-14 21:28:07 +08:00
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
return result, nil
|
|
|
|
|
}
|
|
|
|
|
|
2021-06-02 18:13:48 +08:00
|
|
|
// ContainsRouteCode 检查是否包含某个线路
|
2020-11-16 13:03:20 +08:00
|
|
|
func (this *DNSDomain) ContainsRouteCode(route string) (bool, error) {
|
2020-11-14 21:28:07 +08:00
|
|
|
routes, err := this.DecodeRoutes()
|
|
|
|
|
if err != nil {
|
|
|
|
|
return false, err
|
|
|
|
|
}
|
2020-11-15 11:57:49 +08:00
|
|
|
for _, r := range routes {
|
|
|
|
|
if r.Code == route {
|
|
|
|
|
return true, nil
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false, nil
|
2020-11-14 21:28:07 +08:00
|
|
|
}
|
|
|
|
|
|
2021-06-02 18:13:48 +08:00
|
|
|
// DecodeRecords 获取所有的记录
|
|
|
|
|
func (this *DNSDomain) DecodeRecords() ([]*dnstypes.Record, error) {
|
2020-11-14 21:28:07 +08:00
|
|
|
records := this.Records
|
2022-03-21 21:39:36 +08:00
|
|
|
if len(records) == 0 {
|
2020-11-14 21:28:07 +08:00
|
|
|
return nil, nil
|
|
|
|
|
}
|
2021-06-02 18:13:48 +08:00
|
|
|
result := []*dnstypes.Record{}
|
2022-03-22 19:30:30 +08:00
|
|
|
err := json.Unmarshal(records, &result)
|
2020-11-14 21:28:07 +08:00
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
return result, nil
|
|
|
|
|
}
|