123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- 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-Real-IP")
- if value != "" {
- return value
- }
- value = c.GetHeader("X-Forwarded-For")
- if value != "" {
- ips := strings.Split(value, ",")
- return ips[0]
- }
- 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 + I18nWeb(c, "success")
- }
- } else {
- m.Success = false
- m.Msg = msg + I18nWeb(c, "fail") + ": " + err.Error()
- logger.Warning(msg+I18nWeb(c, "fail")+": ", err)
- }
- c.JSON(http.StatusOK, m)
- }
- func pureJsonMsg(c *gin.Context, statusCode int, success bool, msg string) {
- c.JSON(statusCode, entity.Msg{
- Success: success,
- Msg: msg,
- })
- }
- func html(c *gin.Context, name string, title string, data gin.H) {
- if data == nil {
- data = gin.H{}
- }
- data["title"] = title
- host := c.GetHeader("X-Forwarded-Host")
- if host == "" {
- host = c.GetHeader("X-Real-IP")
- }
- if host == "" {
- var err error
- host, _, err = net.SplitHostPort(c.Request.Host)
- if err != nil {
- host = c.Request.Host
- }
- }
- data["host"] = host
- 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"
- }
|