add checks to create links
This commit is contained in:
parent
78d976d7f9
commit
e45113f078
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"cmd-promise": "^1.2.0",
|
||||||
"discord.js": "^14.16.3",
|
"discord.js": "^14.16.3",
|
||||||
"jsonfile": "^6.1.0",
|
"jsonfile": "^6.1.0",
|
||||||
"mymc-lib": "^1.1.0"
|
"mymc-lib": "^1.1.0"
|
||||||
|
@ -3,6 +3,7 @@ import jsonfile from 'jsonfile';
|
|||||||
import MyMCLib from 'mymc-lib';
|
import MyMCLib from 'mymc-lib';
|
||||||
import unirest from 'unirest';
|
import unirest from 'unirest';
|
||||||
import { readFileSync } from 'fs';
|
import { readFileSync } from 'fs';
|
||||||
|
import cmd from 'cmd-promise';
|
||||||
|
|
||||||
// Paths to config and tokens files
|
// Paths to config and tokens files
|
||||||
const tokensFile = './tokens.json';
|
const tokensFile = './tokens.json';
|
||||||
@ -29,9 +30,9 @@ function saveTokens(tokens) {
|
|||||||
// Automatically request a new token if it doesn't exist or is invalid
|
// Automatically request a new token if it doesn't exist or is invalid
|
||||||
async function fetchAndSaveToken(userId, interaction) {
|
async function fetchAndSaveToken(userId, interaction) {
|
||||||
return unirest
|
return unirest
|
||||||
.post(config.endpoint)
|
.post(config.endpoint.toString())
|
||||||
.headers({ 'Accept': 'application/json', 'Content-Type': 'application/json' })
|
.headers({ 'Accept': 'application/json', 'Content-Type': 'application/json' })
|
||||||
.send({ "username": `mc_${userId}`, "password": config.password})
|
.send({ "username": `mc_${userId}`, "password": config.password.toString()})
|
||||||
.then((tokenInfo) => {
|
.then((tokenInfo) => {
|
||||||
const tokens = loadTokens();
|
const tokens = loadTokens();
|
||||||
tokens[userId] = tokenInfo.body.token; // Save the new token
|
tokens[userId] = tokenInfo.body.token; // Save the new token
|
||||||
@ -251,15 +252,92 @@ client.on('interactionCreate', async interaction => {
|
|||||||
handleResponse(restartResult, interaction);
|
handleResponse(restartResult, interaction);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'create-link':
|
case 'create-link':
|
||||||
const customLinkResult = await handleApiCall(() => MyMC.createMyLink(), userId, interaction);
|
try {
|
||||||
handleResponse(customLinkResult, interaction);
|
// Check if the server is running
|
||||||
break;
|
const runningCheck = await cmd(`node /home/mchost/scripts/docker_exec.js mc_${interaction.user.id} "/" "echo test"`);
|
||||||
|
console.log(runningCheck.stdout);
|
||||||
|
|
||||||
|
if (runningCheck.stdout.includes("not running")) {
|
||||||
|
const response = {
|
||||||
|
success: false
|
||||||
|
};
|
||||||
|
return sendSexyEmbed("Server Booted", "Please use /start-server to boot the server.", interaction)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the server is online
|
||||||
|
const out = await cmd(`sh /home/mchost/scripts/check_online.sh mc_${interaction.user.id}`);
|
||||||
|
console.log(out.stdout);
|
||||||
|
|
||||||
|
// Assuming out.stdout is expected to be a string; '0' indicates still booting
|
||||||
|
if (out.stdout.trim() === '0') {
|
||||||
|
const response = {
|
||||||
|
success: false
|
||||||
|
};
|
||||||
|
return sendSexyEmbed("Still Booting", "Please wait one minute and try again.", interaction)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create custom link if checks pass
|
||||||
|
const customLinkResult = await handleApiCall(() => MyMC.createMyLink(), userId, interaction);
|
||||||
|
handleResponse(customLinkResult, interaction);
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error during create-link command:', error);
|
||||||
|
const response = {
|
||||||
|
success: false,
|
||||||
|
fields: [
|
||||||
|
{ name: "Error", value: "An error occurred while processing your request." },
|
||||||
|
{ name: "Suggestion", value: "Please try again later." }
|
||||||
|
]
|
||||||
|
};
|
||||||
|
handleResponse(response, interaction);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
case 'create-sftp-link':
|
case 'create-sftp-link':
|
||||||
const sftpLinkResult = await handleApiCall(() => MyMC.createLinkSFTP(), userId, interaction);
|
try {
|
||||||
handleResponse(sftpLinkResult, interaction, true);
|
// Check if the server is running
|
||||||
break;
|
const runningCheck = await cmd(`node /home/mchost/scripts/docker_exec.js mc_${interaction.user.id} "/" "echo test"`);
|
||||||
|
console.log(runningCheck.stdout);
|
||||||
|
|
||||||
|
if (runningCheck.stdout.includes("not running")) {
|
||||||
|
const response = {
|
||||||
|
success: false
|
||||||
|
};
|
||||||
|
return sendSexyEmbed("Server Booted", "Please use /start-server to boot the server.", interaction)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the server is online
|
||||||
|
const out = await cmd(`sh /home/mchost/scripts/check_online.sh mc_${interaction.user.id}`);
|
||||||
|
console.log(out.stdout);
|
||||||
|
|
||||||
|
// Assuming out.stdout is expected to be a string; '0' indicates still booting
|
||||||
|
if (out.stdout.trim() === '0') {
|
||||||
|
const response = {
|
||||||
|
success: false
|
||||||
|
};
|
||||||
|
return sendSexyEmbed("Still Booting", "Please wait one minute and try again.", interaction)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create SFTP link if checks pass
|
||||||
|
const sftpLinkResult = await handleApiCall(() => MyMC.createLinkSFTP(), userId, interaction);
|
||||||
|
handleResponse(sftpLinkResult, interaction, true);
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error during create-sftp-link command:', error);
|
||||||
|
const response = {
|
||||||
|
success: false,
|
||||||
|
fields: [
|
||||||
|
{ name: "Error", value: "An error occurred while processing your request." },
|
||||||
|
{ name: "Suggestion", value: "Please try again later." }
|
||||||
|
]
|
||||||
|
};
|
||||||
|
handleResponse(response, interaction, true);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
case 'get-connection-hash':
|
case 'get-connection-hash':
|
||||||
const hash = await handleApiCall(() => MyMC.getConnectionHash(), userId, interaction);
|
const hash = await handleApiCall(() => MyMC.getConnectionHash(), userId, interaction);
|
||||||
|
Loading…
Reference in New Issue
Block a user