From 2fb5415b75ddd6db481a9d34ee3ef7ec8958f9cf Mon Sep 17 00:00:00 2001 From: "kayos@tcp.direct" Date: Tue, 12 Jul 2022 02:25:26 -0700 Subject: [PATCH 1/6] Bump kayos/common -> v0.6.0 --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index e58a47f..ed64cb7 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module git.tcp.direct/kayos/prox5 go 1.18 require ( - git.tcp.direct/kayos/common v0.5.5 + git.tcp.direct/kayos/common v0.6.0 git.tcp.direct/kayos/go-socks5 v1.0.1 github.com/mattn/go-tty v0.0.4 github.com/miekg/dns v1.1.50 From 928fd3a037befb64d5552a662707cccb74eab967 Mon Sep 17 00:00:00 2001 From: "kayos@tcp.direct" Date: Tue, 12 Jul 2022 04:07:27 -0700 Subject: [PATCH 2/6] Fix go.sum --- go.sum | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/go.sum b/go.sum index 5e64ddf..a9a8401 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -git.tcp.direct/kayos/common v0.5.5 h1:ZLM7Q82acnSQmrWSQ98W4EKaszsf9JUYIsZgVr8V5ME= -git.tcp.direct/kayos/common v0.5.5/go.mod h1:jG1yXbN+5PrRZwGe32qIGWgLC4x5JWdyNBbMj1gIWB0= +git.tcp.direct/kayos/common v0.6.0 h1:x3qXJxGalhv3y4bX191Lx8R73Se1UzPgAP3fL2gqhyA= +git.tcp.direct/kayos/common v0.6.0/go.mod h1:jG1yXbN+5PrRZwGe32qIGWgLC4x5JWdyNBbMj1gIWB0= git.tcp.direct/kayos/go-socks5 v1.0.1 h1:Pe9PlSXofibIJyWkrr9rwWcgyfUxSdUcDCQ//6fAi0U= git.tcp.direct/kayos/go-socks5 v1.0.1/go.mod h1:I9xU/uzFAZKukMJgEgWPrfC6rDlcPQe8wXMibF3qvhE= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= From e5c2e16ad592e42b552343cc00c2bf9d643a918c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Jul 2022 15:32:39 +0000 Subject: [PATCH 3/6] Bump git.tcp.direct/kayos/common from 0.6.0 to 0.7.0 Bumps git.tcp.direct/kayos/common from 0.6.0 to 0.7.0. --- updated-dependencies: - dependency-name: git.tcp.direct/kayos/common dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 4 ++-- go.sum | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index ed64cb7..44738f2 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module git.tcp.direct/kayos/prox5 go 1.18 require ( - git.tcp.direct/kayos/common v0.6.0 + git.tcp.direct/kayos/common v0.7.0 git.tcp.direct/kayos/go-socks5 v1.0.1 github.com/mattn/go-tty v0.0.4 github.com/miekg/dns v1.1.50 @@ -15,7 +15,7 @@ require ( ) require ( - github.com/mattn/go-isatty v0.0.10 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect github.com/patrickmn/go-cache v2.1.0+incompatible // indirect go4.org/intern v0.0.0-20211027215823-ae77deb06f29 // indirect go4.org/unsafe/assume-no-moving-gc v0.0.0-20220617031537-928513b29760 // indirect diff --git a/go.sum b/go.sum index a9a8401..ef21b80 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -git.tcp.direct/kayos/common v0.6.0 h1:x3qXJxGalhv3y4bX191Lx8R73Se1UzPgAP3fL2gqhyA= -git.tcp.direct/kayos/common v0.6.0/go.mod h1:jG1yXbN+5PrRZwGe32qIGWgLC4x5JWdyNBbMj1gIWB0= +git.tcp.direct/kayos/common v0.7.0 h1:KZDwoCzUiwQaYSWESr080N8wUVyLD27QYgzXgc7LiAQ= +git.tcp.direct/kayos/common v0.7.0/go.mod h1:7tMZBVNPLFSZk+JXTA6pgXWpf/XHqYRfT7Q3OziI++Y= git.tcp.direct/kayos/go-socks5 v1.0.1 h1:Pe9PlSXofibIJyWkrr9rwWcgyfUxSdUcDCQ//6fAi0U= git.tcp.direct/kayos/go-socks5 v1.0.1/go.mod h1:I9xU/uzFAZKukMJgEgWPrfC6rDlcPQe8wXMibF3qvhE= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -8,8 +8,9 @@ github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364 h1:5XxdakFhqd9dnXoA github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364/go.mod h1:eDJQioIyy4Yn3MVivT7rv/39gAJTrA7lgmYr8EW950c= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10 h1:qxFzApOv4WsAL965uUPIsXzAKCZxN2p9UqdhFS4ZW10= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-tty v0.0.4 h1:NVikla9X8MN0SQAqCYzpGyXv0jY7MNl3HOWD2dkle7E= github.com/mattn/go-tty v0.0.4/go.mod h1:u5GGXBtZU6RQoKV8gY5W6UhMudbR5vXnUe7j3pxse28= From eb6e33877909e3274b7779421de0d578d874d42c Mon Sep 17 00:00:00 2001 From: "kayos@tcp.direct" Date: Fri, 15 Jul 2022 00:40:26 -0700 Subject: [PATCH 4/6] Implement a context dialer and improve example --- example/go.mod | 29 +++++++++++++++ example/go.sum | 89 +++++++++++++++++++++++++++++++++++++++++++++++ example/main.go | 37 +++++++++++++++++--- getters.go | 10 ++++++ mystery_dialer.go | 27 +++++++------- 5 files changed, 174 insertions(+), 18 deletions(-) create mode 100644 example/go.mod create mode 100644 example/go.sum diff --git a/example/go.mod b/example/go.mod new file mode 100644 index 0000000..d3aff0e --- /dev/null +++ b/example/go.mod @@ -0,0 +1,29 @@ +module p5example + +go 1.18 + +require ( + git.tcp.direct/kayos/prox5 v0.5.2 + github.com/haxii/socks5 v1.0.0 + github.com/mattn/go-tty v0.0.4 +) + +require ( + git.tcp.direct/kayos/common v0.5.5 // indirect + git.tcp.direct/kayos/go-socks5 v1.0.1 // indirect + github.com/mattn/go-isatty v0.0.10 // indirect + github.com/miekg/dns v1.1.50 // indirect + github.com/panjf2000/ants/v2 v2.5.0 // indirect + github.com/patrickmn/go-cache v2.1.0+incompatible // indirect + github.com/yunginnanet/Rate5 v1.0.1 // indirect + go4.org/intern v0.0.0-20211027215823-ae77deb06f29 // indirect + go4.org/unsafe/assume-no-moving-gc v0.0.0-20220617031537-928513b29760 // indirect + golang.org/x/mod v0.4.2 // indirect + golang.org/x/net v0.0.0-20220630215102-69896b714898 // indirect + golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect + golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2 // indirect + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect + h12.io/socks v1.0.3 // indirect + inet.af/netaddr v0.0.0-20220617031823-097006376321 // indirect + nullprogram.com/x/rng v1.1.0 // indirect +) diff --git a/example/go.sum b/example/go.sum new file mode 100644 index 0000000..5b35786 --- /dev/null +++ b/example/go.sum @@ -0,0 +1,89 @@ +git.tcp.direct/kayos/common v0.5.5 h1:ZLM7Q82acnSQmrWSQ98W4EKaszsf9JUYIsZgVr8V5ME= +git.tcp.direct/kayos/common v0.5.5/go.mod h1:jG1yXbN+5PrRZwGe32qIGWgLC4x5JWdyNBbMj1gIWB0= +git.tcp.direct/kayos/go-socks5 v1.0.1 h1:Pe9PlSXofibIJyWkrr9rwWcgyfUxSdUcDCQ//6fAi0U= +git.tcp.direct/kayos/go-socks5 v1.0.1/go.mod h1:I9xU/uzFAZKukMJgEgWPrfC6rDlcPQe8wXMibF3qvhE= +git.tcp.direct/kayos/prox5 v0.5.2 h1:cByUv7f4Ntc+GrpWKvBV2BcFFo0lEBK4qV4ZCnKQnBY= +git.tcp.direct/kayos/prox5 v0.5.2/go.mod h1:SV8IeNJeGIOdDkWpFMeihY/wUy0+4m2JzVVV5D8Jk0k= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/dvyukov/go-fuzz v0.0.0-20210103155950-6a8e9d1f2415/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw= +github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364 h1:5XxdakFhqd9dnXoAZy1Mb2R/DZ6D1e+0bGC/JhucGYI= +github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364/go.mod h1:eDJQioIyy4Yn3MVivT7rv/39gAJTrA7lgmYr8EW950c= +github.com/haxii/socks5 v1.0.0 h1:78BIzd4lHibdRNOKdMwKCnnsgYLW9SeotqU+nMhWSSo= +github.com/haxii/socks5 v1.0.0/go.mod h1:6O9Ba2yrLlvuSe/L1e84eZI8cPw6H+q1Ilr4hjgm4uY= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.10 h1:qxFzApOv4WsAL965uUPIsXzAKCZxN2p9UqdhFS4ZW10= +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-tty v0.0.4 h1:NVikla9X8MN0SQAqCYzpGyXv0jY7MNl3HOWD2dkle7E= +github.com/mattn/go-tty v0.0.4/go.mod h1:u5GGXBtZU6RQoKV8gY5W6UhMudbR5vXnUe7j3pxse28= +github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA= +github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= +github.com/panjf2000/ants/v2 v2.5.0 h1:1rWGWSnxCsQBga+nQbA4/iY6VMeNoOIAM0ZWh9u3q2Q= +github.com/panjf2000/ants/v2 v2.5.0/go.mod h1:cU93usDlihJZ5CfRGNDYsiBYvoilLvBF5Qp/BT2GNRE= +github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= +github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= +github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= +github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yunginnanet/Rate5 v1.0.1 h1:OePwNrj9/A/flmhyr/gKI5RYgrW6d1oWCqrZRXUev3k= +github.com/yunginnanet/Rate5 v1.0.1/go.mod h1:f0r66kVQZojRqUgVdLC/CKexMlF0nUDAmd01tBeF4Ms= +go4.org/intern v0.0.0-20211027215823-ae77deb06f29 h1:UXLjNohABv4S58tHmeuIZDO6e3mHpW2Dx33gaNt03LE= +go4.org/intern v0.0.0-20211027215823-ae77deb06f29/go.mod h1:cS2ma+47FKrLPdXFpr7CuxiTW3eyJbWew4qx0qtQWDA= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20211027215541-db492cf91b37/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20220617031537-928513b29760 h1:FyBZqvoA/jbNzuAWLQE2kG820zMAkcilx6BMjGbL/E4= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20220617031537-928513b29760/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220630215102-69896b714898 h1:K7wO6V1IrczY9QOQ2WkVpw4JQSwCd52UsxVEirZUfiw= +golang.org/x/net v0.0.0-20220630215102-69896b714898/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2 h1:BonxutuHCTL0rBDnZlKjpGIQFTjyUVTexFOdWkB6Fg0= +golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +h12.io/socks v1.0.3 h1:Ka3qaQewws4j4/eDQnOdpr4wXsC//dXtWvftlIcCQUo= +h12.io/socks v1.0.3/go.mod h1:AIhxy1jOId/XCz9BO+EIgNL2rQiPTBNnOfnVnQ+3Eck= +inet.af/netaddr v0.0.0-20220617031823-097006376321 h1:B4dC8ySKTQXasnjDTMsoCMf1sQG4WsMej0WXaHxunmU= +inet.af/netaddr v0.0.0-20220617031823-097006376321/go.mod h1:OIezDfdzOgFhuw4HuWapWq2e9l0H9tK4F1j+ETRtF3k= +nullprogram.com/x/rng v1.1.0 h1:SMU7DHaQSWtKJNTpNFIFt8Wd/KSmOuSDPXrMFp/UMro= +nullprogram.com/x/rng v1.1.0/go.mod h1:glGw6V87vyfawxCzqOABL3WfL95G65az9Z2JZCylCkg= diff --git a/example/main.go b/example/main.go index 73b2a7a..f2d012f 100644 --- a/example/main.go +++ b/example/main.go @@ -6,20 +6,47 @@ import ( "strconv" "time" - "github.com/mattn/go-tty" - "git.tcp.direct/kayos/prox5" + "github.com/haxii/socks5" + "github.com/mattn/go-tty" ) -var swamp *prox5.Swamp -var quit chan bool -var t *tty.TTY +var ( + swamp *prox5.Swamp + quit chan bool + t *tty.TTY +) + +type socksLogger struct{} + +var socklog = socksLogger{} + +// Printf is used to handle socks server logging. +func (s socksLogger) Printf(format string, a ...interface{}) { + println(fmt.Sprintf(format, a)) +} + +func StartUpstreamProxy(listen string) { + conf := &socks5.Config{Dial: swamp.DialContext, Logger: socklog} + server, err := socks5.New(conf) + if err != nil { + println(err.Error()) + return + } + + socklog.Printf("starting proxy server on %s", listen) + if err := server.ListenAndServe("tcp", listen); err != nil { + println(err.Error()) + return + } +} func init() { quit = make(chan bool) swamp = prox5.NewDefaultSwamp() swamp.SetMaxWorkers(5) swamp.EnableDebug() + go StartUpstreamProxy("127.0.0.1:1555") count := swamp.LoadProxyTXT(os.Args[1]) if count < 1 { diff --git a/getters.go b/getters.go index d17d8bb..26c10c0 100644 --- a/getters.go +++ b/getters.go @@ -1,6 +1,7 @@ package prox5 import ( + "fmt" "strconv" "sync/atomic" "time" @@ -11,6 +12,15 @@ func (sock *Proxy) GetProto() string { return sock.Proto.Load().(string) } +// GetProto safely retrieves the protocol value of the Proxy. +func (sock *Proxy) String() string { + tout := "" + if sock.parent.GetServerTimeoutStr() != "-1" { + tout = fmt.Sprintf("?timeout=%ss", sock.parent.GetServerTimeoutStr()) + } + return fmt.Sprintf("socks%s://%s%s", sock.GetProto(), sock.Endpoint, tout) +} + // GetStatistics returns all current statistics. // * This is a pointer, do not modify it! func (s *Swamp) GetStatistics() *Statistics { diff --git a/mystery_dialer.go b/mystery_dialer.go index d93a2d4..a53707c 100644 --- a/mystery_dialer.go +++ b/mystery_dialer.go @@ -7,24 +7,30 @@ import ( "net" "strconv" "sync/atomic" + "time" "h12.io/socks" ) -// DialContext is a simple stub adapter to implement a net.Dialer. +// DialContext is a simple stub adapter to implement a net.Dialer with context. func (s *Swamp) DialContext(ctx context.Context, network, addr string) (net.Conn, error) { return s.MysteryDialer(ctx, network, addr) } -// DialContext is a simple stub adapter to implement a net.Dialer. +// Dial is a simple stub adapter to implement a net.Dialer. func (s *Swamp) Dial(network, addr string) (net.Conn, error) { return s.DialContext(context.Background(), network, addr) } +// DialTimeout is a simple stub adapter to implement a net.Dialer with a timeout. +func (s *Swamp) DialTimeout(network, addr string, timeout time.Duration) (net.Conn, error) { + ctx, _ := context.WithDeadline(context.Background(), time.Now().Add(timeout)) + return s.MysteryDialer(ctx, network, addr) +} + // MysteryDialer is a dialer function that will use a different proxy for every request. func (s *Swamp) MysteryDialer(ctx context.Context, network, addr string) (net.Conn, error) { var sock *Proxy - var socksString string var conn net.Conn var count int // pull down proxies from channel until we get a proxy good enough for our spoiled asses @@ -34,7 +40,7 @@ func (s *Swamp) MysteryDialer(ctx context.Context, network, addr string) (net.Co return nil, errors.New("giving up after " + strconv.Itoa(max) + " tries") } if err := ctx.Err(); err != nil { - return nil, err + return nil, fmt.Errorf("context error: %v", err) } sock = s.GetAnySOCKS() @@ -44,26 +50,21 @@ func (s *Swamp) MysteryDialer(ctx context.Context, network, addr string) (net.Co } randSleep() } - var err error if sock == nil { continue } s.dbgPrint("dialer trying: " + sock.Endpoint + "...") - tout := "" - if s.GetServerTimeoutStr() != "-1" { - tout = fmt.Sprintf("?timeout=%ss", s.GetServerTimeoutStr()) - } - socksString = fmt.Sprintf("socks%s://%s%s", sock.GetProto(), sock.Endpoint, tout) atomic.StoreUint32(&sock.lock, stateUnlocked) - dialSocks := socks.Dial(socksString) + dialSocks := socks.Dial(sock.String()) + var err error if conn, err = dialSocks(network, addr); err != nil { count++ - s.dbgPrint(ylw + "unable to reach [redacted] with " + socksString + ", cycling..." + rst) + s.dbgPrint(ylw + "unable to reach [redacted] with " + sock.String() + ", cycling..." + rst) continue } break } - s.dbgPrint(grn + "MysteryDialer using socks: " + socksString + rst) + s.dbgPrint(grn + "MysteryDialer using socks: " + sock.String() + rst) return conn, nil } From fd801e1ddcd83e3780dfd927af0ce5cc43bacd27 Mon Sep 17 00:00:00 2001 From: "kayos@tcp.direct" Date: Fri, 15 Jul 2022 00:42:34 -0700 Subject: [PATCH 5/6] Update example module --- example/go.mod | 6 +++--- example/go.sum | 11 ++++++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/example/go.mod b/example/go.mod index d3aff0e..3d4116c 100644 --- a/example/go.mod +++ b/example/go.mod @@ -3,15 +3,15 @@ module p5example go 1.18 require ( - git.tcp.direct/kayos/prox5 v0.5.2 + git.tcp.direct/kayos/prox5 v0.6.0 github.com/haxii/socks5 v1.0.0 github.com/mattn/go-tty v0.0.4 ) require ( - git.tcp.direct/kayos/common v0.5.5 // indirect + git.tcp.direct/kayos/common v0.7.0 // indirect git.tcp.direct/kayos/go-socks5 v1.0.1 // indirect - github.com/mattn/go-isatty v0.0.10 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect github.com/miekg/dns v1.1.50 // indirect github.com/panjf2000/ants/v2 v2.5.0 // indirect github.com/patrickmn/go-cache v2.1.0+incompatible // indirect diff --git a/example/go.sum b/example/go.sum index 5b35786..fb6ddd8 100644 --- a/example/go.sum +++ b/example/go.sum @@ -1,9 +1,9 @@ -git.tcp.direct/kayos/common v0.5.5 h1:ZLM7Q82acnSQmrWSQ98W4EKaszsf9JUYIsZgVr8V5ME= -git.tcp.direct/kayos/common v0.5.5/go.mod h1:jG1yXbN+5PrRZwGe32qIGWgLC4x5JWdyNBbMj1gIWB0= +git.tcp.direct/kayos/common v0.7.0 h1:KZDwoCzUiwQaYSWESr080N8wUVyLD27QYgzXgc7LiAQ= +git.tcp.direct/kayos/common v0.7.0/go.mod h1:7tMZBVNPLFSZk+JXTA6pgXWpf/XHqYRfT7Q3OziI++Y= git.tcp.direct/kayos/go-socks5 v1.0.1 h1:Pe9PlSXofibIJyWkrr9rwWcgyfUxSdUcDCQ//6fAi0U= git.tcp.direct/kayos/go-socks5 v1.0.1/go.mod h1:I9xU/uzFAZKukMJgEgWPrfC6rDlcPQe8wXMibF3qvhE= -git.tcp.direct/kayos/prox5 v0.5.2 h1:cByUv7f4Ntc+GrpWKvBV2BcFFo0lEBK4qV4ZCnKQnBY= -git.tcp.direct/kayos/prox5 v0.5.2/go.mod h1:SV8IeNJeGIOdDkWpFMeihY/wUy0+4m2JzVVV5D8Jk0k= +git.tcp.direct/kayos/prox5 v0.6.0 h1:F9QDMjWybV+SUgjQ6QFg45TGn+IEw5ZSyHrmd2rkTBM= +git.tcp.direct/kayos/prox5 v0.6.0/go.mod h1:ZyX7bAV4gGD/YXafaa5KUr6RSJDpN+0Uu9laRILGiaM= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/dvyukov/go-fuzz v0.0.0-20210103155950-6a8e9d1f2415/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw= github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364 h1:5XxdakFhqd9dnXoAZy1Mb2R/DZ6D1e+0bGC/JhucGYI= @@ -12,8 +12,9 @@ github.com/haxii/socks5 v1.0.0 h1:78BIzd4lHibdRNOKdMwKCnnsgYLW9SeotqU+nMhWSSo= github.com/haxii/socks5 v1.0.0/go.mod h1:6O9Ba2yrLlvuSe/L1e84eZI8cPw6H+q1Ilr4hjgm4uY= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10 h1:qxFzApOv4WsAL965uUPIsXzAKCZxN2p9UqdhFS4ZW10= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-tty v0.0.4 h1:NVikla9X8MN0SQAqCYzpGyXv0jY7MNl3HOWD2dkle7E= github.com/mattn/go-tty v0.0.4/go.mod h1:u5GGXBtZU6RQoKV8gY5W6UhMudbR5vXnUe7j3pxse28= From 81d70cd63fd25d4da2e574e7acea1f726cb54ec6 Mon Sep 17 00:00:00 2001 From: "kayos@tcp.direct" Date: Fri, 15 Jul 2022 01:36:54 -0700 Subject: [PATCH 6/6] https://tcp.ac/i/XWGff --- mystery_dialer.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mystery_dialer.go b/mystery_dialer.go index a53707c..caddb20 100644 --- a/mystery_dialer.go +++ b/mystery_dialer.go @@ -24,7 +24,8 @@ func (s *Swamp) Dial(network, addr string) (net.Conn, error) { // DialTimeout is a simple stub adapter to implement a net.Dialer with a timeout. func (s *Swamp) DialTimeout(network, addr string, timeout time.Duration) (net.Conn, error) { - ctx, _ := context.WithDeadline(context.Background(), time.Now().Add(timeout)) + ctx, cancel := context.WithDeadline(context.Background(), time.Now().Add(timeout)) + defer cancel() return s.MysteryDialer(ctx, network, addr) }