reverse proxy mode

This commit is contained in:
Craig 2020-04-06 20:14:30 +00:00
parent 414b5a8015
commit 584513de9b
2 changed files with 13 additions and 2 deletions

View File

@ -8,6 +8,7 @@ import (
type WebSocket struct { type WebSocket struct {
Password string Password string
AdminPassword string AdminPassword string
Proxy bool
} }
func (WebSocket) Init(cmd *cobra.Command) error { func (WebSocket) Init(cmd *cobra.Command) error {
@ -21,10 +22,16 @@ func (WebSocket) Init(cmd *cobra.Command) error {
return err return err
} }
cmd.PersistentFlags().Bool("proxy", false, "enable reverse proxy mode")
if err := viper.BindPFlag("proxy", cmd.PersistentFlags().Lookup("proxy")); err != nil {
return err
}
return nil return nil
} }
func (s *WebSocket) Set() { func (s *WebSocket) Set() {
s.Password = viper.GetString("password") s.Password = viper.GetString("password")
s.AdminPassword = viper.GetString("password_admin") s.AdminPassword = viper.GetString("password_admin")
s.Proxy = viper.GetBool("proxy")
} }

View File

@ -70,7 +70,7 @@ func (ws *WebSocketHandler) Start() error {
} }
}) })
ws.sessions.OnDestroy(func(id string) { ws.sessions.OnDestroy(func(id string, session types.Session) {
if err := ws.handler.SessionDestroyed(id); err != nil { if err := ws.handler.SessionDestroyed(id); err != nil {
ws.logger.Warn().Str("id", id).Err(err).Msg("session destroyed with and error") ws.logger.Warn().Str("id", id).Err(err).Msg("session destroyed with and error")
} else { } else {
@ -191,7 +191,11 @@ func (ws *WebSocketHandler) Upgrade(w http.ResponseWriter, r *http.Request) erro
} }
func (ws *WebSocketHandler) authenticate(r *http.Request) (string, string, bool, error) { func (ws *WebSocketHandler) authenticate(r *http.Request) (string, string, bool, error) {
ip := utils.ReadUserIP(r) ip := r.RemoteAddr
if ws.conf.Proxy {
ip = utils.ReadUserIP(r)
}
id, err := utils.NewUID(32) id, err := utils.NewUID(32)
if err != nil { if err != nil {