From d66ecd34b5e5e0037d419228b31dd033892a32d3 Mon Sep 17 00:00:00 2001
From: MJ Kim
Date: Fri, 12 Sep 2025 14:59:38 +0900
Subject: [PATCH] Update documentation and code to follow coding convention
ProjectDiscovery code usually follows the rule "Words in names
that are initialisms or acronyms (e.g., URL and NATO) should have
the same case." (defined in https://google.github.io/styleguide/
go/decisions.html#initialisms) SOCKS5 is most commonly written in
all-caps, just like HTTP.
This commit updates the documentation and code to all use the same
style when refering to SOCKS5 as well as adhere to the coding
convention. This commit also updates some other style errors.
Signed-off-by: MJ Kim
---
README.md | 4 +-
internal/runner/options.go | 10 ++---
internal/runner/runner.go | 12 +++---
proxy.go | 76 +++++++++++++++++++-------------------
static/index.html | 2 +-
5 files changed, 52 insertions(+), 52 deletions(-)
diff --git a/README.md b/README.md
index 483816d7..03813b7e 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@
Join Discord
-Swiss Army Knife Proxy for rapid deployments. Supports multiple operations such as request/response dump, filtering and manipulation via DSL language, upstream HTTP/Socks5 proxy.
+Swiss Army Knife Proxy for rapid deployments. Supports multiple operations such as request/response dump, filtering and manipulation via DSL language, upstream HTTP/SOCKS5 proxy.
Additionally, a replay utility allows to import the dumped traffic (request/responses with correct domain name) into BurpSuite or any other proxy by simply setting the upstream proxy to proxify.
# Features
@@ -60,7 +60,7 @@ proxify -h
This will display help for the tool. Here are all the switches it supports.
```console
-Swiss Army Knife Proxy for rapid deployments. Supports multiple operations such as request/response dump,filtering and manipulation via DSL language, upstream HTTP/Socks5 proxy
+Swiss Army Knife Proxy for rapid deployments. Supports multiple operations such as request/response dump,filtering and manipulation via DSL language, upstream HTTP/SOCKS5 proxy
Usage:
./proxify [flags]
diff --git a/internal/runner/options.go b/internal/runner/options.go
index 46542a7e..9bdd93aa 100644
--- a/internal/runner/options.go
+++ b/internal/runner/options.go
@@ -37,7 +37,7 @@ type Options struct {
Verbosity types.Verbosity
Version bool
ListenAddrHTTP string
- ListenAddrSocks5 string
+ ListenAddrSOCKS5 string
ListenDNSAddr string
DNSMapping string // DNSMapping contains user provided hosts
DNSFallbackResolver string // Listen DNS Ip and port (ip:port)
@@ -47,7 +47,7 @@ type Options struct {
ResponseDSL goflags.StringSlice // Response Filter DSL
ResponseMatchReplaceDSL goflags.StringSlice // Request Match-Replace DSL
UpstreamHTTPProxies goflags.StringSlice // Upstream HTTP comma separated Proxies (e.g. http://proxyip:proxyport)
- UpstreamSocks5Proxies goflags.StringSlice // Upstream SOCKS5 comma separated Proxies (e.g. socks5://proxyip:proxyport)
+ UpstreamSOCKS5Proxies goflags.StringSlice // Upstream SOCKS5 comma separated Proxies (e.g. socks5://proxyip:proxyport)
UpstreamProxyRequestsNumber int // Number of requests before switching upstream proxy
DumpRequest bool // Dump requests in separate files
DumpResponse bool // Dump responses in separate files
@@ -71,7 +71,7 @@ func ParseOptions() (*Options, error) {
options := &Options{}
flagSet := goflags.NewFlagSet()
- flagSet.SetDescription(`Swiss Army Knife Proxy for rapid deployments. Supports multiple operations such as request/response dump,filtering and manipulation via DSL language, upstream HTTP/Socks5 proxy`)
+ flagSet.SetDescription(`Swiss Army Knife Proxy for rapid deployments. Supports multiple operations such as request/response dump,filtering and manipulation via DSL language, upstream HTTP/SOCKS5 proxy`)
flagSet.CreateGroup("output", "Output",
// Todo: flagSet.BoolVar(&options.Dump, "dump", true, "Dump HTTP requests/response to output file"),
@@ -98,7 +98,7 @@ func ParseOptions() (*Options, error) {
flagSet.CreateGroup("network", "Network",
flagSet.StringVarP(&options.ListenAddrHTTP, "http-addr", "ha", "127.0.0.1:8888", "Listening HTTP IP and Port address (ip:port)"),
- flagSet.StringVarP(&options.ListenAddrSocks5, "socks-addr", "sa", "127.0.0.1:10080", "Listening SOCKS IP and Port address (ip:port)"),
+ flagSet.StringVarP(&options.ListenAddrSOCKS5, "socks-addr", "sa", "127.0.0.1:10080", "Listening SOCKS IP and Port address (ip:port)"),
flagSet.StringVarP(&options.ListenDNSAddr, "dns-addr", "da", "", "Listening DNS IP and Port address (ip:port)"),
flagSet.StringVarP(&options.DNSMapping, "dns-mapping", "dm", "", "Domain to IP DNS mapping (eg domain:ip,domain:ip,..)"),
flagSet.StringVarP(&options.DNSFallbackResolver, "resolver", "r", "", "Custom DNS resolvers to use (ip:port)"),
@@ -106,7 +106,7 @@ func ParseOptions() (*Options, error) {
flagSet.CreateGroup("proxy", "Proxy",
flagSet.StringSliceVarP(&options.UpstreamHTTPProxies, "http-proxy", "hp", nil, "Upstream HTTP Proxies (eg http://proxy-ip:proxy-port)", goflags.NormalizedStringSliceOptions),
- flagSet.StringSliceVarP(&options.UpstreamSocks5Proxies, "socks5-proxy", "sp", nil, "Upstream SOCKS5 Proxies (eg socks5://proxy-ip:proxy-port)", goflags.NormalizedStringSliceOptions),
+ flagSet.StringSliceVarP(&options.UpstreamSOCKS5Proxies, "socks5-proxy", "sp", nil, "Upstream SOCKS5 Proxies (eg socks5://proxy-ip:proxy-port)", goflags.NormalizedStringSliceOptions),
flagSet.IntVar(&options.UpstreamProxyRequestsNumber, "c", 1, "Number of requests before switching to the next upstream proxy"),
)
diff --git a/internal/runner/runner.go b/internal/runner/runner.go
index c71b5b72..6f273524 100644
--- a/internal/runner/runner.go
+++ b/internal/runner/runner.go
@@ -37,7 +37,7 @@ func NewRunner(options *Options) (*Runner, error) {
CertCacheSize: options.CertCacheSize,
Verbosity: options.Verbosity,
ListenAddrHTTP: options.ListenAddrHTTP,
- ListenAddrSocks5: options.ListenAddrSocks5,
+ ListenAddrSOCKS5: options.ListenAddrSOCKS5,
OutputFile: options.OutputFile,
OutputFormat: options.OutputFormat,
OutputDirectory: options.OutputDirectory,
@@ -45,7 +45,7 @@ func NewRunner(options *Options) (*Runner, error) {
RequestDSL: options.RequestDSL,
ResponseDSL: options.ResponseDSL,
UpstreamHTTPProxies: options.UpstreamHTTPProxies,
- UpstreamSock5Proxies: options.UpstreamSocks5Proxies,
+ UpstreamSOCKS5Proxies: options.UpstreamSOCKS5Proxies,
ListenDNSAddr: options.ListenDNSAddr,
DNSMapping: options.DNSMapping,
DNSFallbackResolver: options.DNSFallbackResolver,
@@ -91,8 +91,8 @@ func (r *Runner) Run() error {
if r.options.ListenAddrHTTP != "" {
gologger.Info().Msgf("HTTP Proxy Listening on %s\n", r.options.ListenAddrHTTP)
}
- if r.options.ListenAddrSocks5 != "" {
- gologger.Info().Msgf("Socks5 Proxy Listening on %s\n", r.options.ListenAddrSocks5)
+ if r.options.ListenAddrSOCKS5 != "" {
+ gologger.Info().Msgf("SOCKS5 Proxy Listening on %s\n", r.options.ListenAddrSOCKS5)
}
if r.options.OutputFile != "" {
@@ -112,8 +112,8 @@ func (r *Runner) Run() error {
if len(r.options.UpstreamHTTPProxies) > 0 {
gologger.Info().Msgf("Using upstream HTTP proxies: %s\n", r.options.UpstreamHTTPProxies)
- } else if len(r.options.UpstreamSocks5Proxies) > 0 {
- gologger.Info().Msgf("Using upstream SOCKS5 proxies: %s\n", r.options.UpstreamSocks5Proxies)
+ } else if len(r.options.UpstreamSOCKS5Proxies) > 0 {
+ gologger.Info().Msgf("Using upstream SOCKS5 proxies: %s\n", r.options.UpstreamSOCKS5Proxies)
}
if r.options.DNSMapping != "" {
diff --git a/proxy.go b/proxy.go
index 8c9070c6..4cc6c562 100644
--- a/proxy.go
+++ b/proxy.go
@@ -52,7 +52,7 @@ type Options struct {
CertCacheSize int
Directory string
ListenAddrHTTP string
- ListenAddrSocks5 string
+ ListenAddrSOCKS5 string
OutputDirectory string
OutputFile string
OutputFormat string
@@ -60,7 +60,7 @@ type Options struct {
RequestDSL []string
ResponseDSL []string
UpstreamHTTPProxies []string
- UpstreamSock5Proxies []string
+ UpstreamSOCKS5Proxies []string
ListenDNSAddr string
DNSMapping string
DNSFallbackResolver string
@@ -81,12 +81,12 @@ type Proxy struct {
options *Options
logger *logger.Logger
httpProxy *martian.Proxy
- socks5proxy *socks5.Server
- socks5tunnel *superproxy.SuperProxy
+ socks5Proxy *socks5.Server
+ socks5Tunnel *superproxy.SuperProxy
bufioPool *bufiopool.Pool
- tinydns *tinydns.TinyDNS
- rbhttp *rbtransport.RoundTransport
- rbsocks5 *rbtransport.RoundTransport
+ tinyDNS *tinydns.TinyDNS
+ rbHTTP *rbtransport.RoundTransport
+ rbSOCKS5 *rbtransport.RoundTransport
proxifyMux *http.ServeMux // serve banner page and static files
listenAddr string
}
@@ -117,27 +117,27 @@ func NewProxy(options *Options) (*Proxy, error) {
Kafka: options.Kafka,
})
- var tdns *tinydns.TinyDNS
+ var tDNS *tinydns.TinyDNS
fastdialerOptions := fastdialer.DefaultOptions
fastdialerOptions.EnableFallback = true
fastdialerOptions.Deny = options.Deny
fastdialerOptions.Allow = options.Allow
if options.ListenDNSAddr != "" {
- dnsmapping := make(map[string]*tinydns.DnsRecord)
+ dnsMapping := make(map[string]*tinydns.DnsRecord)
for _, record := range strings.Split(options.DNSMapping, ",") {
data := strings.Split(record, ":")
if len(data) != 2 {
continue
}
- dnsmapping[data[0]] = &tinydns.DnsRecord{A: []string{data[1]}}
+ dnsMapping[data[0]] = &tinydns.DnsRecord{A: []string{data[1]}}
}
var err error
- tdns, err = tinydns.New(&tinydns.Options{
+ tDNS, err = tinydns.New(&tinydns.Options{
ListenAddress: options.ListenDNSAddr,
Net: "udp",
UpstreamServers: []string{options.DNSFallbackResolver},
- DnsRecords: dnsmapping,
+ DnsRecords: dnsMapping,
})
if err != nil {
return nil, err
@@ -149,20 +149,20 @@ func NewProxy(options *Options) (*Proxy, error) {
return nil, err
}
- var rbhttp, rbsocks5 *rbtransport.RoundTransport
+ var rbHTTP, rbSOCKS5 *rbtransport.RoundTransport
if len(options.UpstreamHTTPProxies) > 0 {
- rbhttp, err = rbtransport.NewWithOptions(options.UpstreamProxyRequestsNumber, options.UpstreamHTTPProxies...)
+ rbHTTP, err = rbtransport.NewWithOptions(options.UpstreamProxyRequestsNumber, options.UpstreamHTTPProxies...)
if err != nil {
return nil, err
}
}
- if len(options.UpstreamSock5Proxies) > 0 {
- rbsocks5, err = rbtransport.NewWithOptions(options.UpstreamProxyRequestsNumber, options.UpstreamSock5Proxies...)
+ if len(options.UpstreamSOCKS5Proxies) > 0 {
+ rbSOCKS5, err = rbtransport.NewWithOptions(options.UpstreamProxyRequestsNumber, options.UpstreamSOCKS5Proxies...)
if err != nil {
return nil, err
}
}
- pmux, err := getProxifyServerMux()
+ pMux, err := getProxifyServerMux()
if err != nil {
return nil, err
}
@@ -171,31 +171,31 @@ func NewProxy(options *Options) (*Proxy, error) {
logger: logger,
options: options,
Dialer: dialer,
- tinydns: tdns,
- rbhttp: rbhttp,
- rbsocks5: rbsocks5,
- proxifyMux: pmux,
+ tinyDNS: tDNS,
+ rbHTTP: rbHTTP,
+ rbSOCKS5: rbSOCKS5,
+ proxifyMux: pMux,
}
if err := proxy.setupHTTPProxy(); err != nil {
return nil, err
}
- var socks5proxy *socks5.Server
- if options.ListenAddrSocks5 != "" {
+ var socks5Proxy *socks5.Server
+ if options.ListenAddrSOCKS5 != "" {
if options.Verbosity <= types.VerbositySilent {
- socks5proxy = socks5.NewServer(
+ socks5Proxy = socks5.NewServer(
socks5.WithLogger(socks5.NewLogger(log.New(io.Discard, "", log.Ltime|log.Lshortfile))),
socks5.WithDial(proxy.httpTunnelDialer),
)
} else {
- socks5proxy = socks5.NewServer(
+ socks5Proxy = socks5.NewServer(
socks5.WithDial(proxy.httpTunnelDialer),
)
}
}
- proxy.socks5proxy = socks5proxy
+ proxy.socks5Proxy = socks5Proxy
return proxy, nil
}
@@ -404,11 +404,11 @@ func (p *Proxy) MatchReplaceResponse(resp *http.Response) error {
func (p *Proxy) Run() error {
var wg sync.WaitGroup
- if p.tinydns != nil {
+ if p.tinyDNS != nil {
wg.Add(1)
go func() {
defer wg.Done()
- if err := p.tinydns.Run(); err != nil {
+ if err := p.tinyDNS.Run(); err != nil {
gologger.Warning().Msgf("Could not start dns server: %s\n", err)
}
}()
@@ -437,7 +437,7 @@ func (p *Proxy) Run() error {
}
// socks5 proxy
- if p.socks5proxy != nil {
+ if p.socks5Proxy != nil {
if p.httpProxy != nil {
httpProxyIP, httpProxyPort, err := net.SplitHostPort(p.options.ListenAddrHTTP)
if err != nil {
@@ -447,7 +447,7 @@ func (p *Proxy) Run() error {
if err != nil {
return err
}
- p.socks5tunnel, err = superproxy.NewSuperProxy(httpProxyIP, uint16(httpProxyPortUint), superproxy.ProxyTypeHTTP, "", "", "")
+ p.socks5Tunnel, err = superproxy.NewSuperProxy(httpProxyIP, uint16(httpProxyPortUint), superproxy.ProxyTypeHTTP, "", "", "")
if err != nil {
return err
}
@@ -458,7 +458,7 @@ func (p *Proxy) Run() error {
go func() {
defer wg.Done()
- gologger.Fatal().Msgf("%v", p.socks5proxy.ListenAndServe("tcp", p.options.ListenAddrSocks5))
+ gologger.Fatal().Msgf("%v", p.socks5Proxy.ListenAndServe("tcp", p.options.ListenAddrSOCKS5))
}()
}
@@ -504,21 +504,21 @@ func (p *Proxy) getRoundTripper() (http.RoundTripper, error) {
if len(p.options.UpstreamHTTPProxies) > 0 {
roundtrip = &http.Transport{Proxy: func(req *http.Request) (*url.URL, error) {
- return url.Parse(p.rbhttp.Next())
+ return url.Parse(p.rbHTTP.Next())
}, TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}
- } else if len(p.options.UpstreamSock5Proxies) > 0 {
+ } else if len(p.options.UpstreamSOCKS5Proxies) > 0 {
// for each socks5 proxy create a dialer
socks5Dialers := make(map[string]proxy.Dialer)
- for _, socks5proxy := range p.options.UpstreamSock5Proxies {
- dialer, err := proxy.SOCKS5("tcp", socks5proxy, nil, proxy.Direct)
+ for _, socks5Proxy := range p.options.UpstreamSOCKS5Proxies {
+ dialer, err := proxy.SOCKS5("tcp", socks5Proxy, nil, proxy.Direct)
if err != nil {
return nil, err
}
- socks5Dialers[socks5proxy] = dialer
+ socks5Dialers[socks5Proxy] = dialer
}
roundtrip = &http.Transport{Dial: func(network, addr string) (net.Conn, error) {
// lookup next dialer
- socks5Proxy := p.rbsocks5.Next()
+ socks5Proxy := p.rbSOCKS5.Next()
socks5Dialer := socks5Dialers[socks5Proxy]
// use it to perform the request
return socks5Dialer.Dial(network, addr)
@@ -528,7 +528,7 @@ func (p *Proxy) getRoundTripper() (http.RoundTripper, error) {
}
func (p *Proxy) httpTunnelDialer(ctx context.Context, network, addr string) (net.Conn, error) {
- return p.socks5tunnel.MakeTunnel(nil, nil, p.bufioPool, addr)
+ return p.socks5Tunnel.MakeTunnel(nil, nil, p.bufioPool, addr)
}
func (p *Proxy) hijackNServe(req *http.Request, ctx *martian.Context) error {
diff --git a/static/index.html b/static/index.html
index 364786c4..d28e8254 100644
--- a/static/index.html
+++ b/static/index.html
@@ -162,7 +162,7 @@
Swiss Army Knife Proxy for rapid deployments.
Supports multiple operations such as request/response dump,
- filtering and manipulation via DSL language, upstream HTTP/Socks5 proxy.
+ filtering and manipulation via DSL language, upstream HTTP/SOCKS5 proxy.
Additionally, a replay utility allows to import the dumped traffic
(request/responses with correct domain name) into BurpSuite or
any other proxy by simply setting the upstream proxy to proxify.