Use accessToken instead of password
This commit is contained in:
parent
5d3f6c226c
commit
3caf8a6502
@ -4,6 +4,7 @@
|
|||||||
"matrixdomain": "matrix.org",
|
"matrixdomain": "matrix.org",
|
||||||
"matrixuser": "smsbot",
|
"matrixuser": "smsbot",
|
||||||
"matrixpass": "hunter2",
|
"matrixpass": "hunter2",
|
||||||
|
"matrixaccesstoken": "",
|
||||||
"inviteusers": ["@annoyme:matrix.org"],
|
"inviteusers": ["@annoyme:matrix.org"],
|
||||||
"smsapikey": "Voxtelesys SMS API key goes here",
|
"smsapikey": "Voxtelesys SMS API key goes here",
|
||||||
"smsfrom": "Voxtelesys DID goes here",
|
"smsfrom": "Voxtelesys DID goes here",
|
||||||
|
370
main.js
370
main.js
@ -457,208 +457,127 @@ function handleHTTPRequest(req, res) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const client = sdk.createClient({baseUrl: settings.homeserver});
|
const client = sdk.createClient({baseUrl: settings.homeserver, userId: settings.matrixuser, accessToken: settings.matrixaccesstoken});
|
||||||
var httpserver = express();
|
var httpserver = express();
|
||||||
var jsonParser = bodyParser.json();
|
var jsonParser = bodyParser.json();
|
||||||
client.login("m.login.password", {"user": settings.matrixuser, "password": settings.matrixpass}).then((response) => {
|
client.startClient({initialSyncLimit: 10});
|
||||||
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;
|
httpserver.post("*", jsonParser, (req, res) => {
|
||||||
httpserver.post("*", jsonParser, (req, res) => {
|
handleHTTPRequest(req, res);
|
||||||
handleHTTPRequest(req, res);
|
|
||||||
});
|
|
||||||
httpserver.get("*", (req, res) => {
|
|
||||||
handleHTTPRequest(req, res);
|
|
||||||
});
|
|
||||||
httpserver.listen(settings.listenport, () => {
|
|
||||||
logger.info("HTTP server listening on port " + settings.listenport);
|
|
||||||
});
|
|
||||||
logger.info("Up and running.");
|
|
||||||
if (settings.smsinterval > 0) {
|
|
||||||
setInterval(checkSMS, settings.smsinterval * 1000);
|
|
||||||
checkSMS();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
client.on("Room.timeline", function (event, room) {
|
httpserver.get("*", (req, res) => {
|
||||||
try {
|
handleHTTPRequest(req, res);
|
||||||
if (!initialsynccomplete) {
|
});
|
||||||
return; // ignore anything while we were offline
|
httpserver.listen(settings.listenport, () => {
|
||||||
}
|
logger.info("HTTP server listening on port " + settings.listenport);
|
||||||
if (event.getType() !== "m.room.message") {
|
});
|
||||||
return; // only use messages
|
logger.info("Up and running.");
|
||||||
}
|
if (settings.smsinterval > 0) {
|
||||||
if (client.getUserId() == event.getSender()) {
|
setInterval(checkSMS, settings.smsinterval * 1000);
|
||||||
return; // skip own messages to prevent loop
|
checkSMS();
|
||||||
}
|
}
|
||||||
if (event.getContent() == null || typeof event.getContent().body == "undefined" || event.getContent().body == null) {
|
});
|
||||||
// Apparently this can happen?
|
client.on("Room.timeline", function (event, room) {
|
||||||
|
try {
|
||||||
|
if (!initialsynccomplete) {
|
||||||
|
return; // ignore anything while we were offline
|
||||||
|
}
|
||||||
|
if (event.getType() !== "m.room.message") {
|
||||||
|
return; // only use messages
|
||||||
|
}
|
||||||
|
if (client.getUserId() == event.getSender()) {
|
||||||
|
return; // skip own messages to prevent loop
|
||||||
|
}
|
||||||
|
if (event.getContent() == null || typeof event.getContent().body == "undefined" || event.getContent().body == null) {
|
||||||
|
// Apparently this can happen?
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.getContent().body.toLowerCase().startsWith("!sms")) {
|
||||||
|
// capture command to start room for new number
|
||||||
|
const matches = event.getContent().body.match(/([1-9]?[0-9]{10})/g);
|
||||||
|
if (matches == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (matches.length == 1 || matches.length == 2) {
|
||||||
if (event.getContent().body.toLowerCase().startsWith("!sms")) {
|
var tel = matches[0];
|
||||||
// capture command to start room for new number
|
var ournumber = settings.smsfrom;
|
||||||
const matches = event.getContent().body.match(/([1-9]?[0-9]{10})/g);
|
if (tel.length == 10) {
|
||||||
if (matches == null) {
|
// make it the full number
|
||||||
return;
|
tel = "1" + tel;
|
||||||
}
|
}
|
||||||
if (matches.length == 1 || matches.length == 2) {
|
if (matches.length == 2) {
|
||||||
var tel = matches[0];
|
ournumber = matches[1];
|
||||||
var ournumber = settings.smsfrom;
|
if (ournumber.length == 10) {
|
||||||
if (tel.length == 10) {
|
|
||||||
// make it the full number
|
// make it the full number
|
||||||
tel = "1" + tel;
|
ournumber = "1" + ournumber;
|
||||||
}
|
}
|
||||||
if (matches.length == 2) {
|
|
||||||
ournumber = matches[1];
|
|
||||||
if (ournumber.length == 10) {
|
|
||||||
// make it the full number
|
|
||||||
ournumber = "1" + ournumber;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
logger.info("Got request to start new SMS conversation with " + tel + " using " + ournumber + " from " + event.getSender() + ".");
|
|
||||||
sendMatrixNotice(event.getRoomId(), "Starting conversation with " + tel);
|
|
||||||
createOrJoinSMSRoom(tel, ournumber, function (roomid) {
|
|
||||||
//client.setRoomTag(roomid, "u.matrix-bridge-voxtelesys-sms", {tel: tel, ournumber: ournumber});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
return;
|
logger.info("Got request to start new SMS conversation with " + tel + " using " + ournumber + " from " + event.getSender() + ".");
|
||||||
} else if (event.getContent().body.toLowerCase().replace(/\s/g, "").startsWith("!sms")) {
|
sendMatrixNotice(event.getRoomId(), "Starting conversation with " + tel);
|
||||||
sendMatrixNotice(event.getRoomId(), "Malformed command detected, ignoring.");
|
createOrJoinSMSRoom(tel, ournumber, function (roomid) {
|
||||||
sendMatrixNotice(event.getRoomId(), "Hint: there aren't supposed to be any spaces before or in the \"!sms\" part.");
|
//client.setRoomTag(roomid, "u.matrix-bridge-voxtelesys-sms", {tel: tel, ournumber: ournumber});
|
||||||
return;
|
});
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
|
} else if (event.getContent().body.toLowerCase().replace(/\s/g, "").startsWith("!sms")) {
|
||||||
|
sendMatrixNotice(event.getRoomId(), "Malformed command detected, ignoring.");
|
||||||
|
sendMatrixNotice(event.getRoomId(), "Hint: there aren't supposed to be any spaces before or in the \"!sms\" part.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (event.getContent().body.toLowerCase().startsWith("!fixusers")) {
|
if (event.getContent().body.toLowerCase().startsWith("!fixusers")) {
|
||||||
sendMatrixNotice(event.getRoomId(), "Inviting missing users across all SMS chats. You may need to run this command several times, there's a server limit to how many invites can be sent at once.");
|
sendMatrixNotice(event.getRoomId(), "Inviting missing users across all SMS chats. You may need to run this command several times, there's a server limit to how many invites can be sent at once.");
|
||||||
|
|
||||||
client.getJoinedRooms().then(function (rooms) {
|
client.getJoinedRooms().then(function (rooms) {
|
||||||
var roomlist = rooms.joined_rooms;
|
var roomlist = rooms.joined_rooms;
|
||||||
for (var i = 0; i < roomlist.length; i++) {
|
for (var i = 0; i < roomlist.length; i++) {
|
||||||
(function (roomid) {
|
(function (roomid) {
|
||||||
client.getJoinedRoomMembers(roomid).then(function (joined) {
|
client.getJoinedRoomMembers(roomid).then(function (joined) {
|
||||||
var members = Object.keys(joined.joined);
|
var members = Object.keys(joined.joined);
|
||||||
for (var j = 0; j < settings.inviteusers.length; j++) {
|
for (var j = 0; j < settings.inviteusers.length; j++) {
|
||||||
if (members.indexOf(settings.inviteusers[j]) == -1) {
|
if (members.indexOf(settings.inviteusers[j]) == -1) {
|
||||||
logger.info("Inviting missing user " + settings.inviteusers[j] + " to room " + roomid);
|
logger.info("Inviting missing user " + settings.inviteusers[j] + " to room " + roomid);
|
||||||
client.invite(roomid, settings.inviteusers[j]);
|
client.invite(roomid, settings.inviteusers[j]);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
})(roomlist[i]);
|
});
|
||||||
}
|
})(roomlist[i]);
|
||||||
});
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
} else if (event.getContent().body.toLowerCase().replace(/\s/g, "").startsWith("!fixusers")) {
|
} else if (event.getContent().body.toLowerCase().replace(/\s/g, "").startsWith("!fixusers")) {
|
||||||
sendMatrixNotice(event.getRoomId(), "Malformed command detected, ignoring.");
|
sendMatrixNotice(event.getRoomId(), "Malformed command detected, ignoring.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event.getContent().body.toLowerCase().replace(/\s/g, "").startsWith("!")) {
|
if (event.getContent().body.toLowerCase().replace(/\s/g, "").startsWith("!")) {
|
||||||
sendMatrixNotice(event.getRoomId(), "I'm sorry, but my programming forbids me from sending text messages that start with `!`.");
|
sendMatrixNotice(event.getRoomId(), "I'm sorry, but my programming forbids me from sending text messages that start with `!`.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var matches = room.name.match(/SMS_([1-9][0-9]+)(?:_([1-9][0-9]+))?/g);
|
var matches = room.name.match(/SMS_([1-9][0-9]+)(?:_([1-9][0-9]+))?/g);
|
||||||
console.log(event.getRoomId());
|
console.log(event.getRoomId());
|
||||||
if (matches == null || (matches.length != 1 && matches.length != 2)) {
|
if (matches == null || (matches.length != 1 && matches.length != 2)) {
|
||||||
client.getRoomTags(event.getRoomId()).then((response) => {
|
client.getRoomTags(event.getRoomId()).then((response) => {
|
||||||
console.log(response);
|
console.log(response);
|
||||||
if (typeof response.tags["u.matrix-bridge-voxtelesys-sms"] != "undefined") {
|
if (typeof response.tags["u.matrix-bridge-voxtelesys-sms"] != "undefined") {
|
||||||
var tel = response.tags["u.matrix-bridge-voxtelesys-sms"].tel;
|
var tel = response.tags["u.matrix-bridge-voxtelesys-sms"].tel;
|
||||||
var from = response.tags["u.matrix-bridge-voxtelesys-sms"].ournumber;
|
var from = response.tags["u.matrix-bridge-voxtelesys-sms"].ournumber;
|
||||||
logger.info("Got message for " + tel + " from " + event.getSender() + ", relaying to " + from + ".");
|
|
||||||
switch (event.getContent().msgtype) {
|
|
||||||
case "m.image":
|
|
||||||
case "m.file":
|
|
||||||
case "m.video":
|
|
||||||
sendMMS(
|
|
||||||
tel,
|
|
||||||
from,
|
|
||||||
event.getContent().url,
|
|
||||||
event.getContent().info.mimetype,
|
|
||||||
function () {
|
|
||||||
client.sendReadReceipt(event, "m.read");
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case "m.text":
|
|
||||||
default:
|
|
||||||
sendSMS(
|
|
||||||
tel,
|
|
||||||
from,
|
|
||||||
event.getContent().body,
|
|
||||||
function () {
|
|
||||||
client.sendReadReceipt(event, "m.read");
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else if (typeof response.tags["com.netsyms.matrix-bridge-voxtelesys.sms"] != "undefined") {
|
|
||||||
var tel = response.tags["com.netsyms.matrix-bridge-voxtelesys.sms"].tel;
|
|
||||||
var from = response.tags["com.netsyms.matrix-bridge-voxtelesys.sms"].ournumber;
|
|
||||||
client.setRoomTag(event.getRoomId(), "u.matrix-bridge-voxtelesys-sms", {tel: tel, ournumber: from, order: 0.5});
|
|
||||||
logger.info("Got message for " + tel + " from " + event.getSender() + ", relaying to " + from + ".");
|
|
||||||
switch (event.getContent().msgtype) {
|
|
||||||
case "m.image":
|
|
||||||
case "m.file":
|
|
||||||
case "m.video":
|
|
||||||
sendMMS(
|
|
||||||
tel,
|
|
||||||
from,
|
|
||||||
event.getContent().url,
|
|
||||||
event.getContent().info.mimetype,
|
|
||||||
function () {
|
|
||||||
client.sendReadReceipt(event, "m.read");
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case "m.text":
|
|
||||||
default:
|
|
||||||
sendSMS(
|
|
||||||
tel,
|
|
||||||
from,
|
|
||||||
event.getContent().body,
|
|
||||||
function () {
|
|
||||||
client.sendReadReceipt(event, "m.read");
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
console.log(response.tags);
|
|
||||||
sendMatrixNotice(room.roomId, "Error: couldn't determine correct number to send SMS from.");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
if (matches.length == 1) {
|
|
||||||
var tel = matches[0];
|
|
||||||
logger.info("Got message for " + tel + " from " + event.getSender() + ", relaying.");
|
|
||||||
switch (event.getContent().msgtype) {
|
|
||||||
case "m.image":
|
|
||||||
case "m.file":
|
|
||||||
case "m.video":
|
|
||||||
sendMMS(tel, settings.smsfrom, event.getContent().url,
|
|
||||||
event.getContent().info.mimetype,
|
|
||||||
function () {
|
|
||||||
client.sendReadReceipt(event, "m.read");
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case "m.text":
|
|
||||||
default:
|
|
||||||
sendSMS(tel, settings.smsfrom, event.getContent().body, function () {
|
|
||||||
client.sendReadReceipt(event, "m.read");
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else if (matches.length == 2) {
|
|
||||||
var tel = matches[0];
|
|
||||||
var from = matches[1];
|
|
||||||
logger.info("Got message for " + tel + " from " + event.getSender() + ", relaying to " + from + ".");
|
logger.info("Got message for " + tel + " from " + event.getSender() + ", relaying to " + from + ".");
|
||||||
switch (event.getContent().msgtype) {
|
switch (event.getContent().msgtype) {
|
||||||
case "m.image":
|
case "m.image":
|
||||||
case "m.file":
|
case "m.file":
|
||||||
case "m.video":
|
case "m.video":
|
||||||
sendMMS(tel, from, event.getContent().url,
|
sendMMS(
|
||||||
|
tel,
|
||||||
|
from,
|
||||||
|
event.getContent().url,
|
||||||
event.getContent().info.mimetype,
|
event.getContent().info.mimetype,
|
||||||
function () {
|
function () {
|
||||||
client.sendReadReceipt(event, "m.read");
|
client.sendReadReceipt(event, "m.read");
|
||||||
@ -666,15 +585,94 @@ client.login("m.login.password", {"user": settings.matrixuser, "password": setti
|
|||||||
break;
|
break;
|
||||||
case "m.text":
|
case "m.text":
|
||||||
default:
|
default:
|
||||||
sendSMS(tel, settings.smsfrom, event.getContent().body, function () {
|
sendSMS(
|
||||||
client.sendReadReceipt(event, "m.read");
|
tel,
|
||||||
});
|
from,
|
||||||
|
event.getContent().body,
|
||||||
|
function () {
|
||||||
|
client.sendReadReceipt(event, "m.read");
|
||||||
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
} else if (typeof response.tags["com.netsyms.matrix-bridge-voxtelesys.sms"] != "undefined") {
|
||||||
|
var tel = response.tags["com.netsyms.matrix-bridge-voxtelesys.sms"].tel;
|
||||||
|
var from = response.tags["com.netsyms.matrix-bridge-voxtelesys.sms"].ournumber;
|
||||||
|
client.setRoomTag(event.getRoomId(), "u.matrix-bridge-voxtelesys-sms", {tel: tel, ournumber: from, order: 0.5});
|
||||||
|
logger.info("Got message for " + tel + " from " + event.getSender() + ", relaying to " + from + ".");
|
||||||
|
switch (event.getContent().msgtype) {
|
||||||
|
case "m.image":
|
||||||
|
case "m.file":
|
||||||
|
case "m.video":
|
||||||
|
sendMMS(
|
||||||
|
tel,
|
||||||
|
from,
|
||||||
|
event.getContent().url,
|
||||||
|
event.getContent().info.mimetype,
|
||||||
|
function () {
|
||||||
|
client.sendReadReceipt(event, "m.read");
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case "m.text":
|
||||||
|
default:
|
||||||
|
sendSMS(
|
||||||
|
tel,
|
||||||
|
from,
|
||||||
|
event.getContent().body,
|
||||||
|
function () {
|
||||||
|
client.sendReadReceipt(event, "m.read");
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log(response.tags);
|
||||||
|
sendMatrixNotice(room.roomId, "Error: couldn't determine correct number to send SMS from.");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if (matches.length == 1) {
|
||||||
|
var tel = matches[0];
|
||||||
|
logger.info("Got message for " + tel + " from " + event.getSender() + ", relaying.");
|
||||||
|
switch (event.getContent().msgtype) {
|
||||||
|
case "m.image":
|
||||||
|
case "m.file":
|
||||||
|
case "m.video":
|
||||||
|
sendMMS(tel, settings.smsfrom, event.getContent().url,
|
||||||
|
event.getContent().info.mimetype,
|
||||||
|
function () {
|
||||||
|
client.sendReadReceipt(event, "m.read");
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case "m.text":
|
||||||
|
default:
|
||||||
|
sendSMS(tel, settings.smsfrom, event.getContent().body, function () {
|
||||||
|
client.sendReadReceipt(event, "m.read");
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else if (matches.length == 2) {
|
||||||
|
var tel = matches[0];
|
||||||
|
var from = matches[1];
|
||||||
|
logger.info("Got message for " + tel + " from " + event.getSender() + ", relaying to " + from + ".");
|
||||||
|
switch (event.getContent().msgtype) {
|
||||||
|
case "m.image":
|
||||||
|
case "m.file":
|
||||||
|
case "m.video":
|
||||||
|
sendMMS(tel, from, event.getContent().url,
|
||||||
|
event.getContent().info.mimetype,
|
||||||
|
function () {
|
||||||
|
client.sendReadReceipt(event, "m.read");
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case "m.text":
|
||||||
|
default:
|
||||||
|
sendSMS(tel, settings.smsfrom, event.getContent().body, function () {
|
||||||
|
client.sendReadReceipt(event, "m.read");
|
||||||
|
});
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (ex) {
|
|
||||||
logger.error("Error handling incoming event: " + ex);
|
|
||||||
}
|
}
|
||||||
});
|
} catch (ex) {
|
||||||
|
logger.error("Error handling incoming event: " + ex);
|
||||||
|
}
|
||||||
});
|
});
|
Loading…
x
Reference in New Issue
Block a user