diff options
Diffstat (limited to 'src/server/Main.hx')
| -rw-r--r-- | src/server/Main.hx | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/server/Main.hx b/src/server/Main.hx index 271f6ea..9f7534c 100644 --- a/src/server/Main.hx +++ b/src/server/Main.hx @@ -180,12 +180,12 @@ class Main { sendClientList(); case Login: final name = data.login.clientName; - if (name.length == 0 || name.length > config.maxLoginLength + if (badNickName(name) || name.length > config.maxLoginLength || clients.getByName(name) != null) { send(client, {type: LoginError}); return; } - client.name = data.login.clientName; + client.name = name; client.isUser = true; send(client, { type: data.type, @@ -228,6 +228,7 @@ class Main { case AddVideo: final item = data.addVideo.item; + item.author = client.name; final localOrigin = '$localIp:$port'; if (item.url.indexOf(localOrigin) != -1) { item.url = item.url.replace(localOrigin, '$globalIp:$port'); @@ -245,13 +246,12 @@ class Main { case RemoveVideo: if (videoList.length == 0) return; final url = data.removeVideo.url; - if (videoList[0].url == url) { - videoTimer.stop(); - if (videoList.length > 0) restartWaitTimer(); - } + final isFirst = videoList[0].url == url; + if (isFirst) videoTimer.stop(); videoList.remove( videoList.find(item -> item.url == url) ); + if (isFirst && videoList.length > 0) restartWaitTimer(); broadcast(data); case Pause: @@ -368,6 +368,14 @@ class Main { } } + final htmlChars = ~/[&^<>'"]/; + + function badNickName(name:String):Bool { + if (name.length == 0) return true; + if (htmlChars.match(name)) return true; + return false; + } + var waitVideoStart:Timer; var loadedClientsCount = 0; |
