mirror of
https://github.com/fumiama/terasu.git
synced 2026-06-30 09:40:24 +08:00
chore: make lint happy
This commit is contained in:
11
cmd/main.go
11
cmd/main.go
@@ -10,30 +10,31 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/fumiama/terasu/http2"
|
"github.com/fumiama/terasu/http2"
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if len(os.Args) != 2 {
|
if len(os.Args) != 2 {
|
||||||
fmt.Println("Usage:", os.Args[0], "url")
|
logrus.Infoln("Usage:", os.Args[0], "url")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !strings.HasPrefix(os.Args[1], "https://") {
|
if !strings.HasPrefix(os.Args[1], "https://") {
|
||||||
fmt.Println("ERROR: invalid url")
|
logrus.Errorln("invalid url")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
resp, err := http2.Get(os.Args[1])
|
resp, err := http2.Get(os.Args[1])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("ERROR:", err)
|
logrus.Errorln(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
if resp.StatusCode != http.StatusOK {
|
if resp.StatusCode != http.StatusOK {
|
||||||
fmt.Println("ERROR:", "status code:", resp.StatusCode)
|
logrus.Errorln("status code:", resp.StatusCode)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
data, err := io.ReadAll(resp.Body)
|
data, err := io.ReadAll(resp.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("ERROR:", err)
|
logrus.Errorln(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
fmt.Print(string(data))
|
fmt.Print(string(data))
|
||||||
|
|||||||
3
conn.go
3
conn.go
@@ -2,8 +2,6 @@ package terasu
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"encoding/hex"
|
|
||||||
"fmt"
|
|
||||||
"io"
|
"io"
|
||||||
"net"
|
"net"
|
||||||
"sync"
|
"sync"
|
||||||
@@ -115,7 +113,6 @@ func (conn *Conn) ReadFrom(r io.Reader) (n int64, err error) {
|
|||||||
|
|
||||||
// split
|
// split
|
||||||
if x <= 4 { // first is in header range
|
if x <= 4 { // first is in header range
|
||||||
fmt.Println(hex.EncodeToString(header[:]))
|
|
||||||
// first
|
// first
|
||||||
binary.BigEndian.PutUint16(header[3:5], uint16(x))
|
binary.BigEndian.PutUint16(header[3:5], uint16(x))
|
||||||
bd.move(header[:5+x])
|
bd.move(header[:5+x])
|
||||||
|
|||||||
22
dns/dns.go
22
dns/dns.go
@@ -81,16 +81,16 @@ func (ds *dnsstat) disable(reEnable time.Duration) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// DNSList is a bundle of DNSs
|
// List is a bundle of DNSs
|
||||||
type DNSList struct {
|
type List struct {
|
||||||
sync.RWMutex
|
sync.RWMutex
|
||||||
hostseq []string
|
hostseq []string
|
||||||
m map[string][]*dnsstat
|
m map[string][]*dnsstat
|
||||||
b map[string][]string
|
b map[string][]string
|
||||||
}
|
}
|
||||||
|
|
||||||
// DNSConfig is the user config
|
// Config is the user config
|
||||||
type DNSConfig struct {
|
type Config struct {
|
||||||
Servers map[string][]string `yaml:"Servers"` // Servers map[dot.com]ip:ports
|
Servers map[string][]string `yaml:"Servers"` // Servers map[dot.com]ip:ports
|
||||||
Fallbacks map[string][]string `yaml:"Fallbacks"` // Fallbacks map[domain]ips
|
Fallbacks map[string][]string `yaml:"Fallbacks"` // Fallbacks map[domain]ips
|
||||||
}
|
}
|
||||||
@@ -111,7 +111,7 @@ func hasfallback(lst []string, a string) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add ...
|
// Add ...
|
||||||
func (ds *DNSList) Add(c *DNSConfig) {
|
func (ds *List) Add(c *Config) {
|
||||||
ds.Lock()
|
ds.Lock()
|
||||||
defer ds.Unlock()
|
defer ds.Unlock()
|
||||||
addList := map[string][]*dnsstat{}
|
addList := map[string][]*dnsstat{}
|
||||||
@@ -147,7 +147,7 @@ func (ds *DNSList) Add(c *DNSConfig) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// rangeHosts in sequence, please use in rlock
|
// rangeHosts in sequence, please use in rlock
|
||||||
func (ds *DNSList) rangeHosts(fn func(host string, addrs []*dnsstat) error) error {
|
func (ds *List) rangeHosts(fn func(host string, addrs []*dnsstat) error) error {
|
||||||
for _, h := range ds.hostseq {
|
for _, h := range ds.hostseq {
|
||||||
if err := fn(h, ds.m[h]); err != nil {
|
if err := fn(h, ds.m[h]); err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -156,7 +156,7 @@ func (ds *DNSList) rangeHosts(fn func(host string, addrs []*dnsstat) error) erro
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ds *DNSList) lookupHostDoH(ctx context.Context, host string) (hosts []string, err error) {
|
func (ds *List) lookupHostDoH(ctx context.Context, host string) (hosts []string, err error) {
|
||||||
ds.RLock()
|
ds.RLock()
|
||||||
defer ds.RUnlock()
|
defer ds.RUnlock()
|
||||||
// try to use DoH first
|
// try to use DoH first
|
||||||
@@ -195,7 +195,7 @@ func (ds *DNSList) lookupHostDoH(ctx context.Context, host string) (hosts []stri
|
|||||||
}
|
}
|
||||||
|
|
||||||
// DialContext ...
|
// DialContext ...
|
||||||
func (ds *DNSList) DialContext(ctx context.Context, dialer *net.Dialer) (tlsConn *tls.Conn, err error) {
|
func (ds *List) DialContext(ctx context.Context, dialer *net.Dialer) (tlsConn *tls.Conn, err error) {
|
||||||
err = ErrNoDNSAvailable
|
err = ErrNoDNSAvailable
|
||||||
|
|
||||||
if dialer == nil {
|
if dialer == nil {
|
||||||
@@ -270,7 +270,7 @@ func (ds *DNSList) DialContext(ctx context.Context, dialer *net.Dialer) (tlsConn
|
|||||||
}
|
}
|
||||||
|
|
||||||
// IPv6Servers should only be used when IPv6 is available
|
// IPv6Servers should only be used when IPv6 is available
|
||||||
var IPv6Servers = DNSList{
|
var IPv6Servers = List{
|
||||||
hostseq: []string{
|
hostseq: []string{
|
||||||
"dot.sb", "dns.google", "cloudflare-dns.com", "dns.opendns.com", "dns10.quad9.net",
|
"dot.sb", "dns.google", "cloudflare-dns.com", "dns.opendns.com", "dns10.quad9.net",
|
||||||
},
|
},
|
||||||
@@ -307,7 +307,7 @@ var IPv6Servers = DNSList{
|
|||||||
}
|
}
|
||||||
|
|
||||||
// IPv4Servers is the default server set
|
// IPv4Servers is the default server set
|
||||||
var IPv4Servers = DNSList{
|
var IPv4Servers = List{
|
||||||
hostseq: []string{
|
hostseq: []string{
|
||||||
"dot.sb", "dns.google", "cloudflare-dns.com", "dns.opendns.com", "dns10.quad9.net",
|
"dot.sb", "dns.google", "cloudflare-dns.com", "dns.opendns.com", "dns10.quad9.net",
|
||||||
},
|
},
|
||||||
@@ -346,7 +346,7 @@ var IPv4Servers = DNSList{
|
|||||||
// DefaultResolver ...
|
// DefaultResolver ...
|
||||||
var DefaultResolver = &net.Resolver{
|
var DefaultResolver = &net.Resolver{
|
||||||
PreferGo: true,
|
PreferGo: true,
|
||||||
Dial: func(ctx context.Context, nw, _ string) (net.Conn, error) {
|
Dial: func(ctx context.Context, _, _ string) (net.Conn, error) {
|
||||||
if ip.IsIPv6Available {
|
if ip.IsIPv6Available {
|
||||||
return IPv6Servers.DialContext(ctx, nil)
|
return IPv6Servers.DialContext(ctx, nil)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,17 +77,17 @@ func TestBadDNS(t *testing.T) {
|
|||||||
IPv4Servers.m = dotv4serversbak
|
IPv4Servers.m = dotv4serversbak
|
||||||
}()
|
}()
|
||||||
if ip.IsIPv6Available {
|
if ip.IsIPv6Available {
|
||||||
IPv6Servers = DNSList{
|
IPv6Servers = List{
|
||||||
m: map[string][]*dnsstat{},
|
m: map[string][]*dnsstat{},
|
||||||
}
|
}
|
||||||
IPv6Servers.Add(&DNSConfig{
|
IPv6Servers.Add(&Config{
|
||||||
Servers: map[string][]string{"test.bad.host": {"169.254.122.111"}},
|
Servers: map[string][]string{"test.bad.host": {"169.254.122.111"}},
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
IPv4Servers = DNSList{
|
IPv4Servers = List{
|
||||||
m: map[string][]*dnsstat{},
|
m: map[string][]*dnsstat{},
|
||||||
}
|
}
|
||||||
IPv4Servers.Add(&DNSConfig{
|
IPv4Servers.Add(&Config{
|
||||||
Servers: map[string][]string{"test.bad.host": {"169.254.122.111:853"}},
|
Servers: map[string][]string{"test.bad.host": {"169.254.122.111:853"}},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -101,7 +101,7 @@ func TestBadDNS(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ds *DNSList) test() {
|
func (ds *List) test() {
|
||||||
ds.RLock()
|
ds.RLock()
|
||||||
defer ds.RUnlock()
|
defer ds.RUnlock()
|
||||||
_ = ds.rangeHosts(func(host string, addrs []*dnsstat) error {
|
_ = ds.rangeHosts(func(host string, addrs []*dnsstat) error {
|
||||||
|
|||||||
Reference in New Issue
Block a user