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