| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- // call the packages we need
- var express = require('express'); // call express
- var app = express(); // define our app using express
- var bodyParser = require('body-parser');
- var request = require("request");
- const edurouter = require('./pbl');
- const mongo = require('./mongo');
- const weixin = require('./weixin');
- const cocoflow = require('./cocoflow');
- const szdjg = require('./szdjg');
- const baoantoken = require('./baoantoken')
- const morgan = require('morgan');
- var path = require("path");
- var mongoose = require('mongoose');
- var session = require('express-session');
- const MongoStore = require('connect-mongo')(session);
- var port = "7003"; // set our port
- // const cors = require('cors')
- app.use(morgan('dev'));
- // configure app to use bodyParser()
- // this will let us get the data from a POST
- app.use(bodyParser.urlencoded({ extended: true, limit: '3mb' }));
- app.use(bodyParser.json({ limit: '3mb' }));
- // app.use(cors());
- //暂时全跨域
- app.use(function (req, res, next) {
- ///var allowedOrigins = [config.local.origin,'http://cocorobo.hk','http://www.cocorobo.hk','https://cocorobo.hk','http://cloud.cocorobo.hk','https://cloud.cocorobo.hk'];
- var origin = req.headers.origin || "*";
- //if(allowedOrigins.indexOf(origin) > -1){
- res.setHeader('Access-Control-Allow-Origin', origin);
- //}
- res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
- res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
- res.header('Access-Control-Allow-Credentials', true);
- //修改程序信息与版本
- res.header('X-Powered-By', ' 3.2.1')
- //内容类型:如果是post请求必须指定这个属性
- res.header('Content-Type', 'application/json;charset=utf-8')
- next();
- });
- let local = 'mongodb://root:usestudio-1@123.58.32.151:11641/cocorobo?authSource=admin'
- // let local = 'mongodb://root:usestudio-1@183.36.26.8:11641/cocorobo?authSource=admin'
- mongoose.connect(local, {
- dbName: 'cocorobo',
- useNewUrlParser: true,
- useUnifiedTopology: true,
- useCreateIndex: true,
- useFindAndModify: true,
- autoIndex: false, // Don't build indexes
- reconnectTries: Number.MAX_VALUE, // Never stop trying to reconnect
- reconnectInterval: 50000, // Reconnect every 500ms
- poolSize: 10000, // Maintain up to 10 socket connections
- // If not connected, return errors immediately rather than waiting for reconnect
- bufferMaxEntries: 0,
- connectTimeoutMS: 10000, // Give up initial connection after 10 seconds
- socketTimeoutMS: 45000, // Close sockets after 45 seconds of inactivity
- family: 4 // Use IPv4, skip trying IPv6
- })
-
- const db = mongoose.connection;
- // 配置session,使用MongoDB存储session数据
- // MongoDB连接字符串,使用与mongo.js中相同的连接方式
- // 注意:需要根据实际的MongoDB连接信息调整
- app.use(session({
- name: "cocorobo",
- secret: 'cocorobo',
- resave: true,
- saveUninitialized: true,
- cookie: {
- sameSite: "None",
- domain: '.cocorobo.cn',
- httpOnly: false,
- secure: false, // 根据实际情况调整,如果是HTTPS则设为true
- maxAge: 24 * 60 * 60000 * 365
- },
- store: new MongoStore({
- mongooseConnection: db,
- touchAfter: 24 * 3600
- }),
- }));
- /*
- app.use(cors({
- origin:[`http:${config.local.origin}`,'http://www.cocorobo.hk','https://cocorobo.hk','http://cloud.cocorobo.hk','https://cloud.cocorobo.hk'],
- methods:['GET','POST','PUT','DELETE'],
- credentials: true // enable set cookie
- }));
- */
- // all of our routes will be prefixed with /api
- app.use('/api/pbl', edurouter);
- app.use('/api/mongo', mongo);
- app.use('/api/weixin', weixin);
- app.use('/api/cocoflow', cocoflow);
- app.use('/api/szdjg', szdjg);
- app.use('/api/bat/getToken', async function (req, res, next) {
- let ticket = req.query.ticket
- await baoantoken.getToken(ticket, res)
- });
- // app.use('/game', game);
- app.all('/download', function (req, res, next) {
- //req.body.url = "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E4%B8%8B%E8%BD%BD%20%284%29.doc";
- request({
- url: req.body.url,
- method: "GET",
- encoding: null,
- headers: {
- 'Accept-Encoding': 'gzip, deflate'
- }
- },
- function (error, response, body) {
- if (!error && response.statusCode == 200) {
- res.setHeader('Content-Type', 'application/force-download');
- res.setHeader('Content-Disposition', 'attachment; filename=' + path.basename(req.body.url));
- res.setHeader('Content-Length', body.length);
- res.send(body);
- }
- });
- });
- // 捕获未处理的异常
- process.on('uncaughtException', (error) => {
- console.error("未处理的异常:", error);
- // 这里可以添加更多的错误处理逻辑,比如发送通知或记录日志
- });
- // 捕获未处理的Promise拒绝
- process.on('unhandledRejection', (reason, promise) => {
- console.error('未处理的Promise拒绝:', promise, '原因:', reason);
- // 这里可以添加更多的错误处理逻辑,比如发送通知或记录日志
- });
- // START THE SERVER
- // =============================================================================
- app.listen(port, '0.0.0.0');
- console.log('app happens on port ' + port);
|