Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. const express = require('express');
  2. const mongoose = require('mongoose');
  3. const bodyParser = require('body-parser');
  4. const moment = require('moment');
  5. const app = express();
  6.  
  7. // Setup express
  8. app.set('view engine', 'ejs');
  9. app.set('views', __dirname + '/views');
  10. app.use(express.static(__dirname + '/public'));
  11. app.use(bodyParser.urlencoded({ extended: false }));
  12. app.use(bodyParser.json());
  13.  
  14. // Get env variables
  15. const port = process.env.PORT || 3000;
  16. const perPage = process.env.PAGE_SIZE || 10;
  17. const mongoUrl = process.env.MONGODB_URI || 'mongodb://hackerlog:GQEBrddkbf59ULuVGTZD43tevpSJ01pQnd7VTv8aSkheP9dbeoorOkEw8ejFdL25iDqVWuZ7DB4kvst3BieZcQ==@hackerlog.documents.azure.com:10255/hackerlog?ssl=true';
  18. const defaultPassword = process.env.HACKERLOG_PASSWORD || 'P@ssw0rd!';
  19.  
  20. // Create post schema
  21. const updateSchema = mongoose.Schema({
  22. name: { type: String, required: true },
  23. update: { type: String, required: true }
  24. }, {
  25. timestamps: true
  26. });
  27. const Update = mongoose.model('update', updateSchema);
  28.  
  29. // Routes
  30. app.get('/', (req, res) => {
  31. const page = Math.max(0, req.query.page);
  32. const wrongPassword = req.query.wrongPassword;
  33. Update.find().limit(perPage).skip(perPage * page).sort({ createdAt: 'desc' }).exec().then((updates) => {
  34. Update.count().exec().then((count) => {
  35. const pages = count / perPage;
  36. res.render('index', { title: 'HackerLog', updates, wrongPassword, page, pages, moment });
  37. }).catch(() => {
  38. res.redirect('/error');
  39. });
  40. }).catch(() => {
  41. res.redirect('/error');
  42. });
  43. });
  44.  
  45. // Posting update
  46. app.post('/update', (req, res) => {
  47. const { body: { name, update, password } } = req;
  48. if (!name || !update) {
  49. res.redirect('/error');
  50. } else if (password === defaultPassword) {
  51. const userUpdate = new Update({ name, update });
  52. userUpdate.save().then(() => {
  53. res.redirect('/');
  54. }).catch(() => {
  55. res.redirect('/error');
  56. });
  57. } else {
  58. res.redirect('/?wrongPassword=true');
  59. }
  60. });
  61.  
  62. // Some debug messages
  63. console.log("Starting app..");
  64. console.log("Waiting for connection to MongoDB");
  65.  
  66. mongoose.connect(mongoUrl, { useNewUrlParser: true }).then(() => {
  67. console.log("Connected to MongoDB!");
  68. console.log("Starting webserver..");
  69. app.listen(port, '0.0.0.0', () => console.log(`HackerLog app listening on port ${port}!`));
  70. }).catch(() => {
  71. console.log("Could not connect to MongoDB server! Shutting down...");
  72. process.exit(1);
  73. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement