pico
created pr with
39.1
cmds
checkout latest patchset:
ssh pr.pico.sh print 39 | git am -3checkout any patchset in a patch request:
ssh pr.pico.sh print 39.[rev] | git am -3add changes to patch request:
git format-patch main --stdout | ssh pr.pico.sh pr add 39
Patchset
39.1
fix: address CVE-2024-45337
Eric Bower
2024-12-11T18:38:58ZReference: https://github.com/golang/go/issues/70779
Semantic diff summary
1 added,
26 modified,
0 signature changed,
9 removed
across 10 analyzed files
(2 files skipped: unsupported file type)
shared/ssh.go
-
chunklines 1-6modified -
function_declarationGetUserremoved -
function_declarationGetFeatureFlagremoved -
type_declarationctxUserKeyremoved -
type_declarationctxFeatureFlagKeyremoved -
function_declarationSetUserremoved -
function_declarationSetFeatureFlagremoved -
type_declarationctxPublicKeyremoved -
function_declarationGetPublicKeyremoved -
function_declarationSetPublicKeyremoved -
function_declarationFindPlusFFadded -
function_declarationPubkeyAuthHandlermodified
+4
-7
filehandlers/imgs/handler.go
#
| ... | ... | @@ -48,7 +48,7 @@ func NewUploadImgHandler(dbpool db.DB, cfg *shared.ConfigSite, storage storage.S | |
| 48 | 48 | } | |
| 49 | 49 | ||
| 50 | 50 | func (h *UploadImgHandler) Read(s ssh.Session, entry *sendutils.FileEntry) (os.FileInfo, sendutils.ReaderAtCloser, error) { | |
| 51 | - | user, err := shared.GetUser(s.Context()) | |
| 51 | + | user, err := h.DBPool.FindUser(s.Permissions().Extensions["user_id"]) | |
| 52 | 52 | if err != nil { | |
| 53 | 53 | return nil, nil, err | |
| 54 | 54 | } |
| ... | ... | @@ -88,7 +88,7 @@ func (h *UploadImgHandler) Read(s ssh.Session, entry *sendutils.FileEntry) (os.F | |
| 88 | 88 | ||
| 89 | 89 | func (h *UploadImgHandler) Write(s ssh.Session, entry *sendutils.FileEntry) (string, error) { | |
| 90 | 90 | logger := h.Cfg.Logger | |
| 91 | - | user, err := shared.GetUser(s.Context()) | |
| 91 | + | user, err := h.DBPool.FindUser(s.Permissions().Extensions["user_id"]) | |
| 92 | 92 | if err != nil { | |
| 93 | 93 | logger.Error("could not get user from ctx", "err", err.Error()) | |
| 94 | 94 | return "", err |
| ... | ... | @@ -145,10 +145,7 @@ func (h *UploadImgHandler) Write(s ssh.Session, entry *sendutils.FileEntry) (str | |
| 145 | 145 | logger.Info("unable to find image, continuing", "filename", nextPost.Filename, "err", err.Error()) | |
| 146 | 146 | } | |
| 147 | 147 | ||
| 148 | - | featureFlag, err := shared.GetFeatureFlag(s.Context()) | |
| 149 | - | if err != nil { | |
| 150 | - | return "", err | |
| 151 | - | } | |
| 148 | + | featureFlag := shared.FindPlusFF(h.DBPool, h.Cfg, user.ID) | |
| 152 | 149 | metadata := PostMetaData{ | |
| 153 | 150 | OrigText: text, | |
| 154 | 151 | Post: &nextPost, |
| ... | ... | @@ -192,7 +189,7 @@ func (h *UploadImgHandler) Write(s ssh.Session, entry *sendutils.FileEntry) (str | |
| 192 | 189 | } | |
| 193 | 190 | ||
| 194 | 191 | func (h *UploadImgHandler) Delete(s ssh.Session, entry *sendutils.FileEntry) error { | |
| 195 | - | user, err := shared.GetUser(s.Context()) | |
| 192 | + | user, err := h.DBPool.FindUser(s.Permissions().Extensions["user_id"]) | |
| 196 | 193 | if err != nil { | |
| 197 | 194 | return err | |
| 198 | 195 | } |
+1
-1
filehandlers/imgs/img.go
#
| ... | ... | @@ -80,7 +80,7 @@ func (h *UploadImgHandler) writeImg(s ssh.Session, data *PostMetaData) error { | |
| 80 | 80 | if !valid { | |
| 81 | 81 | return err | |
| 82 | 82 | } | |
| 83 | - | user, err := shared.GetUser(s.Context()) | |
| 83 | + | user, err := h.DBPool.FindUser(s.Permissions().Extensions["user_id"]) | |
| 84 | 84 | if err != nil { | |
| 85 | 85 | return err | |
| 86 | 86 | } |
+3
-3
filehandlers/post_handler.go
#
| ... | ... | @@ -47,7 +47,7 @@ func NewScpPostHandler(dbpool db.DB, cfg *shared.ConfigSite, hooks ScpFileHooks, | |
| 47 | 47 | } | |
| 48 | 48 | ||
| 49 | 49 | func (h *ScpUploadHandler) Read(s ssh.Session, entry *sendutils.FileEntry) (os.FileInfo, sendutils.ReaderAtCloser, error) { | |
| 50 | - | user, err := shared.GetUser(s.Context()) | |
| 50 | + | user, err := h.DBPool.FindUser(s.Permissions().Extensions["user_id"]) | |
| 51 | 51 | if err != nil { | |
| 52 | 52 | return nil, nil, err | |
| 53 | 53 | } |
| ... | ... | @@ -76,7 +76,7 @@ func (h *ScpUploadHandler) Read(s ssh.Session, entry *sendutils.FileEntry) (os.F | |
| 76 | 76 | ||
| 77 | 77 | func (h *ScpUploadHandler) Write(s ssh.Session, entry *sendutils.FileEntry) (string, error) { | |
| 78 | 78 | logger := h.Cfg.Logger | |
| 79 | - | user, err := shared.GetUser(s.Context()) | |
| 79 | + | user, err := h.DBPool.FindUser(s.Permissions().Extensions["user_id"]) | |
| 80 | 80 | if err != nil { | |
| 81 | 81 | logger.Error("error getting user from ctx", "err", err.Error()) | |
| 82 | 82 | return "", err |
| ... | ... | @@ -263,7 +263,7 @@ func (h *ScpUploadHandler) Write(s ssh.Session, entry *sendutils.FileEntry) (str | |
| 263 | 263 | ||
| 264 | 264 | func (h *ScpUploadHandler) Delete(s ssh.Session, entry *sendutils.FileEntry) error { | |
| 265 | 265 | logger := h.Cfg.Logger | |
| 266 | - | user, err := shared.GetUser(s.Context()) | |
| 266 | + | user, err := h.DBPool.FindUser(s.Permissions().Extensions["user_id"]) | |
| 267 | 267 | if err != nil { | |
| 268 | 268 | logger.Error("could not get user from ctx", "err", err.Error()) | |
| 269 | 269 | return err |
+2
-2
filehandlers/router_handler.go
#
| ... | ... | @@ -82,7 +82,7 @@ func (r *FileHandlerRouter) Read(s ssh.Session, entry *utils.FileEntry) (os.File | |
| 82 | 82 | ||
| 83 | 83 | func BaseList(s ssh.Session, fpath string, isDir bool, recursive bool, spaces []string, dbpool db.DB) ([]os.FileInfo, error) { | |
| 84 | 84 | var fileList []os.FileInfo | |
| 85 | - | user, err := shared.GetUser(s.Context()) | |
| 85 | + | user, err := dbpool.FindUser(s.Permissions().Extensions["user_id"]) | |
| 86 | 86 | if err != nil { | |
| 87 | 87 | return fileList, err | |
| 88 | 88 | } |
| ... | ... | @@ -153,7 +153,7 @@ func (r *FileHandlerRouter) GetLogger() *slog.Logger { | |
| 153 | 153 | } | |
| 154 | 154 | ||
| 155 | 155 | func (r *FileHandlerRouter) Validate(s ssh.Session) error { | |
| 156 | - | user, err := shared.GetUser(s.Context()) | |
| 156 | + | user, err := r.DBPool.FindUser(s.Permissions().Extensions["user_id"]) | |
| 157 | 157 | if err != nil { | |
| 158 | 158 | return err | |
| 159 | 159 | } |
+5
-5
go.mod
#
| ... | ... | @@ -179,10 +179,10 @@ require ( | |
| 179 | 179 | github.com/yusufpapurcu/wmi v1.2.4 // indirect | |
| 180 | 180 | golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect | |
| 181 | 181 | golang.org/x/net v0.31.0 // indirect | |
| 182 | - | golang.org/x/sync v0.9.0 // indirect | |
| 183 | - | golang.org/x/sys v0.27.0 // indirect | |
| 184 | - | golang.org/x/term v0.26.0 // indirect | |
| 185 | - | golang.org/x/text v0.20.0 // indirect | |
| 182 | + | golang.org/x/sync v0.10.0 // indirect | |
| 183 | + | golang.org/x/sys v0.28.0 // indirect | |
| 184 | + | golang.org/x/term v0.27.0 // indirect | |
| 185 | + | golang.org/x/text v0.21.0 // indirect | |
| 186 | 186 | golang.org/x/time v0.8.0 // indirect | |
| 187 | 187 | google.golang.org/protobuf v1.35.2 // indirect | |
| 188 | 188 | mvdan.cc/xurls/v2 v2.5.0 // indirect |
+10
-10
go.sum
#
| ... | ... | @@ -391,8 +391,8 @@ golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPh | |
| 391 | 391 | golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= | |
| 392 | 392 | golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= | |
| 393 | 393 | golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= | |
| 394 | - | golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= | |
| 395 | - | golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= | |
| 394 | + | golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= | |
| 395 | + | golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= | |
| 396 | 396 | golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= | |
| 397 | 397 | golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= | |
| 398 | 398 | golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= |
| ... | ... | @@ -417,8 +417,8 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ | |
| 417 | 417 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |
| 418 | 418 | golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |
| 419 | 419 | golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |
| 420 | - | golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= | |
| 421 | - | golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= | |
| 420 | + | golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= | |
| 421 | + | golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= | |
| 422 | 422 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | |
| 423 | 423 | golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | |
| 424 | 424 | golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= |
| ... | ... | @@ -438,8 +438,8 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |
| 438 | 438 | golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= | |
| 439 | 439 | golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= | |
| 440 | 440 | golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= | |
| 441 | - | golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= | |
| 442 | - | golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= | |
| 441 | + | golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= | |
| 442 | + | golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= | |
| 443 | 443 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | |
| 444 | 444 | golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= | |
| 445 | 445 | golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= |
| ... | ... | @@ -447,16 +447,16 @@ golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= | |
| 447 | 447 | golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= | |
| 448 | 448 | golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= | |
| 449 | 449 | golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= | |
| 450 | - | golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= | |
| 451 | - | golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= | |
| 450 | + | golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= | |
| 451 | + | golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= | |
| 452 | 452 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | |
| 453 | 453 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | |
| 454 | 454 | golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= | |
| 455 | 455 | golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | |
| 456 | 456 | golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= | |
| 457 | 457 | golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= | |
| 458 | - | golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= | |
| 459 | - | golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= | |
| 458 | + | golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= | |
| 459 | + | golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= | |
| 460 | 460 | golang.org/x/time v0.4.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | |
| 461 | 461 | golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= | |
| 462 | 462 | golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= |
+11
-29
pgs/tunnel.go
#
| ... | ... | @@ -39,16 +38,14 @@ func createHttpHandler(apiConfig *shared.ApiConfig) CtxHttpBridge { | |
| 39 | 38 | "impersonating", asUser, | |
| 40 | 39 | ) | |
| 41 | 40 | ||
| 42 | - | pubkey, err := shared.GetPublicKey(ctx) | |
| 43 | - | if err != nil { | |
| 44 | - | log.Error(err.Error(), "subdomain", subdomain) | |
| 41 | + | pubkey := ctx.Permissions().Extensions["pubkey"] | |
| 42 | + | if pubkey == "" { | |
| 43 | + | log.Error("pubkey not found in extensions", "subdomain", subdomain) | |
| 45 | 44 | return http.HandlerFunc(shared.UnauthorizedHandler) | |
| 46 | 45 | } | |
| 47 | 46 | ||
| 48 | - | pubkeyStr := utils.KeyForKeyText(pubkey) | |
| 49 | - | ||
| 50 | 47 | log = log.With( | |
| 51 | - | "pubkey", pubkeyStr, | |
| 48 | + | "pubkey", pubkey, | |
| 52 | 49 | ) | |
| 53 | 50 | ||
| 54 | 51 | props, err := shared.GetProjectFromSubdomain(subdomain) |
| ... | ... | @@ -72,7 +69,7 @@ func createHttpHandler(apiConfig *shared.ApiConfig) CtxHttpBridge { | |
| 72 | 69 | return http.HandlerFunc(shared.UnauthorizedHandler) | |
| 73 | 70 | } | |
| 74 | 71 | ||
| 75 | - | requester, _ := dbh.FindUserForKey("", pubkeyStr) | |
| 72 | + | requester, _ := dbh.FindUserForKey("", pubkey) | |
| 76 | 73 | if requester != nil { | |
| 77 | 74 | log = log.With( | |
| 78 | 75 | "requester", requester.Name, |
| ... | ... | @@ -89,33 +86,18 @@ func createHttpHandler(apiConfig *shared.ApiConfig) CtxHttpBridge { | |
| 89 | 86 | requester, _ = dbh.FindUserForName(asUser) | |
| 90 | 87 | } | |
| 91 | 88 | ||
| 92 | - | shared.SetUser(ctx, requester) | |
| 93 | - | ||
| 94 | - | if !HasProjectAccess(project, owner, requester, pubkey) { | |
| 89 | + | ctx.Permissions().Extensions["user_id"] = requester.ID | |
| 90 | + | publicKey, err := ssh.ParsePublicKey([]byte(pubkey)) | |
| 91 | + | if err != nil { | |
| 92 | + | return http.HandlerFunc(shared.UnauthorizedHandler) | |
| 93 | + | } | |
| 94 | + | if !HasProjectAccess(project, owner, requester, publicKey) { | |
| 95 | 95 | log.Error("no access") | |
| 96 | 96 | return http.HandlerFunc(shared.UnauthorizedHandler) | |
| 97 | 97 | } | |
| 98 | 98 | ||
| 99 | 99 | log.Info("user has access to site") | |
| 100 | 100 | ||
| 101 | - | /* routes := []shared.Route{ | |
| 102 | - | // special API endpoint for tunnel users accessing site | |
| 103 | - | shared.NewCorsRoute("GET", "/api/current_user", func(w http.ResponseWriter, r *http.Request) { | |
| 104 | - | w.Header().Set("Content-Type", "application/json") | |
| 105 | - | user, err := shared.GetUser(ctx) | |
| 106 | - | if err != nil { | |
| 107 | - | logger.Error("could not find user", "err", err.Error()) | |
| 108 | - | shared.JSONError(w, err.Error(), http.StatusNotFound) | |
| 109 | - | return | |
| 110 | - | } | |
| 111 | - | pico := shared.NewUserApi(user, pubkey) | |
| 112 | - | err = json.NewEncoder(w).Encode(pico) | |
| 113 | - | if err != nil { | |
| 114 | - | log.Error(err.Error()) | |
| 115 | - | } | |
| 116 | - | }), | |
| 117 | - | } */ | |
| 118 | - | ||
| 119 | 101 | routes := NewWebRouter( | |
| 120 | 102 | apiConfig.Cfg, | |
| 121 | 103 | logger, |
+6
-10
pgs/uploader.go
#
| ... | ... | @@ -121,7 +121,7 @@ func (h *UploadAssetHandler) GetLogger() *slog.Logger { | |
| 121 | 121 | } | |
| 122 | 122 | ||
| 123 | 123 | func (h *UploadAssetHandler) Read(s ssh.Session, entry *sendutils.FileEntry) (os.FileInfo, sendutils.ReaderAtCloser, error) { | |
| 124 | - | user, err := shared.GetUser(s.Context()) | |
| 124 | + | user, err := h.DBPool.FindUser(s.Permissions().Extensions["user_id"]) | |
| 125 | 125 | if err != nil { | |
| 126 | 126 | return nil, nil, err | |
| 127 | 127 | } |
| ... | ... | @@ -155,7 +155,7 @@ func (h *UploadAssetHandler) Read(s ssh.Session, entry *sendutils.FileEntry) (os | |
| 155 | 155 | func (h *UploadAssetHandler) List(s ssh.Session, fpath string, isDir bool, recursive bool) ([]os.FileInfo, error) { | |
| 156 | 156 | var fileList []os.FileInfo | |
| 157 | 157 | ||
| 158 | - | user, err := shared.GetUser(s.Context()) | |
| 158 | + | user, err := h.DBPool.FindUser(s.Permissions().Extensions["user_id"]) | |
| 159 | 159 | if err != nil { | |
| 160 | 160 | return fileList, err | |
| 161 | 161 | } |
| ... | ... | @@ -197,7 +197,7 @@ func (h *UploadAssetHandler) List(s ssh.Session, fpath string, isDir bool, recur | |
| 197 | 197 | } | |
| 198 | 198 | ||
| 199 | 199 | func (h *UploadAssetHandler) Validate(s ssh.Session) error { | |
| 200 | - | user, err := shared.GetUser(s.Context()) | |
| 200 | + | user, err := h.DBPool.FindUser(s.Permissions().Extensions["user_id"]) | |
| 201 | 201 | if err != nil { | |
| 202 | 202 | return err | |
| 203 | 203 | } |
| ... | ... | @@ -248,7 +248,7 @@ func (h *UploadAssetHandler) findDenylist(bucket sst.Bucket, project *db.Project | |
| 248 | 248 | } | |
| 249 | 249 | ||
| 250 | 250 | func (h *UploadAssetHandler) Write(s ssh.Session, entry *sendutils.FileEntry) (string, error) { | |
| 251 | - | user, err := shared.GetUser(s.Context()) | |
| 251 | + | user, err := h.DBPool.FindUser(s.Permissions().Extensions["user_id"]) | |
| 252 | 252 | if user == nil || err != nil { | |
| 253 | 253 | h.Cfg.Logger.Error("user not found in ctx", "err", err.Error()) | |
| 254 | 254 | return "", err |
| ... | ... | @@ -314,11 +314,7 @@ func (h *UploadAssetHandler) Write(s ssh.Session, entry *sendutils.FileEntry) (s | |
| 314 | 314 | return "", err | |
| 315 | 315 | } | |
| 316 | 316 | ||
| 317 | - | featureFlag, err := shared.GetFeatureFlag(s.Context()) | |
| 318 | - | if err != nil { | |
| 319 | - | return "", err | |
| 320 | - | } | |
| 321 | - | ||
| 317 | + | featureFlag := shared.FindPlusFF(h.DBPool, h.Cfg, user.ID) | |
| 322 | 318 | // calculate the filsize difference between the same file already | |
| 323 | 319 | // stored and the updated file being uploaded | |
| 324 | 320 | assetFilename := shared.GetAssetFileName(entry) |
| ... | ... | @@ -424,7 +420,7 @@ func isSpecialFile(entry *sendutils.FileEntry) bool { | |
| 424 | 420 | } | |
| 425 | 421 | ||
| 426 | 422 | func (h *UploadAssetHandler) Delete(s ssh.Session, entry *sendutils.FileEntry) error { | |
| 427 | - | user, err := shared.GetUser(s.Context()) | |
| 423 | + | user, err := h.DBPool.FindUser(s.Permissions().Extensions["user_id"]) | |
| 428 | 424 | if err != nil { | |
| 429 | 425 | h.Cfg.Logger.Error("user not found in ctx", "err", err.Error()) | |
| 430 | 426 | return err |
+4
-4
pico/file_handler.go
#
| ... | ... | @@ -56,7 +56,7 @@ func (h *UploadHandler) Delete(s ssh.Session, entry *sendutils.FileEntry) error | |
| 56 | 56 | } | |
| 57 | 57 | ||
| 58 | 58 | func (h *UploadHandler) Read(s ssh.Session, entry *sendutils.FileEntry) (os.FileInfo, sendutils.ReaderAtCloser, error) { | |
| 59 | - | user, err := shared.GetUser(s.Context()) | |
| 59 | + | user, err := h.DBPool.FindUser(s.Permissions().Extensions["user_id"]) | |
| 60 | 60 | if err != nil { | |
| 61 | 61 | return nil, nil, err | |
| 62 | 62 | } |
| ... | ... | @@ -80,7 +80,7 @@ func (h *UploadHandler) Read(s ssh.Session, entry *sendutils.FileEntry) (os.File | |
| 80 | 80 | ||
| 81 | 81 | func (h *UploadHandler) List(s ssh.Session, fpath string, isDir bool, recursive bool) ([]os.FileInfo, error) { | |
| 82 | 82 | var fileList []os.FileInfo | |
| 83 | - | user, err := shared.GetUser(s.Context()) | |
| 83 | + | user, err := h.DBPool.FindUser(s.Permissions().Extensions["user_id"]) | |
| 84 | 84 | if err != nil { | |
| 85 | 85 | return fileList, err | |
| 86 | 86 | } |
| ... | ... | @@ -276,7 +276,7 @@ func (h *UploadHandler) ProcessAuthorizedKeys(text []byte, logger *slog.Logger, | |
| 276 | 276 | ||
| 277 | 277 | func (h *UploadHandler) Write(s ssh.Session, entry *sendutils.FileEntry) (string, error) { | |
| 278 | 278 | logger := h.Cfg.Logger | |
| 279 | - | user, err := shared.GetUser(s.Context()) | |
| 279 | + | user, err := h.DBPool.FindUser(s.Permissions().Extensions["user_id"]) | |
| 280 | 280 | if err != nil { | |
| 281 | 281 | logger.Error(err.Error()) | |
| 282 | 282 | return "", err |
+0
-1
pico/ssh.go
#
+1
-1
pipe/cli.go
#
| ... | ... | @@ -141,7 +141,7 @@ func WishMiddleware(handler *CliHandler) wish.Middleware { | |
| 141 | 141 | logger := handler.Logger | |
| 142 | 142 | ctx := sesh.Context() | |
| 143 | 143 | ||
| 144 | - | user, err := shared.GetUser(ctx) | |
| 144 | + | user, err := handler.DBPool.FindUser(sesh.Permissions().Extensions["user_id"]) | |
| 145 | 145 | if err != nil { | |
| 146 | 146 | logger.Info("user not found", "err", err) | |
| 147 | 147 | } |