MCPcopy Create free account
hub / github.com/GoEdgeLab/EdgeNode / Run

Method Run

internal/waf/get302_validator.go:22–91  ·  view source on GitHub ↗
(request requests.Request, writer http.ResponseWriter)

Source from the content-addressed store, hash-verified

20}
21
22func (this *Get302Validator) Run(request requests.Request, writer http.ResponseWriter) {
23 var info = request.WAFRaw().URL.Query().Get("info")
24 if len(info) == 0 {
25 request.ProcessResponseHeaders(writer.Header(), http.StatusBadRequest)
26 writer.WriteHeader(http.StatusBadRequest)
27 _, _ = writer.Write([]byte("invalid request (002)"))
28 return
29 }
30
31 var timestamp int64
32 var life int64
33 var setId int64
34 var policyId int64
35 var groupId int64
36 var scope string
37 var url string
38
39 var infoArg = &InfoArg{}
40 decodeErr := infoArg.Decode(info)
41 var success bool
42 if decodeErr == nil && infoArg.IsValid() {
43 success = true
44
45 timestamp = infoArg.Timestamp
46 life = int64(infoArg.Life)
47 setId = infoArg.SetId
48 policyId = infoArg.PolicyId
49 groupId = infoArg.GroupId
50 scope = infoArg.Scope
51 url = infoArg.URL
52 } else {
53 // 兼容老版本
54 m, decodeMapErr := utils.SimpleDecryptMap(info)
55 if decodeMapErr == nil {
56 success = true
57
58 timestamp = m.GetInt64("timestamp")
59 life = m.GetInt64("life")
60 setId = m.GetInt64("setId")
61 policyId = m.GetInt64("policyId")
62 groupId = m.GetInt64("groupId")
63 scope = m.GetString("scope")
64 url = m.GetString("url")
65 }
66 }
67
68 if !success {
69 request.ProcessResponseHeaders(writer.Header(), http.StatusBadRequest)
70 writer.WriteHeader(http.StatusBadRequest)
71 _, _ = writer.Write([]byte("invalid request (003)"))
72 return
73 }
74
75 if time.Now().Unix()-timestamp > 5 { // 超过5秒认为失效
76 request.ProcessResponseHeaders(writer.Header(), http.StatusBadRequest)
77 writer.WriteHeader(http.StatusBadRequest)
78 _, _ = writer.Write([]byte("invalid request (004)"))
79 return

Callers 1

MatchRequestMethod · 0.45

Calls 15

SimpleDecryptMapFunction · 0.92
IsValidMethod · 0.80
UnixMethod · 0.80
RecordIPMethod · 0.80
RedirectMethod · 0.80
WAFRawMethod · 0.65
WriteHeaderMethod · 0.65
WriteMethod · 0.65
DecodeMethod · 0.65
WAFServerIdMethod · 0.65
WAFRemoteIPMethod · 0.65

Tested by

no test coverage detected