Skip to content

Commit 225629e

Browse files
committed
1. User a human-readable header parser error message when user wants to use a : character in header values.
2. Fixed image building for M1 processor 3. Add a normal compatibility with PHP 8.1
1 parent 30073fd commit 225629e

File tree

10 files changed

+45
-19
lines changed

10 files changed

+45
-19
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ None.
1616
### Fixed
1717

1818
* Fixes prerender host proxy (add nginx option `proxy_ssl_server_name on`).
19+
* User a human-readable header parser error message when user wants to use a `:` character in header values.
1920

2021
## [4.0.0] - 2020-01-03
2122

Dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
FROM composer/composer:2 AS deps
1+
FROM --platform=amd64 composer/composer:2 AS deps
22

33
COPY . /app
44

55
RUN composer install --no-ansi --no-interaction --no-progress --no-scripts --ignore-platform-reqs
66

7-
FROM spacetabio/box-php:1.0.0 AS build
7+
FROM --platform=amd64 spacetabio/box-php:1.1.0 AS build
88

99
WORKDIR /app
1010
COPY --from=deps /app /app
1111
RUN box compile
1212

13-
FROM php:8.1-cli-alpine
13+
FROM --platform=amd64 php:8.1-cli-alpine
1414

1515
ENV NGINX_VERSION 1.21.1
1616
ENV NGX_BROTLI_COMMIT 9aec15e2aa6feea2113119ba06460af70ab3ea62

Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ FILE = Dockerfile
44

55
image:
66
sed "s/{{ version }}/$(VERSION)/g" $(FILE) > /tmp/$(FILE)
7-
docker build -f /tmp/$(FILE) -t $(IMAGE):$(VERSION) .
7+
docker build --platform linux/amd64 -f /tmp/$(FILE) -t $(IMAGE):$(VERSION) .
88

99
push:
1010
docker push $(IMAGE):$(VERSION)
@@ -17,13 +17,13 @@ test:
1717
$(IMAGE):4.1.0-xdebug -c "vendor/bin/phpunit"
1818

1919
image_test:
20-
docker build -t $(IMAGE):4.1.0-xdebug -f test.dockerfile .
20+
docker build --platform linux/amd64 -t $(IMAGE):4.1.0-xdebug -f test.dockerfile .
2121

2222
push_test:
2323
docker push $(IMAGE):4.1.0-xdebug
2424

2525
image_box:
26-
docker build -t spacetabio/box-php:1.0.0 -f box.dockerfile .
26+
docker build --platform linux/amd64 -t spacetabio/box-php:1.1.0 -f box.dockerfile .
2727

2828
push_box:
29-
docker push spacetabio/box-php:1.0.0
29+
docker push spacetabio/box-php:1.1.0

box.dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
FROM php:8.0-cli-alpine
1+
FROM --platform=amd64 php:8.1-cli-alpine
22

3-
RUN wget https://github.com/box-project/box/releases/download/3.11.1/box.phar \
3+
RUN wget https://github.com/box-project/box/releases/download/4.0.2/box.phar \
44
&& mv box.phar /usr/local/bin/box \
55
&& chmod +x /usr/local/bin/box
66

src/Header/ConvertsHeader.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44

55
namespace Spacetab\Server\Header;
66

7+
use InvalidArgumentException;
78
use Spacetab\Configuration\ConfigurationInterface;
89
use Spacetab\Server\Exception\HeaderException;
10+
use Throwable;
911

1012
final class ConvertsHeader implements HeaderInterface
1113
{
@@ -42,7 +44,11 @@ public function convert(): array
4244

4345
// Backward compatibility.
4446
if (!isset($values[0]['value'])) {
45-
$results[$item] = join('; ', (array) $values);
47+
try {
48+
$results[$item] = implode('; ', (array) $values);
49+
} catch (Throwable) {
50+
throw new InvalidArgumentException('Headers parse error. Check : symbol or indentation (use "" for escaping :).');
51+
}
4652
}
4753

4854
// Checks new extended format for sent headers from yaml values.
@@ -53,10 +59,10 @@ public function convert(): array
5359
throw HeaderException::invalidHeaderFormat();
5460
}
5561

56-
$array[] = join('; ', (array) $value['value']);
62+
$array[] = implode('; ', (array) $value['value']);
5763
}
5864

59-
$results[$item] = join(', ', $array);
65+
$results[$item] = implode(', ', $array);
6066
}
6167
}
6268

test.dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
FROM composer/composer:2 AS deps
1+
FROM --platform=amd64 composer/composer:2 AS deps
22

33
COPY . /app
44

55
RUN composer install --no-ansi --no-interaction --no-progress --no-scripts --ignore-platform-reqs
66

7-
FROM spacetabio/box-php:1.0.0 AS build
7+
FROM --platform=amd64 spacetabio/box-php:1.0.0 AS build
88

99
WORKDIR /app
1010
COPY --from=deps /app /app
1111
RUN box compile
1212

13-
FROM php:8.1-cli-alpine
13+
FROM --platform=amd64 php:8.1-cli-alpine
1414

1515
ENV NGINX_VERSION 1.21.1
1616
ENV NGX_BROTLI_COMMIT 9aec15e2aa6feea2113119ba06460af70ab3ea62

tests/Header/HeaderTest.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace Spacetab\Tests\Server\Header;
66

7+
use InvalidArgumentException;
78
use Spacetab\Configuration\Configuration;
89
use Spacetab\Server\Exception\HeaderException;
910
use Spacetab\Server\Header\ConvertsHeader;
@@ -50,4 +51,15 @@ public function testHowInvalidHeaderValueCheckWorks()
5051
$h = new ConvertsHeader($conf);
5152
$h->convert();
5253
}
54+
55+
public function testInvalidToStringConversionWhenHeadersParsed()
56+
{
57+
$conf = new Configuration(__DIR__ . '/../configuration', 'headers_warning');
58+
$conf->load();
59+
60+
$this->expectException(InvalidArgumentException::class);
61+
62+
$h = new ConvertsHeader($conf);
63+
$h->convert();
64+
}
5365
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
headers_warning:
2+
server:
3+
headers:
4+
contentSecurityPolicy:
5+
- "default-src 'self' data": 'https://*.teaworkshop.ru *.cdek.ru pickpoint.ru api-maps.yandex.ru maps.yandex.net https://*.jivosite.com https://*.dadata.ru sentry.io *.yandex.ru *.vk.com *.googletagmanager.com *.google-analytics.com https://*.facebook.net https://*.facebook.com'
6+
port: 8081
7+
root: ./tests/example_dist/simple

tests/example_dist/head_link_not_exists/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
<meta content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" name="viewport">
66
<meta content="ie=edge" http-equiv="X-UA-Compatible">
77
<title>Document</title>
8-
<link rel="preload" href="/__config.js" as="script"></head>
8+
<link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"></head>
99
<body>
1010
hello stranger!
11-
<script src="/__config.js"></script><script>
11+
<script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script>
1212

1313
</script>
1414
</body>

tests/example_dist/vue/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<meta charset="utf-8">
55
<meta http-equiv="X-UA-Compatible" content="IE=edge">
66
<meta name="viewport" content="width=device-width,initial-scale=1">
7-
<link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="icon" href="/favicon.ico">
7+
<link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="preload" href="/__config.js" as="script"><link rel="icon" href="/favicon.ico">
88
<title>example_dist</title>
99
<link href="/js/about.5273d30c.js" rel="prefetch">
1010
<link href="/css/app.e28d37a7.css" rel="preload" as="style">
@@ -16,7 +16,7 @@
1616
<noscript><strong>We're sorry but example_dist doesn't work properly without JavaScript enabled. Please enable it to
1717
continue.</strong></noscript>
1818
<div id="app"></div>
19-
<script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/js/chunk-vendors.a377004b.js"></script>
19+
<script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/__config.js"></script><script src="/js/chunk-vendors.a377004b.js"></script>
2020
<script src="/js/app.06433c76.js"></script>
2121
</body>
2222
</html>

0 commit comments

Comments
 (0)