*Should probably not leak my db credentials*

This commit is contained in:
Timeraa
2018-12-01 13:25:12 +01:00
parent 769b6465d1
commit 34e0755b78
8 changed files with 2393 additions and 6 deletions

2
.gitignore vendored
View File

@@ -4,4 +4,4 @@ dist
website
server
.vscode
DiscordBot
.env

74
DiscordBot/index.js Normal file
View File

@@ -0,0 +1,74 @@
const Discord = require('discord.js');
const client = new Discord.Client();
var mysql = require('mysql')
var utf8 = require('utf8')
require('dotenv').load()
var con = mysql.createConnection({
host: "localhost",
user: process.env.dbUser,
password: process.env.dbPassword,
database: 'premid'
});
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
})
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
client.user.setStatus("invisible")
setInterval(updateCredits, 5*1000)
});
async function updateCredits() {
var dbData = await query(`SELECT * FROM credits`)
var devRole = client.guilds.first().roles.find(r => r.name == "Developer").id
var conRole = client.guilds.first().roles.find(r => r.name == "Contributor").id
var patRole = client.guilds.first().roles.find(r => r.name == "Patron").id
var donRole = client.guilds.first().roles.find(r => r.name == "Donator").id
var traRole = client.guilds.first().roles.find(r => r.name == "Translator").id
var pat20Role = client.guilds.first().roles.find(r => r.name == "20$").id
var pat10Role = client.guilds.first().roles.find(r => r.name == "10$").id
var pat5Role = client.guilds.first().roles.find(r => r.name == "5$").id
var pat1Role = client.guilds.first().roles.find(r => r.name == "1$").id
var results = client.guilds.first().members.map(async m => {
return [m, (m.roles.get(devRole) || m.roles.get(conRole) || m.roles.get(patRole) || m.roles.get(donRole) || m.roles.get(traRole))]
})
var patronLevel
Promise.all(results).then(completed => {
dbRows = dbData.rows
completed.map(result => {
patronLevel = "#000000"
if(result[0].roles.has(pat20Role)) patronLevel = result[0].roles.get(pat20Role).hexColor
if(result[0].roles.has(pat10Role)) patronLevel = result[0].roles.get(pat10Role).hexColor
if(result[0].roles.has(pat5Role)) patronLevel = result[0].roles.get(pat5Role).hexColor
if(result[0].roles.has(pat1Role)) patronLevel = result[0].roles.get(pat1Role).hexColor
if(result[1]) {
if(dbRows.find(row => row.userID == result[0].id)) {
query(`UPDATE credits SET name = '${utf8.encode(result[0].displayName)}', avatarURL = '${result[0].user.avatarURL}', type = '${result[1].name}', color = '${result[1].hexColor}', patronColor = '${patronLevel}' WHERE userID = '${result[0].id}'`)
} else {
query(`INSERT INTO credits (userID, name, avatarURL, type, color, patronColor) VALUES ('${result[0].id}', '${utf8.encode(result[0].displayName)}', '${result[0].user.avatarURL}', '${result[1].name}', '${result[1].hexColor}', '${patronLevel}')`)
}
} else {
if(dbRows.find(row => row.userID == result[0].id)) {
query(`DELETE FROM credits WHERE userID = '${result[0].id}'`)
}
}
})
})
}
function query(...data) {
return new Promise((resolve, reject) => {
con.query(...data, (err, rows, fields, result) => {
if (err) return reject(err);
resolve({ rows, fields, result });
});
}).catch(err => console.log("Error while querying + " + err))
}
client.login('NTAzNTU3MDg3MDQxNjgzNDU4.DtuCFg.ysltcHzVGKx51h4qENdKocB88rc');

137
DiscordBot/package-lock.json generated Normal file
View File

@@ -0,0 +1,137 @@
{
"name": "premid",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"async-limiter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
"integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
},
"bignumber.js": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz",
"integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA=="
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"discord.js": {
"version": "11.4.2",
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-11.4.2.tgz",
"integrity": "sha512-MDwpu0lMFTjqomijDl1Ed9miMQe6kB4ifKdP28QZllmLv/HVOJXhatRgjS8urp/wBlOfx+qAYSXcdI5cKGYsfg==",
"requires": {
"long": "4.0.0",
"prism-media": "0.0.3",
"snekfetch": "3.6.4",
"tweetnacl": "1.0.0",
"ws": "4.1.0"
}
},
"dotenv": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.1.0.tgz",
"integrity": "sha512-/veDn2ztgRlB7gKmE3i9f6CmDIyXAy6d5nBq+whO9SLX+Zs1sXEgFLPi+aSuWqUuusMfbi84fT8j34fs1HaYUw=="
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
},
"mysql": {
"version": "2.16.0",
"resolved": "https://registry.npmjs.org/mysql/-/mysql-2.16.0.tgz",
"integrity": "sha512-dPbN2LHonQp7D5ja5DJXNbCLe/HRdu+f3v61aguzNRQIrmZLOeRoymBYyeThrR6ug+FqzDL95Gc9maqZUJS+Gw==",
"requires": {
"bignumber.js": "4.1.0",
"readable-stream": "2.3.6",
"safe-buffer": "5.1.2",
"sqlstring": "2.3.1"
}
},
"prism-media": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/prism-media/-/prism-media-0.0.3.tgz",
"integrity": "sha512-c9KkNifSMU/iXT8FFTaBwBMr+rdVcN+H/uNv1o+CuFeTThNZNTOrQ+RgXA1yL/DeLk098duAeRPP3QNPNbhxYQ=="
},
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
},
"readable-stream": {
"version": "2.3.6",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "1.0.0",
"process-nextick-args": "2.0.0",
"safe-buffer": "5.1.2",
"string_decoder": "1.1.1",
"util-deprecate": "1.0.2"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"snekfetch": {
"version": "3.6.4",
"resolved": "https://registry.npmjs.org/snekfetch/-/snekfetch-3.6.4.tgz",
"integrity": "sha512-NjxjITIj04Ffqid5lqr7XdgwM7X61c/Dns073Ly170bPQHLm6jkmelye/eglS++1nfTWktpP6Y2bFXjdPlQqdw=="
},
"sqlstring": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
"integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A="
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"requires": {
"safe-buffer": "5.1.2"
}
},
"tweetnacl": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz",
"integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins="
},
"utf8": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz",
"integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ=="
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"ws": {
"version": "4.1.0",
"resolved": "http://registry.npmjs.org/ws/-/ws-4.1.0.tgz",
"integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==",
"requires": {
"async-limiter": "1.0.0",
"safe-buffer": "5.1.2"
}
}
}
}

17
DiscordBot/package.json Normal file
View File

@@ -0,0 +1,17 @@
{
"name": "premid",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Timeraa",
"license": "ISC",
"dependencies": {
"discord.js": "^11.4.2",
"dotenv": "^6.1.0",
"mysql": "^2.16.0",
"utf8": "^3.0.0"
}
}

View File

@@ -1,5 +1,5 @@
$(document).ready(async function() {
fetch('https://api.premid.app/credits').then(async response => {
fetch('//localhost:8080/credits').then(async response => {
var result = await response.json()
var firstItemInRow;
var currItemInRow = 0

View File

@@ -2,11 +2,12 @@ const express = require('express')
const app = express()
var mysql = require('mysql')
var utf8 = require('utf8')
require('dotenv').load();
var con = mysql.createConnection({
host: "localhost",
user: "Timeraa",
password: "Kw!BXS9Y8$",
user: process.env.dbUser,
password: process.env.dbPassword,
database: 'premid'
});
@@ -28,7 +29,7 @@ app.get('/credits', async function (req, res) {
var result = await query("SELECT * FROM credits")
var resultArray = []
result.rows.map(row => {
resultArray.push({name: utf8.decode(row.name), tag: row.tag, avatarURL: row.avatarURL, type: row.type})
resultArray.push({name: utf8.decode(row.name), avatar: row.avatarURL, role: row.type, roleColor: row.color, patronColor: row.patronColor})
})
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify(resultArray));

2156
api/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -4,13 +4,15 @@
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
"start": "nodemon index"
},
"author": "Timeraa",
"license": "ISC",
"dependencies": {
"dotenv": "^6.1.0",
"express": "^4.16.4",
"mysql": "^2.16.0",
"nodemon": "^1.18.7",
"utf8": "^3.0.0"
}
}