2023-11-16 22:42:09 -05:00
|
|
|
// initialize required packages
|
|
|
|
const fs = require('fs');
|
|
|
|
const ini = require('ini');
|
|
|
|
const nostr = require('nostr-tools');
|
|
|
|
const wspf = require('websocket-polyfill');
|
|
|
|
const WebSocket = require('ws');
|
|
|
|
const xmpp = require('simple-xmpp');
|
|
|
|
|
|
|
|
let {
|
|
|
|
bech32,
|
|
|
|
bech32m
|
|
|
|
} = require('bech32');
|
|
|
|
let letsCID;
|
|
|
|
let signedEvent;
|
|
|
|
|
|
|
|
if (fs.existsSync('./config.ini')) {
|
|
|
|
const config = ini.parse(fs.readFileSync('./config.ini', 'utf-8'));
|
|
|
|
let sk = config.nostr.pkhex;
|
|
|
|
let pk = nostr.getPublicKey(sk);
|
|
|
|
|
|
|
|
xmpp.on('online', function (data, to) {
|
|
|
|
console.log('Connected with JID: ' + config.xmpp.jid);
|
|
|
|
});
|
2024-09-28 13:01:18 -04:00
|
|
|
|
2023-11-16 22:42:09 -05:00
|
|
|
xmpp.on('chat', function (from, message) {
|
|
|
|
function debug() {
|
|
|
|
if (config.debug === '1') {
|
|
|
|
console.log('[DEBUG]');
|
|
|
|
console.log(message);
|
|
|
|
console.log(from);
|
|
|
|
};
|
|
|
|
}
|
2024-09-28 13:01:18 -04:00
|
|
|
if (message === '!help') {
|
2023-11-16 22:42:09 -05:00
|
|
|
xmpp.send(from, 'https://wiki.vanderwarker.family/doku.php?id=code:nostrsms:commands');
|
|
|
|
debug();
|
2024-09-28 13:01:18 -04:00
|
|
|
|
2023-11-16 22:42:09 -05:00
|
|
|
} else if (message === "!auth") {
|
2024-08-11 13:30:17 -04:00
|
|
|
xmpp.send(from, "https://auth.nostrsms.com");
|
2024-09-28 13:01:18 -04:00
|
|
|
|
2023-11-16 22:42:09 -05:00
|
|
|
} else {
|
|
|
|
async function newPost() {
|
|
|
|
const relay = nostr.relayInit(config.relays.write, WebSocket);
|
|
|
|
relay.on('connect', () => {
|
|
|
|
console.log(`connected to ${relay.url}`);
|
|
|
|
});
|
|
|
|
relay.on('error', () => {
|
|
|
|
console.log(`failed to connect to ${relay.url}`);
|
|
|
|
});
|
|
|
|
|
|
|
|
await relay.connect();
|
|
|
|
|
|
|
|
let event = {
|
|
|
|
kind: 1,
|
|
|
|
pubkey: pk,
|
|
|
|
created_at: Math.floor(Date.now() / 1000),
|
2024-10-06 09:03:07 -04:00
|
|
|
tags: [['client','NostrSMS','31990:9be1b8315248eeb20f9d9ab2717d1750e4f27489eab1fa531d679dadd34c2f8d:1726937516']],
|
2023-11-16 22:42:09 -05:00
|
|
|
content: message,
|
|
|
|
};
|
|
|
|
const signedEvent = nostr.finishEvent(event, sk);
|
|
|
|
letsCID = signedEvent.id;
|
|
|
|
showSID(letsCID, pk);
|
|
|
|
await relay.publish(signedEvent);
|
|
|
|
relay.close();
|
|
|
|
}
|
|
|
|
newPost().catch((error) => {
|
|
|
|
console.error(error);
|
|
|
|
});
|
|
|
|
async function showSID(letsCID, pk) {
|
|
|
|
console.log(letsCID);
|
|
|
|
console.log(pk);
|
|
|
|
const event = {
|
|
|
|
id: letsCID,
|
|
|
|
relays: [config.relays.write],
|
|
|
|
author: pk,
|
|
|
|
kind: 1,
|
|
|
|
};
|
|
|
|
const encodedNEvent = nostr.nip19.neventEncode(event);
|
|
|
|
xmpp.send(from, "nostr:" + encodedNEvent);
|
2024-09-28 13:01:18 -04:00
|
|
|
console.log(encodedNEvent)
|
2023-11-16 22:42:09 -05:00
|
|
|
debug();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
xmpp.on('error', function (err) {
|
|
|
|
console.error(err);
|
|
|
|
});
|
|
|
|
xmpp.setPresence('chat', 'https://nostrsms.com');
|
|
|
|
xmpp.connect({
|
|
|
|
jid: config.xmpp.jid,
|
|
|
|
password: config.xmpp.password,
|
|
|
|
host: config.xmpp.host,
|
|
|
|
port: 5222
|
|
|
|
});
|
|
|
|
process.on('SIGINT', function () {
|
|
|
|
console.log("SigInt receieved. Shutdown inevitable!")
|
|
|
|
process.exit();
|
|
|
|
});
|
|
|
|
|
|
|
|
} else {
|
|
|
|
console.log("Please create a config.ini");
|
|
|
|
console.log("See https://wiki.vanderwarker.family/doku.php?id=code:nostrsms:install");
|
|
|
|
console.log("and choose your preferred install method.");
|
2024-08-11 13:30:17 -04:00
|
|
|
}
|