12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package controller
- import (
- "net"
- "net/http"
- "strings"
- "x-ui/config"
- "x-ui/logger"
- "x-ui/web/entity"
- "github.com/gin-gonic/gin"
- )
- 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["host"] = strings.Split(c.Request.Host, ":")[0]
- 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(),
- }
- for key, value := range h {
- a[key] = value
- }
- return a
- }
- func isAjax(c *gin.Context) bool {
- return c.GetHeader("X-Requested-With") == "XMLHttpRequest"
- }
|