From 3d2ddb47273362158c21f17aef8b01bc52d2882c Mon Sep 17 00:00:00 2001 From: Ibukun Dairo Date: Tue, 27 Aug 2019 17:02:50 +0100 Subject: [PATCH 01/10] Add 'Server Monitor' option --- accounts/package-lock.json | 41 ++++++++++++++----- backend/package-lock.json | 15 ++++--- .../src/components/monitor/NewMonitor.js | 1 + 3 files changed, 41 insertions(+), 16 deletions(-) diff --git a/accounts/package-lock.json b/accounts/package-lock.json index f84dcc6a16..a2647b220a 100644 --- a/accounts/package-lock.json +++ b/accounts/package-lock.json @@ -6116,7 +6116,8 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "bundled": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -6134,11 +6135,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true + "bundled": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6151,15 +6154,18 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "concat-map": { "version": "0.0.1", - "bundled": true + "bundled": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -6262,7 +6268,8 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "bundled": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -6272,6 +6279,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -6284,17 +6292,20 @@ "minimatch": { "version": "3.0.4", "bundled": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true + "bundled": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -6311,6 +6322,7 @@ "mkdirp": { "version": "0.5.1", "bundled": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -6383,7 +6395,8 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "bundled": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -6393,6 +6406,7 @@ "once": { "version": "1.4.0", "bundled": true, + "optional": true, "requires": { "wrappy": "1" } @@ -6468,7 +6482,8 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true + "bundled": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -6498,6 +6513,7 @@ "string-width": { "version": "1.0.2", "bundled": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -6515,6 +6531,7 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -6553,11 +6570,13 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true + "bundled": true, + "optional": true }, "yallist": { "version": "3.0.3", - "bundled": true + "bundled": true, + "optional": true } } }, diff --git a/backend/package-lock.json b/backend/package-lock.json index 91cf4713d6..828e60aeec 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -4438,9 +4438,9 @@ "dev": true }, "lolex": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.2.0.tgz", - "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", + "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", "dev": true }, "path-to-regexp": { @@ -4784,6 +4784,7 @@ "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -4802,6 +4803,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -4895,6 +4897,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -4980,7 +4983,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -5086,7 +5090,8 @@ "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/dashboard/src/components/monitor/NewMonitor.js b/dashboard/src/components/monitor/NewMonitor.js index 19671a1330..ceaa22af9f 100755 --- a/dashboard/src/components/monitor/NewMonitor.js +++ b/dashboard/src/components/monitor/NewMonitor.js @@ -292,6 +292,7 @@ class NewMonitor extends Component { + From 0f18974ea32ad5d7fcfcdffe17116df20deef2df Mon Sep 17 00:00:00 2001 From: Ibukun Dairo Date: Tue, 27 Aug 2019 22:09:02 +0100 Subject: [PATCH 02/10] Add 'systeminformation' package and reopen add 'Server Monitor' option --- server-monitor/package-lock.json | 5 +++++ server-monitor/package.json | 3 ++- server-monitor/src/api.js | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/server-monitor/package-lock.json b/server-monitor/package-lock.json index c9fda06958..72a2ff70af 100755 --- a/server-monitor/package-lock.json +++ b/server-monitor/package-lock.json @@ -847,6 +847,11 @@ "has-flag": "^3.0.0" } }, + "systeminformation": { + "version": "4.14.8", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.14.8.tgz", + "integrity": "sha512-05wW1YaMBI6LlVtvw2wXQGr0thpX8E0IImYcpbqUiNanfmq8e+V89pDW2L5V/mN8kU37W0VtVySftQ0PwMIXKw==" + }, "table": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/table/-/table-5.1.1.tgz", diff --git a/server-monitor/package.json b/server-monitor/package.json index 0d7bd6d9cb..ae2e78219e 100755 --- a/server-monitor/package.json +++ b/server-monitor/package.json @@ -19,7 +19,8 @@ "inquirer": "^6.2.1", "node-cron": "^2.0.3", "os-utils": "0.0.14", - "q": "^1.5.1" + "q": "^1.5.1", + "systeminformation": "^4.14.8" }, "keywords": [ "fyipe", diff --git a/server-monitor/src/api.js b/server-monitor/src/api.js index 2a208ee05f..e54a883fd6 100755 --- a/server-monitor/src/api.js +++ b/server-monitor/src/api.js @@ -1,4 +1,5 @@ const axios = require('axios'); +const si = require('systeminformation'); const { apiUrl } = require('./config'); const postApi = (url, data) => { From 9536f72b207b0715c38db1aec42d092887dd960c Mon Sep 17 00:00:00 2001 From: Ibukun Dairo Date: Wed, 28 Aug 2019 10:17:35 +0100 Subject: [PATCH 03/10] Fixed some compiler warnings on 'dashboard' --- dashboard/src/components/Dashboard.js | 5 +++-- .../src/components/basic/RenderIfUserInSubProject.js | 4 ++-- dashboard/src/components/basic/RenderOptions.js | 6 +++--- dashboard/src/components/basic/TeamSelector.js | 8 ++++---- dashboard/src/components/modals/AddMonitorCategory.js | 1 + dashboard/src/components/monitor/ResponseParent.js | 1 + dashboard/src/components/project/DeleteProjectModal.js | 4 ++-- dashboard/src/components/schedule/ScheduleForm.js | 1 + dashboard/src/components/statusPage/StatusPageForm.js | 1 + dashboard/src/components/subscriber/subscriberList.js | 2 +- dashboard/src/pages/MonitorView.js | 2 +- dashboard/src/reducers/monitor.js | 2 +- dashboard/src/reducers/subscriber.js | 2 +- server-monitor/src/config.js | 2 +- 14 files changed, 23 insertions(+), 18 deletions(-) diff --git a/dashboard/src/components/Dashboard.js b/dashboard/src/components/Dashboard.js index eb16ce2f32..86708573df 100755 --- a/dashboard/src/components/Dashboard.js +++ b/dashboard/src/components/Dashboard.js @@ -18,6 +18,7 @@ import NotificationMenu from './notification/NotificationMenu'; import { closeNotificationMenu } from '../actions/notification'; export class DashboardApp extends Component { + // eslint-disable-next-line constructor(props){ super(props); } @@ -103,7 +104,7 @@ export class DashboardApp extends Component {
- + @@ -124,7 +125,7 @@ export class DashboardApp extends Component {
- + diff --git a/dashboard/src/components/basic/RenderIfUserInSubProject.js b/dashboard/src/components/basic/RenderIfUserInSubProject.js index 2218e2fb72..3fb21ab94d 100755 --- a/dashboard/src/components/basic/RenderIfUserInSubProject.js +++ b/dashboard/src/components/basic/RenderIfUserInSubProject.js @@ -11,13 +11,13 @@ export function RenderIfUserInSubProject(props) { var renderItems = null; if ( currentProject && - currentProject.users.filter(user => user.userId === userId && user.role != 'Viewer').length > 0) + currentProject.users.filter(user => user.userId === userId && user.role !== 'Viewer').length > 0) { renderItems = children }else{ if(subProjects){ subProjects.forEach((subProject)=>{ - if (subProject._id === subProjectId && subProject.users.filter(user => user.userId === userId && user.role != 'Viewer').length > 0){ + if (subProject._id === subProjectId && subProject.users.filter(user => user.userId === userId && user.role !== 'Viewer').length > 0){ renderItems = children } }); diff --git a/dashboard/src/components/basic/RenderOptions.js b/dashboard/src/components/basic/RenderOptions.js index 09273c75cc..fd25e053ae 100755 --- a/dashboard/src/components/basic/RenderOptions.js +++ b/dashboard/src/components/basic/RenderOptions.js @@ -172,7 +172,7 @@ export class RenderOption extends Component { onClick={() => addField()} style={{ borderRadius: '50%', padding: '0px 6px' }} > - +
@@ -187,7 +187,7 @@ export class RenderOption extends Component { onClick={() => removeField(removeArrayField)} style={{ borderRadius: '50%', padding: '0px 6px' }} > - + @@ -202,7 +202,7 @@ export class RenderOption extends Component { onClick={() => addArrayField(fieldnameprop)} style={{ borderRadius: '50%', padding: '0px 6px' }} > - + diff --git a/dashboard/src/components/basic/TeamSelector.js b/dashboard/src/components/basic/TeamSelector.js index d2ec7dc563..85a3de8190 100755 --- a/dashboard/src/components/basic/TeamSelector.js +++ b/dashboard/src/components/basic/TeamSelector.js @@ -14,10 +14,10 @@ const TeamSelector = ({ input, meta: { touched, error }, members }) => ( { members.map(member => { - return member.role != 'Viewer' ? ( - + return member.role !== 'Viewer' ? ( + ) : false; }) } diff --git a/dashboard/src/components/modals/AddMonitorCategory.js b/dashboard/src/components/modals/AddMonitorCategory.js index 83b3477a02..cde0cf9447 100755 --- a/dashboard/src/components/modals/AddMonitorCategory.js +++ b/dashboard/src/components/modals/AddMonitorCategory.js @@ -20,6 +20,7 @@ function validate(values) { } export class AddMonitorCategoryForm extends React.Component { + // eslint-disable-next-line constructor(props) { super(props); } diff --git a/dashboard/src/components/monitor/ResponseParent.js b/dashboard/src/components/monitor/ResponseParent.js index 02834f450f..31f7d9a213 100755 --- a/dashboard/src/components/monitor/ResponseParent.js +++ b/dashboard/src/components/monitor/ResponseParent.js @@ -10,6 +10,7 @@ import RenderOptions from '../basic/RenderOptions'; import {RenderSelect} from '../basic/RenderSelect'; export class ResponseParent extends Component { + // eslint-disable-next-line constructor(props) { super(props); } diff --git a/dashboard/src/components/project/DeleteProjectModal.js b/dashboard/src/components/project/DeleteProjectModal.js index bb34d202ab..d927d44d18 100755 --- a/dashboard/src/components/project/DeleteProjectModal.js +++ b/dashboard/src/components/project/DeleteProjectModal.js @@ -94,11 +94,11 @@ const mapStateToProps = (state, props) => { const { projects } = state.project.projects; - const project = projects != undefined && projects.length > 0 ? projects.filter( + const project = projects !== undefined && projects.length > 0 ? projects.filter( project => project._id === projectId )[0] : []; - const nextProject = projects != undefined && projects.length > 0 ? projects.filter( + const nextProject = projects !== undefined && projects.length > 0 ? projects.filter( project => project._id !== projectId )[0] : {}; diff --git a/dashboard/src/components/schedule/ScheduleForm.js b/dashboard/src/components/schedule/ScheduleForm.js index 4f217999af..3e86e49a11 100755 --- a/dashboard/src/components/schedule/ScheduleForm.js +++ b/dashboard/src/components/schedule/ScheduleForm.js @@ -20,6 +20,7 @@ function validate(values) { } export class ScheduleForm extends React.Component{ + // eslint-disable-next-line constructor(props){ super(props); } diff --git a/dashboard/src/components/statusPage/StatusPageForm.js b/dashboard/src/components/statusPage/StatusPageForm.js index a99457d668..d7eae997d0 100755 --- a/dashboard/src/components/statusPage/StatusPageForm.js +++ b/dashboard/src/components/statusPage/StatusPageForm.js @@ -20,6 +20,7 @@ function validate(values) { } export class StatusPageForm extends React.Component{ + // eslint-disable-next-line constructor(props){ super(props); } diff --git a/dashboard/src/components/subscriber/subscriberList.js b/dashboard/src/components/subscriber/subscriberList.js index a4aa6ea285..c060384388 100755 --- a/dashboard/src/components/subscriber/subscriberList.js +++ b/dashboard/src/components/subscriber/subscriberList.js @@ -84,7 +84,7 @@ export class SubscriberList extends Component {
-
{ subscriber.statusPageId != undefined && subscriber.statusPageId != null && subscriber.statusPageId.title || 'Dashboard' }
+
{ subscriber.statusPageId !== undefined && subscriber.statusPageId !== null && subscriber.statusPageId.title || 'Dashboard' }
diff --git a/dashboard/src/pages/MonitorView.js b/dashboard/src/pages/MonitorView.js index ee05210bcf..4bd841d6ce 100755 --- a/dashboard/src/pages/MonitorView.js +++ b/dashboard/src/pages/MonitorView.js @@ -15,7 +15,7 @@ import RenderIfSubProjectAdmin from '../components/basic/RenderIfSubProjectAdmin import { mapCriteria } from '../config'; class MonitorView extends React.Component { - + // eslint-disable-next-line constructor(props) { super(props); } diff --git a/dashboard/src/reducers/monitor.js b/dashboard/src/reducers/monitor.js index ca9b529576..7f29806482 100755 --- a/dashboard/src/reducers/monitor.js +++ b/dashboard/src/reducers/monitor.js @@ -350,7 +350,7 @@ export default function monitor(state = INITIAL_STATE, action) { success: true, monitors: state.monitorsList.monitors.map(monitor => { if (monitor._id === action.payload.monitorId) { - monitor.subscribers.subscribers = monitor.subscribers.subscribers.filter(subscriber => subscriber._id != action.payload._id) + monitor.subscribers.subscribers = monitor.subscribers.subscribers.filter(subscriber => subscriber._id !== action.payload._id) monitor.subscribers.count = monitor.subscribers.count - 1 return monitor; } else { diff --git a/dashboard/src/reducers/subscriber.js b/dashboard/src/reducers/subscriber.js index 426a30d485..6b2329e503 100755 --- a/dashboard/src/reducers/subscriber.js +++ b/dashboard/src/reducers/subscriber.js @@ -114,7 +114,7 @@ export default function subscriber(state = initialState, action) { }, subscribers: { ...state.subscribers, - subscribers: state.subscribers.subscribers.filter(subscriber=>subscriber != action.payload._id) + subscribers: state.subscribers.subscribers.filter(subscriber=>subscriber !== action.payload._id) } }); diff --git a/server-monitor/src/config.js b/server-monitor/src/config.js index 61a4d2de46..a3bc7831bc 100755 --- a/server-monitor/src/config.js +++ b/server-monitor/src/config.js @@ -2,6 +2,6 @@ // connect to a route at the backend to validate api and projectId // update serverStat model based on the projectId -const apiUrl = 'http://localhost:3001'; +const apiUrl = 'http://localhost:3002'; module.exports = { apiUrl }; From 4acc2cdf622f11e225e9d25ea0b3d314b539e9fb Mon Sep 17 00:00:00 2001 From: Ibukun Dairo Date: Wed, 28 Aug 2019 15:18:20 +0100 Subject: [PATCH 04/10] Added 'monitor' module to server-monitor --- server-monitor/.eslintrc | 6 +++++- server-monitor/index.js | 22 ++++++++++---------- server-monitor/src/api.js | 39 ++++++++++++++++++----------------- server-monitor/src/logic.js | 37 ++++++++++++++++++++++++--------- server-monitor/src/monitor.js | 21 +++++++++++++++++++ 5 files changed, 84 insertions(+), 41 deletions(-) create mode 100644 server-monitor/src/monitor.js diff --git a/server-monitor/.eslintrc b/server-monitor/.eslintrc index 109fd78a91..7345074eb7 100755 --- a/server-monitor/.eslintrc +++ b/server-monitor/.eslintrc @@ -1,4 +1,8 @@ { + "env": { + "node": true, + "commonjs": true + }, "extends": "eslint:recommended", "parserOptions": { "sourceType": "module", @@ -11,7 +15,7 @@ ], "linebreak-style": [ "error", - "windows" + "unix" ], "quotes": [ "error", diff --git a/server-monitor/index.js b/server-monitor/index.js index 8235d69f4d..94f9735914 100755 --- a/server-monitor/index.js +++ b/server-monitor/index.js @@ -2,9 +2,8 @@ const program = require('commander'); const { prompt } = require('inquirer'); -const { - authenticateUser -} = require('./src/logic'); +// eslint-disable-next-line no-unused-vars +const { authenticateUser, pingServer } = require('./src/logic'); // Questions to get projectId and API key const questions = [ @@ -20,20 +19,21 @@ const questions = [ } ]; -program - .version('0.0.1') - .description('Fyipe Monitoring Shell'); +program.version('0.0.1').description('Fyipe Monitoring Shell'); program .command('start') .alias('s') - .description('Authenticates a user by accepting and confirming projectId and apiKey.' + - 'Begin server monitoring') + .description( + 'Authenticates a user by accepting and confirming projectId and apiKey.' + + 'Begin server monitoring' + ) .action(() => { prompt(questions).then(input => { const { projectId, apiKey } = input; - authenticateUser(projectId, apiKey) - }) - }) + authenticateUser(projectId, apiKey); + // pingServer.start(); + }); + }); program.parse(process.argv); diff --git a/server-monitor/src/api.js b/server-monitor/src/api.js index e54a883fd6..c6ecac656d 100755 --- a/server-monitor/src/api.js +++ b/server-monitor/src/api.js @@ -1,37 +1,38 @@ const axios = require('axios'); -const si = require('systeminformation'); const { apiUrl } = require('./config'); const postApi = (url, data) => { - axios({ method: 'POST', url: `${apiUrl}/${url}`, data: data }) - .then(function (res) { - return res - }) - .catch(function (error) { - console.error(error) - }); -} + .then(function (res) { + return res; + }) + .catch(function (error) { + // eslint-disable-next-line no-console + console.log(error); + }); +}; // Testing the getAPI -const getApi = (url) => { +const getApi = url => { axios({ method: 'GET', url: `${apiUrl}/${url}` }) - .then(function (res) { - if (res.data === 'Server Error.') console.log('success') - }) - .catch(function (error) { - console.error(error) - }); -} + .then(function (res) { + // eslint-disable-next-line no-console + if (res.data === 'Server Error.') console.log('success'); + }) + .catch(function (error) { + // eslint-disable-next-line no-console + console.error(error); + }); +}; -module.exports = { +module.exports = { postApi, getApi -} +}; diff --git a/server-monitor/src/logic.js b/server-monitor/src/logic.js index d34b80878e..2fc71c8650 100755 --- a/server-monitor/src/logic.js +++ b/server-monitor/src/logic.js @@ -1,19 +1,36 @@ -const os = require('os-utils') +const os = require('os-utils'); const cron = require('cron'); +// eslint-disable-next-line no-unused-vars const { postApi, getApi } = require('./api'); +const { getServerStats } = require('./monitor'); const authenticateUser = (projectId, apiKey) => { - postApi(`serverMonitor/${projectId}/${apiKey}`) -} + postApi(`serverMonitor/${projectId}/${apiKey}`); +}; -let pingServer = new cron.CronJob('* * * * *', function() { - const serverStat = { - cpuCount: os.cpuCount() - }; - postApi(`serverPackage/uploadServerData/${projectId}`, serverStat); - }, null, false); +let pingServer = new cron.CronJob( + '* * * * *', + function () { + getServerStats() + .then(data => { + // eslint-disable-next-line no-console + console.log(data); + + // eslint-disable-next-line no-unused-vars + const serverStat = { + cpuCount: os.cpuCount() + }; + + // postApi(`serverPackage/uploadServerData/${projectId}`, serverStat); + }) + // eslint-disable-next-line no-console + .catch(error => console.log(error)); + }, + null, + false +); module.exports = { pingServer, authenticateUser -} +}; diff --git a/server-monitor/src/monitor.js b/server-monitor/src/monitor.js new file mode 100644 index 0000000000..f622c851a5 --- /dev/null +++ b/server-monitor/src/monitor.js @@ -0,0 +1,21 @@ +// monitor system params +// Promise.all([ +// si.currentLoad(), +// si.mem(), +// si.blockDevices(), +// si.networkStats(), +// si.cpuTemperature(), +// si.cpu(), +// si.users(), +// si.networkConnections(), +// si.vboxInfo() +// ]).then(data => data); +// do something with data and pass it on + +const si = require('systeminformation'); + +const getServerStats = () => { + return si.getAllData(); +}; + +module.exports = { getServerStats }; From 39d10e38f68e1065c9247ccc9431ac92723c90db Mon Sep 17 00:00:00 2001 From: Ibukun Dairo Date: Mon, 2 Sep 2019 14:45:02 +0100 Subject: [PATCH 05/10] Added server monitor initialization --- server-monitor/index.js | 97 ++++++++++++++++++++++------ server-monitor/package.json | 1 + server-monitor/src/api.js | 31 +++------ server-monitor/src/logic.js | 36 ----------- server-monitor/src/monitor.js | 21 ------ server-monitor/src/server-monitor.js | 29 +++++++++ 6 files changed, 118 insertions(+), 97 deletions(-) delete mode 100755 server-monitor/src/logic.js delete mode 100644 server-monitor/src/monitor.js create mode 100755 server-monitor/src/server-monitor.js diff --git a/server-monitor/index.js b/server-monitor/index.js index 94f9735914..9b0f9f9fae 100755 --- a/server-monitor/index.js +++ b/server-monitor/index.js @@ -2,38 +2,97 @@ const program = require('commander'); const { prompt } = require('inquirer'); -// eslint-disable-next-line no-unused-vars -const { authenticateUser, pingServer } = require('./src/logic'); +const { authenticateUser, pingServer } = require('./src/server-monitor'); + +program + .version('0.0.1', '-v, --version') + .description('Fyipe Monitoring Shell'); + +program + .option('-p, --project-id [projectId]', 'Use Project ID from dashboard') + .option('-a, --api-key [apiKey]', 'Use API key from dashboard') + .option('-m, --monitor-id [monitorId]', 'Use monitor ID dashboard') + .parse(process.argv); // Questions to get projectId and API key const questions = [ { type: 'input', name: 'projectId', - message: 'What is your project Id?' + message: 'What is your Project ID?' }, { type: 'input', name: 'apiKey', - message: 'What is your project\'s API key?' + message: 'What is your Project\'s API key?' + }, + { + type: 'list', + name: 'monitorId', + message: 'What is your Monitor ID?' } ]; -program.version('0.0.1').description('Fyipe Monitoring Shell'); +checkParams(questions) + .then(values => { + const [projectId, apiKey, monitorId] = values; -program - .command('start') - .alias('s') - .description( - 'Authenticates a user by accepting and confirming projectId and apiKey.' + - 'Begin server monitoring' - ) - .action(() => { - prompt(questions).then(input => { - const { projectId, apiKey } = input; - authenticateUser(projectId, apiKey); - // pingServer.start(); - }); + authenticateUser(projectId, apiKey, monitorId) + .then(data => { + if (monitorId === null) { + if (data !== null && data.data !== null && data.data.length > 0) { + const question = questions.filter(param => param.name === 'monitorId'); + question[0].choices = data.data.map(monitor => `${monitor._id} (${monitor.name})`); + + prompt(question).then(({ monitorId }) => { + const _id = monitorId.split(' (').shift(); + const filteredData = data.data.filter(monitor => monitor._id === _id); + + pingServer(filteredData.pop()).start(); + }); + } else { + // eslint-disable-next-line no-console + console.log('You do not have any Server Monitor.'); + } + } else { + pingServer(data).start(); + } + }) + // eslint-disable-next-line no-console + .catch(error => { console.error(error) }); }); -program.parse(process.argv); +function checkParams(params) { + const values = []; + + // eslint-disable-next-line no-undef + return new Promise(resolve => { + resolve(params.reduce((promiseChain, param) => ( + promiseChain.then(() => ( + getParamValue(params, param.name).then(value => { + values.push(value); + + return values; + }) + )) + // eslint-disable-next-line no-undef + ), Promise.resolve())); + }); +} + +function getParamValue(params, name) { + // eslint-disable-next-line no-undef + return new Promise(resolve => { + if (program[name] === true || program[name] === undefined) { + if (name === 'monitorId') { + resolve(null); + } else { + prompt(params.filter(param => param.name === name)).then(values => { + resolve(values[name]); + }); + } + } else { + resolve(program[name]); + } + }); +} \ No newline at end of file diff --git a/server-monitor/package.json b/server-monitor/package.json index ae2e78219e..557b168147 100755 --- a/server-monitor/package.json +++ b/server-monitor/package.json @@ -7,6 +7,7 @@ "fyipe": "index.js" }, "scripts": { + "start": "node index -p 5d64d59cae46131619708309 -a 'b02798c0-c898-11e9-9f14-4963dc67e2ab'", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "@twumm", diff --git a/server-monitor/src/api.js b/server-monitor/src/api.js index c6ecac656d..de06908bb2 100755 --- a/server-monitor/src/api.js +++ b/server-monitor/src/api.js @@ -1,35 +1,24 @@ const axios = require('axios'); const { apiUrl } = require('./config'); -const postApi = (url, data) => { - axios({ +const postApi = (url, data, apiKey) => { + return axios({ method: 'POST', url: `${apiUrl}/${url}`, - data: data + headers: { apiKey }, + data }) - .then(function (res) { - return res; - }) - .catch(function (error) { - // eslint-disable-next-line no-console - console.log(error); - }); + .then(({ status, data }) => status === 200 ? data : null); }; // Testing the getAPI -const getApi = url => { - axios({ +const getApi = (url, apiKey) => { + return axios({ method: 'GET', - url: `${apiUrl}/${url}` + url: `${apiUrl}/${url}`, + headers: { apiKey } }) - .then(function (res) { - // eslint-disable-next-line no-console - if (res.data === 'Server Error.') console.log('success'); - }) - .catch(function (error) { - // eslint-disable-next-line no-console - console.error(error); - }); + .then(({ status, data }) => status === 200 ? data : null); }; module.exports = { diff --git a/server-monitor/src/logic.js b/server-monitor/src/logic.js deleted file mode 100755 index 2fc71c8650..0000000000 --- a/server-monitor/src/logic.js +++ /dev/null @@ -1,36 +0,0 @@ -const os = require('os-utils'); -const cron = require('cron'); -// eslint-disable-next-line no-unused-vars -const { postApi, getApi } = require('./api'); -const { getServerStats } = require('./monitor'); - -const authenticateUser = (projectId, apiKey) => { - postApi(`serverMonitor/${projectId}/${apiKey}`); -}; - -let pingServer = new cron.CronJob( - '* * * * *', - function () { - getServerStats() - .then(data => { - // eslint-disable-next-line no-console - console.log(data); - - // eslint-disable-next-line no-unused-vars - const serverStat = { - cpuCount: os.cpuCount() - }; - - // postApi(`serverPackage/uploadServerData/${projectId}`, serverStat); - }) - // eslint-disable-next-line no-console - .catch(error => console.log(error)); - }, - null, - false -); - -module.exports = { - pingServer, - authenticateUser -}; diff --git a/server-monitor/src/monitor.js b/server-monitor/src/monitor.js deleted file mode 100644 index f622c851a5..0000000000 --- a/server-monitor/src/monitor.js +++ /dev/null @@ -1,21 +0,0 @@ -// monitor system params -// Promise.all([ -// si.currentLoad(), -// si.mem(), -// si.blockDevices(), -// si.networkStats(), -// si.cpuTemperature(), -// si.cpu(), -// si.users(), -// si.networkConnections(), -// si.vboxInfo() -// ]).then(data => data); -// do something with data and pass it on - -const si = require('systeminformation'); - -const getServerStats = () => { - return si.getAllData(); -}; - -module.exports = { getServerStats }; diff --git a/server-monitor/src/server-monitor.js b/server-monitor/src/server-monitor.js new file mode 100755 index 0000000000..626bc1d9d8 --- /dev/null +++ b/server-monitor/src/server-monitor.js @@ -0,0 +1,29 @@ +const si = require('systeminformation'); +const cron = require('cron'); +const { getApi } = require('./api'); + +const authenticateUser = (projectId, apiKey, monitorId) => { + const url = monitorId !== null ? `monitor/${projectId}/monitor/${monitorId}` : `monitor/${projectId}/monitor`; + return getApi(url, apiKey); +}; + +const pingServer = (server) => { + // eslint-disable-next-line no-console + console.log('Starting Server Monitor...'); + + return new cron.CronJob('* * * * *', () => { + si.getAllData() + .then(data => { + // eslint-disable-next-line no-console + console.log(server, data); + // send data to endpoint + }) + // eslint-disable-next-line no-console + .catch(error => { console.error(error) }); + }, null, false); +}; + +module.exports = { + authenticateUser, + pingServer +}; From 76542d05d140a7a1b135550959232e9f8eaf66cf Mon Sep 17 00:00:00 2001 From: Ibukun Dairo Date: Thu, 5 Sep 2019 12:20:17 +0100 Subject: [PATCH 06/10] Upload server information to remote central server --- backend/backend/api/monitor.js | 41 +++++-- backend/backend/models/monitor.js | 2 +- backend/backend/models/monitorLog.js | 1 + backend/backend/services/monitorService.js | 120 ++++++++++++--------- server-monitor/index.js | 4 +- server-monitor/src/server-monitor.js | 45 ++++++-- 6 files changed, 144 insertions(+), 69 deletions(-) diff --git a/backend/backend/api/monitor.js b/backend/backend/api/monitor.js index 3e79708a72..2cf4f442a8 100755 --- a/backend/backend/api/monitor.js +++ b/backend/backend/api/monitor.js @@ -10,7 +10,6 @@ var NotificationService = require('../services/notificationService'); var RealTimeService = require('../services/realTimeService'); var ScheduleService = require('../services/scheduleService'); - var router = express.Router(); var isUserAdmin = require('../middlewares/project').isUserAdmin; var getUser = require('../middlewares/user').getUser; @@ -41,7 +40,7 @@ router.post('/:projectId', getUser, isAuthorized, isUserAdmin, async function (r } data.createdById = req.user ? req.user.id : null; - if(data.monitorCategoryId && typeof data.monitorCategoryId !== 'string') { + if (data.monitorCategoryId && typeof data.monitorCategoryId !== 'string') { return sendErrorResponse(req, res, { code: 400, message: 'Monitor Category ID is not of string type.' @@ -129,7 +128,7 @@ router.post('/:projectId', getUser, isAuthorized, isUserAdmin, async function (r data.projectId = projectId; try { var monitor = await MonitorService.create(data); - if (data.callScheduleId){ + if (data.callScheduleId) { var schedule = await ScheduleService.findOneBy({ _id: data.callScheduleId }); var monitors = schedule.monitorIds; if (monitors.length > 0) { @@ -184,19 +183,27 @@ router.get('/:projectId', getUser, isAuthorized, getSubProjects, async function router.get('/:projectId/monitor', getUser, isAuthorized, async function (req, res) { var projectId = req.params.projectId; - try{ - var monitors = await MonitorService.findBy({projectId}, req.query.limit || 10, req.query.skip || 0); - var count = await MonitorService.countBy({projectId}); + var type = req.query.type; + var query = type ? { projectId, type } : { projectId }; + + try { + var monitors = await MonitorService.findBy(query, req.query.limit || 10, req.query.skip || 0); + var count = await MonitorService.countBy({ projectId }); return sendListResponse(req, res, monitors, count); // frontend expects sendListResponse - }catch(error){ + } catch (error) { return sendErrorResponse(req, res, error); } }); router.get('/:projectId/monitor/:monitorId', getUser, isAuthorized, async function (req, res) { + var _id = req.params.monitorId; + var projectId = req.params.projectId; + var type = req.query.type; + var query = type ? { _id, projectId, type } : { _id, projectId }; + try { // Call the MonitorService. - var monitor = await MonitorService.findOneBy({ _id: req.params.monitorId, projectId: req.params.projectId }); + var monitor = await MonitorService.findOneBy(query); return sendItemResponse(req, res, monitor); } catch (error) { return sendErrorResponse(req, res, error); @@ -218,6 +225,24 @@ router.delete('/:projectId/:monitorId', getUser, isAuthorized, isUserAdmin, asyn } }); +// Route +// Description: Adding / Updating a new monitor log +// Params: +// Param 1: req.params-> {projectId, monitorId}; req.body -> {[_id], data} <- Check MonitorLogModel for description. +// Returns: response status, error message +router.post('/:projectId/log/:monitorId', getUser, isAuthorized, isUserAdmin, async function (req, res) { + var data = req.body.data; + // var projectId = req.params.projectId; + var monitorId = req.params.monitorId || req.body._id; + + try { + var monitorData = await MonitorService.addMonitorLog(monitorId, data); + return sendItemResponse(req, res, monitorData); + } catch (error) { + return sendErrorResponse(req, res, error); + } +}); + router.post('/:projectId/inbound/:deviceId', getUser, isAuthorized, async function (req, res) { return await _updateDeviceMonitorPingTime(req, res); }); diff --git a/backend/backend/models/monitor.js b/backend/backend/models/monitor.js index cd8f1934f7..73dfdf2893 100755 --- a/backend/backend/models/monitor.js +++ b/backend/backend/models/monitor.js @@ -8,7 +8,7 @@ var monitorSchema = new Schema({ createdById: { type: String, ref: 'User' }, //userId. type: { type: String, - enum: ['url', 'device', 'manual','api'] + enum: ['url', 'device', 'manual','api', 'server-monitor'] }, //type can be 'url', 'process', 'machine'. We can monitor URL, a process in a machine or a server itself. monitorCategoryId: { type: String, diff --git a/backend/backend/models/monitorLog.js b/backend/backend/models/monitorLog.js index fc713f9797..859e2d447e 100755 --- a/backend/backend/models/monitorLog.js +++ b/backend/backend/models/monitorLog.js @@ -7,6 +7,7 @@ var monitorLogSchema = new Schema({ responseTime: Number, // Time taken for ping responseStatus: Number, status: String, + data: Object, createdAt: { type: Date, default: Date.now, diff --git a/backend/backend/services/monitorService.js b/backend/backend/services/monitorService.js index e32be4870c..eef11d6fb9 100755 --- a/backend/backend/services/monitorService.js +++ b/backend/backend/services/monitorService.js @@ -8,22 +8,22 @@ module.exports = { var subProject = null; try { var project = await ProjectService.findOneBy({ _id: data.projectId }); - }catch (error) { + } catch (error) { ErrorService.log('ProjectService.findOneBy', error); throw error; } - if(project.parentProjectId){ + if (project.parentProjectId) { subProject = project; try { project = await ProjectService.findOneBy({ _id: subProject.parentProjectId }); - }catch (error) { + } catch (error) { ErrorService.log('ProjectService.findOneBy', error); throw error; } } var subProjectIds = []; var subProjects = await ProjectService.findBy({ parentProjectId: project._id }); - if(subProjects && subProjects.length > 0){ + if (subProjects && subProjects.length > 0) { subProjectIds = subProjects.map(project => project._id); } subProjectIds.push(project._id); @@ -77,11 +77,11 @@ module.exports = { monitor.criteria = data.criteria || {}; } if (data.type === 'api') { - if(data.method && data.method.length) monitor.method = data.method; - if(data.bodyType && data.bodyType.length) monitor.bodyType = data.bodyType; - if(data.text && data.text.length) monitor.text = data.text; - if(data.formData && data.formData.length) monitor.formData = data.formData; - if(data.headers && data.headers.length) monitor.headers = data.headers; + if (data.method && data.method.length) monitor.method = data.method; + if (data.bodyType && data.bodyType.length) monitor.bodyType = data.bodyType; + if (data.text && data.text.length) monitor.text = data.text; + if (data.formData && data.formData.length) monitor.formData = data.formData; + if (data.headers && data.headers.length) monitor.headers = data.headers; } try { var savedMonitor = await monitor.save(); @@ -115,7 +115,7 @@ module.exports = { new: true }) .populate('projectId', 'name'); - }catch(error){ + } catch (error) { ErrorService.log('MonitorModel.findOneAndUpdate', error); throw error; } @@ -158,7 +158,7 @@ module.exports = { .limit(limit) .skip(skip) .populate('projectId', 'name'); - }catch(error){ + } catch (error) { ErrorService.log('MonitorModel.find', error); throw error; } @@ -174,7 +174,7 @@ module.exports = { try { var monitor = await MonitorModel.findOne(query) .populate('projectId', 'name'); - }catch(error){ + } catch (error) { ErrorService.log('MonitorModel.findOne', error); throw error; } @@ -211,32 +211,32 @@ module.exports = { ErrorService.log('MonitorModel.findOneAndUpdate', error); throw error; } - if(monitor){ + if (monitor) { var subProject = null; try { var project = await ProjectService.findOneBy({ _id: monitor.projectId }); - }catch (error) { + } catch (error) { ErrorService.log('ProjectService.findOneBy', error); throw error; } - if(project.parentProjectId){ + if (project.parentProjectId) { subProject = project; try { project = await ProjectService.findOneBy({ _id: subProject.parentProjectId }); - }catch (error) { + } catch (error) { ErrorService.log('ProjectService.findOneBy', error); throw error; } } var subProjectIds = []; var subProjects = await ProjectService.findBy({ parentProjectId: project._id }); - if(subProjects && subProjects.length > 0){ + if (subProjects && subProjects.length > 0) { subProjectIds = subProjects.map(project => project._id); } subProjectIds.push(project._id); - try{ + try { var monitorsCount = await this.countBy({ projectId: { $in: subProjectIds } }); - }catch(error){ + } catch (error) { ErrorService.log('MonitorService.countBy', error); throw error; } @@ -244,90 +244,90 @@ module.exports = { if (typeof (projectSeats) === 'string') { projectSeats = parseInt(projectSeats); } - var projectUsers = await TeamService.getTeamMembersBy({parentProjectId: project._id}); // eslint-disable-next-line no-console + var projectUsers = await TeamService.getTeamMembersBy({ parentProjectId: project._id }); // eslint-disable-next-line no-console var seats = await TeamService.getSeats(projectUsers); // check if project seats are more based on users in project or by count of monitors if (projectSeats && projectSeats > seats && monitorsCount > 0 && monitorsCount <= ((projectSeats - 1) * 5)) { projectSeats = projectSeats - 1; - try{ + try { await PaymentService.changeSeats(project.stripeExtraUserSubscriptionId, (projectSeats)); - }catch(error){ + } catch (error) { ErrorService.log('PaymentService.changeSeats', error); throw error; } - try{ + try { await ProjectService.update({ _id: project._id, seats: projectSeats.toString() }); - }catch(error){ + } catch (error) { ErrorService.log('ProjectService.update', error); throw error; } } - try{ + try { var incidents = await IncidentService.findBy({ monitorId: monitor._id }); - }catch(error){ + } catch (error) { ErrorService.log('IncidentService.findBy', error); throw error; } - await Promise.all(incidents.map(async(incident)=>{ - await IncidentService.deleteBy({_id: incident._id}, userId); + await Promise.all(incidents.map(async (incident) => { + await IncidentService.deleteBy({ _id: incident._id }, userId); })); - try{ + try { var alerts = await AlertService.findBy({ monitorId: monitor._id }, userId); - }catch(error){ + } catch (error) { ErrorService.log('AlertService.findBy', error); throw error; } - await Promise.all(alerts.map(async(alert)=>{ - await AlertService.deleteBy({_id: alert._id}, userId); + await Promise.all(alerts.map(async (alert) => { + await AlertService.deleteBy({ _id: alert._id }, userId); })); - try{ + try { await StatusPageService.removeMonitor(monitor._id); - }catch(error){ + } catch (error) { ErrorService.log('StatusPageService.removeMonitor', error); throw error; } - try{ + try { await ScheduleService.removeMonitor(monitor._id); - }catch(error){ + } catch (error) { ErrorService.log('ScheduleService.deleteBy', error); throw error; } - try{ + try { await IntegrationService.removeMonitor(monitor._id); - }catch(error){ + } catch (error) { ErrorService.log('IntegrationService.removeMonitor', error); throw error; } - try{ + try { await NotificationService.create(monitor.projectId, `A Monitor ${monitor.name} was deleted from the project by ${monitor.deletedById.name}`, monitor.deletedById._id, 'monitoraddremove'); - }catch(error){ + } catch (error) { ErrorService.log('NotificationService.create', error); throw error; } - try{ + try { await RealTimeService.sendMonitorDelete(monitor); - }catch(error){ + } catch (error) { ErrorService.log('RealTimeService.sendMonitorDelete', error); throw error; } return monitor; - }else{ + } else { return null; } }, - async getMonitors(subProjectIds, skip, limit){ - if(typeof skip === 'string') skip = parseInt(skip); - if(typeof limit === 'string') limit = parseInt(limit); + async getMonitors(subProjectIds, skip, limit) { + if (typeof skip === 'string') skip = parseInt(skip); + if (typeof limit === 'string') limit = parseInt(limit); var _this = this; - let subProjectMonitors = await Promise.all(subProjectIds.map(async (id)=>{ + let subProjectMonitors = await Promise.all(subProjectIds.map(async (id) => { let monitors = await IncidentService.getMonitorsWithIncidentsBy({ - query: {projectId: id}, + query: { projectId: id }, skip, limit }); - let count = await _this.countBy({projectId: id}); - return {monitors, count, _id: id, skip, limit}; + let count = await _this.countBy({ projectId: id }); + return { monitors, count, _id: id, skip, limit }; })); return subProjectMonitors; }, @@ -503,6 +503,23 @@ module.exports = { return monitorsData; }, + // Description: Add Server Monitor Log Data + async addMonitorLog(monitorId, data) { + // var _this = this; + var monitorLogData = new MonitorLogModel(); + monitorLogData.monitorId = monitorId; + monitorLogData.status = 'online'; + monitorLogData.data = data; + try { + var monitorData = await monitorLogData.save(); + } catch (error) { + ErrorService.log('monitorLogData.save', error); + throw error; + } + + return monitorData; + }, + async sendResponseTime(monitorsData) { try { var monitor = await MonitorModel.findOne({ _id: monitorsData.monitorId, deleted: false }); @@ -510,7 +527,7 @@ module.exports = { ErrorService.log('MonitorModel.findOne', error); throw error; } - if(monitor){ + if (monitor) { try { await RealTimeService.updateResponseTime(monitorsData, monitor.projectId); } catch (error) { @@ -699,6 +716,7 @@ module.exports = { var MonitorModel = require('../models/monitor'); var MonitorTimeModel = require('../models/monitorTime'); +var MonitorLogModel = require('../models/monitorLog'); var MonitorCategoryService = require('../services/monitorCategoryService'); var Plans = require('./../config/plans'); var RealTimeService = require('./realTimeService'); diff --git a/server-monitor/index.js b/server-monitor/index.js index 9b0f9f9fae..23986b6fb7 100755 --- a/server-monitor/index.js +++ b/server-monitor/index.js @@ -48,14 +48,14 @@ checkParams(questions) const _id = monitorId.split(' (').shift(); const filteredData = data.data.filter(monitor => monitor._id === _id); - pingServer(filteredData.pop()).start(); + pingServer(filteredData.pop(), projectId, apiKey).start(); }); } else { // eslint-disable-next-line no-console console.log('You do not have any Server Monitor.'); } } else { - pingServer(data).start(); + pingServer(data, projectId, apiKey).start(); } }) // eslint-disable-next-line no-console diff --git a/server-monitor/src/server-monitor.js b/server-monitor/src/server-monitor.js index 626bc1d9d8..a728795a07 100755 --- a/server-monitor/src/server-monitor.js +++ b/server-monitor/src/server-monitor.js @@ -1,22 +1,53 @@ const si = require('systeminformation'); const cron = require('cron'); -const { getApi } = require('./api'); +const { getApi, postApi } = require('./api'); const authenticateUser = (projectId, apiKey, monitorId) => { - const url = monitorId !== null ? `monitor/${projectId}/monitor/${monitorId}` : `monitor/${projectId}/monitor`; + const url = monitorId !== null + ? `monitor/${projectId}/monitor/${monitorId}/?type=server-monitor` + : `monitor/${projectId}/monitor/?type=server-monitor`; + return getApi(url, apiKey); }; -const pingServer = (server) => { +const pingServer = (data, projectId, apiKey) => { // eslint-disable-next-line no-console console.log('Starting Server Monitor...'); + const monitorId = data._id; + return new cron.CronJob('* * * * *', () => { - si.getAllData() + // eslint-disable-next-line no-undef + Promise.all([ + si.currentLoad(), + si.mem(), + si.blockDevices(), + si.networkStats(), + si.cpuTemperature(), + si.cpu(), + si.users(), + si.networkConnections(), + si.vboxInfo() + ]) + .then(data => ({ + load: data[0], + memory: data[1], + disk: data[2], + traffic: data[3], + temperature: data[4], + resources: data[5], + users: data[6], + network: data[7], + vbox: data[8] + })) .then(data => { - // eslint-disable-next-line no-console - console.log(server, data); - // send data to endpoint + postApi(`monitor/${projectId}/log/${monitorId}`, { data }, apiKey) + .then(data => { + // eslint-disable-next-line no-console + console.log(data); + }) + // eslint-disable-next-line no-console + .catch(error => { console.error(error) }); }) // eslint-disable-next-line no-console .catch(error => { console.error(error) }); From e840a90c34aac44e15c85eaa0bdd3b9ec8ea0519 Mon Sep 17 00:00:00 2001 From: Rajat Soni Date: Mon, 9 Sep 2019 18:59:32 +0530 Subject: [PATCH 07/10] fix typo in accounts deployment --- kubernetes/staging-server.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/staging-server.yaml b/kubernetes/staging-server.yaml index e7d1e530b3..92639ef64b 100644 --- a/kubernetes/staging-server.yaml +++ b/kubernetes/staging-server.yaml @@ -84,7 +84,7 @@ spec: value: "true" - name: HOST value: "https://staging-accounts.fyipe.com" - - name: ACCOUNTS_HOST + - name: DASHBOARD_HOST value: "https://staging-dashboard.fyipe.com" - name: BACKEND_HOST value: "https://staging-api.fyipe.com" From 2b5d07c3c2b376156ef1efe9af841695b36c7b9e Mon Sep 17 00:00:00 2001 From: Rajat Soni Date: Mon, 9 Sep 2019 19:00:52 +0530 Subject: [PATCH 08/10] add route for env.js --- accounts/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/accounts/index.js b/accounts/index.js index be4234354e..45372998e4 100755 --- a/accounts/index.js +++ b/accounts/index.js @@ -20,8 +20,13 @@ child_process.execSync('react-env', { app.use(express.static(path.join(__dirname, 'build'))); +app.get('/env.js', function (req, res) { + res.sendFile(path.join(__dirname, 'public', 'env.js')); +}); + app.get('/*', function (req, res) { res.sendFile(path.join(__dirname, 'build', 'index.html')); }); + app.listen(3003); \ No newline at end of file From 71cfbea22d0effc5e2b6728dcfdc6936f7d8daaa Mon Sep 17 00:00:00 2001 From: Rajat Soni Date: Mon, 9 Sep 2019 19:10:01 +0530 Subject: [PATCH 09/10] add route for env.js --- dashboard/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dashboard/index.js b/dashboard/index.js index 13380c86fb..cfb8e7cca5 100755 --- a/dashboard/index.js +++ b/dashboard/index.js @@ -20,6 +20,10 @@ child_process.execSync('react-env', { app.use(express.static(path.join(__dirname, 'build'))); +app.get('/env.js', function (req, res) { + res.sendFile(path.join(__dirname, 'public', 'env.js')); +}); + app.get('/*', function (req, res) { res.sendFile(path.join(__dirname, 'build', 'index.html')); }); From 736de927e79710f903327b787eb07908c9a02ef4 Mon Sep 17 00:00:00 2001 From: Rajat Soni Date: Mon, 9 Sep 2019 23:02:21 +0530 Subject: [PATCH 10/10] add valid domain for cookie --- accounts/src/config.js | 2 +- dashboard/src/config.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/accounts/src/config.js b/accounts/src/config.js index a745c3e27d..34827cbbb5 100755 --- a/accounts/src/config.js +++ b/accounts/src/config.js @@ -26,7 +26,7 @@ if (!isServer) { } else if (env('BACKEND_HOST')) { apiUrl = env('BACKEND_HOST'); dashboardUrl = env('DASHBOARD_HOST'); - domain = 'host'; + domain = '.fyipe.com'; } } diff --git a/dashboard/src/config.js b/dashboard/src/config.js index 1a8e87e222..1b33f0b9a2 100755 --- a/dashboard/src/config.js +++ b/dashboard/src/config.js @@ -45,7 +45,7 @@ if (!isServer) { apiUrl = env('BACKEND_HOST'); dashboardUrl = env('HOST'); accountsUrl = env('ACCOUNTS_HOST'); - domain = 'host'; + domain = '.fyipe.com'; } }