Compare commits
No commits in common. "903bb9b4c0edc4ab5f4874858e9468021aa75ded" and "35405f3817c954aeedf8a66fa27e2e9306ecbf39" have entirely different histories.
903bb9b4c0
...
35405f3817
17
.vscode/launch.json
vendored
17
.vscode/launch.json
vendored
@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
// Use IntelliSense to learn about possible attributes.
|
|
||||||
// Hover to view descriptions of existing attributes.
|
|
||||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
|
||||||
"version": "0.2.0",
|
|
||||||
"configurations": [
|
|
||||||
{
|
|
||||||
"type": "node",
|
|
||||||
"request": "launch",
|
|
||||||
"name": "Launch Program",
|
|
||||||
"skipFiles": [
|
|
||||||
"<node_internals>/**"
|
|
||||||
],
|
|
||||||
"program": "${workspaceFolder}\\src\\index.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
30
.vscode/snips.code-snippets
vendored
30
.vscode/snips.code-snippets
vendored
@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
// Place your custom-scripts workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and
|
|
||||||
// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
|
|
||||||
// is left empty or omitted, the snippet gets applied to all languages. The prefix is what is
|
|
||||||
// used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
|
|
||||||
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders.
|
|
||||||
// Placeholders with the same ids are connected.
|
|
||||||
// Example:
|
|
||||||
// "Print to console": {
|
|
||||||
// "scope": "javascript,typescript",
|
|
||||||
// "prefix": "log",
|
|
||||||
// "body": [
|
|
||||||
// "console.log('$1');",
|
|
||||||
// "$2"
|
|
||||||
// ],
|
|
||||||
// "description": "Log output to console"
|
|
||||||
// }
|
|
||||||
|
|
||||||
"Banner Comment": {
|
|
||||||
"scope": "javascript,typescript",
|
|
||||||
"description": "Banner Comment",
|
|
||||||
"prefix": "///",
|
|
||||||
"body": [
|
|
||||||
"// #############################################################",
|
|
||||||
"// $1",
|
|
||||||
"// #############################################################",
|
|
||||||
"$2"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
FROM node:20
|
|
||||||
RUN mkdir -p /usr/src/app
|
|
||||||
WORKDIR /usr/src/app
|
|
||||||
|
|
||||||
COPY package.json ./
|
|
||||||
RUN npm install
|
|
||||||
COPY . .
|
|
||||||
CMD ["/bin/sh", "-c", "node src/index.js 2>&1 > /logs/$(date +%Y-%m-%d_%H-%M-%S).txt"]
|
|
@ -1,22 +0,0 @@
|
|||||||
version: '3.8'
|
|
||||||
|
|
||||||
networks:
|
|
||||||
proxnet:
|
|
||||||
external: true
|
|
||||||
|
|
||||||
services:
|
|
||||||
proxy:
|
|
||||||
image: 'v0idf1sh/hookshot'
|
|
||||||
container_name: hookshot
|
|
||||||
restart: unless-stopped
|
|
||||||
networks:
|
|
||||||
- proxnet
|
|
||||||
environment:
|
|
||||||
- TOPGG_WH_ID: "id"
|
|
||||||
- TOPGG_WH_TOKEN: "token"
|
|
||||||
- UPTIMEKUMA_WH_ID: "id"
|
|
||||||
- UPTIMEKUMA_WH_TOKEN: "token"
|
|
||||||
- TESTING_WH_ID: "id"
|
|
||||||
- TESTING_WH_TOKEN: "token"
|
|
||||||
volumes:
|
|
||||||
- ./logs:/logs # Log files
|
|
1085
package-lock.json
generated
1085
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
24
package.json
24
package.json
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "hookshot",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "Quick and sloppy intermediary webhook server. Designed to relay messages to Discord from other webhook triggers.",
|
|
||||||
"main": "src/index.js",
|
|
||||||
"scripts": {
|
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://git.vfsh.dev/voidf1sh/hookshot"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"webhook",
|
|
||||||
"discord"
|
|
||||||
],
|
|
||||||
"author": "Skylar Grant",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"discord.js": "^14.16.2",
|
|
||||||
"dotenv": "^16.4.5",
|
|
||||||
"express": "^4.21.0"
|
|
||||||
}
|
|
||||||
}
|
|
19
setup.sh
19
setup.sh
@ -1,19 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Check for root
|
|
||||||
if [ "$EUID" -ne 0 ]
|
|
||||||
then echo "Please run as root"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Create directories if they don't exist
|
|
||||||
mkdir -p /srv/docker/hookshot/logs
|
|
||||||
|
|
||||||
# Copy the docker-compose.yml file
|
|
||||||
cp docker-compose.yml /srv/docker/hookshot/docker-compose.yml
|
|
||||||
|
|
||||||
# Open the docker-compose.yml file for editing
|
|
||||||
nano /srv/docker/hookshot/docker-compose.yml
|
|
||||||
|
|
||||||
# Start the containers
|
|
||||||
docker-compose -f /srv/docker/hookshot/docker-compose.yml up -d
|
|
@ -1,64 +0,0 @@
|
|||||||
// #############################################################
|
|
||||||
// Module Imports
|
|
||||||
// #############################################################
|
|
||||||
const { EmbedBuilder, WebhookClient } = require('discord.js');
|
|
||||||
const config = require('./config.json');
|
|
||||||
const dotenv = require('dotenv').config();
|
|
||||||
|
|
||||||
// #############################################################
|
|
||||||
// Variables
|
|
||||||
// #############################################################
|
|
||||||
const whInfo = {
|
|
||||||
"topgg": {
|
|
||||||
id: process.env.TOPGG_WH_ID,
|
|
||||||
token: process.env.TOPGG_WH_TOKEN
|
|
||||||
},
|
|
||||||
"uptimeKuma": {
|
|
||||||
id: process.env.UPTIMEKUMA_WH_ID,
|
|
||||||
token: process.env.UPTIMEKUMA_WH_TOKEN
|
|
||||||
},
|
|
||||||
"testing": {
|
|
||||||
id: process.env.TESTING_WH_ID,
|
|
||||||
token: process.env.TESTING_WH_TOKEN
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
testing() {
|
|
||||||
// Create a new WebhookClient
|
|
||||||
const webhookClient = new WebhookClient({ id: whInfo.testing.id, token: whInfo.testing.token });
|
|
||||||
|
|
||||||
// Create a new EmbedBuilder
|
|
||||||
const embed = new EmbedBuilder()
|
|
||||||
.setTitle('Webhook Test')
|
|
||||||
.setDescription('This is a test of the WebhookClient')
|
|
||||||
.setTimestamp();
|
|
||||||
|
|
||||||
// Send the Embed
|
|
||||||
webhookClient.send({
|
|
||||||
content: 'This is a test of the WebhookClient',
|
|
||||||
username: config.discord.testing.username,
|
|
||||||
avatarURL: config.discord.testing.avatarURL,
|
|
||||||
embeds: [embed]
|
|
||||||
});
|
|
||||||
},
|
|
||||||
topgg(body) {
|
|
||||||
console.log(body);
|
|
||||||
// Create a new WebhookClient
|
|
||||||
const webhookClient = new WebhookClient({ id: whInfo.topgg.id, token: whInfo.topgg.token });
|
|
||||||
|
|
||||||
// Create a new EmbedBuilder
|
|
||||||
const embed = new EmbedBuilder()
|
|
||||||
.setTitle('Top.gg Vote')
|
|
||||||
.setDescription(`User ID: ${body.user}`)
|
|
||||||
.setTimestamp();
|
|
||||||
|
|
||||||
// Send the Embed
|
|
||||||
webhookClient.send({
|
|
||||||
content: 'A user has voted for the bot on top.gg',
|
|
||||||
username: config.discord.topgg.username,
|
|
||||||
avatarURL: config.discord.topgg.avatarURL,
|
|
||||||
embeds: [embed]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
const djs = require('./DjsHandlers.js');
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
generic(req, res) {
|
|
||||||
// Handle generic webhook payload here
|
|
||||||
console.log('Received generic webhook payload:', req.body);
|
|
||||||
res.sendStatus(200);
|
|
||||||
djs.testing();
|
|
||||||
},
|
|
||||||
topgg(req, res) {
|
|
||||||
// Handle top.gg vote webhook payload here
|
|
||||||
console.log('Received top.gg vote webhook payload:', req.body);
|
|
||||||
res.sendStatus(200);
|
|
||||||
djs.topggVote();
|
|
||||||
},
|
|
||||||
uptimeKuma(req, res) {
|
|
||||||
// Handle Uptime Kuma webhook payload here
|
|
||||||
console.log('Received Uptime Kuma webhook payload:', req.body);
|
|
||||||
res.sendStatus(200);
|
|
||||||
djs.uptimeKumaAlert();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"discord": {
|
|
||||||
"testing": {
|
|
||||||
"username": "testing",
|
|
||||||
"avatarUrl": "https://assets.vfsh.dev/shednod.png"
|
|
||||||
},
|
|
||||||
"topgg": {
|
|
||||||
"username": "topgg",
|
|
||||||
"avatarUrl": "https://assets.vfsh.dev/shednod.png"
|
|
||||||
},
|
|
||||||
"uptimeKuma": {
|
|
||||||
"username": "uptimeKuma",
|
|
||||||
"avatarUrl": "https://assets.vfsh.dev/shednod.png"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
52
src/index.js
52
src/index.js
@ -1,52 +0,0 @@
|
|||||||
// #############################################################
|
|
||||||
// Module Imports
|
|
||||||
// #############################################################
|
|
||||||
const express = require('express');
|
|
||||||
const dotenv = require('dotenv');
|
|
||||||
const handlers = require('./Handlers.js');
|
|
||||||
|
|
||||||
// #############################################################
|
|
||||||
// Variables
|
|
||||||
// #############################################################
|
|
||||||
const port = 3000;
|
|
||||||
const locations = {
|
|
||||||
"topgg": "/hooks/vote",
|
|
||||||
"uptimeKuma": "/hooks/uptime"
|
|
||||||
};
|
|
||||||
|
|
||||||
// #############################################################
|
|
||||||
// Setup
|
|
||||||
// #############################################################
|
|
||||||
dotenv.config();
|
|
||||||
const app = express();
|
|
||||||
|
|
||||||
app.use(express.json());
|
|
||||||
|
|
||||||
// #############################################################
|
|
||||||
// Webhook Listeners
|
|
||||||
// #############################################################
|
|
||||||
|
|
||||||
// Genertic Webhook
|
|
||||||
app.post('/webhook', handlers.generic);
|
|
||||||
|
|
||||||
// Top.gg Votes
|
|
||||||
app.post(locations.topgg, handlers.topgg);
|
|
||||||
|
|
||||||
// Uptime Kuma Alerts
|
|
||||||
app.post(locations.uptimeKuma, handlers.uptimeKuma);
|
|
||||||
|
|
||||||
// Genertic Webhook
|
|
||||||
app.get('/webhook', handlers.generic);
|
|
||||||
|
|
||||||
// Top.gg Votes
|
|
||||||
app.get(locations.topgg, handlers.topgg);
|
|
||||||
|
|
||||||
// Uptime Kuma Alerts
|
|
||||||
app.get(locations.uptimeKuma, handlers.uptimeKuma);
|
|
||||||
|
|
||||||
// #############################################################
|
|
||||||
// Function Calls / Start Listening
|
|
||||||
// #############################################################
|
|
||||||
app.listen(port, () => {
|
|
||||||
console.log(`Webhook server is running on port ${port}`);
|
|
||||||
});
|
|
Loading…
Reference in New Issue
Block a user