Compare View

switch
from
...
to
 
Commits (6)

Changes

Showing 3 changed files Side-by-side Diff

api-server/router-config.js
1 1 "use strict";
2 2  
  3 +const fs = require('fs');
3 4 const express = require('express');
4 5 const bodyParser = require('body-parser');
5 6 const jsonQuery = require('json-query');
6 7 const dot = require('dot-object');
  8 +const copyFile = require('fs-copy-file');
  9 +const moment = require('moment');
7 10  
8 11 const config = require('../config');
9 12 const logger = require('../logger');
... ... @@ -12,6 +15,8 @@ const matrix = require('../matrix');
12 15 const router = express.Router();
13 16 module.exports = router;
14 17  
  18 +fs.existsSync('config-backup') || fs.mkdirSync('config-backup');
  19 +
15 20 function getJsonConfig(req, res, next) {
16 21 res.json(config);
17 22 }
... ... @@ -47,7 +52,7 @@ function delConfigElement(req, res, next) {
47 52  
48 53 dot.str(key, config);
49 54 matrix.config_is_dirty = true;
50   -
  55 +
51 56 res.json({
52 57 method: '/config/del',
53 58 key: req.body.key,
... ... @@ -56,7 +61,40 @@ function delConfigElement(req, res, next) {
56 61 }
57 62  
58 63 function saveConfig(req, res, next) {
59   - res.end('NOT YET IMPLEMENTED');
  64 + copyFile('config.json', 'config-backup/config_' + moment().format('YYYYMMDD_HHmmss.SS') + '.json', function(err) {
  65 + if (err) {
  66 + res.json({
  67 + method: '/config/save',
  68 + error: err.toString()
  69 + })
  70 + return;
  71 + }
  72 +
  73 + fs.writeFile('config.json', JSON.stringify(config, null, 2), function(err) {
  74 + if (err) {
  75 + res.json({
  76 + method: '/config/save',
  77 + error: err.toString()
  78 + })
  79 + return;
  80 + }
  81 + })
  82 +
  83 + matrix.config_is_dirty = false;
  84 +
  85 + res.json({
  86 + method: '/config/save',
  87 + error: null
  88 + })
  89 + })
  90 +}
  91 +
  92 +function isDirty(req, res, next) {
  93 + res.json({
  94 + method: '/config/is-dirty',
  95 + error: null,
  96 + dirty: matrix.config_is_dirty || false
  97 + })
60 98 }
61 99  
62 100 router.get('/', getJsonConfig);
... ... @@ -69,3 +107,5 @@ router.post('/set/:key', bodyParser.json(), setConfigElement);
69 107  
70 108 router.get('/del/:key', delConfigElement);
71 109 router.get('/save', saveConfig);
  110 +
  111 +router.get('/is-dirty', isDirty);
1 1 {
2 2 "name": "komodo-sdk",
3   - "version": "1.30.0",
  3 + "version": "1.30.1",
4 4 "lockfileVersion": 1,
5 5 "requires": true,
6 6 "dependencies": {
  7 + "@cloudcmd/copy-file": {
  8 + "version": "1.1.1",
  9 + "resolved": "https://registry.npmjs.org/@cloudcmd/copy-file/-/copy-file-1.1.1.tgz",
  10 + "integrity": "sha512-t6pTJdsV0qhh9YX22/Npsv95GqVABc5GRInSK7JSSNIpPLq9TM+K7odYzcOuQRPZAD9OHxZfbYsB4WJOalzqng==",
  11 + "requires": {
  12 + "es6-promisify": "6.0.0",
  13 + "pipe-io": "3.0.3",
  14 + "wraptile": "2.0.0",
  15 + "zames": "2.0.0"
  16 + }
  17 + },
7 18 "a-sync-waterfall": {
8 19 "version": "1.0.0",
9 20 "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.0.tgz",
... ... @@ -331,6 +342,11 @@
331 342 "boom": "2.10.1"
332 343 }
333 344 },
  345 + "currify": {
  346 + "version": "2.0.6",
  347 + "resolved": "https://registry.npmjs.org/currify/-/currify-2.0.6.tgz",
  348 + "integrity": "sha512-F0lbcoBkA2FMcejFeHJkDEhQ1AvVkTpkn9PMzJch+7mHy5WdteZ9t+nhT6cOdga4uRay3rjvprgp8tUkixFy8w=="
  349 + },
334 350 "cycle": {
335 351 "version": "1.0.3",
336 352 "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
... ... @@ -412,6 +428,11 @@
412 428 "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
413 429 "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
414 430 },
  431 + "es6-promisify": {
  432 + "version": "6.0.0",
  433 + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.0.0.tgz",
  434 + "integrity": "sha512-8Tbqjrb8lC85dd81haajYwuRmiU2rkqNAFnlvQOJeeKqdUloIlI+JcUqeJruV4rCm5Y7oNU7jfs2FbmxhRR/2g=="
  435 + },
415 436 "escape-html": {
416 437 "version": "1.0.3",
417 438 "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
... ... @@ -636,6 +657,14 @@
636 657 "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
637 658 "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
638 659 },
  660 + "fs-copy-file": {
  661 + "version": "2.1.2",
  662 + "resolved": "https://registry.npmjs.org/fs-copy-file/-/fs-copy-file-2.1.2.tgz",
  663 + "integrity": "sha512-h5h3i58/mr86CSJvDLGV0ZEIUj4QfdfKt0NFX6AH4sRTRjs2/d5U1EQt5C9fUV6ZSi7MeSfZRW3LX9HttLXHeg==",
  664 + "requires": {
  665 + "@cloudcmd/copy-file": "1.1.1"
  666 + }
  667 + },
639 668 "fs.realpath": {
640 669 "version": "1.0.0",
641 670 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
... ... @@ -1631,6 +1660,11 @@
1631 1660 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
1632 1661 "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU="
1633 1662 },
  1663 + "pipe-io": {
  1664 + "version": "3.0.3",
  1665 + "resolved": "https://registry.npmjs.org/pipe-io/-/pipe-io-3.0.3.tgz",
  1666 + "integrity": "sha512-7s7HlpMq6WAvd+Xbc2C6NQKEIkDbaSUm0CYtNsjidfyOpbTJmFcvzon47VkMJ6nszEj/X4t4lQs5bqeXgrzMgg=="
  1667 + },
1634 1668 "preserve": {
1635 1669 "version": "0.2.0",
1636 1670 "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
... ... @@ -2133,6 +2167,11 @@
2133 2167 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2134 2168 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
2135 2169 },
  2170 + "wraptile": {
  2171 + "version": "2.0.0",
  2172 + "resolved": "https://registry.npmjs.org/wraptile/-/wraptile-2.0.0.tgz",
  2173 + "integrity": "sha512-Jzt4wTT0DJGucp4VewhbT6YutpOfBh6Ab4r5hKWTvFYsNTCxPi0U8wOsesDk1CQ+VcHyaP36BzCiKRJTROJiTQ=="
  2174 + },
2136 2175 "y18n": {
2137 2176 "version": "3.2.1",
2138 2177 "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
... ... @@ -2156,6 +2195,15 @@
2156 2195 "window-size": "0.1.4",
2157 2196 "y18n": "3.2.1"
2158 2197 }
  2198 + },
  2199 + "zames": {
  2200 + "version": "2.0.0",
  2201 + "resolved": "https://registry.npmjs.org/zames/-/zames-2.0.0.tgz",
  2202 + "integrity": "sha512-o9xURXaNLqnkZwk9f9uxraL/k1vXdcYDtJtmesJi0lcpyzkJKhBVyg3ohLfdXEDeHWj/7DfZ6/axINQyaKZGOQ==",
  2203 + "requires": {
  2204 + "currify": "2.0.6",
  2205 + "es6-promisify": "6.0.0"
  2206 + }
2159 2207 }
2160 2208 }
2161 2209 }
1 1 {
2 2 "name": "komodo-sdk",
3   - "version": "1.30.0",
  3 + "version": "1.30.1",
4 4 "description": "SDK for Komodo",
5 5 "main": "index.js",
6 6 "scripts": {
... ... @@ -25,6 +25,7 @@
25 25 "dot-object": "^1.7.0",
26 26 "express": "^4.16.3",
27 27 "express-session": "^1.15.6",
  28 + "fs-copy-file": "^2.1.2",
28 29 "json-query": "^2.2.2",
29 30 "lru-cache": "^4.1.1",
30 31 "macaddress": "^0.2.8",