Advertisement
Guest User

Untitled

a guest
Jul 4th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.69 KB | None | 0 0
  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. }
  235.  
  236. User.update({username: oldUsername}, {
  237. username: newUser.username,
  238. password: newUser.password,
  239. rights: newUser.rights
  240. }, function(err, numberAffected, rawResponse) {
  241. if(printError(err)) {
  242. sendError(res);
  243. }
  244. });
  245.  
  246. sendOK(res);
  247.  
  248. User
  249. .find({username: receivedUsername})
  250. .remove(function (err) {
  251. if(printError(err)) {
  252. sendError(res);
  253. }
  254. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement