mirror of
https://github.com/xvzc/SpoofDPI.git
synced 2025-01-03 21:05:24 +00:00
commit
c06aeda497
@ -7,6 +7,7 @@ import (
|
|||||||
"runtime"
|
"runtime"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
|
"github.com/xvzc/SpoofDPI/doh"
|
||||||
"github.com/xvzc/SpoofDPI/proxy"
|
"github.com/xvzc/SpoofDPI/proxy"
|
||||||
"github.com/xvzc/SpoofDPI/util"
|
"github.com/xvzc/SpoofDPI/util"
|
||||||
)
|
)
|
||||||
@ -14,13 +15,15 @@ import (
|
|||||||
func main() {
|
func main() {
|
||||||
port, dns, debug := util.ParseArgs()
|
port, dns, debug := util.ParseArgs()
|
||||||
|
|
||||||
p := proxy.New(port, dns, runtime.GOOS, debug)
|
p := proxy.New(port, runtime.GOOS, debug)
|
||||||
p.PrintWelcome()
|
p.PrintWelcome()
|
||||||
|
|
||||||
if err := p.SetOsProxy(); err != nil {
|
if err := p.SetOsProxy(); err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
doh.Init(dns)
|
||||||
|
|
||||||
go p.Start()
|
go p.Start()
|
||||||
|
|
||||||
// Handle signals
|
// Handle signals
|
||||||
|
36
doh/dns.go
Normal file
36
doh/dns.go
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
package doh
|
||||||
|
|
||||||
|
import (
|
||||||
|
"sync"
|
||||||
|
|
||||||
|
"github.com/babolivier/go-doh-client"
|
||||||
|
)
|
||||||
|
|
||||||
|
var resolver *doh.Resolver
|
||||||
|
var once sync.Once
|
||||||
|
|
||||||
|
func Init(dns string) {
|
||||||
|
getInstance().Host = dns
|
||||||
|
}
|
||||||
|
|
||||||
|
func Lookup(domain string) (string, error) {
|
||||||
|
a, _, err := resolver.LookupA(domain)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
ip := a[0].IP4
|
||||||
|
|
||||||
|
return ip, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func getInstance() *doh.Resolver {
|
||||||
|
once.Do(func() {
|
||||||
|
resolver = &doh.Resolver{
|
||||||
|
Host: "",
|
||||||
|
Class: doh.IN,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
return resolver
|
||||||
|
}
|
14
proxy/doh.go
14
proxy/doh.go
@ -1,14 +0,0 @@
|
|||||||
package proxy
|
|
||||||
|
|
||||||
func (p *Proxy) DnsLookupOverHttps(domain string) (string, error) {
|
|
||||||
// Perform a A lookup on example.com
|
|
||||||
|
|
||||||
a, _, err := p.DNS.LookupA(domain)
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
ip := a[0].IP4
|
|
||||||
|
|
||||||
return ip, nil
|
|
||||||
}
|
|
@ -6,22 +6,20 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/babolivier/go-doh-client"
|
|
||||||
"github.com/pterm/pterm"
|
"github.com/pterm/pterm"
|
||||||
|
"github.com/xvzc/SpoofDPI/doh"
|
||||||
"github.com/xvzc/SpoofDPI/packet"
|
"github.com/xvzc/SpoofDPI/packet"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Proxy struct {
|
type Proxy struct {
|
||||||
Port string
|
Port string
|
||||||
DNS doh.Resolver
|
|
||||||
OS string
|
OS string
|
||||||
Debug bool
|
Debug bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(port string, dns string, os string, debug bool) *Proxy {
|
func New(port string, os string, debug bool) *Proxy {
|
||||||
return &Proxy{
|
return &Proxy{
|
||||||
Port: port,
|
Port: port,
|
||||||
DNS: doh.Resolver{Host: dns, Class: doh.IN},
|
|
||||||
OS: os,
|
OS: os,
|
||||||
Debug: debug,
|
Debug: debug,
|
||||||
}
|
}
|
||||||
@ -34,7 +32,6 @@ func (p *Proxy) PrintWelcome() {
|
|||||||
|
|
||||||
pterm.DefaultBulletList.WithItems([]pterm.BulletListItem{
|
pterm.DefaultBulletList.WithItems([]pterm.BulletListItem{
|
||||||
{Level: 0, Text: "PORT : " + p.Port},
|
{Level: 0, Text: "PORT : " + p.Port},
|
||||||
{Level: 0, Text: "DNS : " + p.DNS.Host},
|
|
||||||
{Level: 0, Text: "DEBUG : " + fmt.Sprint(p.Debug)},
|
{Level: 0, Text: "DEBUG : " + fmt.Sprint(p.Debug)},
|
||||||
}).Render()
|
}).Render()
|
||||||
}
|
}
|
||||||
@ -76,7 +73,7 @@ func (p *Proxy) Start() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Dns lookup over https
|
// Dns lookup over https
|
||||||
ip, err := p.DnsLookupOverHttps(r.Domain)
|
ip, err := doh.Lookup(r.Domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Error looking up dns: "+r.Domain, err)
|
log.Println("Error looking up dns: "+r.Domain, err)
|
||||||
return
|
return
|
||||||
|
Loading…
Reference in New Issue
Block a user