diff options
Diffstat (limited to 'web/controller/util.go')
| -rw-r--r-- | web/controller/util.go | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/web/controller/util.go b/web/controller/util.go new file mode 100644 index 00000000..2bd2fa55 --- /dev/null +++ b/web/controller/util.go @@ -0,0 +1,97 @@ +package controller + +import ( + "github.com/gin-gonic/gin" + "net" + "net/http" + "strings" + "x-ui/config" + "x-ui/logger" + "x-ui/web/entity" +) + +func getUriId(c *gin.Context) int64 { + s := struct { + Id int64 `uri:"id"` + }{} + + _ = c.BindUri(&s) + return s.Id +} + +func getRemoteIp(c *gin.Context) string { + value := c.GetHeader("X-Forwarded-For") + if value != "" { + ips := strings.Split(value, ",") + return ips[0] + } else { + addr := c.Request.RemoteAddr + ip, _, _ := net.SplitHostPort(addr) + return ip + } +} + +func jsonMsg(c *gin.Context, msg string, err error) { + jsonMsgObj(c, msg, nil, err) +} + +func jsonObj(c *gin.Context, obj interface{}, err error) { + jsonMsgObj(c, "", obj, err) +} + +func jsonMsgObj(c *gin.Context, msg string, obj interface{}, err error) { + m := entity.Msg{ + Obj: obj, + } + if err == nil { + m.Success = true + if msg != "" { + m.Msg = msg + I18n(c , "success") + } + } else { + m.Success = false + m.Msg = msg + I18n(c , "fail") + ": " + err.Error() + logger.Warning(msg + I18n(c , "fail") + ": ", err) + } + c.JSON(http.StatusOK, m) +} + +func pureJsonMsg(c *gin.Context, success bool, msg string) { + if success { + c.JSON(http.StatusOK, entity.Msg{ + Success: true, + Msg: msg, + }) + } else { + c.JSON(http.StatusOK, entity.Msg{ + Success: false, + Msg: msg, + }) + } +} + +func html(c *gin.Context, name string, title string, data gin.H) { + if data == nil { + data = gin.H{} + } + data["title"] = title + data["request_uri"] = c.Request.RequestURI + data["base_path"] = c.GetString("base_path") + c.HTML(http.StatusOK, name, getContext(data)) +} + +func getContext(h gin.H) gin.H { + a := gin.H{ + "cur_ver": config.GetVersion(), + } + if h != nil { + for key, value := range h { + a[key] = value + } + } + return a +} + +func isAjax(c *gin.Context) bool { + return c.GetHeader("X-Requested-With") == "XMLHttpRequest" +} |
