diff --git a/docs/proxy.md b/docs/proxy.md index 6a102def3..4f3f2e245 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -12,7 +12,7 @@ proxy:enable proxy:ports List proxy port mappings for app proxy:ports-add :: [::...] Set proxy port mappings for app proxy:ports-clear Clear all proxy port mappings for app -proxy:ports-remove [...] Unset proxy port mappings for app +proxy:ports-remove [|::...] Unset proxy port mappings for app proxy:set Set proxy type for app ``` diff --git a/plugins/proxy/commands b/plugins/proxy/commands index a1bcab6e4..25d60d2ea 100755 --- a/plugins/proxy/commands +++ b/plugins/proxy/commands @@ -13,7 +13,7 @@ case "$1" in proxy:ports , List proxy port mappings for app proxy:ports-clear , Clear all proxy port mappings for app proxy:ports-add :: [::...], Set proxy port mappings for app - proxy:ports-remove [...], Unset proxy port mappings for app + proxy:ports-remove [|::...], Unset proxy port mappings for app proxy:set , Set proxy type for app help_content } diff --git a/plugins/proxy/subcommands/ports-remove b/plugins/proxy/subcommands/ports-remove index 2c1fe0a90..0d73df5ca 100755 --- a/plugins/proxy/subcommands/ports-remove +++ b/plugins/proxy/subcommands/ports-remove @@ -9,13 +9,19 @@ proxy_ports_remove_cmd() { local cmd="proxy:ports-remove" local APP="$2"; verify_app_name "$APP" local PROXY_PORT_MAP="$(config_get "$APP" DOKKU_PROXY_PORT_MAP || true)" + local RE_PORT='^[0-9]+$' shift 2 local INPUT_PORTS="$*" if [[ -n "$INPUT_PORTS" ]]; then local port + PROXY_PORT_MAP=" $PROXY_PORT_MAP " for port in $INPUT_PORTS; do - PROXY_PORT_MAP="$(sed -r "s/[[:alnum:]]+:$port:[[:alnum:]]+//g" <<< "$PROXY_PORT_MAP")" + if [[ "$port" =~ $RE_PORT ]]; then + PROXY_PORT_MAP="$(sed -r "s/[[:alnum:]]+:$port:[[:alnum:]]+//g" <<< "$PROXY_PORT_MAP")" + else + PROXY_PORT_MAP="$(sed -r "s/ $port / /g" <<< "$PROXY_PORT_MAP")" + fi done PROXY_PORT_MAP="$(echo "$PROXY_PORT_MAP" | xargs)" PROXY_PORT_MAP="$(merge_dedupe_list "$PROXY_PORT_MAP" " ")" diff --git a/tests/unit/40_proxy.bats b/tests/unit/40_proxy.bats index 99882c890..d7e4cad43 100644 --- a/tests/unit/40_proxy.bats +++ b/tests/unit/40_proxy.bats @@ -64,7 +64,7 @@ assert_external_port() { } @test "(proxy) proxy:ports (list/add/remove/clear)" { - run dokku proxy:ports-add $TEST_APP http:8080:5000 https:8443:5000 + run dokku proxy:ports-add $TEST_APP http:8080:5000 https:8443:5000 http:1234:5001 echo "output: "$output echo "status: "$status assert_success @@ -72,13 +72,23 @@ assert_external_port() { run /bin/bash -c "dokku --quiet proxy:ports $TEST_APP | xargs" echo "output: "$output echo "status: "$status - assert_output "http 8080 5000 https 8443 5000" + assert_output "http 1234 5001 http 8080 5000 https 8443 5000" run /bin/bash -c "dokku proxy:ports-remove $TEST_APP 8080" echo "output: "$output echo "status: "$status assert_success + run /bin/bash -c "dokku --quiet proxy:ports $TEST_APP | xargs" + echo "output: "$output + echo "status: "$status + assert_output "http 1234 5001 https 8443 5000" + + run /bin/bash -c "dokku proxy:ports-remove $TEST_APP http:1234:5001" + echo "output: "$output + echo "status: "$status + assert_success + run /bin/bash -c "dokku --quiet proxy:ports $TEST_APP | xargs" echo "output: "$output echo "status: "$status