Advertisement
Guest User

Untitled

a guest
Dec 29th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.77 KB | None | 0 0
  1. var http = require('http');
  2. var url = require('url');
  3. var fs = require('fs');
  4. var express = require('express'); // Para HTTP
  5. var cors = require('cors'); // Para HTTP com EXPRESS
  6. var crypto = require('crypto');
  7. var chance = require('chance');
  8.  
  9. var event = express();
  10. event.use(cors());
  11. var salts = new chance();
  12. /*
  13. * var bodyParser = require('body-parser'); // Ler body do post
  14. * event.use(bodyParser.json()); event.use(bodyParser.urlencoded({ extended :
  15. * true }));
  16. */
  17.  
  18. function isInteger(x) {
  19. return x % 1 === 0;
  20. }
  21. check_file();
  22.  
  23. function check_file()
  24. {
  25. fs.readFile('dados.json', function(err, data)
  26. {
  27. try
  28. {
  29. JSON.parse(data.toString());
  30. }
  31. catch (e)
  32. {
  33. fs.writeFile('dados.json', "[]", function(err){});
  34. }
  35. });
  36. fs.readFile('ranking.json', function(err, data)
  37. {
  38. try
  39. {
  40. JSON.parse(data.toString());
  41. }
  42. catch (e)
  43. {
  44. fs.writeFile('ranking.json', "[]", function(err){});
  45. }
  46. });
  47. }
  48.  
  49. function sort_object(object){
  50. object.sort(function(a, b) {
  51. if(a.victories==b.victories)
  52. return parseInt(a.games) - parseInt(b.games);
  53.  
  54. return -(parseInt(a.victories) - parseInt(b.victories));
  55.  
  56. });
  57.  
  58. }
  59.  
  60. var headers = {
  61. plain: {
  62. 'Content-Type': 'application/javascript',
  63. 'Cache-Control': 'no-cache',
  64. 'Access-Control-Allow-Origin': '*'
  65. },
  66. sse: {
  67. 'Content-Type': 'text/event-stream',
  68. 'Cache-Control': 'no-cache',
  69. 'Access-Control-Allow-Origin': '*',
  70. 'Connection': 'keep-alive'
  71. }
  72. };
  73.  
  74.  
  75. var server = http.createServer(function (req, res){
  76. var preq = url.parse(req.url,true);
  77. console.log("entra");
  78. var pathname = preq.pathname;
  79. console.log(pathname);
  80. var answer = {};
  81. switch(req.method){
  82. case "POST":
  83. doPost(pathname,req,res);
  84. break;
  85.  
  86. }
  87. // res.writeHead(200, headers.plain);
  88. });
  89.  
  90. server.listen(8080);
  91.  
  92. function doPost(pathname, req, res){
  93. var body = "";
  94. var resposta;
  95. console.log("do post " + pathname);
  96. res.setHeader('Access-Control-Allow-Origin','*');
  97. switch(pathname) {
  98. case "/register":
  99. req
  100. .on("data",function(data) {body +=data})
  101. .on("end",function(){
  102. try{
  103. var data = "";
  104.  
  105. console.log("createServer");
  106. var file = fs.readFile('dados.json', function(err, data) {
  107.  
  108. if (!err) {
  109. console.log("entrou no if");
  110. console.log(body);
  111. var dados = JSON.parse(body);
  112. var user = dados.nick;
  113. var pass = dados.pass;
  114. console.log("user no register " + user + " pass " + pass);
  115. var flag = 1;
  116. var object = JSON.parse(data.toString('utf8'));
  117.  
  118. for(var i=0;i<object.length;i++){
  119. var object_teste = JSON.stringify(object);
  120. // console.log("for2 user " + object_teste);
  121. // console.log("for2 pass " +
  122. // object_teste.body.pass[i]);
  123. if(object[i].nick === user){
  124. console.log("This user already exits");
  125. // var password =
  126. // crypto.createHash('md5').update(object[i].salt
  127. // + pass).digest('hex');
  128.  
  129.  
  130.  
  131. if(pass === object[i].pass){
  132. console.log("etnra flag2");
  133. flag=2; // 200
  134. console.log("falg " + flag);
  135.  
  136. break;
  137. }
  138. else {
  139. flag=3; // 401
  140. console.log("falg " + flag);
  141.  
  142. break;
  143. }
  144.  
  145. }
  146. else{
  147. flag=1;
  148.  
  149. }
  150.  
  151. }
  152. console.log("falg final " + flag);
  153.  
  154. if(flag==1){
  155. var salt = salts.string({length: 4});
  156. var password = crypto.createHash('md5').update(salt + pass).digest('hex');
  157. // console.log(" data " + object[0]);
  158. var savefile = {};
  159. savefile.nick=user;
  160. savefile.pass=password;
  161. savefile.salt=salt;
  162. // console.log(" body " +
  163. // JSON.stringify(req.body));
  164. // console.log("pass " + pass);
  165. // console.log("pass cri " + password);
  166. object.push(savefile);
  167. console.log("aqui " + object);
  168.  
  169. fs.writeFile('dados.json', JSON.stringify(object), function(err) {
  170. if (err)
  171. return console.log(err);
  172.  
  173. });
  174. res.writeHead(200, {'Content-Type' : 'text/plain'});
  175. res.write("{}");
  176.  
  177. }
  178. else if(flag==2){
  179. res.writeHead(200, {'Content-Type' : 'text/plain'});
  180. res.write("{}");
  181. console.log("flag2" + flag);
  182.  
  183. }
  184. else{
  185. res.writeHead(401, {'Content-Type' : 'text/hml'});
  186. res.write(JSON.stringify({error: "User registered with a different password"}));
  187. console.log("flag3" + flag);
  188.  
  189. }
  190. res.end();
  191.  
  192. }
  193. else{
  194. res.writeHead(404, {'Content-Type' : 'text/hml'});
  195. res.write(JSON.stringify({error: "ERROR"}));
  196. }
  197. })}
  198.  
  199. catch(err) { console.log("erro json"); /* erros de JSON */ }
  200.  
  201.  
  202. })
  203. .on("error", function(err) { console.log(err.message); })
  204. break;
  205.  
  206. case "/ranking":
  207. req
  208. .on("data",function(data) {body +=data})
  209. .on("end",function(){
  210. try{
  211. console.log("create server ranking");
  212. var file = fs.readFile('ranking.json', function(err, data) {
  213. if (!err) {
  214. console.log(body);
  215. var dados = JSON.parse(body);
  216.  
  217. var size = dados.size;
  218. console.log("size " + size +isInteger(size));
  219. if(isInteger(size) && (size>=2 && size<=10)){
  220. var object = JSON.parse(data.toString('utf8'));
  221.  
  222. console.log("asd " +object);
  223. if(object[size] != undefined){
  224. sort_object(object);
  225. res.writeHead(200, {'Content-Type' : 'text/plain'});
  226. res.write(JSON.stringify(object[size]));
  227. console.log(object[size]);
  228. }
  229. else{
  230. res.writeHead(401, {'Content-Type' : 'text/hml'});
  231. res.write(JSON.stringify({error: "Doens't exits table with this size"}));
  232. console.log("nao tem tabela");
  233. }
  234. }
  235. else{
  236. res.writeHead(401, {'Content-Type' : 'text/hml'});
  237. res.write(JSON.stringify({error: "Size isn't a valid"}));
  238. console.log("deu erro com size not int");
  239.  
  240. }
  241. res.end();
  242. }
  243. else{
  244. res.writeHead(404, {'Content-Type' : 'text/html'});
  245. res.end();
  246. console.log("deu erro");
  247.  
  248. }
  249. });
  250. }
  251. catch(err) { console.log("erro json"); /* erros de JSON */ }
  252.  
  253. })
  254. .on("error", function(err) { console.log(err.message); })
  255. break;
  256. return;
  257. }
  258. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement