mirror of
https://github.com/mrusme/neonmodem.git
synced 2025-06-30 22:18:39 -04:00
Implemented #1 for Discourse, Lobsters
This commit is contained in:
parent
dbcf566574
commit
71c86c4a56
@ -78,6 +78,11 @@ func load() {
|
|||||||
}
|
}
|
||||||
defer logger.Sync()
|
defer logger.Sync()
|
||||||
LOG = logger.Sugar()
|
LOG = logger.Sugar()
|
||||||
|
|
||||||
|
if CFG.Proxy != "" {
|
||||||
|
LOG.Debugf("set proxy: %s", CFG.Proxy)
|
||||||
|
os.Setenv("HTTP_PROXY", CFG.Proxy)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadSystems(c *ctx.Ctx) []error {
|
func loadSystems(c *ctx.Ctx) []error {
|
||||||
@ -85,6 +90,7 @@ func loadSystems(c *ctx.Ctx) []error {
|
|||||||
|
|
||||||
for _, sysCfg := range c.Config.Systems {
|
for _, sysCfg := range c.Config.Systems {
|
||||||
c.Logger.Debugf("loading system of type %s ...", sysCfg.Type)
|
c.Logger.Debugf("loading system of type %s ...", sysCfg.Type)
|
||||||
|
sysCfg.Config["proxy"] = CFG.Proxy
|
||||||
sys, err := system.New(sysCfg.Type, &sysCfg.Config, LOG)
|
sys, err := system.New(sysCfg.Type, &sysCfg.Config, LOG)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.Logger.Errorf("error loading system: %s", err)
|
c.Logger.Errorf("error loading system: %s", err)
|
||||||
|
@ -41,6 +41,7 @@ type ThemeItemConfig struct {
|
|||||||
type Config struct {
|
type Config struct {
|
||||||
Debug bool
|
Debug bool
|
||||||
Log string
|
Log string
|
||||||
|
Proxy string
|
||||||
|
|
||||||
RenderImages bool
|
RenderImages bool
|
||||||
|
|
||||||
@ -185,6 +186,7 @@ func (cfg *Config) Save() error {
|
|||||||
func SetDefaults(cacheDir string) {
|
func SetDefaults(cacheDir string) {
|
||||||
viper.SetDefault("Debug", "false")
|
viper.SetDefault("Debug", "false")
|
||||||
viper.SetDefault("Log", path.Join(cacheDir, "neonmodem.log"))
|
viper.SetDefault("Log", path.Join(cacheDir, "neonmodem.log"))
|
||||||
|
viper.SetDefault("Proxy", "")
|
||||||
|
|
||||||
viper.SetDefault("RenderImages", "true")
|
viper.SetDefault("RenderImages", "true")
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/hashicorp/go-retryablehttp"
|
"github.com/hashicorp/go-retryablehttp"
|
||||||
)
|
)
|
||||||
@ -74,13 +75,34 @@ type Client struct {
|
|||||||
|
|
||||||
func NewDefaultClientConfig(
|
func NewDefaultClientConfig(
|
||||||
endpoint string,
|
endpoint string,
|
||||||
|
proxy string,
|
||||||
credentials map[string]string,
|
credentials map[string]string,
|
||||||
logger Logger,
|
logger Logger,
|
||||||
) ClientConfig {
|
) ClientConfig {
|
||||||
|
var httpClient *http.Client = nil
|
||||||
|
var httpTransport *http.Transport = nil
|
||||||
|
|
||||||
|
if proxy != "" {
|
||||||
|
proxyURL, err := url.Parse(proxy)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error(err)
|
||||||
|
} else {
|
||||||
|
logger.Debugf("setting up http proxy transport: %s\n", proxyURL.String())
|
||||||
|
httpTransport = &http.Transport{
|
||||||
|
Proxy: http.ProxyURL(proxyURL),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
httpClient = &http.Client{
|
||||||
|
Transport: httpTransport,
|
||||||
|
Timeout: time.Second * 10,
|
||||||
|
}
|
||||||
|
|
||||||
return ClientConfig{
|
return ClientConfig{
|
||||||
Endpoint: endpoint,
|
Endpoint: endpoint,
|
||||||
Credentials: credentials,
|
Credentials: credentials,
|
||||||
HTTPClient: http.DefaultClient,
|
HTTPClient: httpClient,
|
||||||
Logger: logger,
|
Logger: logger,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@ package discourse
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
|
||||||
"net/url"
|
"net/url"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
@ -20,10 +19,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type System struct {
|
type System struct {
|
||||||
ID int
|
ID int
|
||||||
config map[string]interface{}
|
config map[string]interface{}
|
||||||
logger *zap.SugaredLogger
|
logger *zap.SugaredLogger
|
||||||
client *api.Client
|
client *api.Client
|
||||||
|
clientCfg api.ClientConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sys *System) GetID() int {
|
func (sys *System) GetID() int {
|
||||||
@ -113,12 +113,13 @@ func (sys *System) Load() error {
|
|||||||
credentials[k] = v.(string)
|
credentials[k] = v.(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
sys.client = api.NewClient(&api.ClientConfig{
|
sys.clientCfg = api.NewDefaultClientConfig(
|
||||||
Endpoint: url.(string),
|
url.(string),
|
||||||
Credentials: credentials,
|
sys.config["proxy"].(string),
|
||||||
HTTPClient: http.DefaultClient,
|
credentials,
|
||||||
Logger: sys.logger,
|
sys.logger,
|
||||||
})
|
)
|
||||||
|
sys.client = api.NewClient(&sys.clientCfg)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/hashicorp/go-retryablehttp"
|
"github.com/hashicorp/go-retryablehttp"
|
||||||
)
|
)
|
||||||
@ -70,13 +71,34 @@ type Client struct {
|
|||||||
|
|
||||||
func NewDefaultClientConfig(
|
func NewDefaultClientConfig(
|
||||||
endpoint string,
|
endpoint string,
|
||||||
|
proxy string,
|
||||||
credentials map[string]string,
|
credentials map[string]string,
|
||||||
logger Logger,
|
logger Logger,
|
||||||
) ClientConfig {
|
) ClientConfig {
|
||||||
|
var httpClient *http.Client = nil
|
||||||
|
var httpTransport *http.Transport = nil
|
||||||
|
|
||||||
|
if proxy != "" {
|
||||||
|
proxyURL, err := url.Parse(proxy)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error(err)
|
||||||
|
} else {
|
||||||
|
logger.Debugf("setting up http proxy transport: %s\n", proxyURL.String())
|
||||||
|
httpTransport = &http.Transport{
|
||||||
|
Proxy: http.ProxyURL(proxyURL),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
httpClient = &http.Client{
|
||||||
|
Transport: httpTransport,
|
||||||
|
Timeout: time.Second * 10,
|
||||||
|
}
|
||||||
|
|
||||||
return ClientConfig{
|
return ClientConfig{
|
||||||
Endpoint: endpoint,
|
Endpoint: endpoint,
|
||||||
Credentials: credentials,
|
Credentials: credentials,
|
||||||
HTTPClient: http.DefaultClient,
|
HTTPClient: httpClient,
|
||||||
Logger: logger,
|
Logger: logger,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@ package lobsters
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
|
||||||
"net/url"
|
"net/url"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -19,10 +18,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type System struct {
|
type System struct {
|
||||||
ID int
|
ID int
|
||||||
config map[string]interface{}
|
config map[string]interface{}
|
||||||
logger *zap.SugaredLogger
|
logger *zap.SugaredLogger
|
||||||
client *api.Client
|
client *api.Client
|
||||||
|
clientCfg api.ClientConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sys *System) GetID() int {
|
func (sys *System) GetID() int {
|
||||||
@ -110,12 +110,13 @@ func (sys *System) Load() error {
|
|||||||
|
|
||||||
credentials := make(map[string]string)
|
credentials := make(map[string]string)
|
||||||
|
|
||||||
sys.client = api.NewClient(&api.ClientConfig{
|
sys.clientCfg = api.NewDefaultClientConfig(
|
||||||
Endpoint: url.(string),
|
url.(string),
|
||||||
Credentials: credentials,
|
sys.config["proxy"].(string),
|
||||||
HTTPClient: http.DefaultClient,
|
credentials,
|
||||||
Logger: sys.logger,
|
sys.logger,
|
||||||
})
|
)
|
||||||
|
sys.client = api.NewClient(&sys.clientCfg)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user