Update node settings

pull/1382/head
ShahanaFarooqui 1 month ago
parent 4e589c8349
commit 39b6f28765

@ -32,18 +32,20 @@ export const maskPasswords = (obj) => {
} }
return obj; return obj;
}; };
export const removeAuthSecureData = (node) => {
delete node.authentication.macaroonPath;
delete node.authentication.runePath;
delete node.authentication.lnApiPassword;
delete node.authentication.options;
return node;
};
export const removeSecureData = (config) => { export const removeSecureData = (config) => {
delete config.rtlConfFilePath; delete config.rtlConfFilePath;
delete config.rtlPass; delete config.rtlPass;
delete config.multiPass; delete config.multiPass;
delete config.multiPassHashed; delete config.multiPassHashed;
delete config.secret2FA; delete config.secret2FA;
config.nodes.map((node) => { config.nodes.map((node) => removeAuthSecureData(node));
delete node.authentication.macaroonPath;
delete node.authentication.runePath;
delete node.authentication.lnApiPassword;
return node;
});
return config; return config;
}; };
export const addSecureData = (config) => { export const addSecureData = (config) => {
@ -216,17 +218,19 @@ export const updateNodeSettings = (req, res, next) => {
const config = JSON.parse(fs.readFileSync(RTLConfFile, 'utf-8')); const config = JSON.parse(fs.readFileSync(RTLConfFile, 'utf-8'));
const node = config.nodes.find((node) => (node.index === req.session.selectedNode.index)); const node = config.nodes.find((node) => (node.index === req.session.selectedNode.index));
if (node && node.settings) { if (node && node.settings) {
node.settings = req.body; node.settings = req.body.settings;
} }
try { try {
fs.writeFileSync(RTLConfFile, JSON.stringify(config, null, 2), 'utf-8'); fs.writeFileSync(RTLConfFile, JSON.stringify(config, null, 2), 'utf-8');
const selectedNode = common.findNode(req.session.selectedNode.index); const selectedNode = common.findNode(req.session.selectedNode.index);
if (selectedNode && selectedNode.settings) { if (selectedNode && selectedNode.settings) {
selectedNode.settings = req.body; selectedNode.settings = req.body.settings;
common.replaceNode(req, selectedNode); common.replaceNode(req, selectedNode);
} }
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'RTLConf', msg: 'Node Settings Updated', data: maskPasswords(config) }); let responseNode = JSON.parse(JSON.stringify(common.selectedNode));
res.status(201).json({ message: 'Node Settings Updated Successfully' }); responseNode = removeAuthSecureData(responseNode);
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'RTLConf', msg: 'Node Settings Updated', data: responseNode });
res.status(201).json(responseNode);
} }
catch (errRes) { catch (errRes) {
const errMsg = 'Update Node Settings Error'; const errMsg = 'Update Node Settings Error';

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -8,7 +8,7 @@ import { Database, DatabaseService } from '../../utils/database.js';
import { Logger, LoggerService } from '../../utils/logger.js'; import { Logger, LoggerService } from '../../utils/logger.js';
import { Common, CommonService } from '../../utils/common.js'; import { Common, CommonService } from '../../utils/common.js';
import { WSServer } from '../../utils/webSocketServer.js'; import { WSServer } from '../../utils/webSocketServer.js';
import { ApplicationConfig, Authentication, SSO } from '../../models/config.model.js'; import { ApplicationConfig, Authentication, SSO, SelectedNode } from '../../models/config.model.js';
const options = { url: '' }; const options = { url: '' };
const logger: LoggerService = Logger; const logger: LoggerService = Logger;
@ -36,18 +36,21 @@ export const maskPasswords = (obj) => {
return obj; return obj;
}; };
export const removeAuthSecureData = (node: SelectedNode) => {
delete node.authentication.macaroonPath;
delete node.authentication.runePath;
delete node.authentication.lnApiPassword;
delete node.authentication.options;
return node;
};
export const removeSecureData = (config: ApplicationConfig) => { export const removeSecureData = (config: ApplicationConfig) => {
delete config.rtlConfFilePath; delete config.rtlConfFilePath;
delete config.rtlPass; delete config.rtlPass;
delete config.multiPass; delete config.multiPass;
delete config.multiPassHashed; delete config.multiPassHashed;
delete config.secret2FA; delete config.secret2FA;
config.nodes.map((node) => { config.nodes.map((node) => removeAuthSecureData(node));
delete node.authentication.macaroonPath;
delete node.authentication.runePath;
delete node.authentication.lnApiPassword;
return node;
});
return config; return config;
}; };
@ -221,17 +224,19 @@ export const updateNodeSettings = (req, res, next) => {
const config = JSON.parse(fs.readFileSync(RTLConfFile, 'utf-8')); const config = JSON.parse(fs.readFileSync(RTLConfFile, 'utf-8'));
const node = config.nodes.find((node) => (node.index === req.session.selectedNode.index)); const node = config.nodes.find((node) => (node.index === req.session.selectedNode.index));
if (node && node.settings) { if (node && node.settings) {
node.settings = req.body; node.settings = req.body.settings;
} }
try { try {
fs.writeFileSync(RTLConfFile, JSON.stringify(config, null, 2), 'utf-8'); fs.writeFileSync(RTLConfFile, JSON.stringify(config, null, 2), 'utf-8');
const selectedNode = common.findNode(req.session.selectedNode.index); const selectedNode = common.findNode(req.session.selectedNode.index);
if (selectedNode && selectedNode.settings) { if (selectedNode && selectedNode.settings) {
selectedNode.settings = req.body; selectedNode.settings = req.body.settings;
common.replaceNode(req, selectedNode); common.replaceNode(req, selectedNode);
} }
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'RTLConf', msg: 'Node Settings Updated', data: maskPasswords(config) }); let responseNode = JSON.parse(JSON.stringify(common.selectedNode));
res.status(201).json({ message: 'Node Settings Updated Successfully' }); responseNode = removeAuthSecureData(responseNode);
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'RTLConf', msg: 'Node Settings Updated', data: responseNode });
res.status(201).json(responseNode);
} catch (errRes) { } catch (errRes) {
const errMsg = 'Update Node Settings Error'; const errMsg = 'Update Node Settings Error';
const err = common.handleError({ statusCode: 500, message: errMsg, error: errRes }, 'RTLConf', errMsg, req.session.selectedNode); const err = common.handleError({ statusCode: 500, message: errMsg, error: errRes }, 'RTLConf', errMsg, req.session.selectedNode);

@ -56,7 +56,7 @@ export class NodeSettingsComponent implements OnInit, OnDestroy {
return currencyUnit; return currencyUnit;
}); });
this.store.select(rootSelectedNode).pipe(takeUntil(this.unSubs[0])).subscribe((selNode) => { this.store.select(rootSelectedNode).pipe(takeUntil(this.unSubs[0])).subscribe((selNode) => {
this.selNode = selNode; this.selNode = JSON.parse(JSON.stringify(selNode));
this.selectedThemeMode = this.themeModes.find((themeMode) => this.selNode.settings.themeMode === themeMode.id) || this.themeModes[0]; this.selectedThemeMode = this.themeModes.find((themeMode) => this.selNode.settings.themeMode === themeMode.id) || this.themeModes[0];
this.selectedThemeColor = this.selNode.settings.themeColor; this.selectedThemeColor = this.selNode.settings.themeColor;
if (!this.selNode.settings.fiatConversion) { if (!this.selNode.settings.fiatConversion) {

@ -249,14 +249,16 @@ export class RTLEffects implements OnDestroy {
mergeMap((action: { type: string, payload: Node }) => { mergeMap((action: { type: string, payload: Node }) => {
this.store.dispatch(openSpinner({ payload: UI_MESSAGES.UPDATE_NODE_SETTINGS })); this.store.dispatch(openSpinner({ payload: UI_MESSAGES.UPDATE_NODE_SETTINGS }));
this.store.dispatch(updateRootAPICallStatus({ payload: { action: 'updateNodeSettings', status: APICallStatusEnum.INITIATED } })); this.store.dispatch(updateRootAPICallStatus({ payload: { action: 'updateNodeSettings', status: APICallStatusEnum.INITIATED } }));
delete action.payload.settings.currencyUnits;
return this.httpClient.post(API_END_POINTS.CONF_API + '/node', action.payload). return this.httpClient.post(API_END_POINTS.CONF_API + '/node', action.payload).
pipe(map((updatedNode: Node) => { pipe(map((updatedNode: Node) => {
this.store.dispatch(updateRootAPICallStatus({ payload: { action: 'updateNodeSettings', status: APICallStatusEnum.COMPLETED } })); this.store.dispatch(updateRootAPICallStatus({ payload: { action: 'updateNodeSettings', status: APICallStatusEnum.COMPLETED } }));
this.store.dispatch(closeSpinner({ payload: UI_MESSAGES.UPDATE_NODE_SETTINGS })); this.store.dispatch(closeSpinner({ payload: UI_MESSAGES.UPDATE_NODE_SETTINGS }));
updatedNode.settings.currencyUnits = [...CURRENCY_UNITS, (updatedNode.settings?.currencyUnit ? updatedNode.settings?.currencyUnit : '')];
this.store.dispatch(updateSelectedNodeSettings({ payload: updatedNode })); this.store.dispatch(updateSelectedNodeSettings({ payload: updatedNode }));
this.store.dispatch(setChildNodeSettingsLND({ payload: action.payload })); this.store.dispatch(setChildNodeSettingsLND({ payload: updatedNode }));
this.store.dispatch(setChildNodeSettingsCLN({ payload: action.payload })); this.store.dispatch(setChildNodeSettingsCLN({ payload: updatedNode }));
this.store.dispatch(setChildNodeSettingsECL({ payload: action.payload })); this.store.dispatch(setChildNodeSettingsECL({ payload: updatedNode }));
return { return {
type: RTLActions.OPEN_SNACK_BAR, type: RTLActions.OPEN_SNACK_BAR,
payload: 'Node settings updated successfully!' payload: 'Node settings updated successfully!'
@ -519,12 +521,10 @@ export class RTLEffects implements OnDestroy {
initializeNode(node: Node, isInitialSetup: boolean) { initializeNode(node: Node, isInitialSetup: boolean) {
this.logger.info('Initializing node from RTL Effects.'); this.logger.info('Initializing node from RTL Effects.');
const landingPage = isInitialSetup ? '' : 'HOME'; const landingPage = isInitialSetup ? '' : 'HOME';
// if (node.settings.fiatConversion && node.settings.currencyUnit) {
// selNode['currencyUnits'] = [...CURRENCY_UNITS, node.settings.currencyUnit];
// }
this.sessionService.removeItem('lndUnlocked'); this.sessionService.removeItem('lndUnlocked');
this.sessionService.removeItem('clnUnlocked'); this.sessionService.removeItem('clnUnlocked');
this.sessionService.removeItem('eclUnlocked'); this.sessionService.removeItem('eclUnlocked');
node.settings.currencyUnits = [...CURRENCY_UNITS, (node.settings?.currencyUnit ? node.settings?.currencyUnit : '')];
this.store.dispatch(resetRootStore({ payload: node })); this.store.dispatch(resetRootStore({ payload: node }));
this.store.dispatch(resetLNDStore({ payload: node })); this.store.dispatch(resetLNDStore({ payload: node }));
this.store.dispatch(resetCLNStore({ payload: node })); this.store.dispatch(resetCLNStore({ payload: node }));

Loading…
Cancel
Save