Plugins: add option to proxy ds connections through a secure socks proxy (#59254)
* Plugins: add feature to proxy data source connections
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
package setting
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"gopkg.in/ini.v1"
|
||||
)
|
||||
|
||||
type SecureSocksDSProxySettings struct {
|
||||
Enabled bool
|
||||
ClientCert string
|
||||
ClientKey string
|
||||
RootCA string
|
||||
ProxyAddress string
|
||||
ServerName string
|
||||
}
|
||||
|
||||
func readSecureSocksDSProxySettings(iniFile *ini.File) (SecureSocksDSProxySettings, error) {
|
||||
s := SecureSocksDSProxySettings{}
|
||||
secureSocksProxySection := iniFile.Section("secure_socks_datasource_proxy")
|
||||
s.Enabled = secureSocksProxySection.Key("enabled").MustBool(false)
|
||||
s.ClientCert = secureSocksProxySection.Key("client_cert").MustString("")
|
||||
s.ClientKey = secureSocksProxySection.Key("client_key").MustString("")
|
||||
s.RootCA = secureSocksProxySection.Key("root_ca_cert").MustString("")
|
||||
s.ProxyAddress = secureSocksProxySection.Key("proxy_address").MustString("")
|
||||
s.ServerName = secureSocksProxySection.Key("server_name").MustString("")
|
||||
|
||||
if !s.Enabled {
|
||||
return s, nil
|
||||
}
|
||||
|
||||
// all fields must be specified to use the proxy
|
||||
if s.RootCA == "" {
|
||||
return s, errors.New("rootCA required")
|
||||
} else if s.ClientCert == "" || s.ClientKey == "" {
|
||||
return s, errors.New("client key pair required")
|
||||
} else if s.ServerName == "" {
|
||||
return s, errors.New("server name required")
|
||||
} else if s.ProxyAddress == "" {
|
||||
return s, errors.New("proxy address required")
|
||||
}
|
||||
|
||||
return s, nil
|
||||
}
|
||||
Reference in New Issue
Block a user