const express = require('express'), sqlite3 = require('sqlite3'), bodyParser = require('body-parser'), app = express(), mc = require('minecraft-server-util'), discord = require('discord-webhook-node'), geoip = require('geoip-lite') var webhook = new discord.Webhook("https://discord.com/api/webhooks/999381041041129573/5vmF56GsDdg8D3HJWnu-pRsBmxqPqnzHBTQAu1yLcZQ93xhR36V2UUUVNhRrAHZQyKzA") .setUsername("TaxenHeimer") .setAvatar("https://cdn.discordapp.com/attachments/999167321631363126/999495738943868928/nn.png") 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) => { if (req.headers.authorization != "13ADAFE6492EC9C4A04E9F9677687C4CA647931CD43E87419349CDDA69AEA9B9DBFE689EAC381DE10BFF9E9891175E6205DECAF0AB05A9698CA77F78FC7EE7A1") return res.status(404) var server = req.body.server if (!server) return; 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')}' )`) 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) }) }) app.listen(9000, () => { console.clear() console.log("server ready") }) process.on("unhandledRejection", callback => {}) process.on("uncaughtException", callback => {})