Get access token if unset in config.json
This commit is contained in:
parent
1f5632e53c
commit
a4f4076351
@ -2,7 +2,7 @@
|
|||||||
"homeserver": "https://matrix.org",
|
"homeserver": "https://matrix.org",
|
||||||
"mediaurlpath": "https://matrix.org/_matrix/media/r0/download/{{server-name}}/{{media-id}}",
|
"mediaurlpath": "https://matrix.org/_matrix/media/r0/download/{{server-name}}/{{media-id}}",
|
||||||
"matrixdomain": "matrix.org",
|
"matrixdomain": "matrix.org",
|
||||||
"matrixuser": "smsbot",
|
"matrixuser": "@smsbot:matrix.org",
|
||||||
"matrixpass": "hunter2",
|
"matrixpass": "hunter2",
|
||||||
"matrixaccesstoken": "",
|
"matrixaccesstoken": "",
|
||||||
"inviteusers": ["@annoyme:matrix.org"],
|
"inviteusers": ["@annoyme:matrix.org"],
|
||||||
@ -11,7 +11,6 @@
|
|||||||
"smsonlyto": ["14061234567"],
|
"smsonlyto": ["14061234567"],
|
||||||
"listenport": 8069,
|
"listenport": 8069,
|
||||||
"publicurl": "http://localhost:8069/",
|
"publicurl": "http://localhost:8069/",
|
||||||
"googleverifiedsms": false,
|
|
||||||
"loglevel": "debug",
|
"loglevel": "debug",
|
||||||
"smsinterval": 15
|
"smsinterval": 15
|
||||||
}
|
}
|
||||||
|
71
main.js
71
main.js
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
console.log("Starting up...");
|
console.log("Starting up...");
|
||||||
import * as sdk from 'matrix-js-sdk';
|
import * as sdk from 'matrix-js-sdk';
|
||||||
import matrixcs from 'matrix-js-sdk'
|
import matrixcs from 'matrix-js-sdk';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import log4js from 'log4js';
|
import log4js from 'log4js';
|
||||||
import https from 'https';
|
import https from 'https';
|
||||||
@ -21,20 +21,34 @@ import request from 'request';
|
|||||||
import FileType from 'file-type';
|
import FileType from 'file-type';
|
||||||
import express from 'express';
|
import express from 'express';
|
||||||
import bodyParser from 'body-parser';
|
import bodyParser from 'body-parser';
|
||||||
// Load settings from config.json
|
|
||||||
const __filename = fileURLToPath(import.meta.url);
|
|
||||||
const __dirname = dirname(__filename);
|
|
||||||
let rawdata = fs.readFileSync(__dirname + '/config.json');
|
|
||||||
let settings = JSON.parse(rawdata);
|
|
||||||
console.log(__dirname + "/config.json loaded.");
|
|
||||||
var logger = log4js.getLogger();
|
|
||||||
logger.level = settings.loglevel;
|
|
||||||
logger.info("Log initialized.");
|
|
||||||
var initialsynccomplete = false;
|
|
||||||
|
|
||||||
// Save script start time for ignoring older messages
|
// Save script start time for ignoring older messages
|
||||||
var boottimestamp = Date.now();
|
var boottimestamp = Date.now();
|
||||||
|
|
||||||
|
var __dirname;
|
||||||
|
var __filename;
|
||||||
|
var initialsynccomplete = false;
|
||||||
|
|
||||||
|
// Init logging
|
||||||
|
var logger = log4js.getLogger();
|
||||||
|
logger.level = "debug";
|
||||||
|
logger.info("Log initialized.");
|
||||||
|
var settings = {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load settings from config.json
|
||||||
|
*/
|
||||||
|
function loadSettingsFile() {
|
||||||
|
__filename = fileURLToPath(import.meta.url);
|
||||||
|
__dirname = dirname(__filename);
|
||||||
|
let rawdata = fs.readFileSync(__dirname + '/config.json');
|
||||||
|
settings = JSON.parse(rawdata);
|
||||||
|
console.log(__dirname + "/config.json loaded.");
|
||||||
|
logger.level = settings.loglevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
loadSettingsFile();
|
||||||
|
|
||||||
// https://github.com/matrix-org/matrix-js-sdk/issues/2415#issuecomment-1188812401
|
// https://github.com/matrix-org/matrix-js-sdk/issues/2415#issuecomment-1188812401
|
||||||
matrixcs.request(request);
|
matrixcs.request(request);
|
||||||
|
|
||||||
@ -465,6 +479,40 @@ function handleHTTPRequest(req, res) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Access token empty
|
||||||
|
if (settings.matrixaccesstoken == false) {
|
||||||
|
logger.error("Matrix access token not set.");
|
||||||
|
if (settings.matrixuser == false || settings.matrixpass == false) {
|
||||||
|
logger.error("Config values for matrixuser and/or matrixpass are not valid.");
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
logger.error("Attempting to fetch access token for you...");
|
||||||
|
try {
|
||||||
|
request({
|
||||||
|
method: "POST",
|
||||||
|
uri: settings.homeserver + "/_matrix/client/v3/login",
|
||||||
|
json: {
|
||||||
|
type: "m.login.password",
|
||||||
|
user: settings.matrixuser,
|
||||||
|
password: settings.matrixpass
|
||||||
|
}
|
||||||
|
}, function (error, resp, body) {
|
||||||
|
if (!error && resp.statusCode == 200) {
|
||||||
|
if (body.access_token) {
|
||||||
|
logger.error("Got access token for you. Writing it to " + __dirname + "/config.json now.");
|
||||||
|
settings.matrixaccesstoken = body.access_token;
|
||||||
|
fs.writeFileSync(__dirname + '/config.json', JSON.stringify(settings, null, 4));
|
||||||
|
logger.error("Exiting. Please restart me to load new config file.");
|
||||||
|
process.exit();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.error("Couldn't get access token. Get it yourself: curl -XPOST -d '{\"type\":\"m.login.password\", \"user\":\"" + settings.matrixuser + "\", \"password\":\"password here\"}' \"https://matrix.netsyms.net/_matrix/client/v3/login\"");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (ex) {
|
||||||
|
logger.error("Couldn't get access token. Get it yourself: curl -XPOST -d '{\"type\":\"m.login.password\", \"user\":\"" + settings.matrixuser + "\", \"password\":\"password here\"}' \"https://matrix.netsyms.net/_matrix/client/v3/login\"");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
const client = sdk.createClient({baseUrl: settings.homeserver, userId: settings.matrixuser, accessToken: settings.matrixaccesstoken});
|
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();
|
||||||
@ -695,3 +743,4 @@ client.on("Room.timeline", function (event, room) {
|
|||||||
logger.error("Error handling incoming event: " + ex);
|
logger.error("Error handling incoming event: " + ex);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user