MCPcopy
hub / github.com/txthinking/brook / TouchBrook

Method TouchBrook

plugins/block/block.go:137–182  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

135}
136
137func (bk *Block) TouchBrook() {
138 f := brook.Resolve
139 brook.Resolve = func(network string, addr string) (net.Addr, error) {
140 var ds map[string]byte
141 var c4 []*net.IPNet
142 var c6 []*net.IPNet
143 if bk.Lock != nil {
144 bk.Lock.RLock()
145 }
146 ds = bk.Domain
147 c4 = bk.CIDR4
148 c6 = bk.CIDR6
149 if bk.Lock != nil {
150 bk.Lock.RUnlock()
151 }
152 h, _, err := net.SplitHostPort(addr)
153 if err != nil {
154 return nil, err
155 }
156 var a net.Addr
157 ip := net.ParseIP(h)
158 if ip == nil {
159 if brook.ListHasDomain(ds, strings.ToLower(h), bk.Cache) {
160 return nil, errors.New("block " + addr)
161 }
162 a, err = f(network, addr)
163 if err != nil {
164 return nil, err
165 }
166 v, ok := a.(*net.TCPAddr)
167 if ok {
168 ip = v.IP
169 }
170 if !ok {
171 ip = a.(*net.UDPAddr).IP
172 }
173 }
174 if brook.ListHasIP(c4, c6, ip, bk.Cache, bk.GeoIP) {
175 return nil, errors.New("block " + addr)
176 }
177 if a != nil {
178 return a, nil
179 }
180 return f(network, addr)
181 }
182}

Callers

nothing calls this directly

Calls 3

ListHasDomainFunction · 0.92
ListHasIPFunction · 0.92
fFunction · 0.50

Tested by

no test coverage detected