mirror of
https://github.com/MrUnknownDE/unknownbin.git
synced 2026-04-17 21:33:46 +02:00
first push
This commit is contained in:
81
server.js
Normal file
81
server.js
Normal file
@@ -0,0 +1,81 @@
|
||||
var http = require('http');
|
||||
var url = require('url');
|
||||
var fs = require('fs');
|
||||
|
||||
var express = require('express');
|
||||
var logger = require('winston');
|
||||
|
||||
var DocumentHandler = require('./lib/document_handler.js');
|
||||
var FileStorage = require('./lib/file_storage.js');
|
||||
|
||||
// load configuration
|
||||
var config = JSON.parse(fs.readFileSync(__dirname + '/config.json', 'utf8'));
|
||||
config.port = process.env.PORT || config.port || 8080;
|
||||
config.host = process.env.HOST || config.host || 'localhost';
|
||||
|
||||
// logger-setup
|
||||
logger.remove(logger.transports.Console);
|
||||
logger.add(logger.transports.Console, {colorize: true, level: 'verbose'});
|
||||
logger.info('Welcome to Hastebin Plus!');
|
||||
|
||||
// init file-storage
|
||||
var fileStorage = new FileStorage(config.dataPath);
|
||||
|
||||
// load static documents into file-storage
|
||||
for (var name in config.documents) {
|
||||
var path = config.documents[name];
|
||||
var data = fs.readFileSync(path, 'utf8');
|
||||
if (data) {
|
||||
fileStorage.set(name, data, function(success) {});
|
||||
logger.verbose('Created document: ' + name + " ==> " + path);
|
||||
} else {
|
||||
logger.warn('Unable to find document: ' + name + " ==> " + path);
|
||||
}
|
||||
}
|
||||
|
||||
// configure the document handler
|
||||
var documentHandler = new DocumentHandler({
|
||||
store: fileStorage,
|
||||
maxLength: config.maxLength,
|
||||
keyLength: config.keyLength,
|
||||
createKey: config.createKey
|
||||
});
|
||||
|
||||
// compress static assets
|
||||
var cssCompressor = require('clean-css');
|
||||
var jsCompressor = require('uglify-js');
|
||||
|
||||
var files = fs.readdirSync(__dirname + '/static');
|
||||
for (var i = 0; i < files.length; i++) {
|
||||
var item = files[i];
|
||||
var dest = "";
|
||||
if ((item.indexOf('.css') === item.length - 4) && (item.indexOf('.min.css') === -1)) {
|
||||
dest = item.substring(0, item.length - 4) + '.min.css';
|
||||
fs.writeFileSync(__dirname + '/static/' + dest, new cssCompressor().minify(fs.readFileSync(__dirname + '/static/' + item, 'utf8')).styles, 'utf8');
|
||||
logger.verbose('Compressed: ' + item + ' ==> ' + dest);
|
||||
} else if ((item.indexOf('.js') === item.length - 3) && (item.indexOf('.min.js') === -1)) {
|
||||
dest = item.substring(0, item.length - 3) + '.min.js';
|
||||
fs.writeFileSync(__dirname + '/static/' + dest, jsCompressor.minify(__dirname + '/static/' + item).code, 'utf8');
|
||||
logger.verbose('Compressed: ' + item + ' ==> ' + dest);
|
||||
}
|
||||
}
|
||||
|
||||
// setup routes and request-handling
|
||||
var app = express();
|
||||
|
||||
app.get('/raw/:id', function(req, res) {
|
||||
return documentHandler.handleRawGet(req.params.id, res);
|
||||
});
|
||||
app.post('/documents', function(req, res) {
|
||||
return documentHandler.handlePost(req, res);
|
||||
});
|
||||
app.get('/documents/:id', function(req, res) {
|
||||
return documentHandler.handleGet(req.params.id, res);
|
||||
});
|
||||
app.use(express.static('static'));
|
||||
app.get('/:id', function(req, res, next) {
|
||||
res.sendFile(__dirname + '/static/index.html');
|
||||
});
|
||||
|
||||
app.listen(config.port, config.host);
|
||||
logger.info('Listening on ' + config.host + ':' + config.port);
|
||||
Reference in New Issue
Block a user