Advertisement
Guest User

Untitled

a guest
Jan 11th, 2013
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // TODO: Close Mongo connections upon exit
  2. var express = require('express');
  3. var mongoose = require('mongoose');
  4. var fs = require('fs');
  5. var https = require('https');
  6. var shellCommand = require('child_process').exec;
  7.  
  8. var privateKey = fs.readFileSync('./../ssl/localhost.key').toString();
  9. var certificate = fs.readFileSync('./../ssl/localhost.crt').toString();
  10.  
  11. // Instantiate express
  12. var server = express()
  13.     .use(express.static('./../'))
  14.     .use(express.cookieParser())
  15.     .use(express.bodyParser())
  16.     .use(express.session({secret: 'Secret!'}))
  17.     .set('views', './../');
  18.  
  19. https.createServer({
  20.     key: privateKey,
  21.     cert: certificate
  22. }, server).listen(80, 'localhost');
  23.  
  24. // Connect to the database
  25. mongoose.connect('localhost', 'users');
  26.  
  27. // Define our model
  28. var User = mongoose.model('Users',
  29.     mongoose.Schema({
  30.         username: 'string',
  31.         password: 'string',
  32.         rights: 'string'
  33.     })
  34. );
  35.  
  36. // Clear the database
  37. User.remove({}, function () {});
  38.  
  39. // Add admin
  40. new User({
  41.     username: 'admin',
  42.     password: 'admin',
  43.     rights: 'Administrator'
  44. }).save();
  45.  
  46. new User({
  47.     username: 'Steve',
  48.     password: 'test',
  49.     rights: 'Administrator'
  50. }).save();
  51.  
  52. new User({
  53.     username: 'Justin',
  54.     password: 'test',
  55.     rights: 'Operator'
  56. }).save();
  57.  
  58. server.get('/usersList', function(req, res) {
  59.     User.find({}, null, {sort: {username: 1}}, function (err, users) {
  60.         res.send(users);
  61.     });
  62. });
  63.  
  64. server.get('/protocols', function(req, res) {
  65.     var response = {};
  66.  
  67.     shellCommand('tdcli proto list  | grep -v dpi_', function (err, stdout, stderr) {
  68.         var lines = stdout.split('\n');
  69.  
  70.         for(var i = 2; i < lines.length; i += 1) {
  71.             var line = lines[i];
  72.             var name = line.split(/\W+/)[1];
  73.             var status = line.match(/(enabled|disabled)/)[0];
  74.  
  75.             response[name] = status;
  76.         }
  77.  
  78.         res.send(response);
  79.     });
  80. });
  81.  
  82. server.get('/statistics', function(req, res) {
  83.     var response = {};
  84.  
  85.     for(var i = 0; i < 3; i += 1) {
  86.         response[i] = 0.25 + 1 / 2 * Math.random();
  87.     }
  88.  
  89.     shellCommand('top -b -n 1', function (err, stdout, stderr) {
  90.         var lines = stdout.split('\n');
  91.         var line;
  92.         var elements;
  93.         var memory;
  94.         var cpu;
  95.  
  96.         for(i = 0; i < lines.length; i += 1) {
  97.             line = lines[i];
  98.             elements = line.split(/\s+/);
  99.  
  100.             if(elements[0] == 'Mem:') {
  101.                 memory = +(elements[3].slice(0, -1));
  102.             }
  103.  
  104.             if(elements[0] == 'Cpu(s):') {
  105.                 cpu = +((100 - +elements[4].slice(0, -4)).toFixed(1));
  106.             }
  107.         }
  108.  
  109.         response[3] = cpu;
  110.         response[4] = memory;
  111.  
  112.         res.send(response);
  113.     });
  114. });
  115.  
  116. server.post('/login', function(req, res) {
  117.     var receivedUsername = req.body.username;
  118.     var receivedPassword = req.body.password;
  119.  
  120.     User.find({
  121.         username: receivedUsername
  122.     }, function (err, users) {
  123.         if(printError(err)) return;
  124.  
  125.         var user = users[0];
  126.  
  127.         if(!user) {
  128.             console.error('No user', receivedUsername);
  129.             return;
  130.         }
  131.  
  132.         var correctPassword = user.password;
  133.  
  134.         if(receivedPassword === correctPassword) {
  135.             req.session.username = user.username;
  136.             req.session.rights = user.rights;
  137.  
  138.             res.send({
  139.                 message: 'Valid'
  140.             });
  141.         } else {
  142.             res.send({
  143.                 message: 'Invalid',
  144.                 correctPassword: correctPassword
  145.             });
  146.         }
  147.     });
  148. });
  149.  
  150. server.post('/logout', function(req, res) {
  151.     req.session.username = undefined;
  152.     req.session.rights = undefined;
  153.  
  154.     sendOK(res);
  155. });
  156.  
  157. server.post('/newUser', function (req, res) {
  158.     if (req.session.rights === 'Administrator') {
  159.         var receivedUsername = req.body.username;
  160.  
  161.         User.find({
  162.             username: receivedUsername
  163.         }, function (err, users) {
  164.             if(users.length !== 0) {
  165.                 res.send({
  166.                     message: 'Error: User exists!'
  167.                 });
  168.             } else {
  169.                 new User(req.body).save(function (err) {
  170.                     if(printError(err)) return;
  171.                 });
  172.  
  173.                 res.send({
  174.                     message: 'OK'
  175.                 });
  176.             }
  177.         });
  178.     } else {
  179.         res.send({
  180.             message: 'Error: Permission denied'
  181.         });
  182.     }
  183. });
  184.  
  185. server.post('/removeUser', function (req, res) {
  186.     var receivedUsername = req.body.username;
  187.  
  188.     User
  189.         .find({username: receivedUsername})
  190.         .remove(function (err) {
  191.             if(printError(err)) {
  192.                 sendError(res);
  193.             }
  194.         });
  195.  
  196.     sendOK(res);
  197. });
  198.  
  199. server.post('/editUser', function (req, res) {
  200.     var oldUsername = req.body.oldUsername;
  201.     var newUser = req.body.user;
  202.  
  203.     User.update({username: oldUsername}, {
  204.         username: newUser.username,
  205.         password: newUser.password,
  206.         rights: newUser.rights
  207.     }, function(err, numberAffected, rawResponse) {
  208.         if(printError(err)) {
  209.             sendError(res);
  210.         }
  211.     });
  212.  
  213.     sendOK(res);
  214. });
  215.  
  216. function sendOK(res) {
  217.     res.send({
  218.         message: 'OK'
  219.     });
  220. }
  221.  
  222. function sendError(res) {
  223.     res.send({
  224.         message: 'Error'
  225.     });
  226. }
  227.  
  228. function printError(err) {
  229.     if(err) {
  230.         console.error('ERROR!');
  231.     }
  232.  
  233.     return err;
  234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement