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) {