Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'web/controller/util.go')
-rw-r--r--web/controller/util.go97
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"
+}