Advertisement
Leon1337

Untitled

Dec 23rd, 2018
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const mysql = require('mysql');
  2. const http = require('http');
  3. const express = require('express');
  4. const path = require('path');
  5. const app = express();
  6. const port = 3000;
  7. const sql = mysql.createConnection({
  8.     host: "localhost",
  9.     user: "root",
  10.     password: "root",
  11.     database: "test"
  12. });
  13. const exphbs = require("express-handlebars");
  14. const session = require('express-session');
  15. const bodyParser = require('body-parser');
  16. const crypto = require("crypto");
  17. const request = require("request");
  18.  
  19. sql.connect(function(err) {
  20.     if (err) throw err;
  21. });
  22.  
  23. app.use((req, res, next) => {
  24.     res.append('Access-Control-Allow-Origin', ['*']);
  25.     res.append('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
  26.     res.append('Access-Control-Allow-Headers', 'Content-Type');
  27.     next();
  28. });
  29. app.use(express.static("css"));
  30. app.use(express.static("js"));
  31. app.use(express.static("views"));
  32. app.use(express.static("fonts"));
  33. app.use(bodyParser.urlencoded({
  34.     extended: true
  35. }));
  36. app.use(bodyParser.json());
  37. app.use(session({
  38.     secret: '_SLgw+8o~sM6a*we`/y5Ag_9q0UgZV=;mW:`Zl)7K]ouxkub1z5?E:<|pQUmjy*',
  39.     resave: true,
  40.     saveUninitialized: false,
  41.     cookie:
  42.     {
  43.         expires: 600000
  44.     }
  45. }));
  46.  
  47. app.engine("handlebars", exphbs({ defaultLayout: "main", layoutsDir: __dirname + "/views/layouts/" }));
  48. app.set("view engine", "handlebars");
  49. app.set("views", path.join(__dirname, "views"));
  50.  
  51. app.get("/mysql", (req, res) =>
  52. {
  53.     let query = req.query.query;
  54.     if(!req.session.userid) return res.render("mysql", {deny: "You are not logged in."});
  55.     if(req.session.admin == 0) return res.render("mysql", {deny: "You are not an administrator."});
  56.     if(query === null || query === undefined) return res.render("mysql");
  57.     if(query.length == 0) return res.render("mysql", {error: "The query cannot be empty."});
  58.  
  59.     sql.query("SELECT * FROM `users` WHERE `Name` LIKE ?", "%" + query + "%", (err, result, fields) =>
  60.     {
  61.         if(err) throw err;
  62.         if(result.length == 0)
  63.         {
  64.             return res.render("mysql", {error: "The query returned nothing.", Query: query});
  65.         }
  66.         let arr = [];
  67.         Object.keys(result).forEach(function(key)
  68.         {
  69.             let row = result[key];
  70.             arr.push({ID: row.ID, Name: row.Name, Email: row.Email, Created: row.Created});
  71.         });
  72.  
  73.         let data =
  74.         {
  75.             items: arr,
  76.             Query: query
  77.         }
  78.         res.render("mysql", data);
  79.     });
  80.  
  81. });
  82.  
  83. app.get("/", (req, res) =>
  84. {
  85.     res.render("home");
  86. });
  87.  
  88. app.get("/login", (req, res) =>
  89. {
  90.     /*console.log(res.statusCode);
  91.     console.log(req.statusCode);
  92.     if(res.statusCode == 401) return res.render("login", {error: "You have to login first."});*/
  93.     if(req.session.userid) return res.render("login", {deny: "You are already logged in."});
  94.     if(req.query.name === undefined || req.query.name === null) return res.render("login");
  95.     const hash = crypto.createHash("sha256");
  96.     hash.update(req.query.password);
  97.     let password = hash.digest("hex");
  98.     if(req.query.name.length == 0 || req.query.password.length == 0) return res.render("login", {error: "The name or password cannot be empty.", name: req.query.name, password: req.query.password});
  99.     sql.query('SELECT * FROM `users` WHERE `Name` = ? AND BINARY `Password` = ?', [req.query.name, password], (error, result, fields) =>
  100.     {
  101.         if(error) throw error;
  102.         if(result.length == 0)
  103.         {
  104.             return res.render("login", {error: "The account does not exist or the wrong password was specified.", name: req.query.name, password: req.query.password});
  105.         }
  106.         let ses = req.session;
  107.         ses.userid = result[0].ID;
  108.         ses.admin = result[0].Admin;
  109.         ses.email = result[0].Email;
  110.         ses.name = result[0].Name;
  111.         res.render("login", {success: 1, email: result[0].Email, created: result[0].Created, name: req.query.name, password: req.query.password});
  112.     });
  113. });
  114.  
  115. app.get("/register", (req, res) =>
  116. {
  117.     if(req.session.userid) return res.render("register", {deny: "You are already logged in."});    
  118.     if(req.query.name === undefined || req.query.name === null) return res.render("register");
  119.     if(req.query.name.length == 0 || req.query.password.length == 0 || req.query.email.length == 0) return res.render("register", {error: "The name, password or email cannot be empty.", name: req.query.name, password: req.query.password, email: req.query.email});
  120.     if(req.query.password.length < 4) return res.render("register", {error: "The password has to be atleast 4 characters long.", name: req.query.name, password: req.query.password, email: req.query.email});
  121.     if(req.query.name.length < 4) return res.render("register", {error: "The name has to be atleast 4 characters long.", name: req.query.name, password: req.query.password, email: req.query.email});
  122.     if(req.query.email.length < 6) return res.render("register", {error: "The email has to be atleast 6 characters long.", name: req.query.name, password: req.query.password, email: req.query.email});
  123.     if(req.query.password.length > 64) return res.render("register", {error: "The password has to be max 64 characters long.", name: req.query.name, password: req.query.password, email: req.query.email});
  124.     if(req.query.name.length > 32) return res.render("register", {error: "The name has to be max 32 characters long.", name: req.query.name, password: req.query.password, email: req.query.email});
  125.     if(req.query.email.length > 64) return res.render("register", {error: "The email has to be max 64 characters long.", name: req.query.name, password: req.query.password, email: req.query.email});
  126.     sql.query("SELECT * FROM `users` WHERE `Name` = ?", req.query.name, (error, result, fields) =>
  127.     {
  128.         if(result.length != 0)
  129.         {
  130.             return res.render("register", {error: "An account with this name already exists.",name: req.query.name, password: req.query.password, email: req.query.email});
  131.         }
  132.         let today = new Date();
  133.         const hash = crypto.createHash("sha256");
  134.         hash.update(req.query.password);
  135.         let password = hash.digest("hex");
  136.         sql.query('INSERT INTO `users` (Name, Password, Email, Created) VALUES (?, ?, ?, ?)', [req.query.name, password, req.query.email, today], (error, result, fields) =>
  137.         {
  138.             if(error) throw error;
  139.             res.render("register", {success: 1, name: req.query.name});
  140.         });
  141.     });
  142. });
  143.  
  144. app.get("/account", (req, res) =>
  145. {
  146.     console.log(req.url);
  147.     console.log("Test");
  148.     if(req.query.logout)
  149.     {
  150.         if(req.session.userid)
  151.         {
  152.             req.session.destroy();
  153.             return res.render("account", {msg: "You are now logged out."});
  154.         }
  155.         else
  156.         {
  157.            return res.status(401).location('/login');
  158.         }
  159.     }
  160.     if(!req.session.userid)
  161.     {
  162.        return res.status(401).location('/login');
  163.     }
  164.     res.render("account");
  165. });  
  166.  
  167. app.use((req, res, next) =>
  168. {
  169.     res.status(404);
  170.     res.render("404", {url: req.url});
  171. });
  172.  
  173. app.listen(port);
  174. console.log("Der Hauptserver wurde erfolgreich gestartet!");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement