Added SMS debug.

Ylian Saint-Hilaire committed Sep 2, 2022 at 15:06 UTC 2045ebc110e99419ef232bba8409c4d47ec5c29a
1 file changed +26 -18
meshsms.js
+26 -18
@@ -80,10 +80,12 @@ module.exports.CreateMeshSMS = function (parent) {
80 }
81 case 'url': {
82 // Validate URL configuration values
83 - if (typeof parent.config.sms.url != 'string') { console.log('Invalid or missing SMS gateway URL value.'); return null; }
84 - if (!parent.config.sms.url.toLowerCase().startsWith('http://') && !parent.config.sms.url.toLowerCase().startsWith('https://')) { console.log('Invalid or missing SMS gateway, URL must start with http:// or https://.'); return null; }
85 - if (parent.config.sms.url.indexOf('{{message}}') == -1) { console.log('Invalid or missing SMS gateway, URL must include {{message}}.'); return null; }
86 - if (parent.config.sms.url.indexOf('{{phone}}') == -1) { console.log('Invalid or missing SMS gateway, URL must include {{phone}}.'); return null; }
83 + if (parent.config.sms.url != 'console') {
84 + if (typeof parent.config.sms.url != 'string') { console.log('Invalid or missing SMS gateway URL value.'); return null; }
85 + if (!parent.config.sms.url.toLowerCase().startsWith('http://') && !parent.config.sms.url.toLowerCase().startsWith('https://')) { console.log('Invalid or missing SMS gateway, URL must start with http:// or https://.'); return null; }
86 + if (parent.config.sms.url.indexOf('{{message}}') == -1) { console.log('Invalid or missing SMS gateway, URL must include {{message}}.'); return null; }
87 + if (parent.config.sms.url.indexOf('{{phone}}') == -1) { console.log('Invalid or missing SMS gateway, URL must include {{phone}}.'); return null; }
88 + }
89 break;
90 }
91 default: {
@@ -132,21 +134,27 @@ module.exports.CreateMeshSMS = function (parent) {
134 if (func != null) { func((err == null), err ? err.type : null, result); }
135 });
136 } else if (parent.config.sms.provider == 'url') { // URL
135 - var sms = parent.config.sms.url.split('{{phone}}').join(encodeURIComponent(to)).split('{{message}}').join(encodeURIComponent(msg));
136 - parent.debug('email', 'SMS URL: ' + sms);
137 - sms = require('url').parse(sms);
138 - if (sms.protocol == 'https:') {
139 - // HTTPS GET request
140 - const options = { hostname: sms.hostname, port: sms.port ? sms.port : 443, path: sms.path, method: 'GET', rejectUnauthorized: false };
141 - const request = require('https').request(options, function (res) { parent.debug('email', 'SMS result: ' + res.statusCode); if (func != null) { func(res.statusCode == 200, (res.statusCode == 200) ? null : res.statusCode, null); } res.on('data', function (d) { }); });
142 - request.on('error', function (err) { parent.debug('email', 'SMS error: ' + err); if (func != null) { func(false, err, null); } });
143 - request.end();
137 + if (parent.config.sms.url == 'console') {
138 + // This is for debugging, just display the SMS to the console
139 + console.log('SMS (' + to + '): ' + msg);
140 + if (func != null) { func(true, null, null); }
141 } else {
145 - // HTTP GET request
146 - const options = { hostname: sms.hostname, port: sms.port ? sms.port : 80, path: sms.path, method: 'GET' };
147 - const request = require('http').request(options, function (res) { parent.debug('email', 'SMS result: ' + res.statusCode); if (func != null) { func(res.statusCode == 200, (res.statusCode == 200) ? null : res.statusCode, null); } res.on('data', function (d) { }); });
148 - request.on('error', function (err) { parent.debug('email', 'SMS error: ' + err); if (func != null) { func(false, err, null); } });
149 - request.end();
142 + var sms = parent.config.sms.url.split('{{phone}}').join(encodeURIComponent(to)).split('{{message}}').join(encodeURIComponent(msg));
143 + parent.debug('email', 'SMS URL: ' + sms);
144 + sms = require('url').parse(sms);
145 + if (sms.protocol == 'https:') {
146 + // HTTPS GET request
147 + const options = { hostname: sms.hostname, port: sms.port ? sms.port : 443, path: sms.path, method: 'GET', rejectUnauthorized: false };
148 + const request = require('https').request(options, function (res) { parent.debug('email', 'SMS result: ' + res.statusCode); if (func != null) { func(res.statusCode == 200, (res.statusCode == 200) ? null : res.statusCode, null); } res.on('data', function (d) { }); });
149 + request.on('error', function (err) { parent.debug('email', 'SMS error: ' + err); if (func != null) { func(false, err, null); } });
150 + request.end();
151 + } else {
152 + // HTTP GET request
153 + const options = { hostname: sms.hostname, port: sms.port ? sms.port : 80, path: sms.path, method: 'GET' };
154 + const request = require('http').request(options, function (res) { parent.debug('email', 'SMS result: ' + res.statusCode); if (func != null) { func(res.statusCode == 200, (res.statusCode == 200) ? null : res.statusCode, null); } res.on('data', function (d) { }); });
155 + request.on('error', function (err) { parent.debug('email', 'SMS error: ' + err); if (func != null) { func(false, err, null); } });
156 + request.end();
157 + }
158 }
159 }
160 }