mirror of
https://github.com/MetaCubeX/mihomo.git
synced 2026-01-03 03:19:00 +08:00
Some checks failed
Test / test (1.20, macos-15-intel) (push) Has been cancelled
Test / test (1.20, macos-latest) (push) Has been cancelled
Test / test (1.20, ubuntu-24.04-arm) (push) Has been cancelled
Test / test (1.20, ubuntu-latest) (push) Has been cancelled
Test / test (1.20, windows-latest) (push) Has been cancelled
Test / test (1.21, macos-15-intel) (push) Has been cancelled
Test / test (1.21, macos-latest) (push) Has been cancelled
Test / test (1.21, ubuntu-24.04-arm) (push) Has been cancelled
Test / test (1.21, ubuntu-latest) (push) Has been cancelled
Test / test (1.21, windows-latest) (push) Has been cancelled
Test / test (1.22, macos-15-intel) (push) Has been cancelled
Test / test (1.22, macos-latest) (push) Has been cancelled
Test / test (1.22, ubuntu-24.04-arm) (push) Has been cancelled
Test / test (1.22, ubuntu-latest) (push) Has been cancelled
Test / test (1.22, windows-latest) (push) Has been cancelled
Test / test (1.23, macos-15-intel) (push) Has been cancelled
Test / test (1.23, macos-latest) (push) Has been cancelled
Test / test (1.23, ubuntu-24.04-arm) (push) Has been cancelled
Test / test (1.23, ubuntu-latest) (push) Has been cancelled
Test / test (1.23, windows-latest) (push) Has been cancelled
Test / test (1.24, macos-15-intel) (push) Has been cancelled
Test / test (1.24, macos-latest) (push) Has been cancelled
Test / test (1.24, ubuntu-24.04-arm) (push) Has been cancelled
Test / test (1.24, ubuntu-latest) (push) Has been cancelled
Test / test (1.24, windows-latest) (push) Has been cancelled
Test / test (1.25, macos-15-intel) (push) Has been cancelled
Test / test (1.25, macos-latest) (push) Has been cancelled
Test / test (1.25, ubuntu-24.04-arm) (push) Has been cancelled
Test / test (1.25, ubuntu-latest) (push) Has been cancelled
Test / test (1.25, windows-latest) (push) Has been cancelled
Test / test (1.26.0-rc.1, macos-15-intel) (push) Has been cancelled
Test / test (1.26.0-rc.1, macos-latest) (push) Has been cancelled
Test / test (1.26.0-rc.1, ubuntu-24.04-arm) (push) Has been cancelled
Test / test (1.26.0-rc.1, ubuntu-latest) (push) Has been cancelled
Test / test (1.26.0-rc.1, windows-latest) (push) Has been cancelled
Trigger CMFA Update / trigger-CMFA-update (push) Has been cancelled
45 lines
820 B
Go
45 lines
820 B
Go
package fakeip
|
|
|
|
import (
|
|
C "github.com/metacubex/mihomo/constant"
|
|
)
|
|
|
|
const (
|
|
UseFakeIP = "fake-ip"
|
|
UseRealIP = "real-ip"
|
|
)
|
|
|
|
type Skipper struct {
|
|
Rules []C.Rule
|
|
Host []C.DomainMatcher
|
|
Mode C.FilterMode
|
|
}
|
|
|
|
// ShouldSkipped return if domain should be skipped
|
|
func (p *Skipper) ShouldSkipped(domain string) bool {
|
|
if len(p.Rules) > 0 {
|
|
metadata := &C.Metadata{Host: domain}
|
|
for _, rule := range p.Rules {
|
|
if matched, action := rule.Match(metadata, C.RuleMatchHelper{}); matched {
|
|
return action == UseRealIP
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
should := p.shouldSkipped(domain)
|
|
if p.Mode == C.FilterWhiteList {
|
|
return !should
|
|
}
|
|
return should
|
|
}
|
|
|
|
func (p *Skipper) shouldSkipped(domain string) bool {
|
|
for _, matcher := range p.Host {
|
|
if matcher.MatchDomain(domain) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|