196 lines
11 KiB
JavaScript
196 lines
11 KiB
JavaScript
console.log(`
|
|
|
|
KKKKKKKKK KKKKKKK tttt iiii
|
|
K:::::::K K:::::K ttt:::t i::::i
|
|
K:::::::K K:::::K t:::::t iiii
|
|
K:::::::K K::::::K t:::::t
|
|
KK::::::K K:::::KKK aaaaaaaaaaaaavvvvvvv vvvvvvv eeeeeeeeeeee rrrrr rrrrrrrrr ttttttt:::::ttttttt iiiiiii
|
|
K:::::K K:::::K a::::::::::::av:::::v v:::::vee::::::::::::ee r::::rrr:::::::::r t:::::::::::::::::t i:::::i
|
|
K::::::K:::::K aaaaaaaaa:::::av:::::v v:::::ve::::::eeeee:::::eer:::::::::::::::::r t:::::::::::::::::t i::::i
|
|
K:::::::::::K a::::a v:::::v v:::::ve::::::e e:::::err::::::rrrrr::::::rtttttt:::::::tttttt i::::i
|
|
K:::::::::::K aaaaaaa:::::a v:::::v v:::::v e:::::::eeeee::::::e r:::::r r:::::r t:::::t i::::i
|
|
K::::::K:::::K aa::::::::::::a v:::::v v:::::v e:::::::::::::::::e r:::::r rrrrrrr t:::::t i::::i
|
|
K:::::K K:::::K a::::aaaa::::::a v:::::v:::::v e::::::eeeeeeeeeee r:::::r t:::::t i::::i
|
|
KK::::::K K:::::KKKa::::a a:::::a v:::::::::v e:::::::e r:::::r t:::::t tttttt i::::i
|
|
K:::::::K K::::::Ka::::a a:::::a v:::::::v e::::::::e r:::::r t::::::tttt:::::ti::::::i
|
|
K:::::::K K:::::Ka:::::aaaa::::::a v:::::v e::::::::eeeeeeee r:::::r tt::::::::::::::ti::::::i
|
|
K:::::::K K:::::K a::::::::::aa:::a v:::v ee:::::::::::::e r:::::r tt:::::::::::tti::::::i
|
|
KKKKKKKKK KKKKKKK aaaaaaaaaa aaaa vvv eeeeeeeeeeeeee rrrrrrr ttttttttttt iiiiiiii`)
|
|
console.log("Initializing")
|
|
let express = require('express')
|
|
let app = express()
|
|
var profanity = require('profanity-middleware');
|
|
let { sequelize } = require('./models')
|
|
let sockets = require('./lib/sockets')
|
|
var Errors = require('./lib/errors.js')
|
|
let config = require('./config/server.js')
|
|
const expressSwagger = require('express-swagger-generator')(app);
|
|
let swaggerJsdoc = require('swagger-jsdoc')
|
|
const jwt = require('jsonwebtoken');
|
|
let options = {
|
|
swaggerDefinition: {
|
|
info: {
|
|
description: 'Kaverti',
|
|
title: 'Kaverti',
|
|
version: '1.0.0',
|
|
},
|
|
host: 'localhost:23981',
|
|
basePath: '/v1',
|
|
produces: [
|
|
"application/json"
|
|
],
|
|
schemes: ['http', 'https'],
|
|
securityDefinitions: {
|
|
JWT: {
|
|
type: 'apiKey',
|
|
in: 'header',
|
|
name: 'Authorization',
|
|
description: "JWT",
|
|
}
|
|
}
|
|
},
|
|
apis: ["./v1_routes/*.js", "./v2_routes/*.js"],
|
|
basedir: __dirname, //app absolute path
|
|
files: ["./v1_routes/*.js", "./v2_routes/*.js"] //Path to the API handle folder
|
|
};
|
|
//Middle-ware
|
|
let bodyParser = require('body-parser')
|
|
let expressSession = require('express-session')
|
|
let SequelizeStore = require('connect-session-sequelize')(expressSession.Store)
|
|
let compression = require('compression')
|
|
let helmet = require('helmet')
|
|
var Recaptcha = require('express-recaptcha').RecaptchaV3;
|
|
var recaptcha = new Recaptcha('6LdlbrwZAAAAAKvtcVQhVl_QaNOqmQ4PgyW3SKHy', '6LdlbrwZAAAAAMAWPVDrL8eNPxrws6AMDtLf1bgd');
|
|
const expAutoSan = require('express-autosanitizer');
|
|
const swaggerUi = require('swagger-ui-express');
|
|
let path = require('path')
|
|
let os = require('os')
|
|
const passport = require('passport');
|
|
const specs = swaggerJsdoc(options);
|
|
const csrf = require('csurf')
|
|
const csrfProtection = csrf({ cookie: true })
|
|
if(process.env.NODE_ENV === 'production') {
|
|
app.set('trust proxy', 1);
|
|
}
|
|
|
|
app.use(helmet())
|
|
app.use(compression())
|
|
app.use(bodyParser.json({ limit: '5mb' }))
|
|
app.use(bodyParser.urlencoded({ extended: true }))
|
|
app.use(expAutoSan.all);
|
|
console.log(os.hostname())
|
|
if(process.env.NODE_ENV !== 'test' && process.env.NODE_ENV !== 'production') {
|
|
app.use(require('morgan')('dev'))
|
|
}
|
|
if(!config.maintenance) {
|
|
/* V1 Routes */
|
|
app.use('/api/v1/user/', require('./v1_routes/user'))
|
|
app.use('/api/v1/passkey', require('./v1_routes/user_passkey'))
|
|
app.use('/api/v1/admin/admin_token', require('./v1_routes/admin_token'))
|
|
app.use('/api/v1/admin/passkey', require('./v1_routes/user_passkey'))
|
|
app.use('/api/v1/forums/category', require('./v1_routes/category'))
|
|
app.use('/api/v1/forums/thread', require('./v1_routes/thread'))
|
|
app.use('/api/v1/users/notification', require('./v1_routes/notification'))
|
|
app.use('/api/v1/forums/post', require('./v1_routes/post'))
|
|
app.use('/api/v1/kaverti/state', require('./v1_routes/state'))
|
|
app.use('/api/v1/users/report', require('./v1_routes/report'))
|
|
app.use('/api/v1/users/unban-request', require('./v1_routes/UnbanRequest'))
|
|
app.use('/api/v1/admin/ban', require('./v1_routes/ban'))
|
|
app.use('/api/v1/kaverti/search', require('./v1_routes/search'))
|
|
app.use('/api/v1/log', require('./v1_routes/log'))
|
|
app.use('/api/v1/forums/poll', require('./v1_routes/poll'))
|
|
app.use('/api/v1/forums/link_preview', require('./v1_routes/link_preview'))
|
|
app.use('/api/v1/kaverti/stats', require('./v1_routes/stats'))
|
|
app.use('/api/v1/users/login_status', require('./v1_routes/login_status'))
|
|
app.use('/api/v1/users/', require('./v1_routes/userutils'))
|
|
app.use('/api/v1/admin/killsession', require('./v1_routes/admin_kill_session'))
|
|
app.use('/api/v1/admin/ban', require('./v1_routes/ban'))
|
|
app.use('/api/v1/kaverti/job-apply', require('./v1_routes/StaffApplications'))
|
|
app.use('/api/v1/admin/', require('./v1_routes/admin'))
|
|
app.use('/api/v1/users/render', require('./v1_routes/avatar'))
|
|
app.use('/api/v1/avatar', require('./v1_routes/avatar'))
|
|
app.use('/api/v1/userinfo', require('./v1_routes/userinfo'))
|
|
app.use('/api/v1/wall', require('./v1_routes/user_wall'))
|
|
app.use('/api/v1/chat/conversation', require('./v1_routes/conversation'));
|
|
app.use('/api/v1/chat/message', require('./v1_routes/message'));
|
|
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(specs, {explorer: true}));
|
|
app.use('/api/v1/teams/', require('./v1_routes/team'))
|
|
app.use('/api/v1/teams/admin/', require('./v1_routes/team_admin'))
|
|
app.use('/api/v1/teams/wall/', require('./v1_routes/team_wall'))
|
|
app.use('/api/v1/marketplace', require('./v1_routes/marketplace'))
|
|
app.use('/api/v1/inventory', require('./v1_routes/inventory'))
|
|
app.use('/api/v1/transactions', require('./v1_routes/transactions'))
|
|
app.use('/api/v1/relationships', require('./v1_routes/relationship'))
|
|
app.use('/api/v1/about', require('./v1_routes/about'))
|
|
/* V2 Routes */
|
|
app.use('/api/v2/about', require('./v2_routes/about'))
|
|
app.use('/api/v2/user/', require('./v2_routes/user'))
|
|
app.use('/api/v2/passkey', require('./v2_routes/user_passkey'))
|
|
app.use('/api/v2/admin/admin_token', require('./v2_routes/admin_token'))
|
|
app.use('/api/v2/admin/passkey', require('./v2_routes/user_passkey'))
|
|
app.use('/api/v2/forums/category', require('./v2_routes/category'))
|
|
app.use('/api/v2/forums/thread', require('./v2_routes/thread'))
|
|
app.use('/api/v2/users/notification', require('./v2_routes/notification'))
|
|
app.use('/api/v2/forums/post', require('./v2_routes/post'))
|
|
app.use('/api/v2/kaverti/state', require('./v2_routes/state'))
|
|
app.use('/api/v2/users/report', require('./v2_routes/report'))
|
|
app.use('/api/v2/users/unban-request', require('./v2_routes/UnbanRequest'))
|
|
app.use('/api/v2/admin/ban', require('./v2_routes/ban'))
|
|
app.use('/api/v2/kaverti/search', require('./v2_routes/search'))
|
|
app.use('/api/v2/log', require('./v2_routes/log'))
|
|
app.use('/api/v2/forums/poll', require('./v2_routes/poll'))
|
|
app.use('/api/v2/forums/link_preview', require('./v2_routes/link_preview'))
|
|
app.use('/api/v2/kaverti/stats', require('./v2_routes/stats'))
|
|
app.use('/api/v2/users/login_status', require('./v2_routes/login_status'))
|
|
app.use('/api/v2/users/', require('./v2_routes/userutils'))
|
|
app.use('/api/v2/admin/killsession', require('./v2_routes/admin_kill_session'))
|
|
app.use('/api/v2/admin/ban', require('./v2_routes/ban'))
|
|
app.use('/api/v2/kaverti/job-apply', require('./v2_routes/StaffApplications'))
|
|
app.use('/api/v2/admin/', require('./v2_routes/admin'))
|
|
app.use('/api/v2/users/render', require('./v2_routes/avatar'))
|
|
app.use('/api/v2/avatar', require('./v2_routes/avatar'))
|
|
app.use('/api/v2/userinfo', require('./v2_routes/userinfo'))
|
|
app.use('/api/v2/wall', require('./v2_routes/user_wall'))
|
|
app.use('/api/v2/chat/conversation', require('./v2_routes/conversation'));
|
|
app.use('/api/v2/chat/message', require('./v2_routes/message'));
|
|
app.use('/api/v2/teams/', require('./v2_routes/team'))
|
|
app.use('/api/v2/teams/admin/', require('./v2_routes/team_admin'))
|
|
app.use('/api/v2/teams/wall/', require('./v2_routes/team_wall'))
|
|
app.use('/api/v2/marketplace', require('./v2_routes/marketplace'))
|
|
app.use('/api/v2/inventory', require('./v2_routes/inventory'))
|
|
app.use('/api/v2/transactions', require('./v2_routes/transactions'))
|
|
app.use('/api/v2/relationships', require('./v2_routes/relationship'))
|
|
app.use('/api/v2/nodeinfo', require('./v2_routes/node'))
|
|
app.use('/api/v2/node/', require('./v2_routes/node'))
|
|
app.use('/api/v2/nodes/', require('./v2_routes/node'))
|
|
app.use('/api/v2/awards/', require('./v2_routes/award'))
|
|
app.use('/api/v2/blog', require('./v2_routes/blog'))
|
|
app.use('/api/v2/feedback', require('./v2_routes/feedback'))
|
|
app.use(require('./lib/errorHandler'))
|
|
app.set('trust proxy', true)
|
|
} else {
|
|
app.use('/api/v1/userinfo', require('./v1_routes/userinfo'))
|
|
app.use('/api/v1/kaverti/state', require('./v1_routes/state'))
|
|
app.use('/api/v1/', require('./v1_routes/maintenance'))
|
|
app.use(require('./lib/errorHandler'))
|
|
app.set('trust proxy', true)
|
|
}
|
|
function main () {
|
|
let server = app.listen(config.port, () => {
|
|
console.log('Initialized')
|
|
console.log('Listening on port 0.0.0.0:' + config.port)
|
|
|
|
app.locals.appStarted = true
|
|
app.emit('appStarted')
|
|
})
|
|
|
|
sockets.init(app, server)
|
|
}
|
|
if(process.env.NODE_ENV === 'test') {
|
|
sequelize.sync({ force: true }).then(main)
|
|
} else {
|
|
main()
|
|
}
|
|
module.exports = app
|
|
|