From f4e982ec33059d4422d6932d83de96c6be769ae3 Mon Sep 17 00:00:00 2001 From: Louis Date: Fri, 7 Jul 2023 18:05:22 +0200 Subject: [PATCH 1/5] Add validate_ipv6 function for keycloak ip="2001:0db8:85a3:0000:0000:8a2e:0370:7334" ip="fd00::" ip="::" validate_ipv6 "$ip" result=$? if [[ $result -eq 0 ]]; then echo "IPv6 address is valid" else echo "IPv6 address is invalid" fi Signed-off-by: Louis Signed-off-by: covert --- .../opt/bitnami/scripts/libvalidations.sh | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/bitnami/keycloak/21/debian-11/prebuildfs/opt/bitnami/scripts/libvalidations.sh b/bitnami/keycloak/21/debian-11/prebuildfs/opt/bitnami/scripts/libvalidations.sh index 3c6a4109c2c5a..afc6ea727376b 100644 --- a/bitnami/keycloak/21/debian-11/prebuildfs/opt/bitnami/scripts/libvalidations.sh +++ b/bitnami/keycloak/21/debian-11/prebuildfs/opt/bitnami/scripts/libvalidations.sh @@ -206,7 +206,27 @@ validate_ipv4() { fi return $stat } +######################## +# Validate if the provided argument is a valid IPv6 address +# Arguments: +# $1 - IP to validate +# Returns: +# Boolean +######################### +validate_ipv6() { + local ip="${1:?ip is missing}" + local stat=1 + + local full_address_regex='^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$' + local short_address_regex='^((([0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4}){0,6}::(([0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4}){0,6})$' + + if [[ $ip =~ $full_address_regex || $ip =~ $short_address_regex || $ip == "::" ]]; then + stat=0 + fi + + echo $stat +} ######################## # Validate a string format # Arguments: From 58d3407cb6c54d5ce8e5e588cf2caaa665336eda Mon Sep 17 00:00:00 2001 From: Louis Date: Fri, 7 Jul 2023 18:13:27 +0200 Subject: [PATCH 2/5] Add combinatory fuction for validate ipv4 & ipv6 Signed-off-by: Louis Signed-off-by: covert --- .../opt/bitnami/scripts/libvalidations.sh | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/bitnami/keycloak/21/debian-11/prebuildfs/opt/bitnami/scripts/libvalidations.sh b/bitnami/keycloak/21/debian-11/prebuildfs/opt/bitnami/scripts/libvalidations.sh index afc6ea727376b..e8b86f1f13994 100644 --- a/bitnami/keycloak/21/debian-11/prebuildfs/opt/bitnami/scripts/libvalidations.sh +++ b/bitnami/keycloak/21/debian-11/prebuildfs/opt/bitnami/scripts/libvalidations.sh @@ -187,6 +187,28 @@ validate_port() { fi } +######################## +# Validate if the provided argument is a valid IPv4 or IPv6 address +# Arguments: +# $1 - IP to validate +# Returns: +# Boolean +######################### +validate_ip() { + local ip="${1:?ip is missing}" + local stat=1 + + validate_ipv4 "$ip" + if [[ $? -eq 0 ]]; then + stat=0 + else + validate_ipv6 "$ip" + stat=$? + fi + + return $stat +} + ######################## # Validate if the provided argument is a valid IPv4 address # Arguments: @@ -206,6 +228,7 @@ validate_ipv4() { fi return $stat } + ######################## # Validate if the provided argument is a valid IPv6 address # Arguments: @@ -227,6 +250,7 @@ validate_ipv6() { echo $stat } + ######################## # Validate a string format # Arguments: From b9c29a435aaf02772719c26634c20e7e46c99acc Mon Sep 17 00:00:00 2001 From: Louis Date: Fri, 7 Jul 2023 18:14:19 +0200 Subject: [PATCH 3/5] Use combinated validate_ip function for keycloak envVars check Signed-off-by: Louis Signed-off-by: covert --- .../21/debian-11/rootfs/opt/bitnami/scripts/libkeycloak.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitnami/keycloak/21/debian-11/rootfs/opt/bitnami/scripts/libkeycloak.sh b/bitnami/keycloak/21/debian-11/rootfs/opt/bitnami/scripts/libkeycloak.sh index 840deedc824f0..6cd77ae5d96b8 100644 --- a/bitnami/keycloak/21/debian-11/rootfs/opt/bitnami/scripts/libkeycloak.sh +++ b/bitnami/keycloak/21/debian-11/rootfs/opt/bitnami/scripts/libkeycloak.sh @@ -72,7 +72,7 @@ keycloak_validate() { fi fi - if ! validate_ipv4 "${KEYCLOAK_BIND_ADDRESS}"; then + if ! validate_ip "${KEYCLOAK_BIND_ADDRESS}"; then if ! is_hostname_resolved "${KEYCLOAK_BIND_ADDRESS}"; then print_validation_error print_validation_error "The value for KEYCLOAK_BIND_ADDRESS ($KEYCLOAK_BIND_ADDRESS) should be an IPv4 address or it must be a resolvable hostname" fi From 50b9a4c4240ac6186ed55f6e5857369b10a836a6 Mon Sep 17 00:00:00 2001 From: Louis Date: Wed, 12 Jul 2023 14:31:13 +0200 Subject: [PATCH 4/5] Fix return error description validate_ip helper function Co-authored-by: Damiano Albani Signed-off-by: Louis Signed-off-by: covert --- .../21/debian-11/rootfs/opt/bitnami/scripts/libkeycloak.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitnami/keycloak/21/debian-11/rootfs/opt/bitnami/scripts/libkeycloak.sh b/bitnami/keycloak/21/debian-11/rootfs/opt/bitnami/scripts/libkeycloak.sh index 6cd77ae5d96b8..32bdb11ef7fa6 100644 --- a/bitnami/keycloak/21/debian-11/rootfs/opt/bitnami/scripts/libkeycloak.sh +++ b/bitnami/keycloak/21/debian-11/rootfs/opt/bitnami/scripts/libkeycloak.sh @@ -74,7 +74,7 @@ keycloak_validate() { if ! validate_ip "${KEYCLOAK_BIND_ADDRESS}"; then if ! is_hostname_resolved "${KEYCLOAK_BIND_ADDRESS}"; then - print_validation_error print_validation_error "The value for KEYCLOAK_BIND_ADDRESS ($KEYCLOAK_BIND_ADDRESS) should be an IPv4 address or it must be a resolvable hostname" + print_validation_error print_validation_error "The value for KEYCLOAK_BIND_ADDRESS ($KEYCLOAK_BIND_ADDRESS) should be an IPv4 or IPv6 address, or it must be a resolvable hostname" fi fi From 0a0d5bade285d6cb205e39563d7662b16a9e0861 Mon Sep 17 00:00:00 2001 From: covert Date: Tue, 18 Jul 2023 15:14:25 +0200 Subject: [PATCH 5/5] Small syntax fixes Signed-off-by: covert --- .../opt/bitnami/scripts/libvalidations.sh | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/bitnami/keycloak/21/debian-11/prebuildfs/opt/bitnami/scripts/libvalidations.sh b/bitnami/keycloak/21/debian-11/prebuildfs/opt/bitnami/scripts/libvalidations.sh index e8b86f1f13994..ba4b246e09c97 100644 --- a/bitnami/keycloak/21/debian-11/prebuildfs/opt/bitnami/scripts/libvalidations.sh +++ b/bitnami/keycloak/21/debian-11/prebuildfs/opt/bitnami/scripts/libvalidations.sh @@ -198,13 +198,11 @@ validate_ip() { local ip="${1:?ip is missing}" local stat=1 - validate_ipv4 "$ip" - if [[ $? -eq 0 ]]; then - stat=0 - else - validate_ipv6 "$ip" - stat=$? - fi + if validate_ipv4 "$ip"; then + stat=0 + else + stat=$(validate_ipv6 "$ip") + fi return $stat } @@ -239,16 +237,13 @@ validate_ipv4() { validate_ipv6() { local ip="${1:?ip is missing}" local stat=1 - local full_address_regex='^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$' local short_address_regex='^((([0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4}){0,6}::(([0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4}){0,6})$' - if [[ $ip =~ $full_address_regex || $ip =~ $short_address_regex || $ip == "::" ]]; then stat=0 fi - - echo $stat + return $stat } ########################