diff --git a/go.mod b/go.mod index 8d27509af..5ff0f143d 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,6 @@ module github.com/Jigsaw-Code/outline-sdk go 1.20 require ( - github.com/Jigsaw-Code/outline-sdk/x v0.0.0-20240117205330-51171d8dbfd6 github.com/eycorsican/go-tun2socks v1.16.11 github.com/google/gopacket v1.1.19 github.com/shadowsocks/go-shadowsocks2 v0.1.5 @@ -15,6 +14,7 @@ require ( require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/kr/pretty v0.1.0 // indirect + github.com/kr/text v0.2.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 // indirect golang.org/x/sys v0.15.0 // indirect diff --git a/go.sum b/go.sum index f1e6a5b4b..f1f3f92a5 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,4 @@ -github.com/Jigsaw-Code/outline-sdk/x v0.0.0-20240117205330-51171d8dbfd6 h1:Q0F+HjjoSOCVrGFn4HkjzaBR4LqQTZIuCqS6Nw2y7r0= -github.com/Jigsaw-Code/outline-sdk/x v0.0.0-20240117205330-51171d8dbfd6/go.mod h1:MeTl41RMo9izytmQUWkvulEOMEsZVbuMutAoLwAlshE= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -12,6 +11,7 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 h1:f/FNXud6gA3MNr8meMVVGxhp+QBTqY91tM8HjEuMjGg= diff --git a/tools/resolve/main.go b/tools/resolve/main.go deleted file mode 100644 index 11f23ae85..000000000 --- a/tools/resolve/main.go +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright 2023 Jigsaw Operations LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package main - -import ( - "context" - "errors" - "flag" - "fmt" - "io" - "log" - "net" - "os" - "path" - "strings" - "time" - - "github.com/Jigsaw-Code/outline-sdk/transport" - "github.com/Jigsaw-Code/outline-sdk/x/config" -) - -var debugLog log.Logger = *log.New(io.Discard, "", 0) - -func init() { - flag.Usage = func() { - fmt.Fprintf(flag.CommandLine.Output(), "Usage: %s [flags...] \n", path.Base(os.Args[0])) - flag.PrintDefaults() - } -} - -func cleanDNSError(err error, resolverAddr string) error { - dnsErr := &net.DNSError{} - if resolverAddr != "" && errors.As(err, &dnsErr) { - dnsErr.Server = resolverAddr - return dnsErr - } - return err -} - -func main() { - verboseFlag := flag.Bool("v", false, "Enable debug output") - typeFlag := flag.String("type", "A", "The type of the query (A, AAAA, CNAME, NS or TXT).") - resolverFlag := flag.String("resolver", "", "The address of the recursive DNS resolver to use in host:port format. If the port is missing, it's assumed to be 53") - transportFlag := flag.String("transport", "", "The transport for the connection to the recursive DNS resolver") - tcpFlag := flag.Bool("tcp", false, "Force TCP when querying the DNS resolver") - - flag.Parse() - if *verboseFlag { - debugLog = *log.New(os.Stderr, "[DEBUG] ", log.LstdFlags|log.Lmicroseconds|log.Lshortfile) - } - - domain := strings.TrimSpace(flag.Arg(0)) - if domain == "" { - log.Fatal("Need to pass the domain to resolve in the command-line") - } - - resolverAddr := *resolverFlag - if resolverAddr != "" && !strings.Contains(resolverAddr, ":") { - resolverAddr = net.JoinHostPort(resolverAddr, "53") - } - - var err error - var packetDialer transport.PacketDialer - if !*tcpFlag { - packetDialer, err = config.NewPacketDialer(*transportFlag) - if err != nil { - log.Fatalf("Could not create packet dialer: %v", err) - } - } - streamDialer, err := config.NewStreamDialer(*transportFlag) - if err != nil { - log.Fatalf("Could not create stream dialer: %v", err) - } - - resolver := net.Resolver{PreferGo: true} - resolver.Dial = func(ctx context.Context, network, sysResolverAddr string) (net.Conn, error) { - dialAddr := sysResolverAddr - if resolverAddr != "" { - dialAddr = resolverAddr - } - if strings.HasPrefix(network, "tcp") || *tcpFlag { - debugLog.Printf("Dial TCP: %v", dialAddr) - return streamDialer.DialStream(ctx, dialAddr) - } - debugLog.Printf("Dial UDP: %v", dialAddr) - return packetDialer.DialPacket(ctx, dialAddr) - } - - ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) - defer cancel() - switch strings.ToUpper(*typeFlag) { - case "A": - ips, err := resolver.LookupIP(ctx, "ip4", domain) - err = cleanDNSError(err, resolverAddr) - if err != nil { - log.Fatalf("Failed to lookup IPs: %v", err) - } - for _, ip := range ips { - fmt.Println(ip.String()) - } - case "AAAA": - ips, err := resolver.LookupIP(ctx, "ip6", domain) - err = cleanDNSError(err, resolverAddr) - if err != nil { - log.Fatalf("Failed to lookup IPs: %v", err) - } - for _, ip := range ips { - fmt.Println(ip.String()) - } - case "CNAME": - cname, err := resolver.LookupCNAME(ctx, domain) - err = cleanDNSError(err, resolverAddr) - if err != nil { - log.Fatalf("Failed to lookup CNAME: %v", err) - } - fmt.Println(cname) - case "NS": - nss, err := resolver.LookupNS(ctx, domain) - err = cleanDNSError(err, resolverAddr) - if err != nil { - log.Fatalf("Failed to lookup NS: %v", err) - } - for _, ns := range nss { - fmt.Println(ns.Host) - } - case "TXT": - lines, err := resolver.LookupTXT(ctx, domain) - err = cleanDNSError(err, resolverAddr) - if err != nil { - log.Fatalf("Failed to lookup TXT: %v", err) - } - for _, line := range lines { - fmt.Println(line) - } - default: - log.Fatalf("Invalid query type %v", *typeFlag) - } -} diff --git a/x/examples/fyne-proxy/go.mod b/x/examples/fyne-proxy/go.mod index 376181031..72cf65f18 100644 --- a/x/examples/fyne-proxy/go.mod +++ b/x/examples/fyne-proxy/go.mod @@ -4,13 +4,13 @@ go 1.20 require ( fyne.io/fyne/v2 v2.4.3 - github.com/Jigsaw-Code/outline-sdk/x v0.0.0-20240112224558-7294484cf816 + github.com/Jigsaw-Code/outline-sdk v0.0.12-0.20240117212231-233d1898e1db + github.com/Jigsaw-Code/outline-sdk/x v0.0.0-20240117212231-233d1898e1db ) require ( fyne.io/systray v1.10.1-0.20231115130155-104f5ef7839e // indirect github.com/BurntSushi/toml v1.3.2 // indirect - github.com/Jigsaw-Code/outline-sdk v0.0.11 // indirect github.com/akavel/rsrc v0.10.2 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/x/examples/fyne-proxy/go.sum b/x/examples/fyne-proxy/go.sum index da49719d5..7074a9e30 100644 --- a/x/examples/fyne-proxy/go.sum +++ b/x/examples/fyne-proxy/go.sum @@ -45,10 +45,10 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/Jigsaw-Code/outline-sdk v0.0.11 h1:dJ2QMQJJmQ1J4/XvJ9lWpdhg40SKNBmmKffV5wyL00I= -github.com/Jigsaw-Code/outline-sdk v0.0.11/go.mod h1:m+KaWzU05VOIdAC0MVnV0HwyzdzH4WIJ8w7eaMrPp70= -github.com/Jigsaw-Code/outline-sdk/x v0.0.0-20240112224558-7294484cf816 h1:NOoDy92LN2qGLu5s3imiAbYCxH/k6ZlE4N8eXqfZbgw= -github.com/Jigsaw-Code/outline-sdk/x v0.0.0-20240112224558-7294484cf816/go.mod h1:MeTl41RMo9izytmQUWkvulEOMEsZVbuMutAoLwAlshE= +github.com/Jigsaw-Code/outline-sdk v0.0.12-0.20240117212231-233d1898e1db h1:I1guGrgFXY/w+YWt7QNcb3nrTNts5opuPO44XlRF0xI= +github.com/Jigsaw-Code/outline-sdk v0.0.12-0.20240117212231-233d1898e1db/go.mod h1:FtzQwsbvAT55lpc4kmOaHyvfX8MFW8y7yOHL81wHOVQ= +github.com/Jigsaw-Code/outline-sdk/x v0.0.0-20240117212231-233d1898e1db h1:pVN7fcEihOgzIUVBn92y84HsXrZlaHRkUgnm7Rn7lUo= +github.com/Jigsaw-Code/outline-sdk/x v0.0.0-20240117212231-233d1898e1db/go.mod h1:VVVqAev7l5HwkQVZfs79UrXWtmU3rq76+PLAhkSvFRs= github.com/akavel/rsrc v0.10.2 h1:Zxm8V5eI1hW4gGaYsJQUhxpjkENuG91ki8B4zCrvEsw= github.com/akavel/rsrc v0.10.2/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=