diff --git a/agents/meshagent_pi b/agents/meshagent_pi
index 867f41a3..4057ea86 100644
Binary files a/agents/meshagent_pi and b/agents/meshagent_pi differ
diff --git a/meshcentral.js b/meshcentral.js
index f2b6e43a..7d3e5e84 100644
--- a/meshcentral.js
+++ b/meshcentral.js
@@ -460,9 +460,8 @@ function CreateMeshCentralServer(config, args) {
// Setup email server
if ((obj.config.smtp != null) && (obj.config.smtp.host != null) && (obj.config.smtp.from != null)) {
- obj.mailserver = require('./meshmail.js').CreateMeshMain(obj);
+ obj.mailserver = require('./meshmail.js').CreateMeshMail(obj);
obj.mailserver.verify();
- //obj.mailserver.sendMail('ylian.saint-hilaire@intel.com', 'Test Subject', 'This is a sample test', 'This is a sample html test');
}
// Start periodic maintenance
diff --git a/meshmail.js b/meshmail.js
index 96ba7e3a..11370a33 100644
--- a/meshmail.js
+++ b/meshmail.js
@@ -15,7 +15,7 @@
"use strict";
// Construct a MeshAgent object, called upon connection
-module.exports.CreateMeshMain = function (parent) {
+module.exports.CreateMeshMail = function (parent) {
var obj = {};
obj.pendingMails = [];
obj.parent = parent;
@@ -35,9 +35,9 @@ module.exports.CreateMeshMain = function (parent) {
const accountResetMailText = '[[[SERVERNAME]]] - Account Reset\r\n\r\nHi [[[USERNAME]]], [[[SERVERNAME]]] ([[[SERVERURL]]]) is requesting an account password reset. Nagivate to the following link to complete the process: [[[CALLBACKURL]]]\r\nIf you did not initiate this request, please ignore this mail.\r\n';
// Default account invite mail
- const accountInviteSubject = '[[[SERVERNAME]]] - Agent Installation Invitation';
- const accountInviteMailHtml = '
[[[SERVERNAME]]] - Agent Installation
User [[[USERNAME]]] on server [[[SERVERNAME]]] is requesting that you install a remote management agent. WARNING: this will allow the requester to take control of your computer. If you wish to do this, click on the following link to download the agent.
If you did not know about this request, please ignore this mail.
';
- const accountInviteMailText = '[[[SERVERNAME]]] - Agent Installation Invitation\r\n\r\nUser [[[USERNAME]]] on server [[[SERVERNAME]]] ([[[SERVERURL]]]) is requesting you install a remote management agent. WARNING: This will allow the requester to take control of your computer. If you wish to do this, click on the following link to download the agent: [[[CALLBACKURL]]]\r\nIf you do not know about this request, please ignore this mail.\r\n';
+ const accountInviteSubject = '[[[SERVERNAME]]] - Invitation';
+ const accountInviteMailHtml = '
[[[SERVERNAME]]] - Agent Installation
[[[INTROHTML]]]User [[[USERNAME]]] on server [[[SERVERNAME]]] is requesting you to download the following software to start the remote control session.
[[[MSGHTML]]][[[AGENTHTML]]]
If you did not initiate this request, please ignore this mail.
Best regards, [[[USERNAME]]]
';
+ const accountInviteMailText = '[[[SERVERNAME]]] - Agent Installation Invitation\r\n\r\n[[[INTROTEXT]]]User [[[USERNAME]]] on server [[[SERVERNAME]]] ([[[SERVERURL]]]) is requesting you to download the following software to start the remote control session. [[[MSGTEXT]]][[[AGENTTEXT]]]If you did not initiate this request, please ignore this mail.\r\n\r\nBest regards,\r\n[[[USERNAME]]]\r\n';
function EscapeHtml(x) { if (typeof x == "string") return x.replace(/&/g, '&').replace(/>/g, '>').replace(//g, '>').replace(/').replace(/\n/g, '').replace(/\t/g, ' '); if (typeof x == "boolean") return x; if (typeof x == "number") return x; }
@@ -59,10 +59,25 @@ module.exports.CreateMeshMain = function (parent) {
url = 'http' + ((obj.parent.args.notls == null) ? 's' : '') + '://' + domain.dns + ':' + obj.parent.args.port + domain.url;
}
if (options) {
- if (options.cookie != null) { text = text.split('[[[CALLBACKURL]]]').join(url + 'checkmail?c=' + options.cookie); }
- if (options.meshid != null) { text = text.split('[[[CALLBACKURL]]]').join(url + 'meshagents?id=3&meshid=' + options.meshid.split('/')[2] + '&tag=mailto:' + EscapeHtml(email)); }
+ if (options.cookie == null) { options.cookie = ''; }
+ if (options.agentlinkhtml == null) { options.agentlinkhtml = ''; }
+ if (options.agentlinktext == null) { options.agentlinktext = ''; }
+ if (options.meshid == null) { options.meshid = ''; }
+ if (options.introtext == null) { options.introtext = ''; }
+ if (options.introhtml == null) { options.introhtml = ''; }
+ if (options.msgtext == null) { options.msgtext = ''; }
+ if (options.msghtml == null) { options.msghtml = ''; }
+
+ text = text.split('[[[CALLBACKURL]]]').join(url + 'checkmail?c=' + options.cookie);
+ text = text.split('[[[AGENTHTML]]]').join(options.agentlinkhtml);
+ text = text.split('[[[AGENTTEXT]]]').join(options.agentlinktext);
+ text = text.split('[[[MESHID]]]').join(options.meshid);
+ text = text.split('[[[INTROTEXT]]]').join(options.introtext);
+ text = text.split('[[[INTROHTML]]]').join(options.introhtml);
+ text = text.split('[[[MSGTEXT]]]').join(options.msgtext);
+ text = text.split('[[[MSGHTML]]]').join(options.msghtml);
}
- return text.split('[[[USERNAME]]]').join(username).split('[[[SERVERURL]]]').join(url).split('[[[SERVERNAME]]]').join(domain.title);
+ return text.split('[[[USERNAME]]]').join(username).split('[[[SERVERURL]]]').join(url).split('[[[SERVERNAME]]]').join(domain.title).split('[[[EMAIL]]]').join(EscapeHtml(email)).split('[[[URL]]]').join(url);
}
// Send a mail
@@ -88,9 +103,25 @@ module.exports.CreateMeshMain = function (parent) {
};
// Send agent invite mail
- obj.sendAgentInviteMail = function (domain, username, email, meshid) {
+ obj.sendAgentInviteMail = function (domain, username, email, meshid, name, os, msg) {
if ((parent.certificates == null) || (parent.certificates.CommonName == null) || (parent.certificates.CommonName == 'un-configured')) return; // If the server name is not set, can't do this.
- obj.pendingMails.push({ to: email, from: parent.config.smtp.from, subject: mailReplacements(accountInviteSubject, domain, username, email), text: mailReplacements(accountInviteMailText, domain, username, email, { meshid: meshid }), html: mailReplacements(accountInviteMailHtml, domain, username, email, { meshid: meshid }) });
+ var options = { meshid: meshid.split('/')[2] };
+ var agentLinkHtml = '';
+ var agentLinkText = '';
+ if (os == 0 || os == 1) { // All OS or Windows
+ agentLinkHtml += '
';
+ agentLinkText += 'For Windows, nagivate to the following link to complete the process:\r\n\r\n[[[SERVERURL]]]/meshagents?id=3&meshid=[[[MESHID]]]&tag=mailto:[[[EMAIL]]]\r\n\r\n';
+ }
+ if (os == 0 || os == 2) { // All OS or Linux
+ agentLinkHtml += '
For Linux, cut & paste the following in a terminal to install the agent: