Updated to latest version & added a logger
This commit is contained in:
parent
678152d2aa
commit
71832429ca
19
go.mod
19
go.mod
|
@ -2,23 +2,28 @@ module git.tcp.direct/perp/scoop
|
|||
|
||||
go 1.19
|
||||
|
||||
require git.tcp.direct/kayos/prox5 v0.6.1
|
||||
require (
|
||||
git.tcp.direct/kayos/prox5 v0.7.8
|
||||
github.com/rs/zerolog v1.27.0
|
||||
)
|
||||
|
||||
require (
|
||||
git.tcp.direct/kayos/common v0.7.0 // indirect
|
||||
git.tcp.direct/kayos/common v0.7.6 // indirect
|
||||
git.tcp.direct/kayos/go-socks5 v1.0.1 // indirect
|
||||
git.tcp.direct/kayos/socks v0.0.0-20221016092341-00cb75cc613a // indirect
|
||||
github.com/mattn/go-colorable v0.1.12 // 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
|
||||
github.com/yunginnanet/Rate5 v1.0.1 // indirect
|
||||
github.com/yunginnanet/Rate5 v1.1.0 // 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/net v0.0.0-20221002022538-bcab6841153b // indirect
|
||||
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 // 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
|
||||
inet.af/netaddr v0.0.0-20220811202034-502d2d690317 // indirect
|
||||
nullprogram.com/x/rng v1.1.0 // indirect
|
||||
)
|
||||
|
|
43
go.sum
43
go.sum
|
@ -1,27 +1,37 @@
|
|||
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/common v0.7.6 h1:RThBVa6xKF6ybRURBgzobEHsRi8nYoYp3Z1PE2qtKx8=
|
||||
git.tcp.direct/kayos/common v0.7.6/go.mod h1:jVbdX9prBrx9e3aTsNpu643brGVgpLvysl40/F5U2cE=
|
||||
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.6.1 h1:UKZZiJIN7rwqtDUhtR4BqUhNxfbKMEooXaRi24ev0o4=
|
||||
git.tcp.direct/kayos/prox5 v0.6.1/go.mod h1:ZyX7bAV4gGD/YXafaa5KUr6RSJDpN+0Uu9laRILGiaM=
|
||||
git.tcp.direct/kayos/prox5 v0.7.8 h1:LReW05j40S9X8djEbeMFIYaYaMLjoKd0XG5wI8rXt0Y=
|
||||
git.tcp.direct/kayos/prox5 v0.7.8/go.mod h1:0vVd9GsRvIFHYqjNbEd2qo3DRfWPY0WhEisFjt9F3Ls=
|
||||
git.tcp.direct/kayos/socks v0.0.0-20221016092341-00cb75cc613a h1:ATC8Y+NrPaE0imveEUP6K/7z48L0xaUuYcGG/264qk0=
|
||||
git.tcp.direct/kayos/socks v0.0.0-20221016092341-00cb75cc613a/go.mod h1:u6GmCzGJ1HaMA+ZqOdCtBPqtdHSFQUhK8ePfgatebVk=
|
||||
github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||
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/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||
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/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
|
||||
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
|
||||
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/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/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
||||
github.com/rs/zerolog v1.27.0 h1:1T7qCieN22GVc8S4Q2yuexzBb1EqjbgjSH9RohbMjKs=
|
||||
github.com/rs/zerolog v1.27.0/go.mod h1:7frBqO0oezxmnO7GF86FY++uy8I0Tk/If5ni1G9Qc0U=
|
||||
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=
|
||||
github.com/yunginnanet/Rate5 v1.1.0 h1:FGp+IwKju0cTrrM3VffZGZiFgRt1jFXOWRCPwB1HPek=
|
||||
github.com/yunginnanet/Rate5 v1.1.0/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=
|
||||
|
@ -38,8 +48,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
|
|||
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/net v0.0.0-20221002022538-bcab6841153b h1:6e93nYa3hNqAvLr0pD4PN1fFS+gKzp2zAXqrnTCstqU=
|
||||
golang.org/x/net v0.0.0-20221002022538-bcab6841153b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
|
||||
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=
|
||||
|
@ -53,8 +63,9 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||
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/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 h1:WIoqL4EROvwiPdUtaip4VcDdpZ4kha7wBWZrbVKCIZg=
|
||||
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/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=
|
||||
|
@ -69,9 +80,7 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T
|
|||
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=
|
||||
inet.af/netaddr v0.0.0-20220811202034-502d2d690317 h1:U2fwK6P2EqmopP/hFLTOAjWTki0qgd4GMJn5X8wOleU=
|
||||
inet.af/netaddr v0.0.0-20220811202034-502d2d690317/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=
|
||||
|
|
145
scoop.go
145
scoop.go
|
@ -1,64 +1,103 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"time"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"git.tcp.direct/kayos/prox5"
|
||||
"git.tcp.direct/kayos/prox5"
|
||||
"github.com/rs/zerolog"
|
||||
)
|
||||
|
||||
// Config
|
||||
var (
|
||||
workers = 1000 // Workers (Speed)
|
||||
debug = true // Debug mode (Logs)
|
||||
recycle = true // Recycle proxies
|
||||
remove = 5 // Removal for recycling
|
||||
timeout = 5 // Validation timeout
|
||||
address = "127.0.0.1:9999" // Listener address (IP)
|
||||
username = "user" // Username (Authentication)
|
||||
password = "pass" // Password (Authentication)
|
||||
// Round-robin proxy
|
||||
workers = 1000 // Workers (Speed)
|
||||
debug = true // Debug mode (Logs)
|
||||
recycle = true // Recycle proxies
|
||||
redact = false // Redact request address
|
||||
remove = 5 // Removal recylce timeout
|
||||
timeout = 5 // Validation timeout
|
||||
|
||||
// Socks5 proxy
|
||||
proxy = true // Enable socks5 proxy
|
||||
address = "127.0.0.1:9999" // Listener address (IP)
|
||||
username = "user" // Username (Authentication)
|
||||
password = "pass" // Password (Authentication)
|
||||
|
||||
log Logger // Access logger
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Create a pool
|
||||
var swamp *prox5.Swamp
|
||||
swamp = prox5.NewDefaultSwamp()
|
||||
|
||||
// Use config
|
||||
swamp.SetMaxWorkers(workers)
|
||||
swamp.LoadProxyTXT("proxies.txt")
|
||||
swamp.SetRemoveAfter(remove)
|
||||
swamp.SetValidationTimeout(time.Second * time.Duration(timeout))
|
||||
|
||||
// Recycle mode enabled
|
||||
if recycle {
|
||||
swamp.EnableRecycling()
|
||||
}
|
||||
|
||||
// Debug mode enabled
|
||||
if debug {
|
||||
swamp.EnableDebug()
|
||||
}
|
||||
|
||||
// Start the pool
|
||||
err := swamp.Start()
|
||||
|
||||
// Handle the error
|
||||
if err != nil {
|
||||
fmt.Printf("Error: %s\n", err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Start the round-robin proxy
|
||||
err = swamp.StartSOCKS5Server(address, username, password)
|
||||
|
||||
// Handle the error
|
||||
if err != nil {
|
||||
fmt.Printf("Error: %s\n", err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Run forever
|
||||
for {}
|
||||
// Socks5 proxy logger
|
||||
type Logger struct {
|
||||
Zero zerolog.Logger // Fancy logger
|
||||
}
|
||||
|
||||
// Custom logger printf
|
||||
func (l Logger) Printf(format string, a ...interface{}) {
|
||||
l.Zero.Debug().Msg(format)
|
||||
}
|
||||
|
||||
// Custom logger print
|
||||
func (l Logger) Print(str string) {
|
||||
l.Zero.Debug().Msg(str)
|
||||
}
|
||||
|
||||
func main() {
|
||||
// Create a logger
|
||||
log = Logger{
|
||||
Zero: zerolog.New(zerolog.ConsoleWriter{
|
||||
Out: os.Stdout,
|
||||
}).With().Timestamp().Logger(),
|
||||
}
|
||||
|
||||
// Create a pool
|
||||
swamp := prox5.NewProxyEngine()
|
||||
|
||||
// Use config
|
||||
swamp.SetMaxWorkers(workers)
|
||||
swamp.LoadProxyTXT("proxies.txt")
|
||||
swamp.SetRemoveAfter(remove)
|
||||
swamp.SetValidationTimeout(time.Second * time.Duration(timeout))
|
||||
|
||||
// Recycle mode enabled
|
||||
if recycle {
|
||||
swamp.EnableRecycling()
|
||||
}
|
||||
|
||||
// Debug mode enabled
|
||||
if debug {
|
||||
swamp.EnableDebug()
|
||||
swamp.SetDebugLogger(log)
|
||||
zerolog.SetGlobalLevel(zerolog.DebugLevel)
|
||||
}
|
||||
|
||||
// Debug redact enabled
|
||||
if redact {
|
||||
swamp.EnableDebugRedaction()
|
||||
}
|
||||
|
||||
// Start the pool
|
||||
err := swamp.Start()
|
||||
|
||||
// Handle the error
|
||||
if err != nil {
|
||||
log.Zero.Panic().Err(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Proxy mode enabled
|
||||
if proxy {
|
||||
// Start the round-robin proxy
|
||||
err = swamp.StartSOCKS5Server(address, username, password)
|
||||
|
||||
// Handle the error
|
||||
if err != nil {
|
||||
log.Zero.Panic().Err(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
// Block forever
|
||||
for {
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue