wcj 5 лет назад
Родитель
Сommit
e9c51aca9a

+ 10 - 0
src/jfw/modules/subscribepay/src/filter/filter.go

@@ -0,0 +1,10 @@
+package filter
+
+import (
+	"github.com/go-xweb/xweb"
+)
+
+func init() {
+	xweb.AddFilter(&logfilter{App: xweb.RootApp()})
+	xweb.AddFilter(&sessionfilter{App: xweb.RootApp()})
+}

+ 72 - 0
src/jfw/modules/subscribepay/src/filter/logfilter.go

@@ -0,0 +1,72 @@
+package filter
+
+import (
+	"encoding/json"
+	"net"
+	"net/http"
+	"strings"
+	"time"
+	"util"
+
+	"github.com/go-xweb/httpsession"
+	"github.com/go-xweb/xweb"
+)
+
+//日志过滤器
+type logfilter struct {
+	App *xweb.App
+}
+
+//继承过滤器方法
+func (l *logfilter) Do(w http.ResponseWriter, req *http.Request) bool {
+	session := l.App.SessionManager.Session(req, w)
+	go addLog(l, session, req)
+	return true
+}
+
+//用线程处理,增加日志
+func addLog(l *logfilter, session *httpsession.Session, req *http.Request) {
+	timeNow := time.Now()
+	md, _ := json.Marshal(req.Form)
+	logs := map[string]interface{}{
+		"createtime": timeNow,
+		"ip":         GetIp(req),
+		"refer":      req.Referer(),
+		"year":       timeNow.Year(),
+		"month":      timeNow.Month(),
+		"day":        timeNow.Day(),
+		"hour":       timeNow.Hour(),
+		"minutes":    timeNow.Minute(),
+		"describe":   string(md),
+		"client":     req.Header.Get("user-agent"),
+		"method":     req.Method,
+		"url":        req.RequestURI,
+	}
+	if session.Get("userId") != nil {
+		logs["userid"] = session.Get("userId")
+		logs["nickname"] = session.Get("s_nickname")
+	}
+	util.MQFW.Save("subscribepay_logs", logs)
+}
+
+//获取请求ip
+func GetIp(req *http.Request) string {
+	if req == nil {
+		return ""
+	}
+	ip_for := req.Header.Get("x-forwarded-for")
+	ip_client := req.Header.Get("http_client_ip")
+	ip_addr := req.Header.Get("Remote_addr")
+	un := "unknown"
+	if (ip_for != un) && (len(strings.TrimSpace(ip_for)) > 0) {
+		return ip_for
+	}
+	if (ip_client != un) && (len(strings.TrimSpace(ip_client)) > 0) {
+		return ip_client
+	}
+	if (ip_addr != un) && (len(strings.TrimSpace(ip_addr)) > 0) {
+		return ip_addr
+	}
+	ip, _, _ := net.SplitHostPort(req.RemoteAddr)
+	return ip
+}

+ 22 - 0
src/jfw/modules/subscribepay/src/filter/sessionfilter.go

@@ -0,0 +1,22 @@
+package filter
+
+import (
+	"net/http"
+
+	"github.com/go-xweb/xweb"
+)
+
+//登录限制
+type sessionfilter struct {
+	App *xweb.App
+}
+
+//继承过滤器方法
+func (l *sessionfilter) Do(w http.ResponseWriter, req *http.Request) bool {
+	session := l.App.SessionManager.Session(req, w)
+	if session.Get("userId") == nil {
+		w.Write([]byte("{\"error\":\"需要登录!\"}"))
+		return false
+	}
+	return true
+}

+ 0 - 26
src/jfw/modules/subscribepay/src/initxweb/init.go

@@ -1,26 +0,0 @@
-package initxweb
-
-import (
-	"service"
-	"time"
-
-	"github.com/go-xweb/httpsession"
-	"github.com/go-xweb/xweb"
-)
-
-func init() {
-	//开启redissession
-	httpsession.IsRedisSessionStore = true
-	xweb.Config.Profiler = true
-	xweb.RootApp().BasePath = "/subscribepay"
-	xweb.RootApp().AppConfig.StaticFileVersion = false
-	xweb.RootApp().AppConfig.CheckXsrf = false
-	xweb.RootApp().AppConfig.EnableHttpCache = false
-	xweb.RootApp().AppConfig.Mode = xweb.Product
-	xweb.RootApp().AppConfig.ReloadTemplates = true
-	xweb.RootApp().AppConfig.SessionTimeout = 30 * time.Minute
-	xweb.RootApp().Logger.SetOutputLevel(1) //输出日志,改为4则不输出任何日志
-	//
-	xweb.AddAction(&service.Test{})
-	xweb.AddAction(&service.Public{})
-}

+ 2 - 1
src/jfw/modules/subscribepay/src/main.go

@@ -1,8 +1,9 @@
 package main
 
 import (
+	_ "a"
 	. "config"
-	_ "initxweb"
+	_ "filter"
 	"net/http"
 	_ "service"
 	_ "util"