var cmn=require("../$common.js"), process=require("child_process"); var moddir,uname; uname=String(process.execSync("uname")).trim(); //PERFORMS NO VALIDATION! function get_abbreviations(abbr,num,cb){ var fname=moddir+"/abbreviation_gen_"+uname; process.execFile(fname,[abbr,num],{},function(err,stdout,stderr){ //if(err)throw err; if(err){ console.log(err.toString()); console.log(err.stack); cb([]); return; } cb(stdout.split("\n")); }); } module.exports=function(app,io,_moddir){ moddir=_moddir; app.get("/abbrgen/:abbr",function(req,res){ var abbr=req.params.abbr; res.set("Content-Type","text/plain"); if(!abbr.match(/^[a-z]+$/i)){ res.send("ERROR: Invalid input value."); return; } get_abbreviations(abbr,"1",function(answers){ res.send(answers.join("\n")); }); }); app.get("/abbrgen/:abbr/:num",function(req,res){ var abbr=req.params.abbr,num=req.params.num; res.set("Content-Type","text/plain"); if(num>5000){ res.send("ERROR: Number of abbreviations too large."); return; } if(!abbr.match(/^[a-z]+$/i)||isNaN(+num)||num<0||num%1!=0){ res.send("ERROR: Invalid input values."); return; } get_abbreviations(abbr,num|0,function(answers){ res.send(answers.join("\n")); }); }); };