bump reva

Signed-off-by: jkoberg <jkoberg@owncloud.com>
This commit is contained in:
jkoberg
2024-01-26 15:22:48 +01:00
parent a9ce2e003c
commit b7635f59ee
17 changed files with 32 additions and 31 deletions
+1
View File
@@ -2,6 +2,7 @@ Enhancement: Update reva to latest edge version
We update reva to the latest edge version to get the latest fixes and features. We update reva to the latest edge version to get the latest fixes and features.
https://github.com/owncloud/ocis/pull/8287
https://github.com/owncloud/ocis/pull/8278 https://github.com/owncloud/ocis/pull/8278
https://github.com/owncloud/ocis/pull/8264 https://github.com/owncloud/ocis/pull/8264
https://github.com/owncloud/ocis/pull/8100 https://github.com/owncloud/ocis/pull/8100
+1 -1
View File
@@ -13,7 +13,7 @@ require (
github.com/coreos/go-oidc v2.2.1+incompatible github.com/coreos/go-oidc v2.2.1+incompatible
github.com/coreos/go-oidc/v3 v3.9.0 github.com/coreos/go-oidc/v3 v3.9.0
github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781 github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781
github.com/cs3org/reva/v2 v2.18.1-0.20240124094635-6eec406c0be7 github.com/cs3org/reva/v2 v2.18.1-0.20240126141248-c9e4a3bcd0da
github.com/dhowden/tag v0.0.0-20230630033851-978a0926ee25 github.com/dhowden/tag v0.0.0-20230630033851-978a0926ee25
github.com/disintegration/imaging v1.6.2 github.com/disintegration/imaging v1.6.2
github.com/dutchcoders/go-clamd v0.0.0-20170520113014-b970184f4d9e github.com/dutchcoders/go-clamd v0.0.0-20170520113014-b970184f4d9e
+2 -2
View File
@@ -1018,8 +1018,8 @@ github.com/crewjam/saml v0.4.14 h1:g9FBNx62osKusnFzs3QTN5L9CVA/Egfgm+stJShzw/c=
github.com/crewjam/saml v0.4.14/go.mod h1:UVSZCf18jJkk6GpWNVqcyQJMD5HsRugBPf4I1nl2mME= github.com/crewjam/saml v0.4.14/go.mod h1:UVSZCf18jJkk6GpWNVqcyQJMD5HsRugBPf4I1nl2mME=
github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781 h1:BUdwkIlf8IS2FasrrPg8gGPHQPOrQ18MS1Oew2tmGtY= github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781 h1:BUdwkIlf8IS2FasrrPg8gGPHQPOrQ18MS1Oew2tmGtY=
github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY=
github.com/cs3org/reva/v2 v2.18.1-0.20240124094635-6eec406c0be7 h1:g7vQAbo64ziFqqhKcim3JCjDW1zqHy9imAm2HZmmK8w= github.com/cs3org/reva/v2 v2.18.1-0.20240126141248-c9e4a3bcd0da h1:VgWIr/lE6cv2f5IjjWgR0LOAK41gsUytBsSZo/4DRq4=
github.com/cs3org/reva/v2 v2.18.1-0.20240124094635-6eec406c0be7/go.mod h1:GCN3g6uYE0Nvd31dGlhaGGyUviUfbG2NkecPRv5oSc4= github.com/cs3org/reva/v2 v2.18.1-0.20240126141248-c9e4a3bcd0da/go.mod h1:GCN3g6uYE0Nvd31dGlhaGGyUviUfbG2NkecPRv5oSc4=
github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
@@ -709,7 +709,7 @@ func (s *svc) Move(ctx context.Context, req *provider.MoveRequest) (*provider.Mo
if sourceProviderInfo.Address != destProviderInfo.Address { if sourceProviderInfo.Address != destProviderInfo.Address {
return &provider.MoveResponse{ return &provider.MoveResponse{
Status: status.NewPermissionDenied(ctx, nil, "cross storage moves are not permitted, use copy and delete"), Status: status.NewUnimplemented(ctx, nil, "cross storage moves are not supported, use copy and delete"),
}, nil }, nil
} }
@@ -68,7 +68,6 @@ type config struct {
} }
type passwordPolicy struct { type passwordPolicy struct {
Disabled bool `mapstructure:"disabled"`
MinCharacters int `mapstructure:"min_characters"` MinCharacters int `mapstructure:"min_characters"`
MinLowerCaseCharacters int `mapstructure:"min_lowercase_characters"` MinLowerCaseCharacters int `mapstructure:"min_lowercase_characters"`
MinUpperCaseCharacters int `mapstructure:"min_uppercase_characters"` MinUpperCaseCharacters int `mapstructure:"min_uppercase_characters"`
@@ -174,10 +173,9 @@ func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) {
func newPasswordPolicy(c *passwordPolicy) password.Validator { func newPasswordPolicy(c *passwordPolicy) password.Validator {
if c == nil { if c == nil {
return password.NewPasswordPolicy(true, 0, 0, 0, 0, 0, nil) return password.NewPasswordPolicy(0, 0, 0, 0, 0, nil)
} }
return password.NewPasswordPolicy( return password.NewPasswordPolicy(
c.Disabled,
c.MinCharacters, c.MinCharacters,
c.MinLowerCaseCharacters, c.MinLowerCaseCharacters,
c.MinUpperCaseCharacters, c.MinUpperCaseCharacters,
@@ -667,7 +667,7 @@ func (s *service) Move(ctx context.Context, req *provider.MoveRequest) (*provide
if dstReceivedShare.Share.Id.OpaqueId != srcReceivedShare.Share.Id.OpaqueId { if dstReceivedShare.Share.Id.OpaqueId != srcReceivedShare.Share.Id.OpaqueId {
return &provider.MoveResponse{ return &provider.MoveResponse{
Status: status.NewPermissionDenied(ctx, nil, "cross storage moves are not permitted, use copy and delete"), Status: status.NewUnimplemented(ctx, nil, "cross storage moves are not supported, use copy and delete"),
}, nil }, nil
} }
@@ -276,9 +276,8 @@ func (s *svc) handleNew(w http.ResponseWriter, r *http.Request) {
return return
} }
defer httpRes.Body.Close() defer httpRes.Body.Close()
if httpRes.StatusCode == http.StatusForbidden { if httpRes.StatusCode == http.StatusBadRequest {
// the file upload was already finished since it is a zero byte file // the file upload was already finished since it is a zero byte file
// TODO: why do we get a 401 then!?
} else if httpRes.StatusCode != http.StatusOK { } else if httpRes.StatusCode != http.StatusOK {
writeError(w, r, appErrorServerError, "failed to create the file", nil) writeError(w, r, appErrorServerError, "failed to create the file", nil)
return return
@@ -117,7 +117,6 @@ type CapabilitiesGraph struct {
// CapabilitiesPasswordPolicy hold the password policy capabilities // CapabilitiesPasswordPolicy hold the password policy capabilities
type CapabilitiesPasswordPolicy struct { type CapabilitiesPasswordPolicy struct {
Disabled bool `json:"disabled" xml:"disabled" mapstructure:"disabled"`
MinCharacters int `json:"min_characters" xml:"min_characters" mapstructure:"min_characters"` MinCharacters int `json:"min_characters" xml:"min_characters" mapstructure:"min_characters"`
MaxCharacters int `json:"max_characters" xml:"max_characters" mapstructure:"max_characters"` MaxCharacters int `json:"max_characters" xml:"max_characters" mapstructure:"max_characters"`
MinLowerCaseCharacters int `json:"min_lowercase_characters" xml:"min_lowercase_characters" mapstructure:"min_lowercase_characters"` MinLowerCaseCharacters int `json:"min_lowercase_characters" xml:"min_lowercase_characters" mapstructure:"min_lowercase_characters"`
@@ -1714,10 +1714,9 @@ func publicPwdEnforced(c *config.Config) passwordEnforced {
func passwordPolicies(c *config.Config) password.Validator { func passwordPolicies(c *config.Config) password.Validator {
if c.Capabilities.Capabilities == nil || c.Capabilities.Capabilities.PasswordPolicy == nil { if c.Capabilities.Capabilities == nil || c.Capabilities.Capabilities.PasswordPolicy == nil {
return password.NewPasswordPolicy(true, 0, 0, 0, 0, 0, nil) return password.NewPasswordPolicy(0, 0, 0, 0, 0, nil)
} }
return password.NewPasswordPolicy( return password.NewPasswordPolicy(
c.Capabilities.Capabilities.PasswordPolicy.Disabled,
c.Capabilities.Capabilities.PasswordPolicy.MinCharacters, c.Capabilities.Capabilities.PasswordPolicy.MinCharacters,
c.Capabilities.Capabilities.PasswordPolicy.MinLowerCaseCharacters, c.Capabilities.Capabilities.PasswordPolicy.MinLowerCaseCharacters,
c.Capabilities.Capabilities.PasswordPolicy.MinUpperCaseCharacters, c.Capabilities.Capabilities.PasswordPolicy.MinUpperCaseCharacters,
+3
View File
@@ -42,6 +42,8 @@ var (
PPStepPolicies Postprocessingstep = "policies" PPStepPolicies Postprocessingstep = "policies"
// PPStepDelay is the step that processing. Useful for testing or user annoyment // PPStepDelay is the step that processing. Useful for testing or user annoyment
PPStepDelay Postprocessingstep = "delay" PPStepDelay Postprocessingstep = "delay"
// PPStepFinished is the step that signals that postprocessing is finished, but storage provider hasn't acknowledged it yet
PPStepFinished Postprocessingstep = "finished"
// PPOutcomeDelete means that the file and the upload should be deleted // PPOutcomeDelete means that the file and the upload should be deleted
PPOutcomeDelete PostprocessingOutcome = "delete" PPOutcomeDelete PostprocessingOutcome = "delete"
@@ -193,6 +195,7 @@ func (UploadReady) Unmarshal(v []byte) (interface{}, error) {
// ResumePostprocessing can be emitted to repair broken postprocessing // ResumePostprocessing can be emitted to repair broken postprocessing
type ResumePostprocessing struct { type ResumePostprocessing struct {
UploadID string UploadID string
Step Postprocessingstep
Timestamp *types.Timestamp Timestamp *types.Timestamp
} }
+1 -6
View File
@@ -18,7 +18,6 @@ type Validator interface {
// Policies represents a password validation rules // Policies represents a password validation rules
type Policies struct { type Policies struct {
disabled bool
minCharacters int minCharacters int
minLowerCaseCharacters int minLowerCaseCharacters int
minUpperCaseCharacters int minUpperCaseCharacters int
@@ -30,9 +29,8 @@ type Policies struct {
} }
// NewPasswordPolicy returns a new NewPasswordPolicy instance // NewPasswordPolicy returns a new NewPasswordPolicy instance
func NewPasswordPolicy(disabled bool, minCharacters, minLowerCaseCharacters, minUpperCaseCharacters, minDigits, minSpecialCharacters int, bannedPasswordsList map[string]struct{}) Validator { func NewPasswordPolicy(minCharacters, minLowerCaseCharacters, minUpperCaseCharacters, minDigits, minSpecialCharacters int, bannedPasswordsList map[string]struct{}) Validator {
p := &Policies{ p := &Policies{
disabled: disabled,
minCharacters: minCharacters, minCharacters: minCharacters,
minLowerCaseCharacters: minLowerCaseCharacters, minLowerCaseCharacters: minLowerCaseCharacters,
minUpperCaseCharacters: minUpperCaseCharacters, minUpperCaseCharacters: minUpperCaseCharacters,
@@ -48,9 +46,6 @@ func NewPasswordPolicy(disabled bool, minCharacters, minLowerCaseCharacters, min
// Validate implements a password validation regarding the policy // Validate implements a password validation regarding the policy
func (s Policies) Validate(str string) error { func (s Policies) Validate(str string) error {
if s.disabled {
return nil
}
var allErr error var allErr error
if !utf8.ValidString(str) { if !utf8.ValidString(str) {
return fmt.Errorf("the password contains invalid characters") return fmt.Errorf("the password contains invalid characters")
@@ -93,6 +93,13 @@ func (m *manager) Handler(fs storage.FS) (http.Handler, error) {
defer func() { defer func() {
metrics.UploadsActive.Sub(1) metrics.UploadsActive.Sub(1)
}() }()
if r.ContentLength == 0 {
sublog.Info().Msg("received invalid 0-byte PUT request")
w.WriteHeader(http.StatusBadRequest)
return
}
fn := r.URL.Path fn := r.URL.Path
defer r.Body.Close() defer r.Body.Close()
@@ -286,8 +286,9 @@ func (fs *Decomposedfs) Postprocessing(ch <-chan events.Event) {
} }
var ( var (
failed bool failed bool
keepUpload bool revertNodeMetadata bool
keepUpload bool
) )
unmarkPostprocessing := true unmarkPostprocessing := true
@@ -297,12 +298,14 @@ func (fs *Decomposedfs) Postprocessing(ch <-chan events.Event) {
fallthrough fallthrough
case events.PPOutcomeAbort: case events.PPOutcomeAbort:
failed = true failed = true
revertNodeMetadata = true
keepUpload = true keepUpload = true
metrics.UploadSessionsAborted.Inc() metrics.UploadSessionsAborted.Inc()
case events.PPOutcomeContinue: case events.PPOutcomeContinue:
if err := session.Finalize(); err != nil { if err := session.Finalize(); err != nil {
log.Error().Err(err).Str("uploadID", ev.UploadID).Msg("could not finalize upload") log.Error().Err(err).Str("uploadID", ev.UploadID).Msg("could not finalize upload")
failed = true failed = true
revertNodeMetadata = false
keepUpload = true keepUpload = true
// keep postprocessing status so the upload is not deleted during housekeeping // keep postprocessing status so the upload is not deleted during housekeeping
unmarkPostprocessing = false unmarkPostprocessing = false
@@ -311,6 +314,7 @@ func (fs *Decomposedfs) Postprocessing(ch <-chan events.Event) {
} }
case events.PPOutcomeDelete: case events.PPOutcomeDelete:
failed = true failed = true
revertNodeMetadata = true
metrics.UploadSessionsDeleted.Inc() metrics.UploadSessionsDeleted.Inc()
} }
@@ -337,7 +341,7 @@ func (fs *Decomposedfs) Postprocessing(ch <-chan events.Event) {
} }
} }
fs.sessionStore.Cleanup(ctx, session, failed, keepUpload, unmarkPostprocessing) fs.sessionStore.Cleanup(ctx, session, revertNodeMetadata, keepUpload, unmarkPostprocessing)
// remove cache entry in gateway // remove cache entry in gateway
fs.cache.RemoveStatContext(ctx, ev.ExecutingUser.GetId(), &provider.ResourceId{SpaceId: n.SpaceID, OpaqueId: n.ID}) fs.cache.RemoveStatContext(ctx, ev.ExecutingUser.GetId(), &provider.ResourceId{SpaceId: n.SpaceID, OpaqueId: n.ID})
@@ -295,13 +295,9 @@ func (s *OcisSession) MTime() time.Time {
return t return t
} }
// IsProcessing returns true if the node has entered postprocessing state // IsProcessing returns true if all bytes have been received. The session then has entered postprocessing state.
func (s *OcisSession) IsProcessing() bool { func (s *OcisSession) IsProcessing() bool {
n, err := s.Node(context.Background()) return s.info.Size == s.info.Offset
if err != nil {
return false
}
return n.IsProcessing(context.Background())
} }
// binPath returns the path to the file storing the binary data. // binPath returns the path to the file storing the binary data.
@@ -191,7 +191,7 @@ func (session *OcisSession) FinishUpload(ctx context.Context) error {
n, err := session.store.CreateNodeForUpload(session, attrs) n, err := session.store.CreateNodeForUpload(session, attrs)
if err != nil { if err != nil {
session.store.Cleanup(ctx, session, true, false, true) session.store.Cleanup(ctx, session, true, false, false)
return err return err
} }
+1 -1
View File
@@ -459,7 +459,7 @@ func (c *cache) Stop() {
} }
func (c *cache) String() string { func (c *cache) String() string {
return "cache" return "cached"
} }
// New returns a new cache // New returns a new cache
+1 -1
View File
@@ -362,7 +362,7 @@ github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1
github.com/cs3org/go-cs3apis/cs3/storage/registry/v1beta1 github.com/cs3org/go-cs3apis/cs3/storage/registry/v1beta1
github.com/cs3org/go-cs3apis/cs3/tx/v1beta1 github.com/cs3org/go-cs3apis/cs3/tx/v1beta1
github.com/cs3org/go-cs3apis/cs3/types/v1beta1 github.com/cs3org/go-cs3apis/cs3/types/v1beta1
# github.com/cs3org/reva/v2 v2.18.1-0.20240124094635-6eec406c0be7 # github.com/cs3org/reva/v2 v2.18.1-0.20240126141248-c9e4a3bcd0da
## explicit; go 1.21 ## explicit; go 1.21
github.com/cs3org/reva/v2/cmd/revad/internal/grace github.com/cs3org/reva/v2/cmd/revad/internal/grace
github.com/cs3org/reva/v2/cmd/revad/runtime github.com/cs3org/reva/v2/cmd/revad/runtime