summaryrefslogtreecommitdiff
path: root/modules/lijst
diff options
context:
space:
mode:
Diffstat (limited to 'modules/lijst')
-rw-r--r--modules/lijst/lijst.js20
1 files changed, 19 insertions, 1 deletions
diff --git a/modules/lijst/lijst.js b/modules/lijst/lijst.js
index ce81bb5..d30f3f4 100644
--- a/modules/lijst/lijst.js
+++ b/modules/lijst/lijst.js
@@ -16,8 +16,16 @@ if(!lijst||Array.isArray(lijst)){
persist.setItemSync("lijst",lijst);
}
+var maxlijstcost=1000000;
+
var moddir;
+function computecost(l){
+ var cost=0;
+ for(var i=0;i<l.length;i++)cost+=10+l[i].text;
+ return cost;
+}
+
function repeatstring(n,s){
return Array(n+1).join(s);
}
@@ -51,7 +59,17 @@ module.exports=function(app,io,_moddir){
render(res);
});
app.post("/lijst/add",function(req,res){
- lijst.lijst.push({text:req.body.trim(),id:lijst.nextid++,votes:0});
+ if(typeof req.body!="string"){
+ res.status(400).end("Malformed request data");
+ return;
+ }
+ var obj={text:req.body.trim(),id:lijst.nextid++,votes:0};
+ lijst.lijst.push(obj);
+ if(computecost(lijst.lijst)>maxlijstcost){
+ lijst.lijst.pop();
+ res.status(451).end("Database too large");
+ return;
+ }
persist.setItemSync("lijst",lijst);
res.status(200).end(renderFragment());
});