From 2d997dcdcfb9e7c56c6f05734c334cdb6f09f059 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Tue, 16 Apr 2024 15:27:06 +0900 Subject: [PATCH] fix(dns) remove dns.alidns.com --- .github/workflows/release.yml | 4 ++-- .github/workflows/test.yml | 8 ++++---- Makefile | 18 +++++++++++------- build/test.c | 6 ++++-- dns.go | 12 ++---------- dns_test.go | 16 +++++++++------- go.mod | 2 +- go.sum | 4 ++-- http.go | 13 +++++++++---- http_test.go | 4 +++- 10 files changed, 47 insertions(+), 40 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 92f0a75..ee9aedf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -43,10 +43,10 @@ jobs: - name: Build Libraries env: - NDK_TOOLCHAIN: ${{ steps.setup-ndk.outputs.ndk-path }} + NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} BUILD_MACHINE: linux run: | - echo NDK path is $NDK_TOOLCHAIN + echo NDK path is $NDK_HOME make -e - name: Upload Binaries to Release diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 177e72b..d4668fd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -35,16 +35,16 @@ jobs: - name: Test Build env: - NDK_TOOLCHAIN: ${{ steps.setup-ndk.outputs.ndk-path }} + NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} BUILD_MACHINE: linux run: | - echo NDK path is $NDK_TOOLCHAIN - ls $NDK_TOOLCHAIN + echo NDK path is $NDK_HOME + ls $NDK_HOME make -e - name: Build and Run Tests env: - NDK_TOOLCHAIN: ${{ steps.setup-ndk.outputs.ndk-path }} + NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} BUILD_MACHINE: linux GOARCH: amd64 run: make -e runtest diff --git a/Makefile b/Makefile index d03b985..1cc4f80 100644 --- a/Makefile +++ b/Makefile @@ -13,12 +13,12 @@ TARGET_ARCH := aarch64 # optional: armv7a i686 x86_64 CGO_ENABLED := 1 GO_SRC := $(shell find . -name '*.go' | grep -v '_test.go$$') -NDK_TOOLCHAIN := ~/Library/Android/sdk/ndk/$(NDK_VERSION)/toolchains/llvm/prebuilt/$(BUILD_MACHINE)-$(BUILD_ARCH) +NDK_HOME := ~/Library/Android/sdk/ndk/$(NDK_VERSION) +NDK_TOOLCHAIN := $(NDK_HOME)/toolchains/llvm/prebuilt/$(BUILD_MACHINE)-$(BUILD_ARCH) CC := $(NDK_TOOLCHAIN)/bin/$(TARGET_ARCH)-linux-$(TARGET_SDK)-clang -TEST_OUTPUT = '$(shell cd $(BUILD_PATH) && ./test | head -c 12)' -TEST_EXPECTED = '{"code":200,' +TEST_EXPECTED := '{"code":200,' -all: clean +all: @BUILD_PATH=$(BUILD_PATH)/aarch64 TARGET_ARCH=aarch64 GOARCH=arm64 $(MAKE) -e shared @BUILD_PATH=$(BUILD_PATH)/armv7a TARGET_ARCH=armv7a GOARCH=arm TARGET_SDK=androideabi23 $(MAKE) -e shared @BUILD_PATH=$(BUILD_PATH)/i686 TARGET_ARCH=i686 GOARCH=amd64 $(MAKE) -e shared @@ -32,11 +32,15 @@ shared: $(GO_SRC) dir tidy test: dir @GOOS=$(BUILD_MACHINE) CC=cc NDK_TOOLCHAIN="" $(MAKE) -e shared cc -o $(BUILD_PATH)/test $(BUILD_PATH)/test.c -l$(PROJECT_NAME) -L$(BUILD_PATH) -runtest: test - @if [ $(TEST_OUTPUT) = $(TEST_EXPECTED) ]; then \ +runtest: + @if [ ! -f "$(BUILD_PATH)/test" ]; then \ + $(MAKE) -e test; \ + fi + @TEST_OUTPUT=$$(cd $(BUILD_PATH) && ./test | head -c 12); \ + if [ $$TEST_OUTPUT = $(TEST_EXPECTED) ]; then \ echo "test succeeded."; \ else \ - echo "test failed, expected:" $(TEST_EXPECTED) "but got:" $(TEST_OUTPUT); \ + echo "test failed, expected:" $(TEST_EXPECTED) "but got:" $$TEST_OUTPUT; \ fi tidy: go mod tidy diff --git a/build/test.c b/build/test.c index c157b3e..28bb045 100644 --- a/build/test.c +++ b/build/test.c @@ -3,11 +3,13 @@ #include "libcomandy.h" int main() { - puts(request("{\"method\":\"GET\"," + char* para = "{\"method\":\"GET\"," "\"url\":\"https://i.pximg.net/img-master/img/2012/04/04/21/24/46/26339586_p0_master1200.jpg\"," "\"headers\":{" "\"Referer\":\"https://www.pixiv.net/\"," "\"User-Agent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0\"" "}" - "}")); + "}"; + fputs(para, stderr); fputs("\n", stderr); + puts(request(para)); } diff --git a/dns.go b/dns.go index cec221a..f371305 100644 --- a/dns.go +++ b/dns.go @@ -72,8 +72,8 @@ func (ds *dnsservers) dial(ctx context.Context) (tlsConn *tls.Conn, err error) { addr.E = false // no need to acquire write lock continue } - tlsConn = terasu.Use(tls.Client(conn, &tls.Config{ServerName: host})) - err = tlsConn.HandshakeContext(ctx) + tlsConn = tls.Client(conn, &tls.Config{ServerName: host}) + err = terasu.Use(tlsConn).HandshakeContext(ctx) if err == nil { return } @@ -86,10 +86,6 @@ func (ds *dnsservers) dial(ctx context.Context) (tlsConn *tls.Conn, err error) { var dotv6servers = dnsservers{ m: map[string][]*dnsstat{ - "dns.alidns.com": { - {"[2400:3200::1]:853", true}, - {"[2400:3200:baba::1]:853", true}, - }, "dot.sb": { {"[2a09::]:853", true}, {"[2a11::]:853", true}, @@ -115,10 +111,6 @@ var dotv6servers = dnsservers{ var dotv4servers = dnsservers{ m: map[string][]*dnsstat{ - "dns.alidns.com": { - {"223.5.5.5:853", true}, - {"223.6.6.6:853", true}, - }, "dot.sb": { {"185.222.222.222:853", true}, {"45.11.45.11:853", true}, diff --git a/dns_test.go b/dns_test.go index 0f9f10a..3d075e5 100644 --- a/dns_test.go +++ b/dns_test.go @@ -3,6 +3,7 @@ package main import ( "context" "crypto/tls" + "fmt" "net" "testing" @@ -20,12 +21,12 @@ func TestResolver(t *testing.T) { func TestDNS(t *testing.T) { if canUseIPv6.Get() { - dotv6servers.test(t) + dotv6servers.test() } - dotv4servers.test(t) + dotv4servers.test() } -func (ds *dnsservers) test(t *testing.T) { +func (ds *dnsservers) test() { ds.RLock() defer ds.RUnlock() for host, addrs := range ds.m { @@ -33,18 +34,19 @@ func (ds *dnsservers) test(t *testing.T) { if !addr.E { continue } + fmt.Println("dial:", host, addr.A) conn, err := net.Dial("tcp", addr.A) if err != nil { continue } - tlsConn := terasu.Use(tls.Client(conn, &tls.Config{ServerName: host})) - err = tlsConn.Handshake() + tlsConn := tls.Client(conn, &tls.Config{ServerName: host}) + err = terasu.Use(tlsConn).Handshake() _ = tlsConn.Close() if err == nil { - t.Log("succ:", host, addr.A) + fmt.Println("succ:", host, addr.A) continue } - t.Fatal("fail:", host, addr.A) + fmt.Println("fail:", host, addr.A) } } } diff --git a/go.mod b/go.mod index 8bb4842..3f20114 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.22.1 require ( github.com/FloatTech/ttl v0.0.0-20230307105452-d6f7b2b647d1 github.com/RomiChan/syncx v0.0.0-20221202055724-5f842c53020e - github.com/fumiama/terasu v0.0.0-20240415131749-e65650a52c3c + github.com/fumiama/terasu v0.0.0-20240416061047-62d3c9f6be80 golang.org/x/net v0.24.0 ) diff --git a/go.sum b/go.sum index 5d63b53..56ab9bd 100644 --- a/go.sum +++ b/go.sum @@ -4,8 +4,8 @@ github.com/RomiChan/syncx v0.0.0-20221202055724-5f842c53020e h1:wR3MXQ3VbUlPKOOU github.com/RomiChan/syncx v0.0.0-20221202055724-5f842c53020e/go.mod h1:vD7Ra3Q9onRtojoY5sMCLQ7JBgjUsrXDnDKyFxqpf9w= 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= -github.com/fumiama/terasu v0.0.0-20240415131749-e65650a52c3c h1:RxkHkeanPDrZrEEcUcosgBULmL8UDkSasvwP+jpdIZQ= -github.com/fumiama/terasu v0.0.0-20240415131749-e65650a52c3c/go.mod h1:BFl0X1+rGJf8bLHl/kO+v05ryHrj/R4kyCrK89NvegA= +github.com/fumiama/terasu v0.0.0-20240416061047-62d3c9f6be80 h1:O1JJZzcd5ggUw/9X8V9KxBZ9JZGWFmX/r1q2TPg+pZQ= +github.com/fumiama/terasu v0.0.0-20240416061047-62d3c9f6be80/go.mod h1:BFl0X1+rGJf8bLHl/kO+v05ryHrj/R4kyCrK89NvegA= 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/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= diff --git a/http.go b/http.go index 8df0090..ee7d003 100644 --- a/http.go +++ b/http.go @@ -69,8 +69,8 @@ var cli = comandyClient(http.Client{ if err != nil { continue } - tlsConn = terasu.Use(tls.Client(conn, cfg)) - err = tlsConn.HandshakeContext(ctx) + tlsConn = tls.Client(conn, cfg) + err = terasu.Use(tlsConn).HandshakeContext(ctx) if err == nil { break } @@ -105,8 +105,14 @@ func (r *capsule) printstrerr(err string) string { return buf.String() } -func (cli *comandyClient) request(para string) string { +func (cli *comandyClient) request(para string) (ret string) { r := capsule{} + defer func() { + err := recover() + if err != nil { + ret = r.printstrerr(fmt.Sprint()) + } + }() wg := sync.WaitGroup{} wg.Add(1) go func() { @@ -147,7 +153,6 @@ func (cli *comandyClient) request(para string) string { return r.printstrerr("unsupported H type " + reflect.ValueOf(x).Type().Name()) } } - fmt.Println(r.U) wg.Wait() resp, err := (*http.Client)(cli).Do(req) if err != nil { diff --git a/http_test.go b/http_test.go index 1f6ed00..28a580c 100644 --- a/http_test.go +++ b/http_test.go @@ -28,8 +28,10 @@ func TestClientGet(t *testing.T) { if err != nil { t.Fatal(err) } + if len(data) == 0 { + t.Fail() + } t.Log(bytesToString(data)) - t.Fail() } func TestRequest(t *testing.T) {