1
Fork 0

Override permissions for disk recording.

This commit is contained in:
Juliusz Chroboczek 2020-10-01 13:38:09 +02:00
parent 3bd9a1db4e
commit 9ce591e4c5
4 changed files with 25 additions and 11 deletions

View File

@ -53,6 +53,10 @@ func (client *Client) Credentials() group.ClientCredentials {
return group.ClientCredentials{"RECORDING", ""}
}
func (client *Client) OverridePermissions(g *group.Group) bool {
return true
}
func (client *Client) SetPermissions(perms group.ClientPermissions) {
return
}

View File

@ -20,6 +20,7 @@ type Client interface {
Id() string
Credentials() ClientCredentials
SetPermissions(ClientPermissions)
OverridePermissions(*Group) bool
PushConn(id string, conn conn.Up, tracks []conn.UpTrack, label string) error
PushClient(id, username string, add bool) error
}

View File

@ -271,16 +271,19 @@ func AddClient(name string, c Client) (*Group, error) {
return nil, err
}
override := c.OverridePermissions(g)
g.mu.Lock()
defer g.mu.Unlock()
perms, err := g.description.GetPermission(c.Credentials())
if err != nil {
if !override && err != nil {
return nil, err
}
c.SetPermissions(perms)
if !override {
if !perms.Op && g.locked != nil {
m := *g.locked
if m == "" {
@ -294,6 +297,8 @@ func AddClient(name string, c Client) (*Group, error) {
return nil, UserError("too many users")
}
}
}
if g.clients[c.Id()] != nil {
return nil, ProtocolError("duplicate client id")
}

View File

@ -73,6 +73,10 @@ func (c *webClient) SetPermissions(perms group.ClientPermissions) {
c.permissions = perms
}
func (c *webClient) OverridePermissions(g *group.Group) bool {
return false
}
func (c *webClient) PushClient(id, username string, add bool) error {
kind := "add"
if !add {