//! Deps const express = require('express'); const helmet = require('helmet'); const compression = require('compression'); const cors = require('cors'); const morgan = require('morgan'); const chalk = require('chalk'); const hbs = require('express-handlebars'); const UA = require('ua-parser-js'); const exec = require('shell-exec'); const simpleIcons = require('simple-icons'); //const con = require('./constants'); let { port, hostname } = { port: 3621 //hostname: '67.182.206.28' }; const app = express(); app.engine( 'hbs', hbs({ extname: 'hbs', defaultView: 'default', helpers: { ifeq: function(a, b, options) { if (a === b) { return options.fn(this); } } } }) ); app.set('view engine', 'hbs'); app.set('json spaces', 4); app.use('/assets', express.static('./assets')); app.set('view options', { layout: false }); app.use(express.json()); app.use( express.urlencoded({ extended: true }) ); app.use(helmet()); app.use(compression()); app.use(cors()); // Logging app.use( morgan((tokens, req, res) => { return [ chalk.hex('#34ace0').bold(`[ ${tokens.method(req, res)} ]`), chalk.hex('#ffb142').bold(tokens.status(req, res)), chalk.hex('#ff5252').bold(req.hostname + tokens.url(req, res)), chalk.hex('#2ed573').bold(tokens['response-time'](req, res) + 'ms'), chalk.hex('#f78fb3').bold('@ ' + tokens.date(req, res)) ].join(' '); }) ); /* app.use([ '/portfolio', '/p' ], require('./routes/portfolio')); app.use('/lore', require('./routes/lore')); app.use('/art', require('./routes/art')); */ //app.use('/p', require('./routes/p')); module.exports = (client) => { app.get('/', async (req, res) => { res.render('index', { layout: 'main', name: `ry/`, host: req.hostname, portfolio: { code: [ { name: 'portfolio', id: 'portfolio', source: '/portfolio', tags: [ 'Node', 'Handlebars', 'SASS' ] }, { name: 'homepage', id: 'homepage', source: '/homepage', tags: [ 'Node', 'Handlebars', 'SCSS' ] }, { name: 'yugen.work', id: 'yugen', source: '/yugen', tags: [ 'Node', 'Handlebars', 'SCSS' ] }, { name: 'thaldrin', id: 'thaldrin', source: '/thaldrin', tags: [ 'Node', 'Handlebars', 'SCSS', 'Discord' ] }, { name: 'kaito', id: 'kaito', source: '/kaito', tags: [ 'Node', 'Twitter', 'Discord' ] }, { name: 'yiff', id: 'yiff', source: '/yiff', tags: [ 'Node', 'NPM' ] } ] } }); }); app.get('/portfolio', async (req, res) => { res.redirect('https://gitdab.com/y/shyzu'); }); app.get('/homepage', async (req, res) => { res.redirect('https://gitdab.com/y/website'); }); app.get('/yugen', async (req, res) => { res.redirect('https://yugen.work'); }); app.get('/thaldrin', async (req, res) => { res.redirect('https://thaldr.in/source'); }); app.get('/kaito', async (req, res) => { res.redirect('https://github.com/codepupper/kaito'); }); app.get('/yiff', async (req, res) => { res.redirect('https://npm.im/yiff'); }); app.get('/update', async (req, res) => { //console.log(req.headers['user-agent']); if (req.headers.authorization === con.updateToken) { await exec('git pull') .then((r) => { console.log('Pulled latest changes'); res.status(200).jsonp({ success: true, message: 'Successfully pulled latest changes' }); process.exit(); //trying.edit('```fix\n' + r.stdout + '```'); }) .catch((error) => { res.status(400).jsonp({ success: false, message: error.message }); console.error(error); }); } else { res.status(400).jsonp({ success: false, message: 'You are not authorized to access this Endpoint' }); } }); app.listen(port /* , hostname */, () => { console.log(`${chalk.blue('[ Server ]')} Listening on ${port}`); }); };