新增机器人功能

This commit is contained in:
2026-06-12 18:07:53 +08:00
parent 91267eb99c
commit b645907c52
13 changed files with 1494 additions and 10 deletions
+6 -5
View File
@@ -14,10 +14,10 @@ import (
"gorm.io/gorm"
)
func newHTTPServer(cfg webConfig, store *store, sessions *sessionManager, mqttStatus mqttStatusProvider, blocking *blockingCache, forwarder mqttForwardReloader, settings *runtimeSettingsCache) *http.Server {
func newHTTPServer(cfg webConfig, store *store, sessions *sessionManager, mqttStatus mqttStatusProvider, blocking *blockingCache, forwarder mqttForwardReloader, settings *runtimeSettingsCache, botSender botTextSender) *http.Server {
return &http.Server{
Addr: net.JoinHostPort(cfg.Host, strconv.Itoa(cfg.Port)),
Handler: newRouter(cfg, store, sessions, mqttStatus, blocking, forwarder, settings),
Handler: newRouter(cfg, store, sessions, mqttStatus, blocking, forwarder, settings, botSender),
}
}
@@ -47,12 +47,12 @@ func serveHTTPUnixSocket(server *http.Server, socketPath string) error {
return server.Serve(listener)
}
func newRouter(cfg webConfig, store *store, sessions *sessionManager, mqttStatus mqttStatusProvider, blocking *blockingCache, forwarder mqttForwardReloader, settings *runtimeSettingsCache) *gin.Engine {
func newRouter(cfg webConfig, store *store, sessions *sessionManager, mqttStatus mqttStatusProvider, blocking *blockingCache, forwarder mqttForwardReloader, settings *runtimeSettingsCache, botSender botTextSender) *gin.Engine {
r := gin.New()
r.Use(gin.Logger(), gin.Recovery())
api := r.Group("/api")
registerAPIRoutes(api, store)
registerAdminRoutes(api.Group("/admin"), store, sessions, mqttStatus, blocking, forwarder, settings)
registerAdminRoutes(api.Group("/admin"), store, sessions, mqttStatus, blocking, forwarder, settings, botSender)
registerStaticRoutes(r, cfg.StaticDir)
return r
}
@@ -123,7 +123,7 @@ func registerAPIRoutes(r gin.IRouter, store *store) {
})
}
func registerAdminRoutes(r gin.IRouter, store *store, sessions *sessionManager, mqttStatus mqttStatusProvider, blocking *blockingCache, forwarder mqttForwardReloader, settings *runtimeSettingsCache) {
func registerAdminRoutes(r gin.IRouter, store *store, sessions *sessionManager, mqttStatus mqttStatusProvider, blocking *blockingCache, forwarder mqttForwardReloader, settings *runtimeSettingsCache, botSender botTextSender) {
type loginRequest struct {
Username string `json:"username"`
Password string `json:"password"`
@@ -187,6 +187,7 @@ func registerAdminRoutes(r gin.IRouter, store *store, sessions *sessionManager,
registerAdminMQTTForwardRoutes(protected, store, forwarder)
registerAdminRuntimeSettingsRoutes(protected, store, settings)
registerAdminHelpRoutes(protected, store)
registerAdminBotRoutes(protected, store, botSender)
protected.GET("/me", func(c *gin.Context) {
claims := c.MustGet("admin_claims").(*sessionClaims)
c.JSON(http.StatusOK, gin.H{"user": adminUserDTO{Username: claims.Username, Role: claims.Role}})