From 5d5c0a741b53e8d452d866f8cd6f17d6f4ad185c Mon Sep 17 00:00:00 2001 From: Et0h Date: Mon, 4 Jan 2016 12:10:28 +0000 Subject: [PATCH] Server only accepts playlist/index changes from room operators in managed rooms --- syncplay/server.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/syncplay/server.py b/syncplay/server.py index 14eb6d2..187dc06 100644 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -138,12 +138,22 @@ class SyncFactory(Factory): self._roomManager.broadcastRoom(watcher, lambda w: w.sendSetReady(watcher.getName(), watcher.isReady(), manuallyInitiated)) def setPlaylist(self, watcher, files): - watcher.getRoom().setPlaylist(files, watcher) - self._roomManager.broadcastRoom(watcher, lambda w: w.setPlaylist(watcher.getName(), files)) + room = watcher.getRoom() + if room.canControl(watcher): + watcher.getRoom().setPlaylist(files, watcher) + self._roomManager.broadcastRoom(watcher, lambda w: w.setPlaylist(watcher.getName(), files)) + else: + watcher.setPlaylist(room.getName(), room.getPlaylist()) + watcher.setPlaylistIndex(room.getName(), room.getPlaylistIndex()) + def setPlaylistIndex(self, watcher, index): - watcher.getRoom().setPlaylistIndex(index, watcher) - self._roomManager.broadcastRoom(watcher, lambda w: w.setPlaylistIndex(watcher.getName(), index)) + room = watcher.getRoom() + if room.canControl(watcher): + watcher.getRoom().setPlaylistIndex(index, watcher) + self._roomManager.broadcastRoom(watcher, lambda w: w.setPlaylistIndex(watcher.getName(), index)) + else: + watcher.setPlaylistIndex(room.getName(), room.getPlaylistIndex()) class RoomManager(object): def __init__(self):