diff --git a/config/config.go b/config/config.go index 07b9b1a..fa1b728 100644 --- a/config/config.go +++ b/config/config.go @@ -26,6 +26,7 @@ type SectionCore struct { SSL bool `yaml:"ssl"` CertPath string `yaml:"cert_path"` KeyPath string `yaml:"key_path"` + HTTPProxy string `yaml:"http_proxy"` } // SectionAPI is sub seciont of config. @@ -94,6 +95,7 @@ func BuildDefaultPushConf() ConfYaml { conf.Core.CertPath = "cert.pem" conf.Core.KeyPath = "key.pem" conf.Core.MaxNotification = 100 + conf.Core.HTTPProxy = "" // Api conf.API.PushURI = "/api/push" diff --git a/config/config.yml b/config/config.yml index eaa991e..da5e334 100644 --- a/config/config.yml +++ b/config/config.yml @@ -7,6 +7,7 @@ core: ssl: false cert_path: "cert.pem" key_path: "key.pem" + http_proxy: "" api: push_uri: "/api/push" diff --git a/config/config_test.go b/config/config_test.go index e6ace0b..4e10842 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -62,6 +62,7 @@ func (suite *ConfigTestSuite) TestValidateConfDefault() { assert.Equal(suite.T(), "cert.pem", suite.ConfGorushDefault.Core.CertPath) assert.Equal(suite.T(), "key.pem", suite.ConfGorushDefault.Core.KeyPath) assert.Equal(suite.T(), 100, suite.ConfGorushDefault.Core.MaxNotification) + assert.Equal(suite.T(), "", suite.ConfGorushDefault.Core.HTTPProxy) // Api assert.Equal(suite.T(), "/api/push", suite.ConfGorushDefault.API.PushURI) @@ -107,6 +108,7 @@ func (suite *ConfigTestSuite) TestValidateConf() { assert.Equal(suite.T(), "cert.pem", suite.ConfGorush.Core.CertPath) assert.Equal(suite.T(), "key.pem", suite.ConfGorush.Core.KeyPath) assert.Equal(suite.T(), 100, suite.ConfGorush.Core.MaxNotification) + assert.Equal(suite.T(), "", suite.ConfGorush.Core.HTTPProxy) // Api assert.Equal(suite.T(), "/api/push", suite.ConfGorush.API.PushURI) diff --git a/gorush.go b/gorush.go index 1199958..f593d7b 100644 --- a/gorush.go +++ b/gorush.go @@ -103,17 +103,6 @@ func main() { // set default parameters. gorush.PushConf = config.BuildDefaultPushConf() - // set http proxy for GCM - if proxy != "" { - err = gorush.SetProxy(proxy) - - if err != nil { - log.Printf("Set Proxy error: '%v'", err) - - return - } - } - // load user define config. if configFile != "" { gorush.PushConf, err = config.LoadConfYaml(configFile) @@ -148,6 +137,21 @@ func main() { return } + // set http proxy for GCM + if proxy != "" { + err = gorush.SetProxy(proxy) + + if err != nil { + gorush.LogError.Fatal("Set Proxy error: ", err) + } + } else if gorush.PushConf.Core.HTTPProxy != "" { + err = gorush.SetProxy(gorush.PushConf.Core.HTTPProxy) + + if err != nil { + gorush.LogError.Fatal("Set Proxy error: ", err) + } + } + // send android notification if opts.Android.Enabled { gorush.PushConf.Android.Enabled = opts.Android.Enabled diff --git a/gorush/notification.go b/gorush/notification.go index ec061de..ff07560 100644 --- a/gorush/notification.go +++ b/gorush/notification.go @@ -127,6 +127,7 @@ func SetProxy(proxy string) error { } http.DefaultTransport = &http.Transport{Proxy: http.ProxyURL(proxyUrl)} + LogAccess.Debug("Set http proxy as " + proxy) return nil }