HTTP proxy written in Go to replace Tinyproxy (#269)
This commit is contained in:
71
internal/settings/httpproxy.go
Normal file
71
internal/settings/httpproxy.go
Normal file
@@ -0,0 +1,71 @@
|
||||
package settings
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/qdm12/gluetun/internal/params"
|
||||
)
|
||||
|
||||
// HTTPProxy contains settings to configure the HTTP proxy.
|
||||
type HTTPProxy struct { //nolint:maligned
|
||||
Enabled bool
|
||||
Port uint16
|
||||
User string
|
||||
Password string
|
||||
Stealth bool
|
||||
Log bool
|
||||
}
|
||||
|
||||
func (h *HTTPProxy) String() string {
|
||||
if !h.Enabled {
|
||||
return "HTTP Proxy settings: disabled"
|
||||
}
|
||||
auth, log, stealth := disabled, disabled, disabled
|
||||
if h.User != "" {
|
||||
auth = enabled
|
||||
}
|
||||
if h.Log {
|
||||
log = enabled
|
||||
}
|
||||
if h.Stealth {
|
||||
stealth = enabled
|
||||
}
|
||||
settingsList := []string{
|
||||
"HTTP proxy settings:",
|
||||
fmt.Sprintf("Port: %d", h.Port),
|
||||
"Authentication: " + auth,
|
||||
"Stealth: " + stealth,
|
||||
"Log: " + log,
|
||||
}
|
||||
return strings.Join(settingsList, "\n |--")
|
||||
}
|
||||
|
||||
// GetHTTPProxySettings obtains HTTPProxy settings from environment variables using the params package.
|
||||
func GetHTTPProxySettings(paramsReader params.Reader) (settings HTTPProxy, err error) {
|
||||
settings.Enabled, err = paramsReader.GetHTTPProxy()
|
||||
if err != nil || !settings.Enabled {
|
||||
return settings, err
|
||||
}
|
||||
settings.Port, err = paramsReader.GetHTTPProxyPort()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.User, err = paramsReader.GetHTTPProxyUser()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.Password, err = paramsReader.GetHTTPProxyPassword()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.Stealth, err = paramsReader.GetHTTPProxyStealth()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.Log, err = paramsReader.GetHTTPProxyLog()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
return settings, nil
|
||||
}
|
||||
@@ -21,7 +21,7 @@ type Settings struct {
|
||||
System System
|
||||
DNS DNS
|
||||
Firewall Firewall
|
||||
TinyProxy TinyProxy
|
||||
HTTPProxy HTTPProxy
|
||||
ShadowSocks ShadowSocks
|
||||
PublicIPPeriod time.Duration
|
||||
UpdaterPeriod time.Duration
|
||||
@@ -44,7 +44,7 @@ func (s *Settings) String() string {
|
||||
s.System.String(),
|
||||
s.DNS.String(),
|
||||
s.Firewall.String(),
|
||||
s.TinyProxy.String(),
|
||||
s.HTTPProxy.String(),
|
||||
s.ShadowSocks.String(),
|
||||
s.ControlServer.String(),
|
||||
"Public IP check period: " + s.PublicIPPeriod.String(), // TODO print disabled if 0
|
||||
@@ -73,7 +73,7 @@ func GetAllSettings(paramsReader params.Reader) (settings Settings, err error) {
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.TinyProxy, err = GetTinyProxySettings(paramsReader)
|
||||
settings.HTTPProxy, err = GetHTTPProxySettings(paramsReader)
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
package settings
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/qdm12/gluetun/internal/models"
|
||||
"github.com/qdm12/gluetun/internal/params"
|
||||
)
|
||||
|
||||
// TinyProxy contains settings to configure TinyProxy.
|
||||
type TinyProxy struct {
|
||||
User string
|
||||
Password string
|
||||
LogLevel models.TinyProxyLogLevel
|
||||
Port uint16
|
||||
Enabled bool
|
||||
}
|
||||
|
||||
func (t *TinyProxy) String() string {
|
||||
if !t.Enabled {
|
||||
return "TinyProxy settings: disabled"
|
||||
}
|
||||
auth := disabled
|
||||
if t.User != "" {
|
||||
auth = enabled
|
||||
}
|
||||
settingsList := []string{
|
||||
fmt.Sprintf("Port: %d", t.Port),
|
||||
"Authentication: " + auth,
|
||||
"Log level: " + string(t.LogLevel),
|
||||
}
|
||||
return "TinyProxy settings:\n" + strings.Join(settingsList, "\n |--")
|
||||
}
|
||||
|
||||
// GetTinyProxySettings obtains TinyProxy settings from environment variables using the params package.
|
||||
func GetTinyProxySettings(paramsReader params.Reader) (settings TinyProxy, err error) {
|
||||
settings.Enabled, err = paramsReader.GetTinyProxy()
|
||||
if err != nil || !settings.Enabled {
|
||||
return settings, err
|
||||
}
|
||||
settings.User, err = paramsReader.GetTinyProxyUser()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.Password, err = paramsReader.GetTinyProxyPassword()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.Port, err = paramsReader.GetTinyProxyPort()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.LogLevel, err = paramsReader.GetTinyProxyLog()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
return settings, nil
|
||||
}
|
||||
Reference in New Issue
Block a user