#!/usr/bin/env node "use strict"; // Set env prop CONFIG_FILE pointing to path (for localStorage use full path too!) global.config = require(process.env.CONFIG_FILE ); // Webbrowser localStorage emulation var LocalStorage = require('node-localstorage').LocalStorage; global.nodeStorage = new LocalStorage(config.localStorage); /* Obtain access token and deviceId via: curl -XPOST -d '{"user":"", "password":"", "type":"m.login.password"}' "https://unixpimps.net/_matrix/client/r0/login" */ var roomId = ""; var matrixClient = sdk.createClient({ baseUrl: config.matrix.homeServer, accessToken: config.matrix.token, userId: config.matrix.username, // These two makes it all work! deviceId: config.matrix.deviceId, sessionStore: new sdk.WebStorageSessionStore( global.nodeStorage) }); var initOnConnected = false; matrixClient.startClient(20); matrixClient.on("sync", function(state, prevState, data) { if( state === "PREPARED" && !initOnConnected) { initOnConnected = true; matrixClient.joinRoom('#:unixpimps.net').done(function(room) { roomId = room.roomId; console.log("Joined room!"); // Simplisitic static trust of devices (one per user and device below matrixClient.setDeviceKnown( '@sniffy:unixpimps.net', '', true); matrixClient.sendTextMessage(roomId, "Hello from node!!!" ); }); } });