Fix CID issue, thanks tandmx

This commit is contained in:
Christopher Cookman 2024-08-27 15:22:18 -06:00
parent 58dd475c4d
commit f2808e7b1a
Signed by: ChrisChrome
GPG key ID: A023A26E42C33A42
4 changed files with 46 additions and 10 deletions

View file

@ -7,6 +7,7 @@ const port = process.env.PORT || 3000;
const { exec } = require("child_process"); const { exec } = require("child_process");
const sqlite3 = require("sqlite3").verbose(); const sqlite3 = require("sqlite3").verbose();
const db = new sqlite3.Database("./database.db"); const db = new sqlite3.Database("./database.db");
const ttsCommands = require("./tts.json")
// Find all migrations .sql files in ./migrations, execute them in order // Find all migrations .sql files in ./migrations, execute them in order
db.on("open", () => { db.on("open", () => {
console.log(`${colors.cyan("[DB]")} Connected to the database`); console.log(`${colors.cyan("[DB]")} Connected to the database`);
@ -94,7 +95,7 @@ function sendDemo(accountNumber, transaction, placeName, systemName, zoneNumber,
// Check if the account exists and is verified // Check if the account exists and is verified
// Account exists and is verified // Account exists and is verified
// Send the alert // Send the alert
runCommand(process.env.TTS_COMMAND.replace("%s", `/tmp/${transaction}.wav`), `Hello. This is an automated call from KCA SecuriNet Monitoring. ${systemName} has reported a ${event}, ZONE ${zoneNumber}, ${zoneName}, at ${placeName}`).then((output) => { runCommand(ttsCommands[0].replace("%s", `/tmp/${transaction}.wav`), `Hello. This is an automated call from KCA SecuriNet Monitoring. ${systemName} has reported a ${event}, ZONE ${zoneNumber}, ${zoneName}, at ${placeName}`).then((output) => {
runCommand(`ffmpeg -y -i /tmp/${transaction}.wav -ar 8000 -ac 1 -c:a pcm_s16le /tmp/${transaction}-alert.wav`).then(() => { runCommand(`ffmpeg -y -i /tmp/${transaction}.wav -ar 8000 -ac 1 -c:a pcm_s16le /tmp/${transaction}-alert.wav`).then(() => {
runCommand(`rm /tmp/${transaction}.wav`) runCommand(`rm /tmp/${transaction}.wav`)
// strip extension from filename // strip extension from filename
@ -140,12 +141,12 @@ function sendAlert(accountNumber, transaction, placeName, systemName, zoneNumber
} else if (row) { } else if (row) {
// Account exists and is verified // Account exists and is verified
// Send the alert // Send the alert
runCommand(process.env.TTS_COMMAND.replace("%s", `/tmp/${transaction}.wav`), `Hello. This is an automated call from KCA SecuriNet Monitoring. ${systemName} has reported a ${event}, ZONE ${zoneNumber}, ${zoneName}, at ${placeName}`).then((output) => { runCommand(ttsCommands[row.ttsOverride].value.replace("%s", `/tmp/${transaction}.wav`), `Hello. This is an automated call from KCA SecuriNet Monitoring. ${systemName} has reported a ${event}, ZONE ${zoneNumber}, ${zoneName}, at ${placeName}`).then((output) => {
runCommand(`ffmpeg -y -i /tmp/${transaction}.wav -ar 8000 -ac 1 -c:a pcm_s16le /tmp/${transaction}-alert.wav`).then(() => { runCommand(`ffmpeg -y -i /tmp/${transaction}.wav -ar 8000 -ac 1 -c:a pcm_s16le /tmp/${transaction}-alert.wav`).then(() => {
runCommand(`rm /tmp/${transaction}.wav`) runCommand(`rm /tmp/${transaction}.wav`)
// strip extension from filename // strip extension from filename
runCommand(`/var/lib/asterisk/bin/originate ${row.phone} roblox.s.1 0 0 /tmp/${transaction}-alert "IktDQSBTZWN1cmlOZXQiIDwxNDQ3MjAwNDQ4OD4="`).then(() => { runCommand(`/var/lib/asterisk/bin/originate ${row.phone} roblox.s.1 0 0 /tmp/${transaction}-alert "IktDQSBTZWN1cmlOZXQiIDw5OTk5Pg=="`).then(() => {
console.log(`Alert sent to ${row.phone}`); console.log(`Alert sent to ${row.phone}`);
resolve(); resolve();
}).catch((error) => { }).catch((error) => {
@ -161,7 +162,7 @@ function sendAlert(accountNumber, transaction, placeName, systemName, zoneNumber
if (err) { if (err) {
console.error(err); console.error(err);
} else if (row) { } else if (row) {
runCommand(`/var/lib/asterisk/bin/originate ${row.phone} roblox.s.1 0 0 /tmp/${transaction}-alert "IktDQSBTZWN1cmlOZXQiIDwxNDQ3MjAwNDQ4OD4="`).then(() => { runCommand(`/var/lib/asterisk/bin/originate ${row.phone} roblox.s.1 0 0 /tmp/${transaction}-alert "IktDQSBTZWN1cmlOZXQiIDw5OTk5Pg=="`).then(() => {
console.log(`Alert sent to ${row.phone}`); console.log(`Alert sent to ${row.phone}`);
}).catch((error) => { }).catch((error) => {
console.error(error); console.error(error);
@ -201,12 +202,12 @@ function sendTTS(accountNumber, transaction, text) {
} else if (row) { } else if (row) {
// Account exists and is verified // Account exists and is verified
// Send the alert // Send the alert
runCommand(process.env.TTS_COMMAND.replace("%s", `/tmp/${transaction}.wav`), `Hello. This is an automated call from KCA SecuriNet Monitoring.`).then((output) => { runCommand(ttsCommands[row.ttsOverride].value.replace("%s", `/tmp/${transaction}.wav`), `Hello. This is an automated call from KCA SecuriNet Monitoring.`).then((output) => {
runCommand(`ffmpeg -y -i /tmp/${transaction}.wav -ar 8000 -ac 1 -c:a pcm_s16le /tmp/${transaction}-tts.wav`).then(() => { runCommand(`ffmpeg -y -i /tmp/${transaction}.wav -ar 8000 -ac 1 -c:a pcm_s16le /tmp/${transaction}-tts.wav`).then(() => {
runCommand(`rm /tmp/${transaction}.wav`) runCommand(`rm /tmp/${transaction}.wav`)
// strip extension from filename // strip extension from filename
runCommand(`/var/lib/asterisk/bin/originate ${row.phone} roblox.s.1 0 0 /tmp/${transaction}-tts "IktDQSBTZWN1cmlOZXQiIDwxNDQ3MjAwNDQ4OD4="`).then(() => { runCommand(`/var/lib/asterisk/bin/originate ${row.phone} roblox.s.1 0 0 /tmp/${transaction}-tts "IktDQSBTZWN1cmlOZXQiIDw5OTk5Pg=="`).then(() => {
console.log(`TTS sent to ${row.phone}`); console.log(`TTS sent to ${row.phone}`);
resolve(); resolve();
}).catch((error) => { }).catch((error) => {
@ -222,7 +223,7 @@ function sendTTS(accountNumber, transaction, text) {
if (err) { if (err) {
console.error(err); console.error(err);
} else if (row) { } else if (row) {
runCommand(`/var/lib/asterisk/bin/originate ${row.phone} roblox.s.1 0 0 /tmp/${transaction}-tts "IktDQSBTZWN1cmlOZXQiIDwxNDQ3MjAwNDQ4OD4="`).then(() => { runCommand(`/var/lib/asterisk/bin/originate ${row.phone} roblox.s.1 0 0 /tmp/${transaction}-tts "IktDQSBTZWN1cmlOZXQiIDw5OTk5Pg=="`).then(() => {
console.log(`TTS sent to ${row.to}`); console.log(`TTS sent to ${row.to}`);
}).catch((error) => { }).catch((error) => {
console.error(error); console.error(error);
@ -255,12 +256,12 @@ function sendVerificationCode(account) {
console.error(err); console.error(err);
} else if (row) { } else if (row) {
// Send verification code to phone number // Send verification code to phone number
runCommand(process.env.TTS_COMMAND.replace("%s", `/tmp/${account}-code.wav`), `Hello. This is an automated call from KCA SecuriNet Monitoring. To verify your phone number, use the slash verify command on Discord. Your verification code is ${row.verification_code.split("").join(", ")}. Repeating, your code is ${row.verification_code.split("").join(", ")}. Once again, your code is ${row.verification_code.split("").join(", ")}`).then((output) => { runCommand(ttsCommands[row.ttsOverride].value.replace("%s", `/tmp/${account}-code.wav`), `Hello. This is an automated call from KCA SecuriNet Monitoring. To verify your phone number, use the slash verify command on Discord. Your verification code is ${row.verification_code.split("").join(", ")}. Repeating, your code is ${row.verification_code.split("").join(", ")}. Once again, your code is ${row.verification_code.split("").join(", ")}`).then((output) => {
runCommand(`ffmpeg -y -i /tmp/${account}-code.wav -ar 8000 -ac 1 -c:a pcm_s16le /tmp/${account}-verification.wav`).then(() => { runCommand(`ffmpeg -y -i /tmp/${account}-code.wav -ar 8000 -ac 1 -c:a pcm_s16le /tmp/${account}-verification.wav`).then(() => {
runCommand(`rm /tmp/${account}-code.wav`) runCommand(`rm /tmp/${account}-code.wav`)
// strip extension from filename // strip extension from filename
runCommand(`/var/lib/asterisk/bin/originate ${row.phone} roblox.s.1 0 0 /tmp/${account}-verification "IktDQSBTZWN1cmlOZXQiIDwxNDQ3MjAwNDQ4OD4="`).then(() => { runCommand(`/var/lib/asterisk/bin/originate ${row.phone} roblox.s.1 0 0 /tmp/${account}-verification "IktDQSBTZWN1cmlOZXQiIDw5OTk5Pg=="`).then(() => {
console.log(`Verification code sent to ${row.phone}`); console.log(`Verification code sent to ${row.phone}`);
}) })
}) })
@ -282,6 +283,27 @@ client.on("ready", async () => {
console.log(`${colors.cyan("[Discord]")} Logged in as ${client.user.tag}`); console.log(`${colors.cyan("[Discord]")} Logged in as ${client.user.tag}`);
const commands = require("./commands.json"); const commands = require("./commands.json");
commands.push({
name: "voice",
description: "Set the TTS voice for your account",
type: 1,
options: [
{
"name": "account_number",
"description": "The account number to deactivate",
"type": 3,
"required": true,
"autocomplete": true
},
{
name: "voice",
description: "The voice to use for TTS",
type: 3,
required: true,
choices: ttsCommands
}
]
})
//Register commands //Register commands
await (async () => { await (async () => {
try { try {
@ -562,7 +584,7 @@ client.on("interactionCreate", async (interaction) => {
break; break;
case Discord.InteractionType.ApplicationCommandAutocomplete: case Discord.InteractionType.ApplicationCommandAutocomplete:
switch (interaction.commandName) { switch (interaction.commandName) {
case "deactivate": case "deactivate" || "voice":
// Get all active accounts owned by the user // Get all active accounts owned by the user
db.all("SELECT * FROM accounts WHERE discord_id = ? AND verified = 1", interaction.user.id, (err, rows) => { db.all("SELECT * FROM accounts WHERE discord_id = ? AND verified = 1", interaction.user.id, (err, rows) => {
if (err) { if (err) {

4
migrations/3 - TTS.sql Normal file
View file

@ -0,0 +1,4 @@
-- Add ttsOverride column to the accounts table
ALTER TABLE 'accounts' ADD COLUMN 'ttsOverride' INTEGER NOT NULL DEFAULT 0;
-- Retroactively set ttsOverride to 0 for all accounts that dont have it set at all
UPDATE 'accounts' SET 'ttsOverride' = 0 WHERE 'ttsOverride' IS NULL;

10
tts.json Normal file
View file

@ -0,0 +1,10 @@
[
{
"name": "Piper - Amy (Default)",
"value": "piper -m /opt/alarm-monitoring/tts/en_US-amy-medium.onnx -f %s"
},
{
"name": "Flite - OG SecuriNet Voice",
"value": "flite -o %s"
}
]

0
tts.json.example Normal file
View file