mirror of
https://github.com/openmhz/trunk-server.git
synced 2026-11-13 17:27:37 -05:00
Add support for sending messages
This commit is contained in:
@@ -1,6 +1,97 @@
|
||||
var mongoose = require("mongoose");
|
||||
var User = require("../models/user");
|
||||
var System = require("../models/system");
|
||||
const Mailjet = require('node-mailjet');
|
||||
|
||||
var admin_email = process.env['REACT_APP_ADMIN_EMAIL'] != null ? process.env['REACT_APP_ADMIN_EMAIL'] : "luke@openmhz.com";
|
||||
var admin_server = process.env['REACT_APP_ADMIN_SERVER'] != null ? process.env['REACT_APP_ADMIN_SERVER'] : "https://admin.openmhz.com";
|
||||
var site_name = process.env['REACT_APP_SITE_NAME'] != null ? process.env['REACT_APP_SITE_NAME'] : "OpenMHz";
|
||||
|
||||
const mailjet = new Mailjet({
|
||||
apiKey: process.env['MAILJET_KEY'],
|
||||
apiSecret: process.env['MAILJET_SECRET']
|
||||
});
|
||||
|
||||
exports.contact_system = async function(req, res) {
|
||||
var system = await System.findOne({
|
||||
shortName: req.params.shortName.toLowerCase()
|
||||
}).catch(err => {
|
||||
res.status(500);
|
||||
res.json({
|
||||
success: false,
|
||||
message: err
|
||||
});
|
||||
return;
|
||||
});
|
||||
if (!system) {
|
||||
console.error("[contact_system] The Short Name does not exist: " + req.params.shortName.toLowerCase());
|
||||
res.status(500);
|
||||
res.json({
|
||||
success: false,
|
||||
message: "That Short Name does not exist."
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!system.allowContact) {
|
||||
console.error("[contact_system] This System does not allow user to contact the owner: " + req.params.shortName.toLowerCase());
|
||||
res.status(500);
|
||||
res.json({
|
||||
success: false,
|
||||
message: "This System does not allow user to contact the owner."
|
||||
});
|
||||
return;
|
||||
}
|
||||
const user = await User.findById(system.userId).exec();
|
||||
if (!user) {
|
||||
console.error("[contact_system] System User does not exist: " + req.params.shortName.toLowerCase());
|
||||
res.status(500);
|
||||
res.json({
|
||||
success: false,
|
||||
message: "System User does not exist."
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(user);
|
||||
let message = "Thank you for contributing a feed to OpenMHz. A user has sent in a message about this feed:\n\n-------------------------------\n"
|
||||
message = message + "User Name: " + req.body.name + "\n";
|
||||
message = message + "User Email: " + req.body.email + "\n-------------------------------\n";
|
||||
message = message + "Message:\n" + req.body.message + "\n-------------------------------\n\n";
|
||||
message = message + "If you wish to stop receiving User Messages for this System:\n - goto the Admin for " + site_name + ": " + admin_server + "\n - find this System\n - Update it and turn off this Allow Contact option."
|
||||
const request = mailjet.post("send", {
|
||||
version: "v3.1"
|
||||
}).request({
|
||||
Messages: [{
|
||||
From: {
|
||||
Email: admin_email,
|
||||
Name: site_name + " Admin"
|
||||
},
|
||||
To: [{
|
||||
Email: user.email,
|
||||
Name: user.firstName + " " + user.lastName
|
||||
},{
|
||||
Email: admin_email,
|
||||
Name: site_name + " Admin"
|
||||
}],
|
||||
Subject: site_name + " - " + system.shortName + " - " + " User Comment",
|
||||
TextPart: message
|
||||
}]
|
||||
});
|
||||
request.then(result => {
|
||||
console.log(`User Comment sent to: ${user.email} for shortName: ${system.shortName}`)
|
||||
})
|
||||
.catch(err => {
|
||||
console.error(err.statusCode);
|
||||
console.error(err);
|
||||
res.json({
|
||||
success: false,
|
||||
message: err
|
||||
});
|
||||
return;
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
exports.get_systems = async function (req, res) {
|
||||
let fromDate = new Date(Date.now() - 60 * 60 * 24 * 30 * 1000);
|
||||
@@ -31,6 +122,7 @@ exports.get_systems = async function (req, res) {
|
||||
lastActive: results[result].lastActive,
|
||||
callAvg: results[result].callAvg,
|
||||
description: results[result].description,
|
||||
allowContact: results[result].allowContact,
|
||||
clientCount: clientCount
|
||||
}
|
||||
if (results[result].showScreenName && results[result].userId) {
|
||||
|
||||
@@ -116,6 +116,7 @@ app.post('/:shortName/upload', upload.single('call'), uploads.upload, async func
|
||||
|
||||
/*------ SYSTEMS ----------*/
|
||||
app.get('/systems', addSystemClients, systems.get_systems);
|
||||
app.post('/:shortName/contact', systems.contact_system);
|
||||
|
||||
/*------ TALKGROUPS ----------*/
|
||||
app.get('/:shortName/talkgroups', talkgroups.get_talkgroups);
|
||||
@@ -249,6 +250,13 @@ io.sockets.on('connection', function (client) {
|
||||
clients[client.id].filterType = String(data.filterType);
|
||||
clients[client.id].talkgroupNums = [];
|
||||
clients[client.id].timestamp = new Date();
|
||||
|
||||
if (typeof clients[client.id].filterCode != "string") {
|
||||
console.error("Error - Socket - Invalid filterCode: " + data.filterCode + " ShortName: " + data.shortName.toLowerCase());
|
||||
delete clients[client.id];
|
||||
return;
|
||||
}
|
||||
|
||||
if ((data.filterType == "group") && (data.filterCode.indexOf(',') == -1)) {
|
||||
if (!ObjectId.isValid(data.filterCode)) {
|
||||
console.error("Error - Socket - Invalid Group ID: " + data.filterCode);
|
||||
|
||||
@@ -12,6 +12,10 @@ var systemSchema = mongoose.Schema({
|
||||
state: String,
|
||||
description: String,
|
||||
showScreenName: Boolean,
|
||||
allowContact: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
callAvg: Number,
|
||||
callCount: Number,
|
||||
ignoreUnknownTalkgroup : Boolean,
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
"ffprobe-static": "3.1.0",
|
||||
"find-remove": "4.1.0",
|
||||
"get-folder-size": "^4.0.0",
|
||||
"node-mailjet": "6.0.2",
|
||||
"mkdirp": "^2.1.6",
|
||||
"mongodb": "5.2.0",
|
||||
"mongoose": "7.0.3",
|
||||
|
||||
Reference in New Issue
Block a user