@ -11,7 +11,7 @@
console . log ( "Starting up..." ) ;
import * as sdk from 'matrix-js-sdk' ;
import matrixcs from 'matrix-js-sdk'
import matrixcs from 'matrix-js-sdk' ;
import fs from 'fs' ;
import log4js from 'log4js' ;
import https from 'https' ;
@ -21,19 +21,33 @@ import request from 'request';
import FileType from 'file-type' ;
import express from 'express' ;
import bodyParser from 'body-parser' ;
// Load settings from config.json
const _ _filename = fileURLToPath ( import . meta . url ) ;
const _ _dirname = dirname ( _ _filename ) ;
// Save script start time for ignoring older messages
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' ) ;
let settings = JSON . parse ( rawdata ) ;
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
var boottimestamp = Date . now ( ) ;
loadSettingsFile ( ) ;
// https://github.com/matrix-org/matrix-js-sdk/issues/2415#issuecomment-1188812401
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 } ) ;
var httpserver = express ( ) ;
var jsonParser = bodyParser . json ( ) ;
@ -695,3 +743,4 @@ client.on("Room.timeline", function (event, room) {
logger . error ( "Error handling incoming event: " + ex ) ;
}
} ) ;
}