Guest User

Untitled

a guest
Jan 21st, 2020
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.40 KB | None | 0 0
  1.  
  2. const fetch = require("node-fetch"),
  3. btoa = require("btoa"),
  4. cookieParser = require("cookie-parser"),
  5. { resolve } = require("path"),
  6. express = require('express'),
  7. path = require("path"),
  8. api = express();
  9. api.listen(80, () => {
  10. console.log('Website & API up and running!')
  11. });
  12. //GUILDS STATS
  13. const fs = require("fs");
  14. const firebase = require("firebase");
  15. const dataName = 'Guilds';
  16. const defVal = 0;
  17. if (!fs.existsSync("./fbConfig.json")) {
  18. return console.log("You do not have the fbConfig.json file in your bot to continue. Visit this repository to learn how to do it: https://github.com/CapOliveiraBr/DBM-Firebase");
  19. }
  20. const fbConfig = JSON.parse(fs.readFileSync("./fbConfig.json", "utf-8"));
  21. let guildsresult;
  22. if (dataName && toString(defVal)) {
  23. try {
  24. firebase.initializeApp(fbConfig);
  25. const path = firebase.database().ref(`data/globals/${dataName}`);
  26. path.once("value")
  27. .then(snapshot => {
  28. if (snapshot.exists()) {
  29. guildsresult = snapshot.val();
  30. api.locals.Guilds = guildsresult;
  31. } else {
  32. guildsresult = defVal;
  33. api.locals.Guilds = guildsresult;
  34. }
  35. });
  36. } catch(err) {
  37. if (err.code == "app/duplicate-app") {
  38. const path = firebase.database().ref(`data/globals/${dataName}`);
  39. path.once("value")
  40. .then(snapshot => {
  41. if (snapshot.exists()) {
  42. guildsresult = snapshot.val();
  43. api.locals.Guilds = guildsresult;
  44. } else {
  45. guildsresult = defVal;
  46. api.locals.Guilds = guildsresult;
  47. }
  48. });
  49. } else {
  50. console.error(err);
  51. }
  52. }
  53. }
  54. //USERS STATS
  55.  
  56. const dataName1 = 'Users';
  57. const defVal1 = 0;
  58. if (!fs.existsSync("./fbConfig.json")) {
  59. return console.log("You do not have the fbConfig.json file in your bot to continue. Visit this repository to learn how to do it: https://github.com/CapOliveiraBr/DBM-Firebase");
  60. }
  61. let usersresult;
  62. if (dataName1 && toString(defVal1)) {
  63. try {
  64. firebase.initializeApp(fbConfig);
  65. const path = firebase.database().ref(`data/globals/${dataName1}`);
  66. path.once("value")
  67. .then(snapshot => {
  68. if (snapshot.exists()) {
  69. usersresult = snapshot.val();
  70. api.locals.Users = usersresult;
  71. } else {
  72. usersresult = defVal1;
  73. api.locals.Users = usersresult;
  74. }
  75. });
  76. } catch(err) {
  77. if (err.code == "app/duplicate-app") {
  78. const path = firebase.database().ref(`data/globals/${dataName1}`);
  79. path.once("value")
  80. .then(snapshot => {
  81. if (snapshot.exists()) {
  82. usersresult = snapshot.val();
  83. api.locals.Users = usersresult;
  84. } else {
  85. usersresult = defVal1;
  86. api.locals.Users = usersresult;
  87. }
  88. });
  89. } else {
  90. console.error(err);
  91. }
  92. }
  93. }
  94.  
  95. api.set("view engine", "ejs");
  96. api.use(express.static(resolve(__dirname, "public")));
  97. api.set("views", __dirname);
  98.  
  99. const dataDir = path.resolve(`${process.cwd()}${path.sep}`);
  100. api.use("/public", express.static(path.resolve(`${dataDir}${path.sep}public`)));
  101.  
  102. api.use(cookieParser());
  103. api.get("/login", (req, res) => {
  104. res.redirect(getLoginUrl());
  105. });
  106. api.get("/logout", function(req, res) {
  107. if (req.cookies["token"]) {
  108. res.clearCookie("token");
  109. res.redirect("/");
  110. } else {
  111. res.redirect("/");
  112. }
  113. });
  114.  
  115. api.use("/img", express.static(path.resolve(`${dataDir}${path.sep}img`)));
  116. api.get("/server/callback", async (req, res) => {
  117. let code = req.query.code;
  118. if (!code) return res.send(403);
  119. let tokenRes = await getToken(code);
  120. res.cookie("token", tokenRes.access_token);
  121. console.log(tokenRes.access_token)
  122. res.redirect("/dash");
  123. });
  124. api.get("/", (req, res) => {
  125. if(req.cookies["token"]) {
  126. Promise.all([getUser(req.cookies["token"]), getGuilds(req.cookies["token"])]).then(([user, guilds]) => {
  127. res.render("views/index", { user: user, guilds: guilds});
  128. })
  129. }
  130. else {
  131. res.render("views/index", { user: 'no', guilds: 'no'})
  132. }
  133. })
  134. api.get("/commands", (req, res) => {
  135. if(req.cookies["token"]) {
  136. Promise.all([getUser(req.cookies["token"]), getGuilds(req.cookies["token"])]).then(([user, guilds]) => {
  137. res.render("views/commands", { user: user, guilds: guilds});
  138. })
  139. }
  140. else {
  141. res.render("views/commands", { user: 'no', guilds: 'no'})
  142. }
  143. })
  144. api.get("/api", (req, res) => {
  145. if(req.cookies["token"]) {
  146. Promise.all([getUser(req.cookies["token"]), getGuilds(req.cookies["token"])]).then(([user, guilds]) => {
  147. res.render("views/api", { user: user, guilds: guilds});
  148. })
  149. }
  150. else {
  151. res.render("views/api", { user: 'no', guilds: 'no'})
  152. }
  153. })
  154. api.get("/radio", (req, res) => {
  155. if(req.cookies["token"]) {
  156. Promise.all([getUser(req.cookies["token"]), getGuilds(req.cookies["token"])]).then(([user, guilds]) => {
  157. res.render("views/radio", { user: user, guilds: guilds});
  158. })
  159. }
  160. else {
  161. res.render("views/radio", { user: 'no', guilds: 'no'})
  162. }
  163. })
  164. api.get("/dashboard", (req, res) => {
  165. if(req.cookies["token"]) {
  166. Promise.all([getUser(req.cookies["token"]), getGuilds(req.cookies["token"])]).then(([user, guilds]) => {
  167. res.render("views/dashboard", { user: user, guilds: guilds});
  168. })
  169. }
  170. else {
  171. res.render("views/dashboard", { user: 'no', guilds: 'no'})
  172. }
  173. })
  174. api.get("/dash", (req, res) => {
  175. if(req.cookies["token"]) {
  176. const Discord = require('discord.js')
  177. const { Permissions } = require('discord.js')
  178. const client = new Discord.Client();
  179. const fs = require("fs");
  180. const firebase = require("firebase");
  181. client.login("token");
  182. console.log([...client.guilds.keys()])
  183. Promise.all([getUser(req.cookies["token"]), getGuilds(req.cookies["token"])]).then(([user, guilds]) => {
  184. res.render("views/dash", { user: user, guilds: guilds, Permissions: Permissions, client: client, fs: fs, firebase: firebase});
  185. })
  186. }
  187. else {
  188. res.render("views/dash", { user: 'no', guilds: 'no'})
  189. }
  190. })
  191.  
  192.  
  193. api.get('/api/img/:animal', (req, res) => {
  194. const {animal} = req.params;
  195. const array = ["lion", "elephant", "giraffe", "leopard", "rhino", "tiger", "monkey", "zebra", "crocodile", "koala", "wolf", "bear", "deer", "fox", "horse", "cow", "dog", "cat", "eagle", "parrot", "duck", "penguin", "rabbit", "turtle", "motor", "car", "plane", "boat", "food", "nautre"]
  196. if(array.includes(animal)) {
  197. const fs = require('fs');
  198. const dir = "./img/" + animal[0].toUpperCase() + animal.slice(1);
  199. const files = fs.readdirSync(dir);
  200. const index = Math.floor(Math.random() * files.length);
  201. const output = files[index]
  202. const directory = dir.replace('./', '')
  203. const result = { url: `http://evobot.xyz/${directory}/${files[index]}` };
  204. res.json(result)}
  205. else {
  206. res.redirect('/404')
  207. }
  208. });
  209.  
  210. //api.get('/api/text/base64', (req, res) => {
  211. //let params = (new URL(document.location)).searchParams;
  212. //let text = params.get('text');
  213. //var filter = new Buffer('Hello');
  214. //var baseresult = base.toString('base64');
  215. //var result = { text: `${baseresult}` };
  216. // res.json(result)
  217. // });
  218.  
  219. const CLIENT_ID = "600291892340588554",
  220. CLIENT_SECRET = "secret",
  221. CLIENT_TOKEN = "token"
  222. let redirect = encodeURIComponent("http://localhost/server/callback");
  223. async function getToken(code) {
  224. const creds = btoa(`${CLIENT_ID}:${CLIENT_SECRET}`);
  225. const response = await (await fetch(
  226. `https://discordapp.com/api/oauth2/token?grant_type=authorization_code&code=${code}&redirect_uri=${redirect}`,
  227. {
  228. method: "POST",
  229. headers: {
  230. Authorization: `Basic ${creds}`
  231. }
  232. }
  233. )).json();
  234. return response;
  235. }
  236. async function getUser(token) {
  237. if (!token) return false;
  238. const userRes = await (await fetch(
  239. `https://discordapp.com/api/v6/users/@me`,
  240. {
  241. method: "GET",
  242. headers: {
  243. Authorization: `Bearer ${token}`
  244. }
  245. }
  246. )).json();
  247. return userRes;
  248. }
  249.  
  250. async function getGuilds(token) {
  251. const response = await (await fetch(
  252. `https://discordapp.com/api/v6/users/@me/guilds`,
  253. {
  254. method: "GET",
  255. headers: {
  256. Authorization: `Bearer ${token}`
  257. }
  258. }
  259. )).json();
  260. return response;
  261. }
  262.  
  263. function getLoginUrl(server_id = "") {
  264. return `https://discordapp.com/api/oauth2/authorize?client_id=${CLIENT_ID}&redirect_uri=${redirect}&response_type=code&scope=identify%20guilds`;
  265. }
  266. api.get("*", (req, res) => {
  267. res.render("views/404")
  268. });
Add Comment
Please, Sign In to add comment