Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var http = require('http');
- var url = require('url');
- var fs = require('fs');
- var express = require('express'); // Para HTTP
- var cors = require('cors'); // Para HTTP com EXPRESS
- var position = 1;
- var crypto = require('crypto');
- var secret = 'abcdefg';
- var file_path = 'dados.json';
- var chance = require('chance');
- var event = express();
- event.use(cors());
- var salts = new chance();
- var bodyParser = require('body-parser'); // Ler body do post
- event.use(bodyParser.json());
- event.use(bodyParser.urlencoded({
- extended : true
- }));
- function isInteger(x) {
- return x % 1 === 0;
- }
- check_file();
- function check_file()
- {
- fs.readFile('dados.json', function(err, data)
- {
- try
- {
- JSON.parse(data.toString());
- }
- catch (e)
- {
- fs.writeFile('dados.json', "[]", function(err){});
- }
- });
- fs.readFile('ranking.json', function(err, data)
- {
- try
- {
- JSON.parse(data.toString());
- }
- catch (e)
- {
- fs.writeFile('ranking.json', "[]", function(err){});
- }
- });
- }
- function sort_object(object){
- object.sort(function(a, b) {
- if(a.victories==b.victories)
- return parseInt(a.games) - parseInt(b.games);
- return -(parseInt(a.victories) - parseInt(b.victories));
- });
- }
- event.post('/register', function(req, res) {
- var data = "";
- console.log("createServer");
- var file = fs.readFile('dados.json', function(err, data) {
- if (!err) {
- console.log("entrou no if");
- //var dados = JSON.parse(data.toString());
- var user = req.body.nick;
- var pass = req.body.pass;
- var flag = 1;
- var object = JSON.parse(data.toString('utf8'));
- for(var i=0;i<object.length;i++){
- var object_teste = JSON.stringify(object);
- console.log("for2 user " + object_teste);
- //console.log("for2 pass " + object_teste.body.pass[i]);
- if(object[i].nick === user){
- console.log("This user already exits");
- var password = crypto.createHash('md5').update(object[i].salt + pass).digest('hex');
- console.log("password " + password);
- console.log("pass " + pass);
- if(password === object[i].pass){
- flag=2; //200
- console.log("falg " + flag);
- break;
- }
- else {
- flag=3; //401
- console.log("falg " + flag);
- break;
- }
- break;
- }
- else{
- flag=1;
- }
- }
- console.log("falg final " + flag);
- if(flag==1){
- var salt = salts.string( {length: 4} );
- var password = crypto.createHash('md5').update(salt + pass).digest('hex');
- //console.log(" data " + object[0]);
- var savefile = {};
- savefile.nick=user;
- savefile.pass=password;
- savefile.salt=salt;
- //console.log(" body " + JSON.stringify(req.body));
- console.log("pass " + pass);
- console.log("pass cri " + password);
- object.push(savefile);
- //console.log("aqui " + object);
- fs.writeFile('dados.json', JSON.stringify(object), function(err) {
- if (err)
- return console.log(err);
- });
- }
- else if(flag==2){
- res.writeHead(200, {'Content-Type' : 'text/plain'});
- res.write("{}");
- console.log("flag2" + flag);
- }
- else{
- res.writeHead(401, {'Content-Type' : 'text/hml'});
- res.write(JSON.stringify({error: "User registered with a different password"}));
- console.log("flag3" + flag);
- }
- res.end();
- }
- else {
- res.writeHead(404, {'Content-Type' : 'text/html'});
- res.end();
- }
- });
- });
- event.post('/ranking', function(req, res) {
- console.log("create server ranking");
- var file = fs.readFile('ranking.json', function(err, data) {
- if (!err) {
- console.log("req " + req.body.size);
- var size = req.body.size;
- console.log("size " +isInteger(size));
- if(isInteger(size) && (size>=2 && size<=10)){
- var object = JSON.parse(data.toString('utf8'));
- console.log("asd " +object);
- if(object[size] != undefined){
- sort_object(object);
- res.writeHead(200, {'Content-Type' : 'text/plain'});
- res.write(JSON.stringify(object[size]));
- console.log(object[size]);
- }
- else{
- res.writeHead(401, {'Content-Type' : 'text/hml'});
- res.write(JSON.stringify({error: "Doens't exits table with this size"}));
- console.log("nao tem tabela");
- }
- }
- else{
- res.writeHead(401, {'Content-Type' : 'text/hml'});
- res.write(JSON.stringify({error: "Size isn't a valid"}));
- console.log("deu erro com size not int");
- }
- res.end();
- }
- else{
- res.writeHead(404, {'Content-Type' : 'text/html'});
- res.end();
- console.log("deu erro");
- }
- });
- });
- var server = event.listen(8080);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement