1
Fork 0
mirror of https://github.com/jech/galene.git synced 2024-11-26 02:25:58 +01:00

Implement commands /lock and /unlock.

This commit is contained in:
Juliusz Chroboczek 2020-05-18 15:24:04 +02:00
parent 037f002a29
commit 12858e1f36
3 changed files with 25 additions and 0 deletions

View file

@ -1248,6 +1248,16 @@ func handleClientMessage(c *client, m clientMessage) error {
if err != nil { if err != nil {
return c.error(err) return c.error(err)
} }
case "lock", "unlock":
if !c.permissions.Op {
c.error(userError("not authorised"))
return nil
}
var locked uint32
if m.Type == "lock" {
locked = 1
}
atomic.StoreUint32(&c.group.locked, locked)
case "kick": case "kick":
if !c.permissions.Op { if !c.permissions.Op {
c.error(userError("not authorised")) c.error(userError("not authorised"))

View file

@ -199,6 +199,7 @@ type group struct {
dead bool dead bool
description *groupDescription description *groupDescription
videoCount uint32 videoCount uint32
locked uint32
mu sync.Mutex mu sync.Mutex
clients map[string]*client clients map[string]*client
@ -366,6 +367,10 @@ func addClient(name string, client *client, user, pass string) (*group, []userid
} }
client.permissions = perms client.permissions = perms
if !perms.Op && atomic.LoadUint32(&g.locked) != 0 {
return nil, nil, userError("group is locked")
}
g.mu.Lock() g.mu.Lock()
defer g.mu.Unlock() defer g.mu.Unlock()

View file

@ -888,6 +888,16 @@ function handleInput() {
type: 'clearchat', type: 'clearchat',
}); });
return; return;
case '/lock':
case '/unlock':
if(!permissions.op) {
displayError("You're not an operator");
return;
}
send({
type: cmd === '/lock' ? 'lock' : 'unlock',
});
return;
case '/op': case '/op':
case '/unop': case '/unop':
case '/kick': case '/kick':