summaryrefslogtreecommitdiff
path: root/modules/save/save.js
diff options
context:
space:
mode:
Diffstat (limited to 'modules/save/save.js')
-rw-r--r--modules/save/save.js84
1 files changed, 84 insertions, 0 deletions
diff --git a/modules/save/save.js b/modules/save/save.js
new file mode 100644
index 0000000..d64e66e
--- /dev/null
+++ b/modules/save/save.js
@@ -0,0 +1,84 @@
+var cmn=require("../$common.js"),
+ fs=require("fs"),
+ mkdirp=require("mkdirp");
+
+var moddir;
+var directory;
+
+var filenameRegex=/[^a-zA-Z0-9._-]/g;
+
+function pad(s,n){
+ s=s+"";
+ var p="";
+ while(s.length+p.length<n)p+="0";
+ return p+s;
+}
+
+function makefilename(){
+ var d=new Date();
+ var s=[
+ pad(d.getFullYear(),4), pad(d.getMonth()+1,2), pad(d.getDate(),2),
+ pad(d.getHours(),2), pad(d.getMinutes(),2), pad(d.getSeconds(),2),
+ pad(d.getMilliseconds(),3)
+ ].join("-");
+ return s+".txt";
+}
+
+module.exports=function(app,io,_moddir){
+ moddir=_moddir;
+ directory=moddir+"/saves";
+
+ mkdirp.sync(directory);
+
+ app.get("/save",function(req,res){
+ res.sendFile(moddir+"/index.html");
+ });
+ app.post("/save",function(req,res){
+ var s=req.body.trim();
+ if(s=="")res.status(400).send("No text sent");
+ fs.writeFile(directory+"/"+makefilename(),s,function(err){
+ if(err){
+ console.log(err);
+ res.status(500).send("An error occurred");
+ return;
+ }
+ res.send();
+ });
+ });
+
+ app.all(["/save/read","/save/read/*"],cmn.authgen());
+
+ app.get("/save/read",function(req,res){
+ res.sendFile(moddir+"/read.html");
+ });
+ app.get("/save/read/files",function(req,res){
+ fs.readdir(directory,function(err,files){
+ if(err){
+ console.log(err);
+ res.status(500).send(err);
+ return;
+ }
+ res.send(JSON.stringify(files));
+ });
+ });
+ app.get("/save/read/file/:fname",function(req,res){
+ var fname=req.params.fname.replace(filenameRegex,"");
+ fs.readFile(directory+"/"+fname,function(err,text){
+ if(err){
+ res.status(404).send("File not found");
+ return;
+ }
+ res.send(text);
+ });
+ });
+ app.delete("/save/read/file/:fname",function(req,res){
+ var fname=req.params.fname.replace(filenameRegex,"");
+ fs.unlink(directory+"/"+fname,function(err){
+ if(err){
+ res.status(404).send("File not found");
+ return;
+ }
+ res.send();
+ });
+ });
+};