gURL icon indicating copy to clipboard operation
gURL copied to clipboard

Proxy method

Open hmert opened this issue 4 years ago • 1 comments

-x, --proxy [protocol://]host[:port] Use this proxy
     --proxy-anyauth Pick any proxy authentication method
     --proxy-basic   Use Basic authentication on the proxy
     --proxy-cacert <file> CA certificate to verify peer against for proxy
     --proxy-capath <dir> CA directory to verify peer against for proxy
     --proxy-cert <cert[:passwd]> Set client certificate for proxy
     --proxy-cert-type <type> Client certificate type for HTTPS proxy
     --proxy-ciphers <list> SSL ciphers to use for proxy
     --proxy-crlfile <file> Set a CRL list for proxy
     --proxy-digest  Use Digest authentication on the proxy
     --proxy-header <header/@file> Pass custom header(s) to proxy
     --proxy-insecure Do HTTPS proxy connections without verifying the proxy
     --proxy-key <key> Private key for HTTPS proxy
     --proxy-key-type <type> Private key file type for proxy
     --proxy-negotiate Use HTTP Negotiate (SPNEGO) authentication on the proxy
     --proxy-ntlm    Use NTLM authentication on the proxy
     --proxy-pass <phrase> Pass phrase for the private key for HTTPS proxy
     --proxy-pinnedpubkey <hashes> FILE/HASHES public key to verify proxy with
     --proxy-service-name <name> SPNEGO proxy service name
     --proxy-ssl-allow-beast Allow security flaw for interop for HTTPS proxy
     --proxy-tls13-ciphers <ciphersuite list> TLS 1.3 proxy cipher suites
     --proxy-tlsauthtype <type> TLS authentication type for HTTPS proxy
     --proxy-tlspassword <string> TLS password for HTTPS proxy
     --proxy-tlsuser <name> TLS username for HTTPS proxy
     --proxy-tlsv1   Use TLSv1 for HTTPS proxy
 -U, --proxy-user <user:password> Proxy user and password
     --proxy1.0 <host[:port]> Use HTTP/1.0 proxy on given port
 -p, --proxytunnel   Operate through an HTTP proxy tunnel (using CONNECT)

hmert avatar Sep 19 '21 14:09 hmert

Hi @hmert. I have an idea for implementing proxy commands to more clear. I wanted to get approval from you. proxy.go file is starting to be more complicated and messy for future commands. I was writing code for --proxy-digest flag and I had to modify proxyUserCmd by adding a new parameter. But, adding a new parameter affects to proxy_test.go file and proxyUserCredentials, err := proxyUserCmd(proxyUser) line. I think this problem will grow and be a problem. Maybe, refactoring will be necessary for each flag. That's why I think we can define a struct as follows:

type GurlProxy struct {
	proxyURL  string
	proxyUser string
	username  string
	password  string
	basic     bool
	digest    bool
	ntlm      bool
	negotiate bool
}

This struct may grow in the future, but I think, in this way, we suffer less pain. I am going to store necessary information as a struct and I'll convert functions to methods like func (g *GurlProxy) proxyCmd() (string, error). What do you think about that?

gozeloglu avatar Sep 27 '21 20:09 gozeloglu