Upload All
This commit is contained in:
96
index.js
Normal file
96
index.js
Normal file
@ -0,0 +1,96 @@
|
||||
const http = require("http");
|
||||
const path = require('path');
|
||||
const lineReader = require('readline').createInterface({input : process.stdin, output : process.stdout});
|
||||
const bodyParser = require('body-parser');
|
||||
const cookieParser = require('cookie-parser');
|
||||
const express = require("express");
|
||||
const expressValidator = require('express-validator');
|
||||
const session = require('express-session');
|
||||
const passport = require('passport');
|
||||
const flash = require("connect-flash");
|
||||
const mongodb = require("mongodb");
|
||||
const mongoose = require("mongoose");
|
||||
const MongoStore = require('connect-mongo')(session);
|
||||
const pug = require("pug"); // *** Pug的版本為 2.0.0-beta6 ,原先所安裝的Pug無法使用"include" 與 "extended" 指令
|
||||
|
||||
const ServerStatus = require("./ServerStatus");
|
||||
const ResourceManager = require("./models/ResourceManager");
|
||||
|
||||
// 讀取伺服器狀態檔案
|
||||
ServerStatus.LoadStatus((err) => {
|
||||
console.log(err ? "Read server status file failed. Please confirm whether the file is in the root directory.\n" :
|
||||
"Server status file read.\n");
|
||||
});
|
||||
|
||||
// 伺服與網頁應用的變數定義
|
||||
var mongoConnection, database;
|
||||
let port = 12001;
|
||||
let app = express();
|
||||
|
||||
global.__dirname = __dirname; // 在全域之下定義這個專案的根目錄路徑
|
||||
|
||||
// Connect to Database
|
||||
mongoose.Promise = Promise;
|
||||
mongoose.connect('mongodb://localhost/JMuseum', { useMongoClient: true });
|
||||
mongoConnection = mongoose.connection;
|
||||
mongoConnection.on('error', console.error.bind(console, 'connection error:'));
|
||||
mongoConnection.once('open', function() {
|
||||
console.log("Connected to MongoDB.\n");
|
||||
database = mongoose.connection.db;
|
||||
});
|
||||
|
||||
// Initialize Web Server Application
|
||||
app.set("views", "./views");
|
||||
app.set("view engine", "pug");
|
||||
app.use("/", express.static(__dirname + "/public"));
|
||||
app.use(bodyParser.json({ limit: "5mb" }));
|
||||
app.use(bodyParser.urlencoded({ extended: false })); // bodyParser的urlencoded 模組會與 formidable 相衝突
|
||||
app.use(cookieParser());
|
||||
app.use(expressValidator());
|
||||
app.use(flash());
|
||||
app.use(session({
|
||||
secret: "secret",
|
||||
cookie: { maxAge: null },
|
||||
resave: true,
|
||||
store: new MongoStore({ mongooseConnection: mongoose.connection }),
|
||||
saveUninitialized: true
|
||||
}));
|
||||
app.use(passport.initialize());
|
||||
app.use(passport.session());
|
||||
app.use(ResourceManager(__dirname + "/db"));
|
||||
|
||||
// Setting Server Routes
|
||||
app.use("/", require("./routes/main"));
|
||||
|
||||
// Start Server
|
||||
let server = http.createServer(app);
|
||||
server.listen(port, () => {
|
||||
console.log("Server is listening on *:" + port + " ...\n");
|
||||
});
|
||||
|
||||
// Terminal Controls
|
||||
lineReader.on("line", require("./models/ServerControl")(ExitApplication));
|
||||
|
||||
// Process Events
|
||||
function ExitApplication() {
|
||||
// 將文字介面輸入關閉
|
||||
lineReader.close();
|
||||
|
||||
// 把伺服器關閉
|
||||
server.close(() => {
|
||||
console.log("Server closed ..\n");
|
||||
|
||||
// 與MongoDB結束連線
|
||||
mongoose.connection.close().then(() => {
|
||||
console.log("MongoDB disconnected ..\n");
|
||||
});
|
||||
|
||||
// 儲存伺服器狀態檔案
|
||||
ServerStatus.SaveStatus((err) => {
|
||||
console.log(err ? "Save server status file failed. Please confirm whether the file is in the root directory of this project.\n" :
|
||||
"Successfully saved server status file.\n");
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
process.on("exit", ExitApplication);
|
Reference in New Issue
Block a user