From 2e05d7cf2164055b78acd433b49ab36fe6bd6591 Mon Sep 17 00:00:00 2001 From: Page Fault Date: Sun, 6 Sep 2020 03:33:47 +0000 Subject: [PATCH] #151, fix forward proxy, bump go to 1.15 --- .github/workflows/dev-build.yml | 2 +- .github/workflows/release-build.yml | 2 +- Makefile | 6 +- api/service/server_test.go | 196 ++++++++++++------------- go.mod | 2 +- test/scenario/proxy_test.go | 90 ++++++------ tunnel/mux/mux_test.go | 2 + tunnel/router/client.go | 3 +- tunnel/shadowsocks/shadowsocks_test.go | 2 + tunnel/simplesocks/simplesocks_test.go | 2 + tunnel/tls/tls_test.go | 3 + tunnel/transport/client.go | 9 +- tunnel/transport/transport_test.go | 7 + tunnel/trojan/trojan_test.go | 2 + tunnel/websocket/tunnel.go | 3 +- tunnel/websocket/websocket_test.go | 3 + 16 files changed, 180 insertions(+), 154 deletions(-) diff --git a/.github/workflows/dev-build.yml b/.github/workflows/dev-build.yml index ecc1e82..2306019 100644 --- a/.github/workflows/dev-build.yml +++ b/.github/workflows/dev-build.yml @@ -10,7 +10,7 @@ jobs: build: strategy: matrix: - go-version: [1.14.x] + go-version: [1.15.x] platform: [ubuntu-latest, windows-latest, macos-latest] runs-on: ${{ matrix.platform }} steps: diff --git a/.github/workflows/release-build.yml b/.github/workflows/release-build.yml index c6a992f..ef19e3d 100644 --- a/.github/workflows/release-build.yml +++ b/.github/workflows/release-build.yml @@ -10,7 +10,7 @@ jobs: - name: Install Go uses: actions/setup-go@v1 with: - go-version: 1.14.x + go-version: 1.15.x - name: Checkout code uses: actions/checkout@v2 - name: Checkout tag diff --git a/Makefile b/Makefile index 2eab8d2..72353bd 100644 --- a/Makefile +++ b/Makefile @@ -62,7 +62,7 @@ release: geosite.dat geoip.dat darwin-amd64.zip linux-386.zip linux-amd64.zip \ linux-arm.zip linux-armv5.zip linux-armv6.zip linux-armv7.zip linux-armv8.zip \ linux-mips-softfloat.zip linux-mips-hardfloat.zip linux-mipsle-softfloat.zip linux-mipsle-hardfloat.zip \ linux-mips64.zip linux-mips64le.zip freebsd-386.zip freebsd-amd64.zip \ - windows-386.zip windows-amd64.zip + windows-386.zip windows-amd64.zip windows-arm.zip darwin-amd64: mkdir -p $(BUILD_DIR)/$@ @@ -135,3 +135,7 @@ windows-386: windows-amd64: mkdir -p $(BUILD_DIR)/$@ GOARCH=amd64 GOOS=windows $(GOBUILD)/$@ + +windows-arm: + mkdir -p $(BUILD_DIR)/$@ + GOARCH=arm GOOS=windows $(GOBUILD)/$@ \ No newline at end of file diff --git a/api/service/server_test.go b/api/service/server_test.go index cf94a57..521b96f 100644 --- a/api/service/server_test.go +++ b/api/service/server_test.go @@ -203,112 +203,112 @@ func TestTLS(t *testing.T) { conn.Close() } -func init() { - var serverCert = ` +var serverCert = ` -----BEGIN CERTIFICATE----- -MIIDZTCCAk0CFFphZh018B5iAD9F5fV4y0AlD0LxMA0GCSqGSIb3DQEBCwUAMG8x -CzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARNYXJzMRMwEQYDVQQHDAppVHJhbnN3YXJw -MRMwEQYDVQQKDAppVHJhbnN3YXJwMRMwEQYDVQQLDAppVHJhbnN3YXJwMRIwEAYD -VQQDDAlsb2NhbGhvc3QwHhcNMjAwMzMxMTAwMDUxWhcNMzAwMzI5MTAwMDUxWjBv -MQswCQYDVQQGEwJVUzENMAsGA1UECAwETWFyczETMBEGA1UEBwwKaVRyYW5zd2Fy -cDETMBEGA1UECgwKaVRyYW5zd2FycDETMBEGA1UECwwKaVRyYW5zd2FycDESMBAG -A1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA -ml44fThYMkCcT627o7ibEs7mq2WOhImjDwYijYJ1684BatrCsHJNcw8PJGTuP+tg -GdngmALjA3l+RipjaE/UK4FJrAjruphA/hOCjZfWqk8KBR4qk0OltxCMWJlp/XCM -9ny1ogFdWUlBbqThs4NWSOUESgxf/Be2njeiOrngGR31qxSiLCLBvafIhKqq/4av -Rlx0Ht770uvF97MlAj1ASAvzTZICHAfUZxEdWl0J4MBbG7SNcnMBbyAF+s60eFTa -4RGMfRGnUa2Fzz/gfjhvfSIGeLQ3JRG6sl6jkc5xe0PZzhq3UNpK0gtQ48yy9CSP -neZnrynoKks7XC2bizsr3QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAHS/xuG5+F -yGU3N6V4kv+HbKqHaXNOq4zKVsCc1k7vg4MFFpKUJKxtJYooCI8n2ypp5XRUTIGQ -bmEbVcIPqm9Rf/4vHtF0falNCwieAbXDkiEHoykRmmU1UE/ccPA7X8NO9aVLJAJO -N2Li8MH0Ixgs02pQH56eyGKoRBWPR5C3ETQ9Leqvazg6Dn1iJWvmfF0mOte5228s -mZJOntF9t8MZOJdIWGdrUHn6euRfhd0btkmL/NUDzeCTwJcuPORLxkBbCP5mTC6G -GnLS5Z4oRYgCgvT2pLtcM0r48hYjwgjXFQ4zalkW6YI9LPpqwwMhhOzINlXjBaDi -Haz8uKI4EciU +MIIC+TCCAeGgAwIBAgIQAZ1MkNXl76ABOPPQ6ci25zANBgkqhkiG9w0BAQsFADAS +MRAwDgYDVQQKEwdBY21lIENvMB4XDTIwMDkwNjAzMTM1NVoXDTIxMDkwNjAzMTM1 +NVowEjEQMA4GA1UEChMHQWNtZSBDbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAJrgYRlmw0851xp1/OWN4b/gQsKc1TmTaMcN+gDX8w2RWfgOOGymeWDJ +QaTu1G6XHjuvW3sqZGixlRtUJKnmldiwpX0ZY00Ce15fgQHZ85uc3rnFjdkeaYFj +KXN7Xx0QZTQjR5N3W5oVvwKRXe9ATwtOKregSJxCMv8P6OWYH8SwR8GsZnUyvKYR +7JodTXpw7pIL4yNx+QETg537y0TXVFpVt0/H9OoKmY/vsIWVWkKOY4nre9XxNf/p +ABWxYy5n1CKTssLWblJs/lSSPfRxCKUnrBcHwr8ZvLwZSvVktLWr0DnurdfSXOSy +nGvF19q7BpB47ZDTca4V95UtqgfquwUCAwEAAaNLMEkwDgYDVR0PAQH/BAQDAgWg +MBMGA1UdJQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwFAYDVR0RBA0wC4IJ +bG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQBzaEBQs2bjx0trJxDoKK5xFDUX +mhhVOlparYS04WG3q18r9qfcvXDv3DOmzJDAnSldGmHad/ba6uLDuGEtuIYdMK9u +CpQVaLsNsjIeSika7l0fbQ7XBAJzIHkQHF8dGS3qyzagyCLiRuV2qT5v+p6X4tbp +PY2raoobm5hiscLk540mAAboz+IM1nTGuxD+XUh9znnGJhiKVoNnWhhXLHQK3Lwd +Mct/q+LkMaVHgT/r5LBMbk/jPluvgN0VJ6FnEw1JmotduJd+f80Syp4qccZmupEe +zNXfXCPNcNXeSbAwWnsFeiUrU5YNqPobhaiZXMGnoFb4Cufb57AbNPNDch0x -----END CERTIFICATE----- ` - var serverKey = ` ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEAml44fThYMkCcT627o7ibEs7mq2WOhImjDwYijYJ1684BatrC -sHJNcw8PJGTuP+tgGdngmALjA3l+RipjaE/UK4FJrAjruphA/hOCjZfWqk8KBR4q -k0OltxCMWJlp/XCM9ny1ogFdWUlBbqThs4NWSOUESgxf/Be2njeiOrngGR31qxSi -LCLBvafIhKqq/4avRlx0Ht770uvF97MlAj1ASAvzTZICHAfUZxEdWl0J4MBbG7SN -cnMBbyAF+s60eFTa4RGMfRGnUa2Fzz/gfjhvfSIGeLQ3JRG6sl6jkc5xe0PZzhq3 -UNpK0gtQ48yy9CSPneZnrynoKks7XC2bizsr3QIDAQABAoIBAFpYUo9W7qdakSFA -+NS1Mm0rkm01nteLBlfAq3BOrl030DSNm+xQuWthoOcX+yiFxVTb40qURfC+plzC -ajOepPphTJDXF7+5ZDBPktTzzLsYTzD3mstdiBtAICOqhhHCUX3hNxx91/htm1H6 -Re4eK921y3DbFUIhTswCm3vrVXDc4yTXtURGllVzo40K/1Of39CpufKFdpJ81HV+ -h/VW++h3o+sFV4KqcqIjClxBfDxoJpBaRlOCunTiHqZNvqO+EPqPR5zdn34werjU -xQEvPzmz+ClwnaEXQxYWgIcYQii9VNsHogDxEw4R31S7lVrUt0f0atDmGJip1lPb -E7IomAECgYEAzKQ3PzBV46nUNfVO9SODpf14Z+xYfLKouPC+Qnepwp0V0JS6zY1+ -Wzskyb80drjnoQraWSEvGsX+tEWeLcnjN7JuMu/U8DPKRcQ+Q2dsVo/q4sfBOgvl -VhPNMZLfa7NIkRUx2KXku++Ep0Xtak0dskrfQrZnvhymRPyWuIMM6IECgYEAwRwL -Gt/ZZdUueE/hwT3c1hNn6igeDLOwK2t6frib+Ofw5oCAQxtTROvP1ljlnWUPkeIS -uzTusmqucalcK3lCHIsyHLwApOI/B31M971pxMVBRZ0wIbBaoarCGND7gi8JUPFR -VErGcAB5YnpRlmfLPEgw2o7DpjsDc2KmdE9oNV0CgYEAmfNEWLYtNztxGTK1treD -96ELLutf2lexlIgQKgLJ5E22tpbdPXwfvdRtpZTBjDsojj+S6hCL1lFzfv0MtZe2 -5xTF0G4avKXJmti6moy4tRpJ81ehZuDCJBJ7gLrkd6qFghf2yuxqenQDUK/Lnvfq -ylGHSjHdM+lrsGRxotd8I4ECgYBoo4GA9nseqv2bQ+3YgGUBu1I7l7FwwI1decfO -ksoxfb0Tqd3WfyAH4J+mTlVdjD17lzz/JBeTpisQe+ztwa8JOIPW/ih7L/1nWYYz -V/fQH/LWfe5u0tjJcXXrbJJcYJBzw8+GFV6hoiAkNJOxJF0ENToDtAhgMuoTxAje -TYjyIQKBgQCmHkLLq0Bj3FpIOVrwo2gNvQteNPa7jkkGp4lljO8JQUHhCHDGWKEH -MUJ0EFsxS/EaQa+rW6jHhs3GyBA2TxmC783stAOOEX+hO/zpcbzdCWgp6eZ0aGMW -WS94/5WE/lwHJi8ZPSjH1AURCzXhUi4fGvBrNBtry95e+jcEvP5c0g== ------END RSA PRIVATE KEY----- -` - var clientKey = ` +var serverKey = ` -----BEGIN PRIVATE KEY----- -MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDDZ6UMZRadrMN7 -T8xdgFfM5F8XjF5WyQt9mVqcre+47Us1Z72K3wv5kgC8cm4oqC5RqbAndJN3lDLf -i/nvdPIB0gpQ8/jE9KunnicmF7OpCDg7I9wPaZFZNDkW97vXQz8QRyvDPRA311ZY -1ltB+nZ7kpQs4WWRUWfJNAGPqo1rY5pgcGCEwTgocZhOKyGHxO4dlVXHzmlUF3nP -cuc8ge6tIx+S/EJvAF7JJWXdm3I0ckPFw6RJN81HTr7vSgm/UWOMv9ZblMNeR4dl -errZHhqAOG9c1t0GeuYu3idkaXqITjHaz9w165v33rkVXOrsdGcZOOXEB7rycv1Q -x6+YcCyHAgMBAAECggEAYM83qTVoCAQw8SXu1SAh38QBDLShhJOkWrygdOGD0/XU -fggAkw3AbAwWy0ZSJ1hzYkgUmueZq/PDZJd/40/oGljKfaLxy/qAFNI5CRlTDFqj -KUGx4/zkYvKJmkRwTszlMJZiKx9UqqXIBMlmewCwtLZBLR8aZ+2R4tAeOeRAnkPj -5kKjOFSByyNUtyqqBZ/M5idySwhbITIc0/1kJ1ULAeMlezNdSoEjkK30ck/enUMF -ouFQMMVFnGMpwe83mPDzj4Yw6bL6u3A4wiUTzckjJW+KDdU9V2QFe0fXFGpUckGJ -hMEV8t6+4/ATaHKw8opcgg9ua/9rXOjlo+sF7zXdsQKBgQDla3wf8FH3kmH/CKn4 -NeC+XR+fuNVsZrP/OFXxtXPu/kJoPropD6+5DJkSEnms0rOpHedShYMgk1cPYGUI -Ol8ISj+y7qvxTgFZJGMUzZSkTKkjUDpCcN5kENCwN9gHwf+gBv9iR/BUljcjPwmi -AZCYHRyffitZu0rKuGH/3UMFyQKBgQDaC0lYZB7wvD6LObLS85Aygv9y6SldnCEt -qzl/6NwSYK/COwd5cf9t4G0Ylku3gxU1KPgCTeyen8LwDVp0z/J0fHoQXJjulhDN -K5O3960vye8xEtqZDMQe57HYb0BluKSvcGcMP90pgoJmSDESNJ9tJrv2VEJUpSKU -XyqsLGYHzwKBgESWash9p3O1fripVW9QZD1lR9QPhTbgSYXOyNr3XY6g0yepQSyP -dQCExKqDfX7uiynPN94S7k3p3shJEEtycADhecO72QnOQVbuKvUINR0dkh9tl81P -Qx11bX6RY3OGSy8DiIxQZ4hSVG+kI/QcNadUZL9GEB3GgaizkRDWjHgJAoGAYK4u -eF30hiPBy7PqwbSzlGIXaFlQOSyYXYqVdUzH//IVHJdV6hiM/KhNV2CU9CrQRYED -7umkaHVIV25kVHU7+UCUUxrryKaLjp2q4yCUDyOHxoeom8JYV6e+aMxzjmb/xrad -SoYqx1QSA84wy/S/WAObxk54FtYd7hIAdtU87GsCgYB8CQLw7WwA5T9XW7evNFr5 -kkVWJmGfxORNC7lo0L+TdpdF/OQzuMiNohq0kRy+KqsWH4EU7P6WS3svQkBNR4WY -QTC/ydb3mkaonVWZk2I1FPYyewLklwJ8lqCJ9kQ5EPNXso7NbEbeGe8M+82BSE5K -xdug4Ym572dEWNno+36LRA== +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCa4GEZZsNPOdca +dfzljeG/4ELCnNU5k2jHDfoA1/MNkVn4DjhspnlgyUGk7tRulx47r1t7KmRosZUb +VCSp5pXYsKV9GWNNAnteX4EB2fObnN65xY3ZHmmBYylze18dEGU0I0eTd1uaFb8C +kV3vQE8LTiq3oEicQjL/D+jlmB/EsEfBrGZ1MrymEeyaHU16cO6SC+MjcfkBE4Od ++8tE11RaVbdPx/TqCpmP77CFlVpCjmOJ63vV8TX/6QAVsWMuZ9Qik7LC1m5SbP5U +kj30cQilJ6wXB8K/Gby8GUr1ZLS1q9A57q3X0lzkspxrxdfauwaQeO2Q03GuFfeV +LaoH6rsFAgMBAAECggEBAIEbGtZ5+8ZHiTDdunwB0naJFB33bygX4fhNhmK9ojdl +O4K1GAQ6omQ0YSyEi0HFZ8aJX9FEfX9oycuGUSnwtml0l/+48jZ4Iy+AnaJVdeX6 +1xA1xxF/cKQTbbJ+3cL0r+jOoBQmI45HInuZgpy3Fy1tc96vFthrtuc49ASw04q5 +vIgA+oX6dt7ex7WpXJexqO/9wVsFdiy01gF+e3n2UX5C7F5mm3m0ZJI0A9LCFIim +caLqgqSkFXujw0JurIwLolc/qRn/HG/gfMKBpf1ESpj3dDoZFaRftqtUjzXswD82 +eZ1PbfpEZ6iUr4K0scUcDdYrupth6U2tDiPz5y1kduECgYEAwrvqC4ulazroqe+e +LrzftOwg7J3gGyMl+ZTG8Fa4Gd2sAJ0R5kGmcaVU4LW4Ysm5lhgXlKLAGLdPCreS +pruSz1SNgXgYBEnj4Pz0zluQbPmdgGNQ/pOxtI8pr1NGkLwq76M0M8pGHjytIV8N +w1FGikm0Zk4ZSFAFVU5GKCL4hYsCgYEAy5pLi+AejuQuSlR+9aZLwisw3snqGxxe +ECKtPaHAjp/OI43/TGXQihoZJyAYdlDbIIwf03xV14Vv8MPjgtsCFf913YAWSp+y +x1Ul9kGYtVL8QeMcPs1Tb+0BU9VrTDegLNuDNIsxl3pERXIjwotDvQGiTIW7rTY5 +SiPOhrlec68CgYAxf/jfVHEJD+FiiRFpigNHhxpba0ozO70Ec0gagcCseoelZEfP +gvKfQsqPkEG9gs+VEqyz0KcJ4VbLP5ycm2OXJkQOHAvm0y2E3GgSKH5O5SifIR/O +hpaOcjHDamSul9ZGMfMsEwe92eicagAinP9UWaXst39/vS+N3qbAvxrzPwKBgQCS +eumLMq0JhKTBGVVWClRK16QLRR1Gb/xEg4473xmYAuTds5VPM5j7IpeiDHdM+BMO +sYFcOAHSUtAcWfJe/I3dobL8ruBaw9ZtjpcHOl5RZejSxkBV9obm6Y6g79SIOyTj +4PHeZZ5CKtbfV6TenC8Z1gkcIMLLdU12R5iYWNjZRQKBgFrFy2jVQHrKVas2Fu+o +HYLaMfoodHq4RWLMf64jSpXkJt8jB1A8vI0ekMe2gTXaldRvinYjuhzU/zJIkWuA +LYIN/nRkP0BLRwfZklUbdO3h1lvvlxM533luvX5mo41Gjg/b2f36yRXTa01Q+QML +NYpAJoagHIeNLGo4aJFwiVsZ -----END PRIVATE KEY----- ` - var clientCert = ` ------BEGIN CERTIFICATE----- -MIIDTTCCAjUCFDXIjx65Pg1HFcdJJmv1JjQFzUFkMA0GCSqGSIb3DQEBCwUAMG0x -CzAJBgNVBAYTAlVTMQswCQYDVQQIDAJOWTELMAkGA1UEBwwCTlkxDTALBgNVBAsM -BHJvb3QxFDASBgNVBAMMC0dvb2dsZSBMdGQuMR8wHQYJKoZIhvcNAQkBFhBhZG1p -bkBnb29nbGUuY29tMB4XDTIwMDcwNDAzMjMwMFoXDTIwMDgwMzAzMjMwMFowWTEL -MAkGA1UEBhMCVVMxCzAJBgNVBAgMAk5ZMQswCQYDVQQHDAJOWTERMA8GA1UEAwwI -YXNkZi5jb20xHTAbBgkqhkiG9w0BCQEWDmFkbWluQGFzZGYuY29tMIIBIjANBgkq -hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw2elDGUWnazDe0/MXYBXzORfF4xeVskL -fZlanK3vuO1LNWe9it8L+ZIAvHJuKKguUamwJ3STd5Qy34v573TyAdIKUPP4xPSr -p54nJhezqQg4OyPcD2mRWTQ5Fve710M/EEcrwz0QN9dWWNZbQfp2e5KULOFlkVFn -yTQBj6qNa2OaYHBghME4KHGYTishh8TuHZVVx85pVBd5z3LnPIHurSMfkvxCbwBe -ySVl3ZtyNHJDxcOkSTfNR06+70oJv1FjjL/WW5TDXkeHZXq62R4agDhvXNbdBnrm -Lt4nZGl6iE4x2s/cNeub9965FVzq7HRnGTjlxAe68nL9UMevmHAshwIDAQABMA0G -CSqGSIb3DQEBCwUAA4IBAQBrwrqLoo0/26m/2xmI+F6Le7SFZB0wx0/tAgjF5T/L -W2kwLZ2pA/3FRZ+sWfwl2eiM2z3J049Yiyb/opxqPOMQsXJwKUnMlZFb7Fr2Cryf -4l5PSXTrW2itB184aHzx2DCSGHuSbZ8079r4X6JYprMb3ZbSdEeBhOGpol0F+b48 -8Nuuz5u3aCiGGo8BHTb+uoKOjaux6n9scuzVBTqgDvdWZl7V/Z8rVf9y738b3m8v -cB1wthuMku55gQSCjLELWUEqkNQUQmvuCragCNY0nv7DM8aUH7ggF/QuFP6g2+M+ -Gimb9UORkV8SmPTyJuOXKO33PN5o1P4ixfAy1Z/WsX4K ------END CERTIFICATE----- + +var clientKey = ` +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDtp0CreAAU+8K9 +rz3e+XYcbf+WgVWOwD1+80g3ixHjUTnBDx4n+rAD9UvVNMfMPBt65vxB3jBFk7BN +eI6kRPSp1Lb3qS1EPfhgyG4kM54xP3QZw4KQY0Qqjqfbi+Pg7XRjyB0q9pYJ8ZMD +F9pg7NreJaJvGmjSrm5RsbQaCTz+bW9ckulaCWGMqOM1uQZ1hKQcCH+QeMyNHYcO +pwqNcq1E47nMTJoApXxftTtbDZJKcxn5wxwNB91N26H8dwXqUh+YK5znhYvsghrf +KRZBfUYEfTln6JHDwPPzsgEZ3jbcMRpkO/FdpOYdV1wWYSmq/4HyGXE0O9UQzVTY +HSpC0MnNAgMBAAECggEAeS2kKwqIOCrbdK8LhEt9LyfjgFG4V46sjLPuKewuldNP ++KIFxWrtH0ePgEpmajxn4rYvAEMUKBYTep0zVo2Wl5ZQKV5JJ5fVszvf9XOggQoS +4CQxyf/jvTN6YdclvgY2J77dKJANl0pnpNcf0fZT75wPBEnaEztAI0XSSMhXIn+d +EPeuCZ5FHCQShVBpggDpvjoAfHpvTIvxjz6U3ojD+yLV4tcBme4+HGDdBX1WC3Lo +8ByL/T/sdNFBEykI/Qh70sf/uqpSMh849iE8U8X4dSpolko5HynxUWSVARWRHCQ7 +Zs7FO8Bn1S/cuXQJq7EVuNIU6rVRfuK29jTstG9LfQKBgQD4zskYB6b/igWJ0UAJ +x2Dr41BYqxHknugT81lv4GiOSi2sWeNFi49xIrAOvTfgUR6Qfg73nKKsAUwpt+P7 +cGkntE3sEOrb3i5f5CsiEWzkxKiDGvpdF6e4OcRsaCu3IgyuiDrtRqRKwL2a+m0q +ejNGL79Y8AF/gLzN5KstfCENcwKBgQD0hew08qcn2q+OLg0OSBBuhhxD3Y7V65Bf +4G3VCt8YG77sbH+HBs985X8AHr1kIm48aHTDleFOlpLHswDpGvlg+Is0Dfff2R6r +1w3HCvH84nCA4l7gkcCvuR3k74Prgj0vN2c/p/B0GIGfowmNpQ1HItsuSQGiot7B +nC6qTCj7vwKBgH1FeEBuEeoVryYtwgVqamU6RUjvkQm/7G+nFb/biCkkNgzSETkB +xI4c/fHd2VVK4o2zuot3RPw/hv52RQZjGb7Q7G7QMb/UBRtowULc7SvdzE5+ddIL +R/nctAY1CNWjAimaE7lF2RB+LLjsH6zEbC6JedkotkhhJC6yVHGJTwb7AoGAEi53 +DsTQKwV2skK4U8yF9EHijiVGPp/CX26nnASv6/H8M0YqAVc/TFEgLVkbyftJaRJ3 +RCe71gUaKuEjezG3Qz+X0ioLuUhCoJJgAuHMdno71Ul/toD/69D+6QvqKjPH6t/a +vH/3QBqmYMFVr4OLRjPQSlPBXF9x4sGDMsRw868CgYEA6Y82dggvuwMpqn09JkBh +wLy74mR1IPj7aXz983WfstZHCrCsPOUmi3RamBHeC7udHcfa92X0bp1GK6wlNLN9 +WPOZ+zXCv9n7WxUeIvHTS9d7OnVkxp2qkUwnC1mmxH40HTQ1c2rUHCxWLe+Qrwi6 +X7nFPTe00Vd/5OGXkkv3JL4= +-----END PRIVATE KEY----- ` + +var clientCert = ` +-----BEGIN CERTIFICATE----- +MIIC+jCCAeKgAwIBAgIRAJCepdWc3B+X+BMsoK9nJlAwDQYJKoZIhvcNAQELBQAw +EjEQMA4GA1UEChMHQWNtZSBDbzAeFw0yMDA5MDYwMzIyMzdaFw0yMTA5MDYwMzIy +MzdaMBIxEDAOBgNVBAoTB0FjbWUgQ28wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDtp0CreAAU+8K9rz3e+XYcbf+WgVWOwD1+80g3ixHjUTnBDx4n+rAD +9UvVNMfMPBt65vxB3jBFk7BNeI6kRPSp1Lb3qS1EPfhgyG4kM54xP3QZw4KQY0Qq +jqfbi+Pg7XRjyB0q9pYJ8ZMDF9pg7NreJaJvGmjSrm5RsbQaCTz+bW9ckulaCWGM +qOM1uQZ1hKQcCH+QeMyNHYcOpwqNcq1E47nMTJoApXxftTtbDZJKcxn5wxwNB91N +26H8dwXqUh+YK5znhYvsghrfKRZBfUYEfTln6JHDwPPzsgEZ3jbcMRpkO/FdpOYd +V1wWYSmq/4HyGXE0O9UQzVTYHSpC0MnNAgMBAAGjSzBJMA4GA1UdDwEB/wQEAwIF +oDATBgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuC +CWxvY2FsaG9zdDANBgkqhkiG9w0BAQsFAAOCAQEAz87Xx7OAja/YZ1jqIk7YOaE9 +l9vfpn9MY+3XaasjJga2QOKZaL2nCA15mUNP69M1awoQc0DKdsyTBS0yU44lbgrV +8ibpxMksiOhBoRr8ig9vQmFyTPFODK0FgSXx9Ek9IJqF+4/0ggOiRD9o+lrr9amJ +A/U291tzkuMc0nalNRFZFJJbSeap+NdNLWEGTbH08Dg/e9/p16lYvq4Th2mXryMz +wDxdHr2KFJp+qMbWF2WHIAUrCBr7gTW5BQElnVTyIihUOTAUCrEfFEj4uN3UXwM5 +qbPPrmQPgv5prRHCObn0+j6SwV9vV7Q9BI41CloKUDXZmPFTVipP6z5tV2YTOg== +-----END CERTIFICATE----- + +` + +func init() { ioutil.WriteFile("server.crt", []byte(serverCert), 0777) ioutil.WriteFile("server.key", []byte(serverKey), 0777) ioutil.WriteFile("client.crt", []byte(clientCert), 0777) diff --git a/go.mod b/go.mod index 0840a29..249f145 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/p4gefau1t/trojan-go -go 1.14 +go 1.15 require ( github.com/go-sql-driver/mysql v1.5.0 diff --git a/test/scenario/proxy_test.go b/test/scenario/proxy_test.go index c554eb2..857a3c6 100644 --- a/test/scenario/proxy_test.go +++ b/test/scenario/proxy_test.go @@ -31,56 +31,54 @@ import ( var cert = ` -----BEGIN CERTIFICATE----- -MIIDZTCCAk0CFFphZh018B5iAD9F5fV4y0AlD0LxMA0GCSqGSIb3DQEBCwUAMG8x -CzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARNYXJzMRMwEQYDVQQHDAppVHJhbnN3YXJw -MRMwEQYDVQQKDAppVHJhbnN3YXJwMRMwEQYDVQQLDAppVHJhbnN3YXJwMRIwEAYD -VQQDDAlsb2NhbGhvc3QwHhcNMjAwMzMxMTAwMDUxWhcNMzAwMzI5MTAwMDUxWjBv -MQswCQYDVQQGEwJVUzENMAsGA1UECAwETWFyczETMBEGA1UEBwwKaVRyYW5zd2Fy -cDETMBEGA1UECgwKaVRyYW5zd2FycDETMBEGA1UECwwKaVRyYW5zd2FycDESMBAG -A1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA -ml44fThYMkCcT627o7ibEs7mq2WOhImjDwYijYJ1684BatrCsHJNcw8PJGTuP+tg -GdngmALjA3l+RipjaE/UK4FJrAjruphA/hOCjZfWqk8KBR4qk0OltxCMWJlp/XCM -9ny1ogFdWUlBbqThs4NWSOUESgxf/Be2njeiOrngGR31qxSiLCLBvafIhKqq/4av -Rlx0Ht770uvF97MlAj1ASAvzTZICHAfUZxEdWl0J4MBbG7SNcnMBbyAF+s60eFTa -4RGMfRGnUa2Fzz/gfjhvfSIGeLQ3JRG6sl6jkc5xe0PZzhq3UNpK0gtQ48yy9CSP -neZnrynoKks7XC2bizsr3QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAHS/xuG5+F -yGU3N6V4kv+HbKqHaXNOq4zKVsCc1k7vg4MFFpKUJKxtJYooCI8n2ypp5XRUTIGQ -bmEbVcIPqm9Rf/4vHtF0falNCwieAbXDkiEHoykRmmU1UE/ccPA7X8NO9aVLJAJO -N2Li8MH0Ixgs02pQH56eyGKoRBWPR5C3ETQ9Leqvazg6Dn1iJWvmfF0mOte5228s -mZJOntF9t8MZOJdIWGdrUHn6euRfhd0btkmL/NUDzeCTwJcuPORLxkBbCP5mTC6G -GnLS5Z4oRYgCgvT2pLtcM0r48hYjwgjXFQ4zalkW6YI9LPpqwwMhhOzINlXjBaDi -Haz8uKI4EciU +MIIC+TCCAeGgAwIBAgIQAZ1MkNXl76ABOPPQ6ci25zANBgkqhkiG9w0BAQsFADAS +MRAwDgYDVQQKEwdBY21lIENvMB4XDTIwMDkwNjAzMTM1NVoXDTIxMDkwNjAzMTM1 +NVowEjEQMA4GA1UEChMHQWNtZSBDbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAJrgYRlmw0851xp1/OWN4b/gQsKc1TmTaMcN+gDX8w2RWfgOOGymeWDJ +QaTu1G6XHjuvW3sqZGixlRtUJKnmldiwpX0ZY00Ce15fgQHZ85uc3rnFjdkeaYFj +KXN7Xx0QZTQjR5N3W5oVvwKRXe9ATwtOKregSJxCMv8P6OWYH8SwR8GsZnUyvKYR +7JodTXpw7pIL4yNx+QETg537y0TXVFpVt0/H9OoKmY/vsIWVWkKOY4nre9XxNf/p +ABWxYy5n1CKTssLWblJs/lSSPfRxCKUnrBcHwr8ZvLwZSvVktLWr0DnurdfSXOSy +nGvF19q7BpB47ZDTca4V95UtqgfquwUCAwEAAaNLMEkwDgYDVR0PAQH/BAQDAgWg +MBMGA1UdJQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwFAYDVR0RBA0wC4IJ +bG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQBzaEBQs2bjx0trJxDoKK5xFDUX +mhhVOlparYS04WG3q18r9qfcvXDv3DOmzJDAnSldGmHad/ba6uLDuGEtuIYdMK9u +CpQVaLsNsjIeSika7l0fbQ7XBAJzIHkQHF8dGS3qyzagyCLiRuV2qT5v+p6X4tbp +PY2raoobm5hiscLk540mAAboz+IM1nTGuxD+XUh9znnGJhiKVoNnWhhXLHQK3Lwd +Mct/q+LkMaVHgT/r5LBMbk/jPluvgN0VJ6FnEw1JmotduJd+f80Syp4qccZmupEe +zNXfXCPNcNXeSbAwWnsFeiUrU5YNqPobhaiZXMGnoFb4Cufb57AbNPNDch0x -----END CERTIFICATE----- ` var key = ` ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEAml44fThYMkCcT627o7ibEs7mq2WOhImjDwYijYJ1684BatrC -sHJNcw8PJGTuP+tgGdngmALjA3l+RipjaE/UK4FJrAjruphA/hOCjZfWqk8KBR4q -k0OltxCMWJlp/XCM9ny1ogFdWUlBbqThs4NWSOUESgxf/Be2njeiOrngGR31qxSi -LCLBvafIhKqq/4avRlx0Ht770uvF97MlAj1ASAvzTZICHAfUZxEdWl0J4MBbG7SN -cnMBbyAF+s60eFTa4RGMfRGnUa2Fzz/gfjhvfSIGeLQ3JRG6sl6jkc5xe0PZzhq3 -UNpK0gtQ48yy9CSPneZnrynoKks7XC2bizsr3QIDAQABAoIBAFpYUo9W7qdakSFA -+NS1Mm0rkm01nteLBlfAq3BOrl030DSNm+xQuWthoOcX+yiFxVTb40qURfC+plzC -ajOepPphTJDXF7+5ZDBPktTzzLsYTzD3mstdiBtAICOqhhHCUX3hNxx91/htm1H6 -Re4eK921y3DbFUIhTswCm3vrVXDc4yTXtURGllVzo40K/1Of39CpufKFdpJ81HV+ -h/VW++h3o+sFV4KqcqIjClxBfDxoJpBaRlOCunTiHqZNvqO+EPqPR5zdn34werjU -xQEvPzmz+ClwnaEXQxYWgIcYQii9VNsHogDxEw4R31S7lVrUt0f0atDmGJip1lPb -E7IomAECgYEAzKQ3PzBV46nUNfVO9SODpf14Z+xYfLKouPC+Qnepwp0V0JS6zY1+ -Wzskyb80drjnoQraWSEvGsX+tEWeLcnjN7JuMu/U8DPKRcQ+Q2dsVo/q4sfBOgvl -VhPNMZLfa7NIkRUx2KXku++Ep0Xtak0dskrfQrZnvhymRPyWuIMM6IECgYEAwRwL -Gt/ZZdUueE/hwT3c1hNn6igeDLOwK2t6frib+Ofw5oCAQxtTROvP1ljlnWUPkeIS -uzTusmqucalcK3lCHIsyHLwApOI/B31M971pxMVBRZ0wIbBaoarCGND7gi8JUPFR -VErGcAB5YnpRlmfLPEgw2o7DpjsDc2KmdE9oNV0CgYEAmfNEWLYtNztxGTK1treD -96ELLutf2lexlIgQKgLJ5E22tpbdPXwfvdRtpZTBjDsojj+S6hCL1lFzfv0MtZe2 -5xTF0G4avKXJmti6moy4tRpJ81ehZuDCJBJ7gLrkd6qFghf2yuxqenQDUK/Lnvfq -ylGHSjHdM+lrsGRxotd8I4ECgYBoo4GA9nseqv2bQ+3YgGUBu1I7l7FwwI1decfO -ksoxfb0Tqd3WfyAH4J+mTlVdjD17lzz/JBeTpisQe+ztwa8JOIPW/ih7L/1nWYYz -V/fQH/LWfe5u0tjJcXXrbJJcYJBzw8+GFV6hoiAkNJOxJF0ENToDtAhgMuoTxAje -TYjyIQKBgQCmHkLLq0Bj3FpIOVrwo2gNvQteNPa7jkkGp4lljO8JQUHhCHDGWKEH -MUJ0EFsxS/EaQa+rW6jHhs3GyBA2TxmC783stAOOEX+hO/zpcbzdCWgp6eZ0aGMW -WS94/5WE/lwHJi8ZPSjH1AURCzXhUi4fGvBrNBtry95e+jcEvP5c0g== ------END RSA PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCa4GEZZsNPOdca +dfzljeG/4ELCnNU5k2jHDfoA1/MNkVn4DjhspnlgyUGk7tRulx47r1t7KmRosZUb +VCSp5pXYsKV9GWNNAnteX4EB2fObnN65xY3ZHmmBYylze18dEGU0I0eTd1uaFb8C +kV3vQE8LTiq3oEicQjL/D+jlmB/EsEfBrGZ1MrymEeyaHU16cO6SC+MjcfkBE4Od ++8tE11RaVbdPx/TqCpmP77CFlVpCjmOJ63vV8TX/6QAVsWMuZ9Qik7LC1m5SbP5U +kj30cQilJ6wXB8K/Gby8GUr1ZLS1q9A57q3X0lzkspxrxdfauwaQeO2Q03GuFfeV +LaoH6rsFAgMBAAECggEBAIEbGtZ5+8ZHiTDdunwB0naJFB33bygX4fhNhmK9ojdl +O4K1GAQ6omQ0YSyEi0HFZ8aJX9FEfX9oycuGUSnwtml0l/+48jZ4Iy+AnaJVdeX6 +1xA1xxF/cKQTbbJ+3cL0r+jOoBQmI45HInuZgpy3Fy1tc96vFthrtuc49ASw04q5 +vIgA+oX6dt7ex7WpXJexqO/9wVsFdiy01gF+e3n2UX5C7F5mm3m0ZJI0A9LCFIim +caLqgqSkFXujw0JurIwLolc/qRn/HG/gfMKBpf1ESpj3dDoZFaRftqtUjzXswD82 +eZ1PbfpEZ6iUr4K0scUcDdYrupth6U2tDiPz5y1kduECgYEAwrvqC4ulazroqe+e +LrzftOwg7J3gGyMl+ZTG8Fa4Gd2sAJ0R5kGmcaVU4LW4Ysm5lhgXlKLAGLdPCreS +pruSz1SNgXgYBEnj4Pz0zluQbPmdgGNQ/pOxtI8pr1NGkLwq76M0M8pGHjytIV8N +w1FGikm0Zk4ZSFAFVU5GKCL4hYsCgYEAy5pLi+AejuQuSlR+9aZLwisw3snqGxxe +ECKtPaHAjp/OI43/TGXQihoZJyAYdlDbIIwf03xV14Vv8MPjgtsCFf913YAWSp+y +x1Ul9kGYtVL8QeMcPs1Tb+0BU9VrTDegLNuDNIsxl3pERXIjwotDvQGiTIW7rTY5 +SiPOhrlec68CgYAxf/jfVHEJD+FiiRFpigNHhxpba0ozO70Ec0gagcCseoelZEfP +gvKfQsqPkEG9gs+VEqyz0KcJ4VbLP5ycm2OXJkQOHAvm0y2E3GgSKH5O5SifIR/O +hpaOcjHDamSul9ZGMfMsEwe92eicagAinP9UWaXst39/vS+N3qbAvxrzPwKBgQCS +eumLMq0JhKTBGVVWClRK16QLRR1Gb/xEg4473xmYAuTds5VPM5j7IpeiDHdM+BMO +sYFcOAHSUtAcWfJe/I3dobL8ruBaw9ZtjpcHOl5RZejSxkBV9obm6Y6g79SIOyTj +4PHeZZ5CKtbfV6TenC8Z1gkcIMLLdU12R5iYWNjZRQKBgFrFy2jVQHrKVas2Fu+o +HYLaMfoodHq4RWLMf64jSpXkJt8jB1A8vI0ekMe2gTXaldRvinYjuhzU/zJIkWuA +LYIN/nRkP0BLRwfZklUbdO3h1lvvlxM533luvX5mo41Gjg/b2f36yRXTa01Q+QML +NYpAJoagHIeNLGo4aJFwiVsZ +-----END PRIVATE KEY----- ` func init() { diff --git a/tunnel/mux/mux_test.go b/tunnel/mux/mux_test.go index 506cdf4..f989c1c 100644 --- a/tunnel/mux/mux_test.go +++ b/tunnel/mux/mux_test.go @@ -4,6 +4,7 @@ import ( "context" "testing" + "github.com/p4gefau1t/trojan-go/tunnel/freedom" "github.com/p4gefau1t/trojan-go/tunnel/transport" "github.com/p4gefau1t/trojan-go/common" @@ -29,6 +30,7 @@ func TestMux(t *testing.T) { RemotePort: port, } ctx = config.WithConfig(ctx, transport.Name, transportConfig) + ctx = config.WithConfig(ctx, freedom.Name, &freedom.Config{}) tcpClient, err := transport.NewClient(ctx, nil) common.Must(err) diff --git a/tunnel/router/client.go b/tunnel/router/client.go index 3f46613..9ed6de1 100644 --- a/tunnel/router/client.go +++ b/tunnel/router/client.go @@ -257,7 +257,8 @@ func NewClient(ctx context.Context, underlay tunnel.Client) (*Client, error) { direct, err := freedom.NewClient(ctx, nil) if err != nil { - return nil, common.NewError("failed to initialize raw client").Base(err) + cancel() + return nil, common.NewError("router failed to initialize raw client").Base(err) } client := &Client{ domains: [3][]*v2router.Domain{}, diff --git a/tunnel/shadowsocks/shadowsocks_test.go b/tunnel/shadowsocks/shadowsocks_test.go index dc38f96..20804f9 100644 --- a/tunnel/shadowsocks/shadowsocks_test.go +++ b/tunnel/shadowsocks/shadowsocks_test.go @@ -12,6 +12,7 @@ import ( "github.com/p4gefau1t/trojan-go/common" "github.com/p4gefau1t/trojan-go/config" "github.com/p4gefau1t/trojan-go/test/util" + "github.com/p4gefau1t/trojan-go/tunnel/freedom" "github.com/p4gefau1t/trojan-go/tunnel/transport" ) @@ -27,6 +28,7 @@ func TestShadowsocks(t *testing.T) { RemotePort: port, } ctx := config.WithConfig(context.Background(), transport.Name, transportConfig) + ctx = config.WithConfig(ctx, freedom.Name, &freedom.Config{}) tcpClient, err := transport.NewClient(ctx, nil) common.Must(err) tcpServer, err := transport.NewServer(ctx, nil) diff --git a/tunnel/simplesocks/simplesocks_test.go b/tunnel/simplesocks/simplesocks_test.go index 8905836..1ca7543 100644 --- a/tunnel/simplesocks/simplesocks_test.go +++ b/tunnel/simplesocks/simplesocks_test.go @@ -9,6 +9,7 @@ import ( "github.com/p4gefau1t/trojan-go/config" "github.com/p4gefau1t/trojan-go/test/util" "github.com/p4gefau1t/trojan-go/tunnel" + "github.com/p4gefau1t/trojan-go/tunnel/freedom" "github.com/p4gefau1t/trojan-go/tunnel/transport" ) @@ -21,6 +22,7 @@ func TestSimpleSocks(t *testing.T) { RemotePort: port, } ctx := config.WithConfig(context.Background(), transport.Name, transportConfig) + ctx = config.WithConfig(ctx, freedom.Name, &freedom.Config{}) tcpClient, err := transport.NewClient(ctx, nil) common.Must(err) tcpServer, err := transport.NewServer(ctx, nil) diff --git a/tunnel/tls/tls_test.go b/tunnel/tls/tls_test.go index 70b9f82..4a23555 100644 --- a/tunnel/tls/tls_test.go +++ b/tunnel/tls/tls_test.go @@ -10,6 +10,7 @@ import ( "github.com/p4gefau1t/trojan-go/common" "github.com/p4gefau1t/trojan-go/config" "github.com/p4gefau1t/trojan-go/test/util" + "github.com/p4gefau1t/trojan-go/tunnel/freedom" "github.com/p4gefau1t/trojan-go/tunnel/transport" ) @@ -96,6 +97,7 @@ func TestDefaultTLS(t *testing.T) { RemotePort: port, } ctx := config.WithConfig(context.Background(), transport.Name, transportConfig) + ctx = config.WithConfig(ctx, freedom.Name, &freedom.Config{}) tcpClient, err := transport.NewClient(ctx, nil) common.Must(err) tcpServer, err := transport.NewServer(ctx, nil) @@ -162,6 +164,7 @@ func TestUTLS(t *testing.T) { RemotePort: port, } ctx := config.WithConfig(context.Background(), transport.Name, transportConfig) + ctx = config.WithConfig(ctx, freedom.Name, &freedom.Config{}) tcpClient, err := transport.NewClient(ctx, nil) common.Must(err) tcpServer, err := transport.NewServer(ctx, nil) diff --git a/tunnel/transport/client.go b/tunnel/transport/client.go index 325359a..04ad1ca 100644 --- a/tunnel/transport/client.go +++ b/tunnel/transport/client.go @@ -2,7 +2,6 @@ package transport import ( "context" - "net" "os" "os/exec" "strconv" @@ -11,6 +10,7 @@ import ( "github.com/p4gefau1t/trojan-go/config" "github.com/p4gefau1t/trojan-go/log" "github.com/p4gefau1t/trojan-go/tunnel" + "github.com/p4gefau1t/trojan-go/tunnel/freedom" ) // Client implements tunnel.Client @@ -19,6 +19,7 @@ type Client struct { cmd *exec.Cmd ctx context.Context cancel context.CancelFunc + direct *freedom.Client } func (c *Client) Close() error { @@ -35,8 +36,7 @@ func (c *Client) DialPacket(tunnel.Tunnel) (tunnel.PacketConn, error) { // DialConn implements tunnel.Client. It will ignore the params and directly dial to the remote server func (c *Client) DialConn(*tunnel.Address, tunnel.Tunnel) (tunnel.Conn, error) { - dialer := new(net.Dialer) - conn, err := dialer.DialContext(c.ctx, "tcp", c.serverAddress.String()) + conn, err := c.direct.DialConn(c.serverAddress, nil) if err != nil { return nil, common.NewError("transport failed to connect to remote server").Base(err) } @@ -90,12 +90,15 @@ func NewClient(ctx context.Context, _ tunnel.Client) (*Client, error) { } } + direct, err := freedom.NewClient(ctx, nil) + common.Must(err) ctx, cancel := context.WithCancel(ctx) client := &Client{ serverAddress: serverAddress, cmd: cmd, ctx: ctx, cancel: cancel, + direct: direct, } return client, nil } diff --git a/tunnel/transport/transport_test.go b/tunnel/transport/transport_test.go index 5f51e3d..65bed86 100644 --- a/tunnel/transport/transport_test.go +++ b/tunnel/transport/transport_test.go @@ -7,6 +7,7 @@ import ( "testing" "github.com/p4gefau1t/trojan-go/config" + "github.com/p4gefau1t/trojan-go/tunnel/freedom" "github.com/p4gefau1t/trojan-go/common" "github.com/p4gefau1t/trojan-go/test/util" @@ -25,8 +26,10 @@ func TestTransport(t *testing.T) { RemoteHost: "127.0.0.1", RemotePort: serverCfg.LocalPort, } + freedomCfg := &freedom.Config{} sctx := config.WithConfig(context.Background(), Name, serverCfg) cctx := config.WithConfig(context.Background(), Name, clientCfg) + cctx = config.WithConfig(cctx, freedom.Name, freedomCfg) s, err := NewServer(sctx, nil) common.Must(err) @@ -71,6 +74,8 @@ func TestClientPlugin(t *testing.T) { }, } ctx := config.WithConfig(context.Background(), Name, clientCfg) + freedomCfg := &freedom.Config{} + ctx = config.WithConfig(ctx, freedom.Name, freedomCfg) c, err := NewClient(ctx, nil) common.Must(err) c.Close() @@ -92,6 +97,8 @@ func TestServerPlugin(t *testing.T) { }, } ctx := config.WithConfig(context.Background(), Name, cfg) + freedomCfg := &freedom.Config{} + ctx = config.WithConfig(ctx, freedom.Name, freedomCfg) s, err := NewServer(ctx, nil) common.Must(err) s.Close() diff --git a/tunnel/trojan/trojan_test.go b/tunnel/trojan/trojan_test.go index 45dad38..e9e126d 100644 --- a/tunnel/trojan/trojan_test.go +++ b/tunnel/trojan/trojan_test.go @@ -14,6 +14,7 @@ import ( _ "github.com/p4gefau1t/trojan-go/statistic/memory" "github.com/p4gefau1t/trojan-go/test/util" "github.com/p4gefau1t/trojan-go/tunnel" + "github.com/p4gefau1t/trojan-go/tunnel/freedom" "github.com/p4gefau1t/trojan-go/tunnel/transport" ) @@ -27,6 +28,7 @@ func TestTrojan(t *testing.T) { } ctx, cancel := context.WithCancel(context.Background()) ctx = config.WithConfig(ctx, transport.Name, transportConfig) + ctx = config.WithConfig(ctx, freedom.Name, &freedom.Config{}) tcpClient, err := transport.NewClient(ctx, nil) common.Must(err) tcpServer, err := transport.NewServer(ctx, nil) diff --git a/tunnel/websocket/tunnel.go b/tunnel/websocket/tunnel.go index b970b5a..daae42c 100644 --- a/tunnel/websocket/tunnel.go +++ b/tunnel/websocket/tunnel.go @@ -8,8 +8,7 @@ import ( const Name = "WEBSOCKET" -type Tunnel struct { -} +type Tunnel struct{} func (*Tunnel) Name() string { return Name diff --git a/tunnel/websocket/websocket_test.go b/tunnel/websocket/websocket_test.go index 01a48e8..ce38494 100644 --- a/tunnel/websocket/websocket_test.go +++ b/tunnel/websocket/websocket_test.go @@ -13,6 +13,7 @@ import ( "github.com/p4gefau1t/trojan-go/config" "github.com/p4gefau1t/trojan-go/test/util" "github.com/p4gefau1t/trojan-go/tunnel" + "github.com/p4gefau1t/trojan-go/tunnel/freedom" "github.com/p4gefau1t/trojan-go/tunnel/transport" "golang.org/x/net/websocket" ) @@ -35,7 +36,9 @@ func TestWebsocket(t *testing.T) { RemoteHost: "127.0.0.1", RemotePort: port, } + freedomCfg := &freedom.Config{} ctx = config.WithConfig(ctx, transport.Name, transportConfig) + ctx = config.WithConfig(ctx, freedom.Name, freedomCfg) tcpClient, err := transport.NewClient(ctx, nil) common.Must(err) tcpServer, err := transport.NewServer(ctx, nil)