107 lines
3.7 KiB
JavaScript
107 lines
3.7 KiB
JavaScript
'use strict'
|
|
|
|
const Hapi = require('@hapi/hapi')
|
|
const HAPIWebSocket = require('hapi-plugin-websocket')
|
|
const HAPIAuthBasic = require('@hapi/basic')
|
|
const { configureAuth } = require('./auth')
|
|
const { configureAccountRoutes } = require('./routes/account')
|
|
const { configureLoginRoutes } = require('./routes/login')
|
|
const { configureEncounterRoutes } = require('./routes/encounter')
|
|
const { configureMailRoutes } = require('./routes/mail')
|
|
const { configurePoolRoutes } = require('./routes/pool')
|
|
const { configureTournamentRoutes } = require('./routes/tournament')
|
|
const { configureGroupRoutes } = require('./routes/group')
|
|
const { configureParticipantRoutes } = require('./routes/participant')
|
|
const { configureTeamRoutes } = require('./routes/team')
|
|
const { configureRoutes } = require('./routes')
|
|
const { configureWsRoutes } = require('./routes/ws')
|
|
const { configurePdfRoutes } = require('./routes/pdf')
|
|
require('dotenv').config()
|
|
|
|
// const Bcrypt = require('bcrypt');
|
|
|
|
// Create a server with a host and port
|
|
const init = async () => {
|
|
const server = new Hapi.Server({
|
|
host: process.env.HOST,
|
|
port: process.env.PORT,
|
|
routes: {
|
|
cors: true,
|
|
validate: {
|
|
failAction: async (request, h, err) => {
|
|
if (process.env.NODE_ENV === 'production') {
|
|
// In prod, log a limited error message and throw the default Bad Request error.
|
|
console.error('ValidationError:', err.message)
|
|
// throw Boom.badRequest(`Invalid request payload input`)
|
|
} else {
|
|
// During development, log and respond with the full error.
|
|
console.error(err)
|
|
throw err
|
|
}
|
|
},
|
|
},
|
|
},
|
|
})
|
|
|
|
await configureAuth(server)
|
|
await configureAccountRoutes(server)
|
|
await configureLoginRoutes(server)
|
|
await configureEncounterRoutes(server)
|
|
await configureMailRoutes(server)
|
|
await configureTournamentRoutes(server)
|
|
await configureGroupRoutes(server)
|
|
await configureParticipantRoutes(server)
|
|
await configurePdfRoutes(server)
|
|
await configurePoolRoutes(server)
|
|
await configureTeamRoutes(server)
|
|
await configureWsRoutes(server)
|
|
await configureRoutes(server)
|
|
|
|
await server.register({
|
|
plugin: require('hapi-plugin-mysql'),
|
|
options: {
|
|
host: process.env.DB_HOST,
|
|
port: process.env.DB_PORT,
|
|
user: process.env.DB_USER,
|
|
password: process.env.DB_PASS,
|
|
database: process.env.DB_DB,
|
|
connectionLimit: 10,
|
|
debug: false,
|
|
waitForConnections: true,
|
|
multipleStatements: true,
|
|
},
|
|
})
|
|
|
|
/* register HAPI plugins */
|
|
// /* register Basic authentication stategy */
|
|
// server.auth.strategy("basic", "basic", {
|
|
// validate: async (request, username, password, h) => {
|
|
// let isValid = false
|
|
// let credentials = null
|
|
// if (username === "foo" && password === "bar") {
|
|
// isValid = true
|
|
// credentials = { username }
|
|
// }
|
|
// return { isValid, credentials }
|
|
// }
|
|
// })
|
|
await server.register(HAPIWebSocket)
|
|
// await server.register(HAPIAuthBasic)
|
|
await server.start()
|
|
return server
|
|
}
|
|
|
|
// TODO: dieser Teil wird für tests benötigt, aber dann startet passenger nicht mehr.
|
|
// if (require.main === module) {
|
|
// Nur starten, wenn direkt ausgeführt (z.B. node server.js)
|
|
init()
|
|
.then((server) => {
|
|
console.log('Server running at:', server.info.uri)
|
|
})
|
|
.catch((error) => {
|
|
console.log(error)
|
|
})
|
|
// }
|
|
|
|
// module.exports = { init }
|