update wshub

This commit is contained in:
aynakeya
2024-04-30 02:01:05 -07:00
parent 95a0a97264
commit 68c7c591ff
6 changed files with 66 additions and 26 deletions

View File

@@ -34,7 +34,7 @@ func (c *wsClient) start() {
c.Close <- 1
return
}
if msgType == websocket.TextMessage {
if msgType != websocket.TextMessage {
return
}
var data EventDataReceived
@@ -53,23 +53,25 @@ func (c *wsClient) start() {
}
type wsServer struct {
Running bool
Server *http.Server
clients map[*wsClient]bool
mux *http.ServeMux
lock sync.RWMutex
port *int
log logger.ILogger
Running bool
Server *http.Server
clients map[*wsClient]bool
mux *http.ServeMux
lock sync.RWMutex
port *int
localhostOnly *bool
log logger.ILogger
}
func newWsServer(port *int) *wsServer {
func newWsServer(port *int, localhostOnly *bool) *wsServer {
mux := http.NewServeMux()
s := &wsServer{
Running: false,
clients: make(map[*wsClient]bool),
mux: mux,
port: port,
log: global.Logger.WithPrefix("plugin.wshub.server"),
Running: false,
clients: make(map[*wsClient]bool),
mux: mux,
port: port,
localhostOnly: localhostOnly,
log: global.Logger.WithPrefix("plugin.wshub.server"),
}
mux.HandleFunc("/wsinfo", s.handleWsInfo)
return s
@@ -132,8 +134,14 @@ func (s *wsServer) Start() {
s.log.Debug("WebInfoServer starting...")
s.Running = true
go func() {
var addr string
if *s.localhostOnly {
addr = fmt.Sprintf("localhost:%d", *s.port)
} else {
addr = fmt.Sprintf("0.0.0.0:%d", *s.port)
}
s.Server = &http.Server{
Addr: fmt.Sprintf("localhost:%d", *s.port),
Addr: addr,
Handler: s.mux,
}
err := s.Server.ListenAndServe()
@@ -161,5 +169,8 @@ func (s *wsServer) Stop() error {
}
func (s *wsServer) getWsUrl() string {
return fmt.Sprintf("ws://localhost:%d/wsinfo", *s.port)
if *s.localhostOnly {
return fmt.Sprintf("ws://localhost:%d/wsinfo", *s.port)
}
return fmt.Sprintf("ws://0.0.0.0:%d/wsinfo", *s.port)
}

View File

@@ -19,24 +19,26 @@ import (
type WsHub struct {
config.BaseConfig
Enabled bool
Port int
panel fyne.CanvasObject
server *wsServer
log logger.ILogger
Enabled bool
Port int
LocalHostOnly bool
panel fyne.CanvasObject
server *wsServer
log logger.ILogger
}
func NewWsHub() *WsHub {
return &WsHub{
Enabled: false,
Port: 29629,
log: global.Logger.WithPrefix("plugin.wshub"),
Enabled: false,
Port: 29629,
LocalHostOnly: true,
log: global.Logger.WithPrefix("plugin.wshub"),
}
}
func (w *WsHub) Enable() error {
config.LoadConfig(w)
w.server = newWsServer(&w.Port)
w.server = newWsServer(&w.Port, &w.LocalHostOnly)
gui.AddConfigLayout(w)
w.registerEvents()
w.log.Info("webinfo loaded")
@@ -89,6 +91,9 @@ func (w *WsHub) CreatePanel() fyne.CanvasObject {
autoStart := container.NewHBox(
widget.NewLabel(i18n.T("plugin.wshub.autostart")),
component.NewCheckOneWayBinding("", &w.Enabled, w.Enabled))
localHostOnly := container.NewHBox(
widget.NewLabel(i18n.T("plugin.wshub.local_host_only")),
component.NewCheckOneWayBinding("", &w.LocalHostOnly, w.LocalHostOnly))
freshStatusText()
serverPort := container.NewBorder(nil, nil,
widget.NewLabel(i18n.T("plugin.wshub.port")), nil,
@@ -152,7 +157,7 @@ func (w *WsHub) CreatePanel() fyne.CanvasObject {
widget.NewLabel(i18n.T("plugin.wshub.server_control")),
startBtn, stopBtn, restartBtn,
)
w.panel = container.NewVBox(serverStatus, autoStart, serverPreview, serverPort, ctrlBtns)
w.panel = container.NewVBox(serverStatus, autoStart, localHostOnly, serverPreview, serverPort, ctrlBtns)
return nil
}