@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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=
|
||||||
|
|||||||
Generated
Vendored
+1
-1
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Generated
Vendored
+1
-3
@@ -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,
|
||||||
|
|||||||
Generated
Vendored
+1
-1
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Generated
Vendored
+1
-2
@@ -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
|
||||||
|
|||||||
Generated
Vendored
-1
@@ -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"`
|
||||||
|
|||||||
Generated
Vendored
+1
-2
@@ -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
@@ -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
@@ -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")
|
||||||
|
|||||||
+7
@@ -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()
|
||||||
|
|
||||||
|
|||||||
+7
-3
@@ -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})
|
||||||
|
|||||||
Generated
Vendored
+2
-6
@@ -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.
|
||||||
|
|||||||
+1
-1
@@ -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
@@ -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
|
||||||
|
|||||||
Vendored
+1
-1
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user