aboutsummaryrefslogtreecommitdiffstats
path: root/src/server
diff options
context:
space:
mode:
authorRblSb <msrblsb@gmail.com>2020-03-04 20:41:43 +0300
committerRblSb <msrblsb@gmail.com>2020-03-04 20:41:43 +0300
commit6e28381de77265f8b6a24cdd9c583d1d27d8d7b2 (patch)
tree4a960040204580999774bfffea23634c19d02c9c /src/server
parent4155b95cce55e1176aecb1531b9c06344a2e81b5 (diff)
Playlist config limits
Diffstat (limited to 'src/server')
-rw-r--r--src/server/Main.hx34
1 files changed, 30 insertions, 4 deletions
diff --git a/src/server/Main.hx b/src/server/Main.hx
index 6a2ad82..8f71bd2 100644
--- a/src/server/Main.hx
+++ b/src/server/Main.hx
@@ -13,7 +13,10 @@ import js.npm.ws.Server as WSServer;
import js.npm.ws.WebSocket;
import js.node.http.IncomingMessage;
import js.node.Http;
-import Types;
+import Types.Config;
+import Types.UserList;
+import Types.Message;
+import Types.WsEvent;
using StringTools;
using ClientTools;
using Lambda;
@@ -249,6 +252,7 @@ class Main {
final name = data.login.clientName;
if (badNickName(name) || name.length > config.maxLoginLength
|| clients.getByName(name) != null) {
+ serverMessage(client, "usernameError");
send(client, {type: LoginError});
return;
}
@@ -263,7 +267,7 @@ class Main {
a -> a.name == name && a.hash == hash
)) client.isAdmin = true;
else {
- // TODO server msg type
+ serverMessage(client, "passwordMatchError");
send(client, {type: LoginError});
return;
}
@@ -310,8 +314,22 @@ class Main {
if (messages.length > config.serverChatHistory) messages.shift();
broadcast(data);
+ case ServerMessage:
case AddVideo:
- if (!client.isAdmin && !isPlaylistOpen) return;
+ if (!client.isAdmin && !isPlaylistOpen) {
+ serverMessage(client, "accessError");
+ return;
+ }
+ if (config.totalVideoLimit != 0
+ && videoList.length >= config.totalVideoLimit) {
+ serverMessage(client, "totalVideoLimitError");
+ return;
+ }
+ if (config.userVideoLimit != 0
+ && videoList.itemsByUser(client) >= config.userVideoLimit) {
+ serverMessage(client, "videoLimitPerUserError");
+ return;
+ }
final item = data.addVideo.item;
item.author = client.name;
final local = '$localIp:$port';
@@ -319,7 +337,7 @@ class Main {
item.url = item.url.replace(local, '$globalIp:$port');
}
if (videoList.exists(i -> i.url == item.url)) {
- // TODO send server message
+ serverMessage(client, "videoAlreadyExistsError");
return;
}
videoList.addItem(item, data.addVideo.atEnd, itemPos);
@@ -486,6 +504,14 @@ class Main {
});
}
+ function serverMessage(client:Client, textId:String):Void {
+ send(client, {
+ type: ServerMessage, serverMessage: {
+ textId: textId
+ }
+ });
+ }
+
function send(client:Client, data:WsEvent):Void {
client.ws.send(Json.stringify(data), null);
}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage