split pathname into array, URL decode, fix #65

This commit is contained in:
jomo 2015-01-04 03:37:51 +01:00
parent bbc71b0d6c
commit cbbfb73bea
4 changed files with 16 additions and 10 deletions

View File

@ -15,7 +15,7 @@ var human_status = {
// GET avatar request
module.exports = function(req, res) {
var start = new Date();
var uuid = (req.url.pathname.split("/")[2] || "").split(".")[0];
var uuid = (req.url.path_list[2] || "").split(".")[0];
var size = parseInt(req.url.query.size) || config.default_size;
var def = req.url.query.default;
var helm = req.url.query.hasOwnProperty("helm");

View File

@ -20,7 +20,7 @@ var human_status = {
// GET render request
module.exports = function(req, res) {
var start = new Date();
var raw_type = (req.url.pathname.split("/")[2] || "");
var raw_type = (req.url.path_list[2] || "");
// validate type
if (raw_type != "body" && raw_type != "head") {
@ -33,7 +33,7 @@ module.exports = function(req, res) {
}
var body = raw_type == "body";
var uuid = (req.url.pathname.split("/")[3] || "").split(".")[0];
var uuid = (req.url.path_list[3] || "").split(".")[0];
var def = req.url.query.default;
var scale = parseInt(req.url.query.scale) || config.default_scale;
var helm = req.url.query.hasOwnProperty("helm");

View File

@ -8,7 +8,7 @@ var lwip = require("lwip");
// GET skin request
module.exports = function(req, res) {
var start = new Date();
var uuid = (req.url.pathname.split("/")[2] || "").split(".")[0];
var uuid = (req.url.path_list[2] || "").split(".")[0];
var def = req.url.query.default;
var etag = null;

View File

@ -1,6 +1,7 @@
#!/usr/bin/env node
var config = require("./modules/config");
var logging = require("./modules/logging");
var querystring = require("querystring");
var config = require("./modules/config");
var clean = require("./modules/cleaner");
var http = require("http");
var mime = require("mime");
@ -16,7 +17,7 @@ var routes = {
};
function asset_request(req, res) {
var filename = __dirname + "/public/" + req.url.pathname;
var filename = __dirname + "/public/" + req.url.path_list.join("/");
fs.exists(filename, function(exists) {
if (exists) {
fs.readFile(filename, function(err, file_buffer) {
@ -41,16 +42,21 @@ function asset_request(req, res) {
}
function requestHandler(req, res) {
var querystring = url.parse(req.url).query;
var query = url.parse(req.url).query;
var request = req;
// we need to use url.parse and give the result to url.parse because nodejs
request.url = url.parse(req.url, querystring);
request.url = url.parse(req.url, query);
request.url.query = request.url.query || {};
// remove trailing and double slashes + other junk
request.url.pathname = path.resolve(request.url.pathname);
var path_list = path.resolve(request.url.pathname).split("/");
for (var i = 0; i < path_list.length; i++) {
// URL decode
path_list[i] = querystring.unescape(path_list[i]);
}
request.url.path_list = path_list;
var local_path = request.url.pathname.split("/")[1];
var local_path = request.url.path_list[1];
console.log(request.method + " " + request.url.href);
if (request.method == "GET" || request.method == "HEAD") {
try {