mirror of
https://github.com/PretendoNetwork/account.git
synced 2026-07-15 00:00:57 -05:00
91 lines
2.4 KiB
JavaScript
91 lines
2.4 KiB
JavaScript
process.title = 'Pretendo - Account';
|
|
|
|
const configManager = require('./config-manager');
|
|
|
|
configManager.configure();
|
|
|
|
const express = require('express');
|
|
const morgan = require('morgan');
|
|
const xmlparser = require('./middleware/xml-parser');
|
|
const cache = require('./cache');
|
|
const database = require('./database');
|
|
const util = require('./util');
|
|
const logger = require('../logger');
|
|
|
|
const { config } = configManager;
|
|
|
|
const { http: { port } } = config;
|
|
const app = express();
|
|
|
|
const conntest = require('./services/conntest');
|
|
const nnid = require('./services/nnid');
|
|
const nasc = require('./services/nasc');
|
|
const datastore = require('./services/datastore');
|
|
const api = require('./services/api');
|
|
const localcdn = require('./services/local-cdn');
|
|
|
|
// START APPLICATION
|
|
|
|
// Create router
|
|
logger.info('Setting up Middleware');
|
|
app.use(morgan('dev'));
|
|
app.use(express.json());
|
|
app.use(express.urlencoded({
|
|
extended: true
|
|
}));
|
|
app.use(xmlparser);
|
|
|
|
// import the servers into one
|
|
app.use(conntest);
|
|
app.use(nnid);
|
|
app.use(nasc);
|
|
app.use(datastore);
|
|
app.use(api);
|
|
app.use(localcdn);
|
|
|
|
// 404 handler
|
|
logger.info('Creating 404 status handler');
|
|
app.use((request, response) => {
|
|
const fullUrl = util.fullUrl(request);
|
|
const deviceId = request.headers['X-Nintendo-Device-ID'] || 'Unknown';
|
|
|
|
logger.warn(`HTTP 404 at ${fullUrl} from ${deviceId}`);
|
|
|
|
response.set('Content-Type', 'text/xml');
|
|
response.set('Server', 'Nintendo 3DS (http)');
|
|
response.set('X-Nintendo-Date', new Date().getTime());
|
|
|
|
response.status(404);
|
|
response.send('<errors><error><cause/><code>0008</code><message>Not Found</message></error></errors>');
|
|
});
|
|
|
|
// non-404 error handler
|
|
logger.info('Creating non-404 status handler');
|
|
app.use((error, request, response) => {
|
|
const status = error.status || 500;
|
|
const fullUrl = util.fullUrl(request);
|
|
const deviceId = request.headers['X-Nintendo-Device-ID'] || 'Unknown';
|
|
|
|
logger.warn(`HTTP ${status} at ${fullUrl} from ${deviceId}: ${error.message}`);
|
|
|
|
response.status(status);
|
|
response.json({
|
|
app: 'api',
|
|
status,
|
|
error: error.message
|
|
});
|
|
});
|
|
|
|
async function main() {
|
|
// Starts the server
|
|
logger.info('Starting server');
|
|
|
|
await database.connect();
|
|
await cache.connect();
|
|
|
|
app.listen(port, () => {
|
|
logger.success(`Server started on port ${port}`);
|
|
});
|
|
}
|
|
|
|
main().catch(console.error); |