2019-10-01 21:34:02 +02:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
process.env['UV_THREADPOOL_SIZE'] = '128';
|
|
|
|
process.env['CP_VER'] = new Date().getTime().toString();
|
2019-10-08 20:29:17 +02:00
|
|
|
require('events').EventEmitter.defaultMaxListeners = 15;
|
2019-10-01 21:34:02 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Configuration dependencies.
|
|
|
|
*/
|
|
|
|
|
|
|
|
var config = require('./config/production/config');
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Node dependencies.
|
|
|
|
*/
|
|
|
|
|
|
|
|
var path = require('path');
|
|
|
|
var lookup = {};
|
|
|
|
try {
|
|
|
|
var MaxMindReader = require('maxmind').Reader;
|
2020-04-07 03:11:00 +02:00
|
|
|
lookup.country = new MaxMindReader(
|
2019-10-01 21:34:02 +02:00
|
|
|
require('fs').readFileSync(
|
|
|
|
path.join(path.dirname(__filename), 'files', 'GeoLite2-Country.mmdb')
|
|
|
|
)
|
|
|
|
);
|
2020-04-07 03:11:00 +02:00
|
|
|
lookup.asn = new MaxMindReader(
|
|
|
|
require('fs').readFileSync(
|
|
|
|
path.join(path.dirname(__filename), 'files', 'GeoLite2-ASN.mmdb')
|
|
|
|
)
|
|
|
|
);
|
2019-10-01 21:34:02 +02:00
|
|
|
} catch (err) {
|
2020-04-07 03:11:00 +02:00
|
|
|
console.log('NOT FILE GeoLite2-Country.mmdb OR GeoLite2-ASN.mmdb');
|
2019-10-01 21:34:02 +02:00
|
|
|
}
|
|
|
|
var cookieParser = require('cookie-parser');
|
|
|
|
var bodyParser = require('body-parser');
|
|
|
|
var express = require('express');
|
|
|
|
var app = express();
|
|
|
|
|
2019-11-11 02:12:38 +01:00
|
|
|
app.use(function(req, res, next) {
|
|
|
|
res.setHeader('X-Powered-By', 'CinemaPress');
|
|
|
|
next();
|
|
|
|
});
|
2020-05-03 01:46:17 +02:00
|
|
|
app.use('/ping', function(req, res) {
|
|
|
|
return res.send('pong');
|
|
|
|
});
|
2019-11-11 02:12:38 +01:00
|
|
|
|
2019-10-01 21:34:02 +02:00
|
|
|
/**
|
|
|
|
* Route dependencies.
|
|
|
|
*/
|
|
|
|
|
2020-02-19 03:29:10 +01:00
|
|
|
var files = require('./routes/files');
|
2019-10-01 21:34:02 +02:00
|
|
|
var iframe = require('./routes/iframe');
|
|
|
|
var player = require('./routes/player');
|
|
|
|
var episode = require('./routes/episode');
|
|
|
|
var robots = require('./routes/robots');
|
2019-12-13 23:19:45 +01:00
|
|
|
var opensearch = require('./routes/opensearch');
|
2019-10-01 21:34:02 +02:00
|
|
|
var rss = require('./routes/rss');
|
|
|
|
var admin = require('./routes/admin');
|
|
|
|
var website = require('./routes/website');
|
2020-01-06 23:57:25 +01:00
|
|
|
var api = require('./routes/api');
|
2019-10-01 21:34:02 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Middleware dependencies.
|
|
|
|
*/
|
|
|
|
|
2020-03-08 04:42:33 +01:00
|
|
|
var rebooting = require('./lib/CP_rebooting');
|
2019-10-01 21:34:02 +02:00
|
|
|
var userinfo = require('./lib/CP_userinfo');
|
|
|
|
var loadavg = require('./lib/CP_loadavg');
|
|
|
|
var nginx = require('./lib/CP_nginx');
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Port.
|
|
|
|
*/
|
|
|
|
|
2020-01-06 23:57:25 +01:00
|
|
|
var port = process.env.PORT || 3000;
|
2019-10-01 21:34:02 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Template engine.
|
|
|
|
*/
|
|
|
|
|
|
|
|
app.set('views', [
|
|
|
|
path.join(__dirname, 'themes', 'default', 'views'),
|
|
|
|
path.join(__dirname, 'themes', config.theme, 'views')
|
|
|
|
]);
|
|
|
|
app.set('view engine', 'ejs');
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Middleware functions.
|
|
|
|
*/
|
|
|
|
|
|
|
|
app.enable('trust proxy');
|
|
|
|
|
|
|
|
app.use(cookieParser());
|
|
|
|
app.use(bodyParser.json({ limit: '64mb' }));
|
|
|
|
app.use(bodyParser.urlencoded({ limit: '64mb', extended: true }));
|
|
|
|
|
2020-03-08 04:42:33 +01:00
|
|
|
//app.use(rebooting());
|
2019-10-01 21:34:02 +02:00
|
|
|
app.use(nginx());
|
|
|
|
app.use(
|
|
|
|
/^(?:\/mobile-version|\/tv-version|)?/,
|
|
|
|
express.static(path.join(path.dirname(__filename), '/'))
|
|
|
|
);
|
2020-02-19 03:29:10 +01:00
|
|
|
app.use('/files', files);
|
2020-02-25 21:10:58 +01:00
|
|
|
app.use(userinfo(lookup));
|
2020-02-19 03:29:10 +01:00
|
|
|
app.use(/^(?:\/mobile-version|\/tv-version|)?\/player.*$/, player);
|
|
|
|
app.use(/^(?:\/mobile-version|\/tv-version|)?\/episode.*$/, episode);
|
2019-10-01 21:34:02 +02:00
|
|
|
app.use(/^(?:\/mobile-version|\/tv-version|)?\/robots\.txt$/, robots);
|
2019-12-13 23:19:45 +01:00
|
|
|
app.use(/^(?:\/mobile-version|\/tv-version|)?\/opensearch\.xml$/, opensearch);
|
2020-02-19 03:29:10 +01:00
|
|
|
app.use(/^(?:\/mobile-version|\/tv-version|)?\/iframe/, iframe);
|
2019-10-01 21:34:02 +02:00
|
|
|
app.use(/^(?:\/mobile-version|\/tv-version|)?\/rss\.xml.*$/, rss);
|
|
|
|
app.use('/' + config.urls.admin, admin);
|
|
|
|
app.use(loadavg());
|
2020-01-06 23:57:25 +01:00
|
|
|
app.use(/^(?:\/mobile-version|\/tv-version|)?\/api/, api);
|
2019-10-01 21:34:02 +02:00
|
|
|
app.use(/^(?:\/mobile-version|\/tv-version|)?/, website);
|
|
|
|
|
|
|
|
app.use(function(err, req, res, next) {
|
2019-10-09 03:51:57 +02:00
|
|
|
if (res.headersSent) return next();
|
2019-10-01 21:34:02 +02:00
|
|
|
err.status = err.status ? err.status : 404;
|
|
|
|
err.message = err.message ? err.message : 'Not Found';
|
2019-10-13 03:13:56 +02:00
|
|
|
if (err.status === 301 || err.status === 302) {
|
2019-10-15 04:43:47 +02:00
|
|
|
res.writeHead(err.status, { Location: err.message });
|
|
|
|
return res.end();
|
2019-10-13 03:13:56 +02:00
|
|
|
}
|
2019-10-01 21:34:02 +02:00
|
|
|
return res.status(err.status).render('error', {
|
|
|
|
search: config.urls.search,
|
|
|
|
status: err.status,
|
|
|
|
message: err.message,
|
|
|
|
language: config.language
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
app.use(function(req, res) {
|
2019-10-09 03:51:57 +02:00
|
|
|
if (res.headersSent) return;
|
2019-10-01 21:34:02 +02:00
|
|
|
return res.status(404).render('error', {
|
|
|
|
search: config.urls.search,
|
|
|
|
status: 404,
|
|
|
|
message: 'Not Found',
|
|
|
|
language: config.language
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
app.listen(port);
|