rojects/source/server/index.ts

64 lines
2.1 KiB
TypeScript

import express from 'express';
import cookieParser from 'cookie-parser';
import path from 'path';
import { ROOT } from './rootDir';
import { jwtMiddleware, requireAuth } from '../auth-connector/source/server/auth';
import projectsRouter from './routes/projects';
import filesRouter from './routes/files';
import localesRouter from './routes/locales';
import layoutRouter from './routes/layout';
import rojosRouter from './routes/rojos';
import userSettingsRouter from './routes/userSettings';
import { generateLocales } from './localeGenerator';
import deployRouter from './routes/deploy';
import localFilesRouter from './routes/localFiles';
import remoteProxyRouter from './routes/remoteProxy';
import { EmailService } from './email/EmailService';
generateLocales();
const app = express();
app.use( '/api/deploy', deployRouter );
app.set( 'trust proxy', 1 );
app.use( express.json() );
app.use( express.text( { type: 'text/plain' } ) );
app.use( cookieParser() );
app.use( jwtMiddleware );
app.use( express.static( path.join( ROOT, 'build', 'app' ) ) );
app.use( '/api/projects', projectsRouter );
app.use( '/api/files', filesRouter );
app.use( '/api/locales', localesRouter );
app.use( '/api/layout', layoutRouter );
app.use( '/api/rojos', rojosRouter );
app.use( '/api/user/settings', userSettingsRouter );
app.get( '/api/auth/me', requireAuth, ( req, res ) => res.json( req.auth ) );
if ( process.env.ROJECT_ELECTRON === 'true' ) {
app.use( '/api/local', localFilesRouter );
app.use( '/api/remote', remoteProxyRouter );
}
app.get( '/edit', ( _req, res ) => res.redirect( '/editor.html' ) );
export function startServer( port: number ): void {
app.listen( port, () =>
{
const time = new Date().toISOString();
console.log( `Roject running on http://localhost:${port}` );
EmailService.sendEmail(
EmailService.reportEmail,
'Roject — server started',
`Server started at ${time} on port ${port}.`
).catch( () => {} );
} );
}
if ( require.main === module ) {
const PORT = process.env.PORT ? Number( process.env.PORT ) : 3000;
startServer( PORT );
}