deliveries/index.mjs

70 lines
2.0 KiB
JavaScript
Raw Normal View History

2024-10-04 23:04:43 +00:00
import { Client } from 'ssh2';
2024-10-04 23:18:08 +00:00
import {
SecretsManagerClient,
GetSecretValueCommand,
} from "@aws-sdk/client-secrets-manager";
2024-10-04 22:41:01 +00:00
export const handler = async (event) => {
let result = "did not send";
2024-10-04 23:18:08 +00:00
if (event.subject == "You have deliveries" || event.subject == "You have a delivery") {
2024-10-04 22:41:01 +00:00
// Trigger home notification
2024-10-04 23:18:08 +00:00
console.info("Matched Subject, pull key");
const keyClient = new SecretsManagerClient({ region: "us-west-2" });
let keyResponse;
try {
keyResponse = await keyClient.send(new GetSecretValueCommand({
SecretId: process.env.TRIGGER_SECRET
}));
2024-10-04 23:41:54 +00:00
keyResponse = JSON.parse(keyResponse.SecretString);
keyResponse = keyResponse["carbon-key"].replaceAll(" ", "\n");
2024-10-04 23:18:08 +00:00
} catch (err) {
console.warn(err);
result = err;
}
2024-10-04 22:41:01 +00:00
const command = `ssh ${process.env.INTERNAL_HOST} "/usr/bin/tmux neww -d \"/usr/bin/mplayer '${process.env.INTERNAL_FILE}'\""`;
2024-10-04 23:04:08 +00:00
console.info("Import ssh2");
2024-10-04 22:41:01 +00:00
const connection = new Client();
2024-10-04 23:04:08 +00:00
console.info("Set Conn Info");
2024-10-04 22:41:01 +00:00
connection.on('ready', () => {
2024-10-04 23:04:08 +00:00
console.info("Connection READY")
2024-10-04 22:41:01 +00:00
connection.exec(command, (error, stream) => {
if (error) {
console.warn(error);
result = JSON.stringify(error);
}
2024-10-04 23:44:42 +00:00
stream.on('end', () => {
console.info("Stream ended");
2024-10-04 23:41:54 +00:00
const response = {
statusCode: 200,
body: {
result
},
};
return response;
2024-10-04 23:44:42 +00:00
});
stream.on('close', (code, signal) => {
// COMPLETE
console.info("Trigger completed", code, signal)
result = code;
2024-10-04 22:41:01 +00:00
}).stderr.on('data', (data) => {
// STDERR
console.warn(data);
});
});
}).connect({
host: process.env.TRIGGER_HOST,
port: 22,
username: process.env.TRIGGER_USERNAME,
2024-10-04 23:41:54 +00:00
privateKey: keyResponse.SecretStrin,
2024-10-04 22:41:01 +00:00
});
2024-10-04 23:41:54 +00:00
}else{
const response = {
statusCode: 200,
body: {
result
},
};
return response;
2024-10-04 22:41:01 +00:00
}
};