3 var _ = require('lodash');
4 var util = require('util');
5 var crypto = require('crypto');
7 var Setting = require('../../models').Setting;
9 // Get list of settings
10 exports.index = function(req, res) {
13 .then(function(settings) {
14 return res.status(200).send(settings);
16 .catch(function(err) {
17 return handleError(res, err);
21 // Get a single setting
22 exports.show = function(req, res) {
24 .findById(req.params.id)
25 .then(function(setting) {
27 return res.sendStatus(404);
30 if (setting.license) {
31 setting.license = decrypt('aes-256-ctr', util.format('%s:%s:%s',
32 setting.address, setting.netmask, setting.mac), setting.license);
33 setting.license = JSON.parse(setting.license);
36 return res.send(setting);
38 .catch(function(err) {
39 return handleError(res, err);
43 // Creates a new setting in the DB.
44 exports.create = function(req, res) {
47 .then(function(setting) {
48 return res.status(201).send(setting);
50 .catch(function(err) {
51 return handleError(res, err);
55 // Updates an existing setting in the DB.
56 exports.update = function(req, res) {
61 .findById(req.params.id)
62 .then(function(setting) {
64 return res.sendStatus(404);
66 var updated = _.merge(setting, req.body);
69 return res.status(200).send(setting);
71 .catch(function(err) {
72 return handleError(res, err);
75 .catch(function(err) {
76 return handleError(res, err);
80 // Deletes a setting from the DB.
81 exports.destroy = function(req, res) {
83 .findById(req.params.id)
84 .then(function(setting) {
86 return res.sendStatus(404);
90 return res.sendStatus(204);
92 .catch(function(err) {
93 return handleError(res, err);
96 .catch(function(err) {
97 return handleError(res, err);
101 function handleError(res, err) {
102 return res.status(500).send(err);
105 function decrypt(algorithm, password, text) {
106 var decipher = crypto.createDecipher(algorithm, password)
107 var dec = decipher.update(text, 'hex', 'utf8')
108 dec += decipher.final('utf8');