Documentation
¶
Overview ¶
* @Author: Charley * @Date: 2021-08-16 18:02:04 * @LastEditors: Charley * @LastEditTime: 2021-08-19 10:09:28 * @FilePath: /coredns/plugin/wormhole/clash_rule_file.go * @Description: clash订阅文件的Yaml模型
* @Author: Charley * @Date: 2021-08-18 16:21:34 * @LastEditors: Charley * @LastEditTime: 2021-08-23 11:43:36 * @FilePath: /coredns/plugin/wormhole/constant.go * @Description: 常量定义
* @Author: Charley * @Date: 2021-08-18 15:37:45 * @LastEditors: Charley * @LastEditTime: 2021-08-20 17:22:52 * @FilePath: /coredns/plugin/wormhole/defaults.go * @Description: 默认定义
* @Author: Charley * @Date: 2021-08-18 17:45:45 * @LastEditors: Charley * @LastEditTime: 2021-08-20 14:18:57 * @FilePath: /coredns/plugin/wormhole/load_http_list.go * @Description: 加载订阅文件
* @Author: Charley * @Date: 2021-08-20 14:54:48 * @LastEditors: Charley * @LastEditTime: 2021-08-20 17:36:20 * @FilePath: /coredns/plugin/wormhole/policy.go * @Description: 负载顺序
* @Author: Charley * @Date: 2021-08-17 17:30:46 * @LastEditors: Charley * @LastEditTime: 2021-08-20 15:32:12 * @FilePath: /coredns/plugin/wormhole/proxy.go * @Description: 转发代理
* @Author: Charley * @Date: 2021-08-20 17:25:57 * @LastEditors: Charley * @LastEditTime: 2021-08-20 17:26:41 * @FilePath: /coredns/plugin/forward/query_model.go * @Description: dns 查询模型
* @Author: Charley * @Date: 2021-08-23 09:56:26 * @LastEditors: Charley * @LastEditTime: 2021-08-23 11:49:06 * @FilePath: /coredns/plugin/wormhole/routeros.go * @Description: ROS 相关定义
* @Author: Charley * @Date: 2021-08-17 10:43:03 * @LastEditors: Charley * @LastEditTime: 2021-08-20 09:15:08 * @FilePath: /coredns/plugin/wormhole/rule.go * @Description: 匹配规则定义
* @Author: Charley * @Date: 2021-08-20 09:14:33 * @LastEditors: Charley * @LastEditTime: 2021-08-20 14:48:10 * @FilePath: /coredns/plugin/wormhole/rule_group.go * @Description: 规则组
* @Author: Charley * @Date: 2021-08-17 08:57:54 * @LastEditors: Charley * @LastEditTime: 2021-08-19 16:35:35 * @FilePath: /coredns/plugin/wormhole/rule_type.go * @Description: 匹配规则类型
* @Author: Charley * @Date: 2021-08-13 11:48:18 * @LastEditors: Charley * @LastEditTime: 2021-08-23 10:29:20 * @FilePath: /coredns/plugin/wormhole/setup.go * @Description: 配置读取配置文件初始化插件
* @Author: Charley * @Date: 2021-08-13 11:53:13 * @LastEditors: Charley * @LastEditTime: 2021-08-23 11:26:49 * @FilePath: /coredns/plugin/wormhole/wormhole.go * @Description: 插件主题结构
* @Author: Charley * @Date: 2021-08-18 15:26:38 * @LastEditors: Charley * @LastEditTime: 2021-08-23 11:26:06 * @FilePath: /coredns/plugin/wormhole/wormhole_config.go * @Description: 配置模型定义
Index ¶
- Constants
- type AvgRttQueryModel
- type ClashRuleFile
- type Policy
- type Proxy
- type QueryModel
- type RouterOS
- type RouterOSConfig
- type Rule
- type RuleDomain
- type RuleDomainKeyword
- type RuleDomainSuffix
- type RuleRegex
- type RuleType
- type StaticRuleGroup
- type SubscribeFile
- type SubscribeFileType
- type SubscribeRuleGroup
- type Wormhole
- func (wh *Wormhole) BalancingQuery(r *dns.Msg) (*dns.Msg, time.Duration, error)
- func (wh *Wormhole) FastTestQuery(r *dns.Msg) (*dns.Msg, time.Duration, error)
- func (wh *Wormhole) Name() string
- func (c *Wormhole) OnShutdown() error
- func (c *Wormhole) OnStartup() (err error)
- func (wh *Wormhole) ParallelQuery(r *dns.Msg) (*dns.Msg, time.Duration, error)
- func (wh *Wormhole) QueryAndWriteMsg(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error)
- func (wh *Wormhole) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error)
- func (wh *Wormhole) TestPing(address string) time.Duration
- type WormholeConfig
Constants ¶
const Config_Key_DisableAutoUpdate = "DisableAutoUpdate"
const Config_Key_Domain = "Domain"
const Config_Key_DomainKeyword = "DomainKeyword"
const Config_Key_DomainSuffix = "DomainSuffix"
const Config_Key_FileRenewalInterval = "FileRenewalInterval"
const Config_Key_HttpRenewalInterval = "HttpRenewalInterval"
const Config_Key_IgnoreDomain = "IgnoreDomain"
const Config_Key_IgnoreDomainKeyword = "IgnoreDomainKeyword"
const Config_Key_IgnoreDomainSuffix = "IgnoreDomainSuffix"
const Config_Key_IgnoreList = "IgnoreList"
const Config_Key_IgnoreRegexlistRules = "IgnoreRegexlistRules"
const Config_Key_List = "List"
const Config_Key_Policy = "Policy"
const Config_Key_RegexlistRules = "RegexlistRules"
const Config_Key_RetryCount = "RetryCount"
const Config_Key_RetryInterval = "RetryInterval"
const Config_Key_RouterOS = "ROS"
const Config_Key_RouterOS_Enabled_IPV6 = "ROS_Enabled_Ipv6"
const Config_Key_RouterOS_Timeout = "ROS_Timeout"
const Config_Key_Router_Host = "Host"
const Config_Key_Router_ListName = "ListName"
const Config_Key_Router_Password = "Password"
const Config_Key_Router_Username = "Username"
const Config_List_Key_Clash = "clash"
const Config_List_Key_Dnsmasq = "dnsmasq"
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AvgRttQueryModel ¶
type AvgRttQueryModel struct {
// contains filtered or unexported fields
}
func NewAvgRttQueryModel ¶
type QueryModel ¶
type QueryModel struct {
// contains filtered or unexported fields
}
func NewQueryModel ¶
type RouterOS ¶
type RouterOS struct {
// contains filtered or unexported fields
}
func NewRouterOS ¶
func NewRouterOS(cfg *RouterOSConfig) *RouterOS
type RouterOSConfig ¶
type RuleDomain ¶
type RuleDomain struct {
// contains filtered or unexported fields
}
RuleDomain
func NewRuleDomain ¶
func NewRuleDomain(domain string) RuleDomain
func (RuleDomain) Payload ¶
func (rd RuleDomain) Payload() string
func (RuleDomain) RuleType ¶
func (rd RuleDomain) RuleType() RuleType
type RuleDomainKeyword ¶
type RuleDomainKeyword struct {
// contains filtered or unexported fields
}
RuleDomainKeyword
func NewRuleDomainKeyword ¶
func NewRuleDomainKeyword(keyword string) RuleDomainKeyword
func (RuleDomainKeyword) Payload ¶
func (rdk RuleDomainKeyword) Payload() string
func (RuleDomainKeyword) RuleType ¶
func (rdk RuleDomainKeyword) RuleType() RuleType
type RuleDomainSuffix ¶
type RuleDomainSuffix struct {
// contains filtered or unexported fields
}
RuleSuffix
func NewRuleDomainSuffix ¶
func NewRuleDomainSuffix(domain string) RuleDomainSuffix
func (RuleDomainSuffix) Payload ¶
func (rds RuleDomainSuffix) Payload() string
func (RuleDomainSuffix) RuleType ¶
func (rds RuleDomainSuffix) RuleType() RuleType
type RuleRegex ¶
type RuleRegex struct {
// contains filtered or unexported fields
}
RuleRegex
func NewRuleRegex ¶
type StaticRuleGroup ¶
type StaticRuleGroup struct {
// contains filtered or unexported fields
}
func NewStaticRuleGroup ¶
func NewStaticRuleGroup(ruleGroup []Rule) StaticRuleGroup
func (StaticRuleGroup) Payload ¶
func (srg StaticRuleGroup) Payload() string
func (StaticRuleGroup) RuleType ¶
func (srg StaticRuleGroup) RuleType() RuleType
type SubscribeFile ¶
type SubscribeFile struct { Url string FileType SubscribeFileType // contains filtered or unexported fields }
订阅文件
type SubscribeFileType ¶
type SubscribeFileType int
const ( // clash订阅的域名列表 SubscribeFileTypeClash SubscribeFileType = iota // dnsmasq类型的文件列表 SubscribeFileTypeDnsmasq )
订阅文件类型
type SubscribeRuleGroup ¶
type SubscribeRuleGroup struct {
// contains filtered or unexported fields
}
func NewSubscribeRuleGroup ¶
func NewSubscribeRuleGroup(subscribe SubscribeFile, ruleGroup []Rule, listRenewalRetryCount int, listRenewalRetryInterval time.Duration) SubscribeRuleGroup
func (*SubscribeRuleGroup) LastUpdateTime ¶
func (srg *SubscribeRuleGroup) LastUpdateTime() int64
func (SubscribeRuleGroup) Payload ¶
func (srg SubscribeRuleGroup) Payload() string
func (SubscribeRuleGroup) RuleType ¶
func (srg SubscribeRuleGroup) RuleType() RuleType
func (*SubscribeRuleGroup) UpdateRule ¶
func (srg *SubscribeRuleGroup) UpdateRule() error
type Wormhole ¶
type Wormhole struct { StaticRuleList []Rule StaticIgnoreRuleList []Rule RuleList []SubscribeRuleGroup IgnoreRuleList []SubscribeRuleGroup Next plugin.Handler // contains filtered or unexported fields }
func NewWormhole ¶
func NewWormhole() *Wormhole
func (*Wormhole) BalancingQuery ¶
func (*Wormhole) FastTestQuery ¶
func (*Wormhole) OnShutdown ¶
OnShutdown stops all configured proxies.
func (*Wormhole) ParallelQuery ¶
func (*Wormhole) QueryAndWriteMsg ¶
type WormholeConfig ¶
type WormholeConfig struct { // 转发的dns服务器 RemoteServers []string SubscribeList []SubscribeFile // 订阅列表 DomainList []string // 自定义域名列表 DomainSuffixList []string // 自定义主域列表 DomainKeywordList []string // 自定义域名中的关键字列表 RegexlistRules []string // 用于匹配的正则表达式列表 IgnoreSubscribeList []SubscribeFile //订阅忽略的文件列表 IgnoreDomainList []string // 自定义忽略域名列表 IgnoreDomainSuffixList []string // 自定义忽略主域列表 IgnoreDomainKeywordList []string // 自定义忽略域名中的关键字列表 IgnoreRegexlistRules []string // 用于匹配忽略的正则表达式列表 Policy string HttpListRenewalInterval time.Duration //http订阅的更新间隔时间 FileListRenewalInterval time.Duration //本地文件更新间隔时间 ListRenewalRetryCount int //遇到错误以后重试的次数 ListRenewalRetryInterval time.Duration //遇到错误以后重试的间隔时间 EnableAutoUpdate bool // 是否开启自动更新 ROSConfig *RouterOSConfig }
配置文件