Upload All

This commit is contained in:
Alan
2018-02-26 14:09:18 +08:00
parent 42d3a3fc46
commit 46257f08b0
1024 changed files with 204324 additions and 0 deletions

96
index.js Normal file
View 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);