fix: ensure includes are pulled in relative to their parent
This commit is contained in:
parent
0f65e57539
commit
02c10aaa72
8 changed files with 9 additions and 8 deletions
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@andyburke/serverus",
|
"name": "@andyburke/serverus",
|
||||||
"description": "A flexible HTTP server for mixed content. Throw static files, markdown, Typescript and (hopefully, eventually) more into a directory and serverus can serve it up a bit more like old-school CGI.",
|
"description": "A flexible HTTP server for mixed content. Throw static files, markdown, Typescript and (hopefully, eventually) more into a directory and serverus can serve it up a bit more like old-school CGI.",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"exports": {
|
"exports": {
|
||||||
".": "./serverus.ts",
|
".": "./serverus.ts",
|
||||||
|
|
|
@ -25,7 +25,8 @@ async function load_html_with_ssi(html_file: string): Promise<string> {
|
||||||
async (_match, type, location, index): Promise<string | undefined> => {
|
async (_match, type, location, index): Promise<string | undefined> => {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'file': {
|
case 'file': {
|
||||||
const resolved = path.resolve(location);
|
const directory = path.dirname(html_file);
|
||||||
|
const resolved = path.resolve(path.join(directory, location));
|
||||||
if (!resolved.startsWith(Deno.cwd())) {
|
if (!resolved.startsWith(Deno.cwd())) {
|
||||||
console.error(
|
console.error(
|
||||||
`Cannot include files above the working directory (${Deno.cwd()}): ${location} ${html_file}:${index}`
|
`Cannot include files above the working directory (${Deno.cwd()}): ${location} ${html_file}:${index}`
|
||||||
|
|
|
@ -17,7 +17,7 @@ Deno.test({
|
||||||
Deno.chdir('./tests/www');
|
Deno.chdir('./tests/www');
|
||||||
test_server_info = await get_ephemeral_listen_server();
|
test_server_info = await get_ephemeral_listen_server();
|
||||||
|
|
||||||
const response = await fetch(`http://${test_server_info.hostname}:${test_server_info.port}/`, {
|
const response = await fetch(`http://${test_server_info.hostname}:${test_server_info.port}/includes/index.html`, {
|
||||||
method: 'GET'
|
method: 'GET'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ Deno.test({
|
||||||
});
|
});
|
||||||
|
|
||||||
Deno.test({
|
Deno.test({
|
||||||
name: 'get html file (text/plain)',
|
name: 'get html file (text/plain) (also test automatic index.html)',
|
||||||
permissions: {
|
permissions: {
|
||||||
env: true,
|
env: true,
|
||||||
read: true,
|
read: true,
|
||||||
|
@ -51,7 +51,7 @@ Deno.test({
|
||||||
Deno.chdir('./tests/www');
|
Deno.chdir('./tests/www');
|
||||||
test_server_info = await get_ephemeral_listen_server();
|
test_server_info = await get_ephemeral_listen_server();
|
||||||
|
|
||||||
const response = await fetch(`http://${test_server_info.hostname}:${test_server_info.port}/index.html`, {
|
const response = await fetch(`http://${test_server_info.hostname}:${test_server_info.port}/includes`, {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
headers: {
|
headers: {
|
||||||
'Accept': 'text/plain'
|
'Accept': 'text/plain'
|
||||||
|
|
3
tests/www/includes/test_include.html
Normal file
3
tests/www/includes/test_include.html
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<div>Include #1</div>
|
||||||
|
|
||||||
|
<!-- #include file="./subdir/another_include.html" -->
|
|
@ -1,3 +0,0 @@
|
||||||
<div>Include #1</div>
|
|
||||||
|
|
||||||
<!-- #include file="./another_include.html" -->
|
|
Loading…
Add table
Add a link
Reference in a new issue