Advertisement
Guest User

Untitled

a guest
Dec 28th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.73 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 position = 1;
  7. var crypto = require('crypto');
  8. var secret = 'abcdefg';
  9. var file_path = 'dados.json';
  10. var chance = require('chance');
  11.  
  12. var event = express();
  13. event.use(cors());
  14. var salts = new chance();
  15. var bodyParser = require('body-parser'); // Ler body do post
  16. event.use(bodyParser.json());
  17. event.use(bodyParser.urlencoded({
  18. extended : true
  19. }));
  20. function isInteger(x) {
  21. return x % 1 === 0;
  22. }
  23. check_file();
  24.  
  25. function check_file()
  26. {
  27. fs.readFile('dados.json', function(err, data)
  28. {
  29. try
  30. {
  31. JSON.parse(data.toString());
  32. }
  33. catch (e)
  34. {
  35. fs.writeFile('dados.json', "[]", function(err){});
  36. }
  37. });
  38. fs.readFile('ranking.json', function(err, data)
  39. {
  40. try
  41. {
  42. JSON.parse(data.toString());
  43. }
  44. catch (e)
  45. {
  46. fs.writeFile('ranking.json', "[]", function(err){});
  47. }
  48. });
  49. }
  50.  
  51. function sort_object(object){
  52. object.sort(function(a, b) {
  53. if(a.victories==b.victories)
  54. return parseInt(a.games) - parseInt(b.games);
  55.  
  56. return -(parseInt(a.victories) - parseInt(b.victories));
  57.  
  58. });
  59.  
  60. }
  61. event.post('/register', function(req, res) {
  62.  
  63. var data = "";
  64.  
  65. console.log("createServer");
  66. var file = fs.readFile('dados.json', function(err, data) {
  67.  
  68. if (!err) {
  69. console.log("entrou no if");
  70. //var dados = JSON.parse(data.toString());
  71. var user = req.body.nick;
  72. var pass = req.body.pass;
  73. var flag = 1;
  74. var object = JSON.parse(data.toString('utf8'));
  75.  
  76. for(var i=0;i<object.length;i++){
  77. var object_teste = JSON.stringify(object);
  78. console.log("for2 user " + object_teste);
  79. //console.log("for2 pass " + object_teste.body.pass[i]);
  80. if(object[i].nick === user){
  81. console.log("This user already exits");
  82. var password = crypto.createHash('md5').update(object[i].salt + pass).digest('hex');
  83.  
  84. console.log("password " + password);
  85. console.log("pass " + pass);
  86.  
  87. if(password === object[i].pass){
  88. flag=2; //200
  89. console.log("falg " + flag);
  90.  
  91. break;
  92. }
  93. else {
  94. flag=3; //401
  95. console.log("falg " + flag);
  96.  
  97. break;
  98. }
  99. break;
  100. }
  101. else{
  102. flag=1;
  103.  
  104. }
  105. }
  106. console.log("falg final " + flag);
  107.  
  108. if(flag==1){
  109. var salt = salts.string( {length: 4} );
  110. var password = crypto.createHash('md5').update(salt + pass).digest('hex');
  111. //console.log(" data " + object[0]);
  112. var savefile = {};
  113. savefile.nick=user;
  114. savefile.pass=password;
  115. savefile.salt=salt;
  116. //console.log(" body " + JSON.stringify(req.body));
  117. console.log("pass " + pass);
  118. console.log("pass cri " + password);
  119. object.push(savefile);
  120. //console.log("aqui " + object);
  121.  
  122. fs.writeFile('dados.json', JSON.stringify(object), function(err) {
  123. if (err)
  124. return console.log(err);
  125.  
  126. });
  127. }
  128. else if(flag==2){
  129. res.writeHead(200, {'Content-Type' : 'text/plain'});
  130. res.write("{}");
  131. console.log("flag2" + flag);
  132.  
  133. }
  134. else{
  135. res.writeHead(401, {'Content-Type' : 'text/hml'});
  136. res.write(JSON.stringify({error: "User registered with a different password"}));
  137. console.log("flag3" + flag);
  138.  
  139. }
  140. res.end();
  141.  
  142. }
  143. else {
  144. res.writeHead(404, {'Content-Type' : 'text/html'});
  145. res.end();
  146. }
  147.  
  148. });
  149. });
  150.  
  151. event.post('/ranking', function(req, res) {
  152. console.log("create server ranking");
  153. var file = fs.readFile('ranking.json', function(err, data) {
  154. if (!err) {
  155. console.log("req " + req.body.size);
  156. var size = req.body.size;
  157. console.log("size " +isInteger(size));
  158. if(isInteger(size) && (size>=2 && size<=10)){
  159. var object = JSON.parse(data.toString('utf8'));
  160.  
  161. console.log("asd " +object);
  162. if(object[size] != undefined){
  163. sort_object(object);
  164. res.writeHead(200, {'Content-Type' : 'text/plain'});
  165. res.write(JSON.stringify(object[size]));
  166. console.log(object[size]);
  167. }
  168. else{
  169. res.writeHead(401, {'Content-Type' : 'text/hml'});
  170. res.write(JSON.stringify({error: "Doens't exits table with this size"}));
  171. console.log("nao tem tabela");
  172. }
  173. }
  174. else{
  175. res.writeHead(401, {'Content-Type' : 'text/hml'});
  176. res.write(JSON.stringify({error: "Size isn't a valid"}));
  177. console.log("deu erro com size not int");
  178.  
  179. }
  180. res.end();
  181. }
  182. else{
  183. res.writeHead(404, {'Content-Type' : 'text/html'});
  184. res.end();
  185. console.log("deu erro");
  186.  
  187. }
  188. });
  189.  
  190. });
  191.  
  192.  
  193. var server = event.listen(8080);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement