mirror of
https://github.com/sipeed/NanoKVM.git
synced 2026-09-11 00:22:56 -05:00
68 lines
2.6 KiB
Go
68 lines
2.6 KiB
Go
package router
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
|
|
"NanoKVM-Server/authn"
|
|
"NanoKVM-Server/middleware"
|
|
"NanoKVM-Server/service/picoclaw"
|
|
)
|
|
|
|
const (
|
|
picoclawBasePath = "/api/picoclaw"
|
|
picoclawModelConfigPath = "/model/config"
|
|
picoclawAgentProfilePath = "/agent/profile"
|
|
picoclawSessionsPath = "/sessions"
|
|
picoclawSessionByIDPath = "/sessions/:id"
|
|
picoclawRuntimeStatusPath = "/runtime/status"
|
|
picoclawRuntimeSessionPath = "/runtime/session"
|
|
picoclawRuntimeInstallPath = "/runtime/install"
|
|
picoclawRuntimeUninstallPath = "/runtime/uninstall"
|
|
picoclawRuntimeStartPath = "/runtime/start"
|
|
picoclawRuntimeStopPath = "/runtime/stop"
|
|
picoclawGatewayWSPath = "/gateway/ws"
|
|
picoclawScreenshotPath = "/screenshot"
|
|
picoclawActionsPath = "/actions"
|
|
picoclawMCPPath = "/mcp"
|
|
picoclawLoadImagePath = "/load-image"
|
|
)
|
|
|
|
var picoclawLoopbackHTTPAllowedPaths = []string{
|
|
picoclawBasePath + picoclawMCPPath,
|
|
picoclawBasePath + picoclawRuntimeSessionPath,
|
|
picoclawBasePath + picoclawScreenshotPath,
|
|
picoclawBasePath + picoclawActionsPath,
|
|
picoclawBasePath + picoclawLoadImagePath,
|
|
}
|
|
|
|
func PicoclawLoopbackHTTPAllowedPaths() []string {
|
|
return append([]string(nil), picoclawLoopbackHTTPAllowedPaths...)
|
|
}
|
|
|
|
func picoclawRouter(r *gin.Engine, service *picoclaw.Service) {
|
|
frontendAPI := r.Group(picoclawBasePath).Use(
|
|
middleware.CheckToken(),
|
|
middleware.RequireRole(authn.RoleAdmin),
|
|
)
|
|
localAPI := r.Group(picoclawBasePath).Use(middleware.CheckLoopbackInternalToken())
|
|
|
|
localAPI.GET(picoclawScreenshotPath, service.Screenshot)
|
|
localAPI.POST(picoclawActionsPath, service.Actions)
|
|
localAPI.POST(picoclawMCPPath, service.MCPHandler)
|
|
localAPI.POST(picoclawLoadImagePath, service.LoadImage)
|
|
localAPI.GET(picoclawRuntimeSessionPath, service.GetRuntimeSession)
|
|
|
|
frontendAPI.POST(picoclawModelConfigPath, service.UpdateModelConfig)
|
|
frontendAPI.POST(picoclawAgentProfilePath, service.UpdateAgentProfile)
|
|
frontendAPI.GET(picoclawSessionsPath, service.ListSessions)
|
|
frontendAPI.GET(picoclawSessionByIDPath, service.GetSession)
|
|
frontendAPI.DELETE(picoclawSessionByIDPath, service.DeleteSession)
|
|
frontendAPI.GET(picoclawRuntimeStatusPath, service.GetRuntimeStatus)
|
|
frontendAPI.DELETE(picoclawRuntimeSessionPath, service.ReleaseRuntimeSession)
|
|
frontendAPI.POST(picoclawRuntimeInstallPath, service.InstallRuntime)
|
|
frontendAPI.POST(picoclawRuntimeUninstallPath, service.UninstallRuntime)
|
|
frontendAPI.POST(picoclawRuntimeStartPath, service.StartRuntime)
|
|
frontendAPI.POST(picoclawRuntimeStopPath, service.StopRuntime)
|
|
frontendAPI.GET(picoclawGatewayWSPath, service.ConnectGateway)
|
|
}
|