From f140f9bc89c95684b0df05e2674516852bf2a5de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Mon, 17 Jan 2022 22:35:41 +0100 Subject: [PATCH] add protected room mount type. --- OpenApi.yml | 2 +- client/src/api/api.ts | 1 + client/src/components/RoomsCreate.vue | 7 ++++++- docs/storage.png | Bin 23600 -> 30279 bytes internal/room/manager.go | 5 ++++- internal/types/room.go | 7 ++++--- 6 files changed, 16 insertions(+), 6 deletions(-) diff --git a/OpenApi.yml b/OpenApi.yml index df5cc83..d348697 100644 --- a/OpenApi.yml +++ b/OpenApi.yml @@ -320,7 +320,7 @@ components: properties: type: type: string - enum: [ private, template, public ] + enum: [ private, template, protected, public ] example: private host_path: type: string diff --git a/client/src/api/api.ts b/client/src/api/api.ts index 196fde8..c64e202 100644 --- a/client/src/api/api.ts +++ b/client/src/api/api.ts @@ -337,6 +337,7 @@ export interface RoomMount { export enum RoomMountTypeEnum { private = 'private', template = 'template', + protected = 'protected', public = 'public' } diff --git a/client/src/components/RoomsCreate.vue b/client/src/components/RoomsCreate.vue index c3ea9d3..712a6ff 100644 --- a/client/src/components/RoomsCreate.vue +++ b/client/src/components/RoomsCreate.vue @@ -273,7 +273,8 @@

Private: Host path is relative to <storage path>/rooms/<room name>/.
- Template: Host path is relative to <storage path>/templates/ and is readonly.
+ Template: Host path is relative to <storage path>/templates/, and will be readonly.
+ Protected: Host path must be whitelisted in config and exists on the host, will be readonly.
Public: Host path must be whitelisted in config and exists on the host.

@@ -503,6 +504,10 @@ export default class RoomsCreate extends Vue { text: 'Template', value: 'template', }, + { + text: 'Protected', + value: 'protected', + }, { text: 'Public', value: 'public', diff --git a/docs/storage.png b/docs/storage.png index c852e2812d822521a1eba632caf407126abe1ba0..b41ffb2087180365c049389c8edbaf99ba161e54 100644 GIT binary patch literal 30279 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 literal 23600 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 z%0A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 CH@bWP diff --git a/internal/room/manager.go b/internal/room/manager.go index 68e840b..33cb5b0 100644 --- a/internal/room/manager.go +++ b/internal/room/manager.go @@ -336,7 +336,10 @@ func (manager *RoomManagerCtx) Create(settings types.RoomSettings) (string, erro // prefix host path hostPath = path.Join(manager.config.StorageExternal, templateStoragePath, hostPath) - } else if mount.Type == types.MountPublic { + } else if mount.Type == types.MountProtected || mount.Type == types.MountPublic { + // readonly if mount type is protected + readOnly = mount.Type == types.MountProtected + // public whitelisted mounts var isAllowed = false for _, path := range manager.config.MountsWhitelist { diff --git a/internal/types/room.go b/internal/types/room.go index a3a5f5a..61e132f 100644 --- a/internal/types/room.go +++ b/internal/types/room.go @@ -44,9 +44,10 @@ type RoomEntry struct { type MountType string const ( - MountPrivate MountType = "private" - MountTemplate MountType = "template" - MountPublic MountType = "public" + MountPrivate MountType = "private" + MountTemplate MountType = "template" + MountProtected MountType = "protected" + MountPublic MountType = "public" ) type RoomMount struct {