allow msh get/set/delete from console (#6074)

Signed-off-by: si458 <simonsmith5521@gmail.com>

Simon Smith committed May 10, 2024 at 14:12 UTC 274bb525a551d37caa5e845fa55e86e1742565b9
1 file changed +61 -1
agents/meshcore.js
+61 -1
@@ -4142,7 +4142,67 @@ function processConsoleCommand(cmd, args, rights, sessionid) {
4142 }
4143 break;
4144 case 'msh':
4145 - response = JSON.stringify(_MSH(), null, 2);
4145 + if (args['_'].length == 0) {
4146 + response = JSON.stringify(_MSH(), null, 2);
4147 + } else if (args['_'].length > 3) {
4148 + response = 'Proper usage: msh [get|set|delete]\r\nmsh get MeshServer\r\nmsh set abc "xyz"\r\nmsh delete abc';
4149 + } else {
4150 + var mshFileName = process.execPath.replace('.exe','') + '.msh';
4151 + switch (args['_'][0].toLocaleLowerCase()) {
4152 + case 'get':
4153 + if (typeof args['_'][1] != 'string' || args['_'].length > 2) {
4154 + response = 'Proper usage: msh get MeshServer';
4155 + } else if(_MSH()[args['_'][1]]) {
4156 + response = _MSH()[args['_'][1]];
4157 + } else {
4158 + response = "Unknown Value: " + args['_'][1];
4159 + }
4160 + break;
4161 + case 'set':
4162 + if (typeof args['_'][1] != 'string' || typeof args['_'][2] != 'string') {
4163 + response = 'Proper usage: msh set abc "xyz"';
4164 + } else {
4165 + var jsonToSave = _MSH();
4166 + jsonToSave[args['_'][1]] = args['_'][2];
4167 + var updatedContent = '';
4168 + for (var key in jsonToSave) {
4169 + if (jsonToSave.hasOwnProperty(key)) {
4170 + updatedContent += key + '=' + jsonToSave[key] + '\n';
4171 + }
4172 + }
4173 + try {
4174 + require('fs').writeFileSync(mshFileName, updatedContent);
4175 + response = "msh set " + args['_'][1] + " successful"
4176 + } catch (ex) {
4177 + response = "msh set " + args['_'][1] + " unsuccessful";
4178 + }
4179 + }
4180 + break;
4181 + case 'delete':
4182 + if (typeof args['_'][1] != 'string') {
4183 + response = 'Proper usage: msh delete abc';
4184 + } else {
4185 + var jsonToSave = _MSH();
4186 + delete jsonToSave[args['_'][1]];
4187 + var updatedContent = '';
4188 + for (var key in jsonToSave) {
4189 + if (jsonToSave.hasOwnProperty(key)) {
4190 + updatedContent += key + '=' + jsonToSave[key] + '\n';
4191 + }
4192 + }
4193 + try {
4194 + require('fs').writeFileSync(mshFileName, updatedContent);
4195 + response = "msh delete " + args['_'][1] + " successful"
4196 + } catch (ex) {
4197 + response = "msh delete " + args['_'][1] + " unsuccessful";
4198 + }
4199 + }
4200 + break;
4201 + default:
4202 + response = 'Proper usage: msh [get|set|delete]\r\nmsh get MeshServer\r\nmsh set abc "xyz"\r\nmsh delete abc';
4203 + break;
4204 + }
4205 + }
4206 break;
4207 case 'dnsinfo':
4208 if (require('os').dns == null) {