Files
BotsCord/website/index.js
T
2022-08-02 18:14:51 +02:00

117 lines
3.6 KiB
JavaScript

const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
const fs = require('fs');
const path = require('path');
const session = require('express-session');
const passport = require('passport');
var DiscordStrategy = require('passport-discord').Strategy;
const MemoryStore = require("memorystore")(session);
const bodyParser = require('body-parser');
var showdown = require('showdown'),
converter = new showdown.Converter();
var bot = require('./routers/bot');
var admin = require('./routers/admin');
var auth = require('./routers/auth');
var client = require('../index');
passport.serializeUser(function (user, done) {
done(null, user);
});
passport.deserializeUser(function (obj, done) {
done(null, obj);
});
//import models
const Banned = require('../models/site-ban');
// set up session
app.use(session({
store: new MemoryStore({ checkPeriod: 86400000 }),
secret: "#YoourrFunnySecretShouldBeLongerThanThisOrdasfjkadsnkfanslkfjasnfdsajnfkdjn#",
resave: false,
saveUninitialized: false,
}));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(passport.initialize());
app.use(passport.session());
// set up view engine
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, '/views'));
// set up static files
app.use(express.static(path.join(__dirname, 'public')));
// Import routers
app.use('/bot', bot);
app.use('/admin', admin);
app.use('/auth', auth);
var scopes = ['identify', 'email', 'guilds', 'guilds.join'];
var prompt = 'consent'
passport.use(new DiscordStrategy({
clientID: '934087523649609768',
clientSecret: 'nPKjKvOCOyyhDaQM64qcJYbd6CdhCxLh',
callbackURL: 'http://localhost:3000/auth/callback',
scope: scopes,
prompt: prompt
},
function (accessToken, refreshToken, profile, done) {
Banned.findOne({ user: profile.id }, function (err, user) {
if (err) {
console.log(err);
return done(err);
}
if (user) {
console.log('User is banned');
return done(err, false);
} else {
return done(null, profile);
}
});
}));
// set up routes
app.get('/', (req, res) => {
var message = req.session.message;
req.session.message = null;
var error = req.session.error;
req.session.error = null;
if (message) {
res.render('index', {
message: message,
user: req.user,
markdown: converter,
});
return
}
if(error){
res.render('index', {
error: error,
user: req.user,
markdown: converter,
});
}else{
res.render('index.ejs',{
user: req.user,
markdown: converter,
});
}
});
app.get("/robots.txt", function (req, res) {
res.set('Content-Type', 'text/plain');
res.send(`Sitemap: https://botscord.site/sitemap.xml`);
});
app.get("/sitemap.xml", async function (req, res) {
let link = "<url><loc>https://botscord.site/</loc></url>";
let botdataforxml = await botsdata.find()
botdataforxml.forEach(bot => {
link += "\n<url><loc>https://botscord.site/bot/" + bot.botID + "</loc></url>";
})
res.set('Content-Type', 'text/xml');
res.send(`<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="https://www.google.com/schemas/sitemap-image/1.1">${link}</urlset>`);
});
app.listen(port, () => {
console.log('Your app is listening on port ' + port);
});
module.exports.client = client;