Permissions stuff

master
Skylar Ittner 3 years ago
parent ee653393cf
commit 53b877f001

@ -6,7 +6,6 @@
*/ */
console.log("Starting up..."); console.log("Starting up...");
import sdk from 'matrix-js-sdk'; import sdk from 'matrix-js-sdk';
import fs from 'fs'; import fs from 'fs';
import log4js from 'log4js'; import log4js from 'log4js';
@ -17,21 +16,16 @@ import { dirname }
from 'path'; from 'path';
import request from 'request'; import request from 'request';
import FileType from 'file-type'; import FileType from 'file-type';
// Load settings from config.json // Load settings from config.json
const __filename = fileURLToPath(import.meta.url); const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename); const __dirname = dirname(__filename);
let rawdata = fs.readFileSync(__dirname + '/config.json'); let rawdata = fs.readFileSync(__dirname + '/config.json');
let settings = JSON.parse(rawdata); let settings = JSON.parse(rawdata);
console.log(__dirname + "/config.json loaded."); console.log(__dirname + "/config.json loaded.");
var logger = log4js.getLogger(); var logger = log4js.getLogger();
logger.level = settings.loglevel; logger.level = settings.loglevel;
logger.info("Log initialized."); logger.info("Log initialized.");
var initialsynccomplete = false; var initialsynccomplete = false;
/** /**
* From https://github.com/stevekinney/node-phone-formatter * From https://github.com/stevekinney/node-phone-formatter
* @param {string} phoneNumber * @param {string} phoneNumber
@ -51,7 +45,6 @@ function formatPhoneNumber(phoneNumber, formatString) {
function checkSMS() { function checkSMS() {
logger.debug("Checking SMS"); logger.debug("Checking SMS");
const options = { const options = {
hostname: 'smsapi.voxtelesys.net', hostname: 'smsapi.voxtelesys.net',
port: 443, port: 443,
@ -61,13 +54,11 @@ function checkSMS() {
"Authorization": "Bearer " + settings.smsapikey "Authorization": "Bearer " + settings.smsapikey
} }
}; };
const req = https.request(options, res => { const req = https.request(options, res => {
res.on('data', d => { res.on('data', d => {
try { try {
var json = JSON.parse(d); var json = JSON.parse(d);
var messages = json.results; var messages = json.results;
if (messages.length == 0) { if (messages.length == 0) {
logger.debug("No new SMS messages."); logger.debug("No new SMS messages.");
} }
@ -89,11 +80,9 @@ function checkSMS() {
} }
}); });
}); });
req.on('error', error => { req.on('error', error => {
logger.warning(error); logger.warning(error);
}); });
req.end(); req.end();
} }
@ -135,16 +124,37 @@ function createOrJoinSMSRoom(tel, ournumber, callback) {
// room doesn't exist, create it // room doesn't exist, create it
//logger.debug(err); //logger.debug(err);
logger.debug("Room " + roomName + " does not exist. Creating it now."); logger.debug("Room " + roomName + " does not exist. Creating it now.");
var userPowerLevels = {};
for (var i = 0; i < settings.inviteusers.length; i++) {
userPowerLevels[settings.inviteusers[i]] = 50;
}
client.createRoom({ client.createRoom({
room_alias_name: "SMS_" + tel + "_" + ournumber, room_alias_name: "SMS_" + tel + "_" + ournumber,
preset: "trusted_private_chat",
visibility: "private", visibility: "private",
invite: settings.inviteusers, invite: settings.inviteusers,
power_level_content_override: {
"events": {
"m.room.name": 50,
"m.room.power_levels": 50
},
"events_default": 0,
"invite": 50,
"kick": 50,
"notifications": {
"room": 50
},
"redact": 50,
"state_default": 50,
"users": userPowerLevels,
"users_default": 0
},
is_direct: true,
name: formatPhoneNumber(tel, "(NNN) NNN-NNNN"), name: formatPhoneNumber(tel, "(NNN) NNN-NNNN"),
topic: "SMS conversation with " + formatPhoneNumber(tel, "(NNN) NNN-NNNN") + " (using " + formatPhoneNumber(ournumber, "(NNN) NNN-NNNN") + ")" topic: "SMS conversation with " + formatPhoneNumber(tel, "(NNN) NNN-NNNN") + " (using " + formatPhoneNumber(ournumber, "(NNN) NNN-NNNN") + ")"
}).then((room) => { }).then((room) => {
logger.debug("Room" + roomName + " created with ID " + room.room_id); logger.debug("Room" + roomName + " created with ID " + room.room_id);
setSMSRoomPowerLevels(res.room_id); setSMSRoomPowerLevels(res.room_id);
// The first message or two we send doesn't go through unless we do this. // The first message or two we send doesn't go through unless we do this.
// It just spits out "Error sending event M_FORBIDDEN: Unknown room" instead. // It just spits out "Error sending event M_FORBIDDEN: Unknown room" instead.
createOrJoinSMSRoom(tel, ournumber, callback); createOrJoinSMSRoom(tel, ournumber, callback);
@ -304,7 +314,6 @@ function sendSMS(number, from, body, callback) {
from: from, from: from,
body: body body: body
}); });
const options = { const options = {
hostname: 'smsapi.voxtelesys.net', hostname: 'smsapi.voxtelesys.net',
port: 443, port: 443,
@ -322,12 +331,10 @@ function sendSMS(number, from, body, callback) {
logger.debug(d.toString('utf8')); logger.debug(d.toString('utf8'));
}); });
}); });
req.on('error', error => { req.on('error', error => {
logger.error(error); logger.error(error);
callback(false); callback(false);
}); });
req.write(data); req.write(data);
req.end(); req.end();
if (typeof callback == "function") { if (typeof callback == "function") {
@ -339,7 +346,6 @@ const client = sdk.createClient(settings.homeserver);
client.login("m.login.password", {"user": settings.matrixuser, "password": settings.matrixpass}).then((response) => { client.login("m.login.password", {"user": settings.matrixuser, "password": settings.matrixpass}).then((response) => {
client.startClient(); client.startClient();
logger.info("Plugged into the matrix."); logger.info("Plugged into the matrix.");
client.once('sync', function (state, prevState, res) { client.once('sync', function (state, prevState, res) {
logger.debug("Initial sync complete (" + state + ")"); logger.debug("Initial sync complete (" + state + ")");
initialsynccomplete = true; initialsynccomplete = true;
@ -347,8 +353,6 @@ client.login("m.login.password", {"user": settings.matrixuser, "password": setti
setInterval(checkSMS, settings.smsinterval * 1000); setInterval(checkSMS, settings.smsinterval * 1000);
checkSMS(); checkSMS();
}); });
client.on("Room.timeline", function (event, room) { client.on("Room.timeline", function (event, room) {
if (!initialsynccomplete) { if (!initialsynccomplete) {
return; // ignore anything while we were offline return; // ignore anything while we were offline

Loading…
Cancel
Save