TaxenHeimer/server/index.js

114 lines
5.4 KiB
JavaScript
Raw Permalink Normal View History

2022-07-21 11:27:00 -04:00
const express = require('express'),
sqlite3 = require('sqlite3'),
bodyParser = require('body-parser'),
app = express(),
mc = require('minecraft-server-util'),
discord = require('discord-webhook-node'),
2022-07-24 21:51:31 -04:00
geoip = require('geoip-lite'),
fs = require('fs'),
config = require('./config.json')
var webhook = new discord.Webhook(config.main)
2022-07-21 11:27:00 -04:00
.setUsername("TaxenHeimer")
.setAvatar("https://cdn.discordapp.com/attachments/999167321631363126/999495738943868928/nn.png")
2022-07-24 21:51:31 -04:00
var webhookfronce = new discord.Webhook(config.fronce)
.setAvatar("https://cdn.discordapp.com/attachments/999167321631363126/999495738943868928/nn.png")
.setUsername("TaxenHeimer")
var neithook = new discord.Webhook(config.neit)
.setAvatar("https://cdn.discordapp.com/attachments/999167321631363126/999495738943868928/nn.png")
.setUsername("TaxenHeimer")
2022-07-21 11:27:00 -04:00
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))
db = new sqlite3.Database('./servers.db')
db.exec(`CREATE TABLE IF NOT EXISTS servers (
host text not null,
version text not null,
players text not null,
playerlist text not null,
ping text not null,
motd text not null,
timestamp text not null
)`)
function countrify(code) {
var config = require('./countrycode.json')
return config[code]
}
app.post('/server', async(req, res) => {
var server = req.body.server
2022-07-24 21:51:31 -04:00
if (!server) return res.send("specify a server")
var ipfile = fs.readFileSync(`${__dirname}/ip.txt`, 'utf8')
if (ipfile.includes(server)) return;
res.send("allah")
2022-07-21 11:27:00 -04:00
mc.status(server, 25565, {enableSRV: true}).then(res => {
var playerlist = ""
if (res.players.sample != null) {
res.players.sample.forEach(e => playerlist += `${e.name}::${e.id}\n`)
} else {
playerlist += "No players"
}
var ip = geoip.lookup(server)
if (res.motd.clean.includes("'")) var cleanmotd = res.motd.clean.replace(/'/g, "\\'")
else cleanmotd = res.motd.clean
if (res.motd.clean.includes('-')) var cleanmotd = res.motd.clean.replace(/-/g, '\\-')
else cleanmotd = res.motd.clean
db.exec(`INSERT INTO servers VALUES (
'${server}:25565',
'${res.version.name}',
'${res.players.online}/${res.players.max}',
'${playerlist}',
'${res.roundTripLatency}ms',
'${cleanmotd}',
'${(new Date()).toLocaleDateString('en-US')}'
)`)
2022-07-24 21:51:31 -04:00
if (ip.country === "FR") {
const embed = new discord.MessageBuilder()
.setTitle("TaxenHeimer")
.setColor("#00ff00")
.addField("**Host**", `\`${server}:25565\``, true)
.addField("**Country**", `\`${countrify(ip.country)}\``)
.addField("**Version**", `\`${res.version.name} (${res.version.protocol})\``, true)
.addField("**Players**", `\`${res.players.online}/${res.players.max}\``, true)
.addField("**Ping**", `\`${res.roundTripLatency}ms\``, true)
.addField("**Motd**", "```\n"+res.motd.clean+"\n```")
.addField("**Playerlist Sample**", "```\n"+playerlist+"\n```")
.addField("**IP Range**", "```\n" + geoip.pretty(ip.range[0]) + " - " + geoip.pretty(ip.range[1]) + "```")
.setTimestamp()
webhookfronce.send(embed)
}
if (res.version.name.includes("1.17")) {
const embed = new discord.MessageBuilder()
.setText("<@390491795655622657>")
.setTitle("TaxenHeimer")
.setColor("#00ff00")
.addField("**Host**", `\`${server}:25565\``, true)
.addField("**Country**", `\`${countrify(ip.country)}\``)
.addField("**Version**", `\`${res.version.name} (${res.version.protocol})\``, true)
.addField("**Players**", `\`${res.players.online}/${res.players.max}\``, true)
.addField("**Ping**", `\`${res.roundTripLatency}ms\``, true)
.addField("**Motd**", "```\n"+res.motd.clean+"\n```")
.addField("**Playerlist Sample**", "```\n"+playerlist+"\n```")
.addField("**IP Range**", "```\n" + geoip.pretty(ip.range[0]) + " - " + geoip.pretty(ip.range[1]) + "```")
.setTimestamp()
neithook.send(embed)
}
2022-07-21 11:27:00 -04:00
const embed = new discord.MessageBuilder()
.setTitle("TaxenHeimer")
.setColor("#00ff00")
.addField("**Host**", `\`${server}:25565\``, true)
.addField("**Country**", `\`${countrify(ip.country)}\``)
.addField("**Version**", `\`${res.version.name} (${res.version.protocol})\``, true)
.addField("**Players**", `\`${res.players.online}/${res.players.max}\``, true)
.addField("**Ping**", `\`${res.roundTripLatency}ms\``, true)
.addField("**Motd**", "```\n"+res.motd.clean+"\n```")
.addField("**Playerlist Sample**", "```\n"+playerlist+"\n```")
.addField("**IP Range**", "```\n" + geoip.pretty(ip.range[0]) + " - " + geoip.pretty(ip.range[1]) + "```")
.setTimestamp()
webhook.send(embed)
2022-07-24 21:51:31 -04:00
fs.appendFileSync(`${server}\n`)
}).catch(e => {})
2022-07-21 11:27:00 -04:00
})
app.listen(9000, () => {
console.clear()
console.log("server ready")
})
process.on("unhandledRejection", callback => {})
process.on("uncaughtException", callback => {})