Advertisement
Guest User

Untitled

a guest
Dec 29th, 2017
346
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.13 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. /*var bodyParser = require('body-parser'); // Ler body do post
  13. event.use(bodyParser.json());
  14. event.use(bodyParser.urlencoded({
  15. extended : 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. // res.writeHead(200, headers.plain);
  87. });
  88.  
  89. server.listen(8080);
  90.  
  91. function doPost(pathname, req, res){
  92. var body = "";
  93. var resposta;
  94. console.log("do post " + pathname);
  95. res.setHeader('Access-Control-Allow-Origin','*');
  96. switch(pathname) {
  97. case "/register":
  98. req
  99. .on("data",function(data) {body +=data})
  100. .on("end",function(){
  101. try{
  102. var data = "";
  103.  
  104. console.log("createServer");
  105. var file = fs.readFile('dados.json', function(err, data) {
  106.  
  107. if (!err) {
  108. console.log("entrou no if");
  109. console.log(body);
  110. var dados = JSON.parse(body);
  111. var user = dados.nick;
  112. var pass = dados.pass;
  113. console.log("user no register " + user + " pass " + pass);
  114. var flag = 1;
  115. var object = JSON.parse(data.toString('utf8'));
  116.  
  117. for(var i=0;i<object.length;i++){
  118. var object_teste = JSON.stringify(object);
  119. //console.log("for2 user " + object_teste);
  120. //console.log("for2 pass " + object_teste.body.pass[i]);
  121. if(object[i].nick === user){
  122. console.log("This user already exits");
  123. //var password = crypto.createHash('md5').update(object[i].salt + pass).digest('hex');
  124.  
  125.  
  126.  
  127. if(pass === object[i].pass){
  128. console.log("etnra flag2");
  129. flag=2; //200
  130. console.log("falg " + flag);
  131.  
  132. break;
  133. }
  134. else {
  135. flag=3; //401
  136. console.log("falg " + flag);
  137.  
  138. break;
  139. }
  140.  
  141. }
  142. else{
  143. flag=1;
  144.  
  145. }
  146.  
  147. }
  148. console.log("falg final " + flag);
  149.  
  150. if(flag==1){
  151. var salt = salts.string({length: 4});
  152. var password = crypto.createHash('md5').update(salt + pass).digest('hex');
  153. //console.log(" data " + object[0]);
  154. var savefile = {};
  155. savefile.nick=user;
  156. savefile.pass=password;
  157. savefile.salt=salt;
  158. //console.log(" body " + JSON.stringify(req.body));
  159. //console.log("pass " + pass);
  160. //console.log("pass cri " + password);
  161. object.push(savefile);
  162. console.log("aqui " + object);
  163.  
  164. fs.writeFile('dados.json', JSON.stringify(object), function(err) {
  165. if (err)
  166. return console.log(err);
  167.  
  168. });
  169. }
  170. else if(flag==2){
  171. res.writeHead(200, {'Content-Type' : 'text/plain'});
  172. res.write("{}");
  173. console.log("flag2" + flag);
  174.  
  175. }
  176. else{
  177. res.writeHead(401, {'Content-Type' : 'text/hml'});
  178. res.write(JSON.stringify({error: "User registered with a different password"}));
  179. console.log("flag3" + flag);
  180.  
  181. }
  182. res.end();
  183.  
  184. }
  185. else{
  186. res.writeHead(404, {'Content-Type' : 'text/hml'});
  187. res.write(JSON.stringify({error: "ERROR"}));
  188. }
  189. })}
  190.  
  191. catch(err) { console.log("erro json"); /* erros de JSON */ }
  192.  
  193.  
  194. })
  195. .on("error", function(err) { console.log(err.message); })
  196. break;
  197.  
  198.  
  199. }
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement