mirror of
https://github.com/m1k1o/neko.git
synced 2024-07-24 14:40:50 +12:00
add support for modules.
This commit is contained in:
parent
5b69413e01
commit
b197bb303e
@ -5,6 +5,7 @@ import (
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"demodesk/neko"
|
||||
"demodesk/neko/modules"
|
||||
"demodesk/neko/internal/config"
|
||||
)
|
||||
|
||||
@ -16,13 +17,13 @@ func init() {
|
||||
Run: neko.Service.ServeCommand,
|
||||
}
|
||||
|
||||
configs := []config.Config{
|
||||
configs := append([]config.Config{
|
||||
neko.Service.Configs.Desktop,
|
||||
neko.Service.Configs.Capture,
|
||||
neko.Service.Configs.WebRTC,
|
||||
neko.Service.Configs.Session,
|
||||
neko.Service.Configs.Server,
|
||||
}
|
||||
}, modules.ConfigsList()...)
|
||||
|
||||
cobra.OnInitialize(func() {
|
||||
for _, cfg := range configs {
|
||||
|
@ -6,4 +6,5 @@ import (
|
||||
|
||||
type ApiManager interface {
|
||||
Route(r chi.Router)
|
||||
AddRouter(path string, router func(chi.Router))
|
||||
}
|
||||
|
@ -2,6 +2,8 @@ package types
|
||||
|
||||
import "net/http"
|
||||
|
||||
type HandlerFunction func(Session, []byte) bool
|
||||
|
||||
type WebSocketPeer interface {
|
||||
Send(v interface{}) error
|
||||
Destroy() error
|
||||
@ -10,5 +12,6 @@ type WebSocketPeer interface {
|
||||
type WebSocketManager interface {
|
||||
Start()
|
||||
Shutdown() error
|
||||
AddHandler(handler HandlerFunction)
|
||||
Upgrade(w http.ResponseWriter, r *http.Request) error
|
||||
}
|
||||
|
@ -15,8 +15,6 @@ import (
|
||||
"demodesk/neko/internal/types"
|
||||
)
|
||||
|
||||
type HandlerFunction func(types.Session, []byte) bool
|
||||
|
||||
func New(
|
||||
sessions types.SessionManager,
|
||||
desktop types.DesktopManager,
|
||||
@ -35,7 +33,7 @@ func New(
|
||||
},
|
||||
},
|
||||
handler: handler.New(sessions, desktop, capture, webrtc),
|
||||
handlers: []HandlerFunction{},
|
||||
handlers: []types.HandlerFunction{},
|
||||
}
|
||||
}
|
||||
|
||||
@ -48,7 +46,7 @@ type WebSocketManagerCtx struct {
|
||||
sessions types.SessionManager
|
||||
desktop types.DesktopManager
|
||||
handler *handler.MessageHandlerCtx
|
||||
handlers []HandlerFunction
|
||||
handlers []types.HandlerFunction
|
||||
shutdown chan bool
|
||||
}
|
||||
|
||||
@ -149,7 +147,7 @@ func (ws *WebSocketManagerCtx) Shutdown() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ws *WebSocketManagerCtx) AddHandler(handler HandlerFunction) {
|
||||
func (ws *WebSocketManagerCtx) AddHandler(handler types.HandlerFunction) {
|
||||
ws.handlers = append(ws.handlers, handler)
|
||||
}
|
||||
|
||||
|
13
neko.go
13
neko.go
@ -14,6 +14,7 @@ import (
|
||||
"demodesk/neko/internal/websocket"
|
||||
"demodesk/neko/internal/api"
|
||||
"demodesk/neko/internal/http"
|
||||
"demodesk/neko/modules"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/rs/zerolog/log"
|
||||
@ -169,6 +170,12 @@ func (neko *Neko) Start() {
|
||||
neko.Configs.Server,
|
||||
)
|
||||
|
||||
modules.Start(
|
||||
neko.sessionManager,
|
||||
neko.webSocketManager,
|
||||
neko.apiManager,
|
||||
)
|
||||
|
||||
neko.httpManager = http.New(
|
||||
neko.webSocketManager,
|
||||
neko.apiManager,
|
||||
@ -208,6 +215,12 @@ func (neko *Neko) Shutdown() {
|
||||
neko.logger.Debug().Msg("websocket manager shutdown")
|
||||
}
|
||||
|
||||
if err := modules.Shutdown(); err != nil {
|
||||
neko.logger.Err(err).Msg("modules shutdown with an error")
|
||||
} else {
|
||||
neko.logger.Debug().Msg("modules shutdown")
|
||||
}
|
||||
|
||||
if err := neko.httpManager.Shutdown(); err != nil {
|
||||
neko.logger.Err(err).Msg("http manager shutdown with an error")
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user