refine user hook URL control for specific API endpoints

Move user hook validation to individual endpoints (/connect, /cmd, /web).

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
This commit is contained in:
Jianhui Zhao
2025-07-16 20:26:13 +08:00
parent 989d9be983
commit d2320dce67
4 changed files with 18 additions and 8 deletions
+10 -5
View File
@@ -67,11 +67,6 @@ func (srv *RttyServer) ListenAPI() error {
}
authorized := r.Group("/", func(c *gin.Context) {
if !callUserHookUrl(cfg, c) {
c.AbortWithStatus(http.StatusForbidden)
return
}
if !cfg.LocalAuth && isLocalRequest(c) {
return
}
@@ -83,6 +78,11 @@ func (srv *RttyServer) ListenAPI() error {
})
authorized.GET("/connect/:devid", func(c *gin.Context) {
if !callUserHookUrl(cfg, c) {
c.Status(http.StatusForbidden)
return
}
if c.GetHeader("Upgrade") != "websocket" {
group := c.Query("group")
devid := c.Param("devid")
@@ -172,6 +172,11 @@ func (srv *RttyServer) ListenAPI() error {
})
authorized.POST("/cmd/:devid", func(c *gin.Context) {
if !callUserHookUrl(cfg, c) {
c.Status(http.StatusForbidden)
return
}
cmdInfo := &CommandReqInfo{}
err := c.BindJSON(&cmdInfo)