forked from svrjs/svrjs
chore: release SVR.JS 4.0.2
This commit is contained in:
parent
3bf8ff799e
commit
f4fc6ba165
7 changed files with 45 additions and 34 deletions
|
@ -1,6 +1,7 @@
|
|||
const fs = require("fs");
|
||||
const http = require("http");
|
||||
const defaultPageCSS = require("../res/defaultPageCSS.js");
|
||||
const statusCodes = require("../res/statusCodes.js");
|
||||
const generateErrorStack = require("../utils/generateErrorStack.js");
|
||||
const serverHTTPErrorDescs = require("../res/httpErrorDescriptions.js");
|
||||
const generateServerString = require("../utils/generateServerString.js");
|
||||
|
@ -265,14 +266,14 @@ function clientErrorHandler(err, socket) {
|
|||
parseInt(process.version.split(".")[0].substring(1)) >= 16
|
||||
) {
|
||||
// Disable custom error page for HTTP SSL error
|
||||
res.writeHead(errorCode, http.STATUS_CODES[errorCode], cheaders);
|
||||
res.writeHead(errorCode, statusCodes[errorCode], cheaders);
|
||||
res.write(
|
||||
`<!DOCTYPE html><html><head><title>{errorMessage}</title><meta name="viewport" content="width=device-width, initial-scale=1.0" /><style>${defaultPageCSS}${"</style></head><body><h1>{errorMessage}</h1><p>{errorDesc}</p><p><i>{server}</i></p></body></html>"
|
||||
.replace(
|
||||
/{errorMessage}/g,
|
||||
errorCode.toString() +
|
||||
" " +
|
||||
http.STATUS_CODES[errorCode]
|
||||
statusCodes[errorCode]
|
||||
.replace(/&/g, "&")
|
||||
.replace(/</g, "<")
|
||||
.replace(/>/g, ">")
|
||||
|
@ -316,7 +317,7 @@ function clientErrorHandler(err, socket) {
|
|||
fs.readFile(errorFile, (err, data) => {
|
||||
try {
|
||||
if (err) throw err;
|
||||
res.writeHead(errorCode, http.STATUS_CODES[errorCode], cheaders);
|
||||
res.writeHead(errorCode, statusCodes[errorCode], cheaders);
|
||||
responseEnd(
|
||||
data
|
||||
.toString()
|
||||
|
@ -324,7 +325,7 @@ function clientErrorHandler(err, socket) {
|
|||
/{errorMessage}/g,
|
||||
errorCode.toString() +
|
||||
" " +
|
||||
http.STATUS_CODES[errorCode]
|
||||
statusCodes[errorCode]
|
||||
.replace(/&/g, "&")
|
||||
.replace(/</g, "<")
|
||||
.replace(/>/g, ">")
|
||||
|
@ -378,7 +379,7 @@ function clientErrorHandler(err, socket) {
|
|||
} else if (err.code == "ELOOP") {
|
||||
additionalError = 508;
|
||||
}
|
||||
res.writeHead(errorCode, http.STATUS_CODES[errorCode], cheaders);
|
||||
res.writeHead(errorCode, statusCodes[errorCode], cheaders);
|
||||
res.write(
|
||||
`<!DOCTYPE html><html><head><title>{errorMessage}</title><meta name="viewport" content="width=device-width, initial-scale=1.0" /><style>${defaultPageCSS}</style></head><body><h1>{errorMessage}</h1><p>{errorDesc}</p>${
|
||||
additionalError == 404
|
||||
|
@ -389,7 +390,7 @@ function clientErrorHandler(err, socket) {
|
|||
/{errorMessage}/g,
|
||||
errorCode.toString() +
|
||||
" " +
|
||||
http.STATUS_CODES[errorCode]
|
||||
statusCodes[errorCode]
|
||||
.replace(/&/g, "&")
|
||||
.replace(/</g, "<")
|
||||
.replace(/>/g, ">")
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
const http = require("http");
|
||||
const fs = require("fs");
|
||||
const net = require("net");
|
||||
const defaultPageCSS = require("../res/defaultPageCSS.js");
|
||||
|
@ -10,6 +9,7 @@ const matchHostname = require("../utils/matchHostname.js");
|
|||
const generateServerString = require("../utils/generateServerString.js");
|
||||
const parseURL = require("../utils/urlParser.js");
|
||||
const deepClone = require("../utils/deepClone.js");
|
||||
const statusCodes = require("../res/statusCodes.js");
|
||||
|
||||
let serverconsole = {};
|
||||
let middleware = [];
|
||||
|
@ -134,7 +134,7 @@ function requestHandler(req, res) {
|
|||
req.socket.remoteAddress == "localhost")
|
||||
) {
|
||||
let headers = config.getCustomHeaders();
|
||||
res.writeHead(204, http.STATUS_CODES[204], headers);
|
||||
res.writeHead(204, statusCodes[204], headers);
|
||||
res.end();
|
||||
return;
|
||||
}
|
||||
|
@ -173,9 +173,9 @@ function requestHandler(req, res) {
|
|||
"Server responded with " + code.toString() + " code."
|
||||
);
|
||||
}
|
||||
if (typeof codeDescription != "string" && http.STATUS_CODES[code]) {
|
||||
if (typeof codeDescription != "string" && statusCodes[code]) {
|
||||
if (!headers) headers = codeDescription;
|
||||
codeDescription = http.STATUS_CODES[code];
|
||||
codeDescription = statusCodes[code];
|
||||
}
|
||||
lastStatusCode = code;
|
||||
}
|
||||
|
@ -444,7 +444,7 @@ function requestHandler(req, res) {
|
|||
fs.readFile(errorFile, (err, data) => {
|
||||
try {
|
||||
if (err) throw err;
|
||||
res.writeHead(errorCode, http.STATUS_CODES[errorCode], cheaders);
|
||||
res.writeHead(errorCode, statusCodes[errorCode], cheaders);
|
||||
res.responseEnd(
|
||||
data
|
||||
.toString()
|
||||
|
@ -452,7 +452,7 @@ function requestHandler(req, res) {
|
|||
/{errorMessage}/g,
|
||||
errorCode.toString() +
|
||||
" " +
|
||||
http.STATUS_CODES[errorCode]
|
||||
statusCodes[errorCode]
|
||||
.replace(/&/g, "&")
|
||||
.replace(/</g, "<")
|
||||
.replace(/>/g, ">")
|
||||
|
@ -523,7 +523,7 @@ function requestHandler(req, res) {
|
|||
additionalError = 508;
|
||||
}
|
||||
|
||||
res.writeHead(errorCode, http.STATUS_CODES[errorCode], cheaders);
|
||||
res.writeHead(errorCode, statusCodes[errorCode], cheaders);
|
||||
res.write(
|
||||
`<!DOCTYPE html><html><head><title>{errorMessage}</title><meta name="viewport" content="width=device-width, initial-scale=1.0" /><style>${defaultPageCSS}</style></head><body><h1>{errorMessage}</h1><p>{errorDesc}</p>${
|
||||
additionalError == 404
|
||||
|
@ -534,7 +534,7 @@ function requestHandler(req, res) {
|
|||
/{errorMessage}/g,
|
||||
errorCode.toString() +
|
||||
" " +
|
||||
http.STATUS_CODES[errorCode]
|
||||
statusCodes[errorCode]
|
||||
.replace(/&/g, "&")
|
||||
.replace(/</g, "<")
|
||||
.replace(/>/g, ">")
|
||||
|
@ -620,7 +620,7 @@ function requestHandler(req, res) {
|
|||
: 301;
|
||||
|
||||
// Write the response header with the appropriate status code and message
|
||||
res.writeHead(statusCode, http.STATUS_CODES[statusCode], customHeaders);
|
||||
res.writeHead(statusCode, statusCodes[statusCode], customHeaders);
|
||||
|
||||
// Log the redirection message
|
||||
logFacilities.resmessage("Client redirected to " + destination);
|
||||
|
@ -656,7 +656,7 @@ function requestHandler(req, res) {
|
|||
// Respond with list of methods
|
||||
let hdss = config.getCustomHeaders();
|
||||
hdss["Allow"] = "GET, POST, HEAD, OPTIONS";
|
||||
res.writeHead(204, http.STATUS_CODES[204], hdss);
|
||||
res.writeHead(204, statusCodes[204], hdss);
|
||||
res.end();
|
||||
return;
|
||||
} else {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
const http = require("http");
|
||||
const defaultPageCSS = require("../res/defaultPageCSS.js");
|
||||
const statusCodes = require("../res/statusCodes.js");
|
||||
const svrjsInfo = require("../../svrjs.json");
|
||||
const { name } = svrjsInfo;
|
||||
|
||||
|
@ -7,7 +7,7 @@ module.exports = (req, res, logFacilities, config, next) => {
|
|||
if (req.isProxy) {
|
||||
let eheaders = config.getCustomHeaders();
|
||||
eheaders["Content-Type"] = "text/html; charset=utf-8";
|
||||
res.writeHead(501, http.STATUS_CODES[501], eheaders);
|
||||
res.writeHead(501, statusCodes[501], eheaders);
|
||||
res.write(
|
||||
`<!DOCTYPE html><html><head><title>Proxy not implemented</title><meta name="viewport" content="width=device-width, initial-scale=1.0" /><style>${defaultPageCSS}</style></head><body><h1>Proxy not implemented</h1><p>${name
|
||||
.replace(/&/g, "&")
|
||||
|
@ -34,7 +34,7 @@ module.exports = (req, res, logFacilities, config, next) => {
|
|||
if (req.method == "OPTIONS") {
|
||||
let hdss = config.getCustomHeaders();
|
||||
hdss["Allow"] = "GET, POST, HEAD, OPTIONS";
|
||||
res.writeHead(204, http.STATUS_CODES[204], hdss);
|
||||
res.writeHead(204, statusCodes[204], hdss);
|
||||
res.end();
|
||||
return;
|
||||
} else if (
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
const http = require("http");
|
||||
const fs = require("fs");
|
||||
const os = require("os");
|
||||
const zlib = require("zlib");
|
||||
|
@ -9,6 +8,7 @@ const ipMatch = require("../utils/ipMatch.js");
|
|||
const createRegex = require("../utils/createRegex.js");
|
||||
const sha256 = require("../utils/sha256.js");
|
||||
const sizify = require("../utils/sizify.js");
|
||||
const statusCodes = require("../res/statusCodes.js");
|
||||
const svrjsInfo = require("../../svrjs.json");
|
||||
const { name } = svrjsInfo;
|
||||
|
||||
|
@ -140,7 +140,7 @@ module.exports = (req, res, logFacilities, config, next) => {
|
|||
// Check if the client's request matches the ETag value (If-None-Match)
|
||||
const clientETag = req.headers["if-none-match"];
|
||||
if (clientETag === fileETag) {
|
||||
res.writeHead(304, http.STATUS_CODES[304], {
|
||||
res.writeHead(304, statusCodes[304], {
|
||||
ETag: clientETag
|
||||
});
|
||||
res.end();
|
||||
|
@ -206,14 +206,14 @@ module.exports = (req, res, logFacilities, config, next) => {
|
|||
begin < res.head.length &&
|
||||
end - begin < res.head.length
|
||||
) {
|
||||
res.writeHead(206, http.STATUS_CODES[206], rhd);
|
||||
res.writeHead(206, statusCodes[206], rhd);
|
||||
res.end(res.head.substring(begin, end + 1));
|
||||
return;
|
||||
} else if (
|
||||
ext == "html" &&
|
||||
begin >= res.head.length + filelen
|
||||
) {
|
||||
res.writeHead(206, http.STATUS_CODES[206], rhd);
|
||||
res.writeHead(206, statusCodes[206], rhd);
|
||||
res.end(
|
||||
res.foot.substring(
|
||||
begin - res.head.length - filelen,
|
||||
|
@ -278,7 +278,7 @@ module.exports = (req, res, logFacilities, config, next) => {
|
|||
)
|
||||
});
|
||||
};
|
||||
res.writeHead(206, http.STATUS_CODES[206], rhd);
|
||||
res.writeHead(206, statusCodes[206], rhd);
|
||||
if (res.head.length == 0 || begin > res.head.length) {
|
||||
afterWriteCallback();
|
||||
} else if (
|
||||
|
@ -291,7 +291,7 @@ module.exports = (req, res, logFacilities, config, next) => {
|
|||
process.nextTick(afterWriteCallback);
|
||||
}
|
||||
} else {
|
||||
res.writeHead(206, http.STATUS_CODES[206], rhd);
|
||||
res.writeHead(206, statusCodes[206], rhd);
|
||||
readStream.pipe(res);
|
||||
}
|
||||
logFacilities.resmessage(
|
||||
|
@ -302,7 +302,7 @@ module.exports = (req, res, logFacilities, config, next) => {
|
|||
}
|
||||
});
|
||||
} else {
|
||||
res.writeHead(206, http.STATUS_CODES[206], rhd);
|
||||
res.writeHead(206, statusCodes[206], rhd);
|
||||
res.end();
|
||||
}
|
||||
}
|
||||
|
@ -461,7 +461,7 @@ module.exports = (req, res, logFacilities, config, next) => {
|
|||
end: res.foot.length == 0
|
||||
});
|
||||
};
|
||||
res.writeHead(200, http.STATUS_CODES[200], hdhds);
|
||||
res.writeHead(200, statusCodes[200], hdhds);
|
||||
if (res.head.length == 0) {
|
||||
afterWriteCallback();
|
||||
} else if (!resStream.write(res.head)) {
|
||||
|
@ -470,7 +470,7 @@ module.exports = (req, res, logFacilities, config, next) => {
|
|||
process.nextTick(afterWriteCallback);
|
||||
}
|
||||
} else {
|
||||
res.writeHead(200, http.STATUS_CODES[200], hdhds);
|
||||
res.writeHead(200, statusCodes[200], hdhds);
|
||||
readStream.pipe(resStream);
|
||||
}
|
||||
logFacilities.resmessage(
|
||||
|
@ -481,7 +481,7 @@ module.exports = (req, res, logFacilities, config, next) => {
|
|||
}
|
||||
});
|
||||
} else {
|
||||
res.writeHead(200, http.STATUS_CODES[200], hdhds);
|
||||
res.writeHead(200, statusCodes[200], hdhds);
|
||||
res.end();
|
||||
logFacilities.resmessage("Client successfully received content.");
|
||||
}
|
||||
|
@ -890,7 +890,7 @@ module.exports = (req, res, logFacilities, config, next) => {
|
|||
}
|
||||
|
||||
// Send the directory listing response
|
||||
res.writeHead(200, http.STATUS_CODES[200], {
|
||||
res.writeHead(200, statusCodes[200], {
|
||||
"Content-Type": "text/html; charset=utf-8"
|
||||
});
|
||||
res.end(
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
const http = require("http");
|
||||
const os = require("os");
|
||||
const defaultPageCSS = require("../res/defaultPageCSS.js");
|
||||
const sizify = require("../utils/sizify.js");
|
||||
const statusCodes = require("../res/statusCodes.js");
|
||||
const svrjsInfo = require("../../svrjs.json");
|
||||
const { name } = svrjsInfo;
|
||||
|
||||
|
@ -57,7 +57,7 @@ module.exports = (req, res, logFacilities, config, next) => {
|
|||
}%`;
|
||||
statusBody += `<br/>Thread PID: ${process.pid}<br/>`;
|
||||
|
||||
res.writeHead(200, http.STATUS_CODES[200], {
|
||||
res.writeHead(200, statusCodes[200], {
|
||||
"Content-Type": "text/html; charset=utf-8"
|
||||
});
|
||||
res.end(
|
||||
|
|
10
src/res/statusCodes.js
Normal file
10
src/res/statusCodes.js
Normal file
|
@ -0,0 +1,10 @@
|
|||
const http = require("http");
|
||||
|
||||
const statusCodes = {
|
||||
...http.STATUS_CODES,
|
||||
497: "HTTP Request Sent to HTTPS Port",
|
||||
598: "Network Read Timeout Error",
|
||||
599: "Network Connect Timeout Error"
|
||||
};
|
||||
|
||||
module.exports = statusCodes;
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"version": "4.0.1",
|
||||
"version": "4.0.2",
|
||||
"name": "SVR.JS",
|
||||
"documentationURL": "https://svrjs.org/docs",
|
||||
"statisticsServerCollectEndpoint": "https://statistics.svrjs.org/collect.svr",
|
||||
"changes": [
|
||||
"Fixed a bug with no request ID shown for multiline log entries for HTTP requests."
|
||||
"Fixed a bug with 497, 598, and 599 status code HTTP responses."
|
||||
]
|
||||
}
|
||||
|
|
Reference in a new issue