6
6
"k8s.io/klog/v2"
7
7
"net/http"
8
8
"strconv"
9
+ "strings"
9
10
10
11
"github.com/tomasen/realip"
11
12
@@ -17,10 +18,7 @@ type handleFunc func(w http.ResponseWriter, r *http.Request, d *common.Data) (in
17
18
18
19
func handle (fn handleFunc , prefix string , server * settings.Server ) http.Handler {
19
20
handler := http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
20
- checked , err := CheckPathOwner (r , prefix )
21
- if err != nil {
22
- http .Error (w , err .Error (), http .StatusForbidden )
23
- }
21
+ checked := CheckPathOwner (r , prefix )
24
22
if ! checked {
25
23
http .Error (w , http .StatusText (http .StatusForbidden ), http .StatusForbidden )
26
24
}
@@ -55,13 +53,12 @@ func NeedCheckPrefix(prefix string) bool {
55
53
}
56
54
}
57
55
58
- func CheckPathOwner (r * http.Request , prefix string ) ( bool , error ) {
56
+ func CheckPathOwner (r * http.Request , prefix string ) bool {
59
57
klog .Infof ("~~~~Temp log: URL = %s, prefix = %s" , r .URL , prefix )
60
58
if ! NeedCheckPrefix (prefix ) {
61
- return true , nil
59
+ return true
62
60
}
63
61
64
- var err error = nil
65
62
method := r .Method
66
63
src := r .URL .Path
67
64
@@ -84,28 +81,22 @@ func CheckPathOwner(r *http.Request, prefix string) (bool, error) {
84
81
85
82
klog .Infof ("Checking owner for method: %s, prefix: %s, srcType: %s, src: %s, dstType: %s, dst: %s" , method , prefix , srcType , src , dstType , dst )
86
83
87
- bflRequest := r .Header .Get ("X-Bfl-User" )
88
- bflParsed := ""
84
+ bfl := r .Header .Get ("X-Bfl-User" )
85
+ pvc := ""
89
86
if drives .IsBaseDrives (srcType ) {
90
- bflParsed , err = rpc .PVCs .GetBfl (rpc .ExtractPvcFromURL (src ))
91
- if err != nil {
92
- return false , err
93
- }
94
- if bflParsed != bflRequest {
95
- return false , nil
87
+ pvc = rpc .ExtractPvcFromURL (src )
88
+ if ! strings .HasPrefix (pvc , "pvc-userspace-" + bfl + "-" ) && ! strings .HasPrefix (pvc , "pvc-appcache-" + bfl + "-" ) {
89
+ return false
96
90
}
97
91
}
98
92
99
93
if prefix == "/api/paste" || (prefix == "/api/resources" && r .Method == http .MethodPatch ) {
100
94
if drives .IsBaseDrives (dstType ) {
101
- bflParsed , err = rpc .PVCs .GetBfl (rpc .ExtractPvcFromURL (dst ))
102
- if err != nil {
103
- return false , err
104
- }
105
- if bflParsed != bflRequest {
106
- return false , nil
95
+ pvc = rpc .ExtractPvcFromURL (src )
96
+ if ! strings .HasPrefix (pvc , "pvc-userspace-" + bfl + "-" ) && ! strings .HasPrefix (pvc , "pvc-appcache-" + bfl + "-" ) {
97
+ return false
107
98
}
108
99
}
109
100
}
110
- return true , nil
101
+ return true
111
102
}
0 commit comments