forked from nm3clol/nm3clol-express-app
Fixed vercel serve-handler so that it handles directory junctions and directory symlinks without error
This commit is contained in:
parent
cc2b9e686e
commit
e352bedfd9
|
@ -37,7 +37,21 @@ app.use(express.json());
|
||||||
|
|
||||||
app.get('/ads.txt', (req, res) => {
|
app.get('/ads.txt', (req, res) => {
|
||||||
res.setHeader("Content-Type", "text/plain");
|
res.setHeader("Content-Type", "text/plain");
|
||||||
res.send('google.com, pub-8937572456576531, DIRECT, f08c47fec0942fa0');
|
res.setHeader("Cache-Control", "no-cache");
|
||||||
|
res.send(`google.com, pub-8937572456576531, DIRECT, f08c47fec0942fa0`);
|
||||||
|
});
|
||||||
|
|
||||||
|
app.get('/robots.txt', (req, res) => {
|
||||||
|
res.setHeader("Content-Type", "text/plain");
|
||||||
|
res.setHeader("Cache-Control", "no-cache");
|
||||||
|
// TODO: Implement Site Map feature and provide sitemap url in robots.txt
|
||||||
|
res.send(
|
||||||
|
`User-agent: *
|
||||||
|
Allow: /
|
||||||
|
|
||||||
|
# TODO: Implement Site Map feature and provide sitemap url in robots.txt
|
||||||
|
#sitemap: https://no-moss-3-carbo-landfill-library.online/sitemap.xml`
|
||||||
|
);//end of res.send() for robots.txt
|
||||||
});
|
});
|
||||||
|
|
||||||
// Search endpoints
|
// Search endpoints
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
const {promisify} = require('util');
|
const {promisify} = require('util');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const {createHash} = require('crypto');
|
const {createHash} = require('crypto');
|
||||||
const {realpath, lstat, createReadStream, readdir} = require('fs');
|
const {realpath, readlink, lstat, createReadStream, readdir} = require('fs');
|
||||||
|
|
||||||
// Packages
|
// Packages
|
||||||
const url = require('fast-url-parser');
|
const url = require('fast-url-parser');
|
||||||
|
@ -36,7 +36,7 @@ const directoryTemplate = (vals) => {
|
||||||
};
|
};
|
||||||
const errorTemplate = (vals) => {
|
const errorTemplate = (vals) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
ejs.renderFile("views/error.ejs", { h: helpers, ...vals }, (err, str) => {
|
ejs.renderFile(path.join(__dirname, '..', 'views', 'error.ejs'), { h: helpers, ...vals }, (err, str) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
reject(err);
|
reject(err);
|
||||||
} else {
|
} else {
|
||||||
|
@ -46,6 +46,19 @@ const errorTemplate = (vals) => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const isDirectoryOrDirectorySymbolicLink = (path, max_recursion_depth = 10, cb) => {
|
||||||
|
lstat(path, {}, (err, sym_stats) => {
|
||||||
|
if (sym_stats.isSymbolicLink() && max_recursion_depth > 0) {
|
||||||
|
readlink(path, {}, (err, path) => {
|
||||||
|
isDirectoryOrDirectorySymbolicLink(path, max_recursion_depth-1, cb);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cb(err, sym_stats.isDirectory());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
const etags = new Map();
|
const etags = new Map();
|
||||||
|
|
||||||
const calculateSha = (handlers, absolutePath) =>
|
const calculateSha = (handlers, absolutePath) =>
|
||||||
|
@ -387,7 +400,8 @@ const renderDirectory = async (current, acceptsJSON, handlers, methods, config,
|
||||||
|
|
||||||
details.relative = path.join(relativePath, details.base);
|
details.relative = path.join(relativePath, details.base);
|
||||||
|
|
||||||
if (stats.isDirectory()) {
|
//if (stats.isDirectory()) {
|
||||||
|
if (await handlers.isDirectoryOrDirectorySymbolicLink(filePath, 10)) {
|
||||||
details.base += slashSuffix;
|
details.base += slashSuffix;
|
||||||
details.relative += slashSuffix;
|
details.relative += slashSuffix;
|
||||||
details.type = 'folder';
|
details.type = 'folder';
|
||||||
|
@ -569,7 +583,8 @@ const getHandlers = methods => Object.assign({
|
||||||
realpath: promisify(realpath),
|
realpath: promisify(realpath),
|
||||||
createReadStream,
|
createReadStream,
|
||||||
readdir: promisify(readdir),
|
readdir: promisify(readdir),
|
||||||
sendError
|
sendError,
|
||||||
|
isDirectoryOrDirectorySymbolicLink: promisify(isDirectoryOrDirectorySymbolicLink)
|
||||||
}, methods);
|
}, methods);
|
||||||
|
|
||||||
module.exports = async (request, response, config = {}, methods = {}) => {
|
module.exports = async (request, response, config = {}, methods = {}) => {
|
||||||
|
@ -668,7 +683,8 @@ module.exports = async (request, response, config = {}, methods = {}) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stats && stats.isDirectory()) {
|
//if (stats && stats.isDirectory()) {
|
||||||
|
if (stats && await handlers.isDirectoryOrDirectorySymbolicLink(absolutePath, 10)) {
|
||||||
let directory = null;
|
let directory = null;
|
||||||
let singleFile = null;
|
let singleFile = null;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user