diff --git a/openvidu-server/docker/openvidu-coturn/Dockerfile b/openvidu-server/docker/openvidu-coturn/Dockerfile index eac904ec..eac2ee94 100644 --- a/openvidu-server/docker/openvidu-coturn/Dockerfile +++ b/openvidu-server/docker/openvidu-coturn/Dockerfile @@ -5,8 +5,10 @@ RUN apt-get update \ COPY ./configuration-files.sh /tmp/ COPY ./entrypoint.sh /usr/local/bin +COPY ./discover_my_public_ip.sh /usr/local/bin RUN chmod +x /tmp/configuration-files.sh \ - && chmod +x /usr/local/bin/entrypoint.sh + && chmod +x /usr/local/bin/entrypoint.sh \ + && chmod +x /usr/local/bin/discover_my_public_ip.sh CMD /usr/local/bin/entrypoint.sh \ No newline at end of file diff --git a/openvidu-server/docker/openvidu-coturn/discover_my_public_ip.sh b/openvidu-server/docker/openvidu-coturn/discover_my_public_ip.sh new file mode 100755 index 00000000..fd3d7f4b --- /dev/null +++ b/openvidu-server/docker/openvidu-coturn/discover_my_public_ip.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# Check if a txt is a valid ip +function valid_ip() +{ + local ip=$1 + local stat=1 + + if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then + OIFS=$IFS + IFS='.' + ip=($ip) + IFS=$OIFS + [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \ + && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]] + stat=$? + fi + return $stat +} + +# Services to get public ip +SERVICES=( + "curl --silent -sw :%{http_code} ifconfig.me" + "curl --silent -sw :%{http_code} ident.me" + "curl --silent -sw :%{http_code} icanhazip.com" + "curl --silent -sw :%{http_code} ipecho.net/plain" + "curl --silent -sw :%{http_code} ipinfo.io/ip" +) + +# Get public ip +for service in "${SERVICES[@]}"; do + RUN_COMMAND=$($service | tr -d '[:space:]') + IP=$(echo $RUN_COMMAND | cut -d':' -f1) + HTTP_CODE=$(echo $RUN_COMMAND | cut -d':' -f2) + + if [ "$HTTP_CODE" == "200" ]; then + if valid_ip "$IP"; then + printf "$IP" + exit 0 + fi + fi +done + +printf "error" +exit 0 diff --git a/openvidu-server/docker/openvidu-coturn/entrypoint.sh b/openvidu-server/docker/openvidu-coturn/entrypoint.sh index d8e67d50..8a87a719 100644 --- a/openvidu-server/docker/openvidu-coturn/entrypoint.sh +++ b/openvidu-server/docker/openvidu-coturn/entrypoint.sh @@ -5,7 +5,7 @@ DEBUG=${DEBUG:-false} [ "$DEBUG" == "true" ] && set -x #Check parameters -[[ ! -z "${TURN_PUBLIC_IP}" ]] || export TURN_PUBLIC_IP=$(curl ifconfig.co) +[[ ! -z "${TURN_PUBLIC_IP}" ]] || export TURN_PUBLIC_IP=$(/usr/local/bin/discover_my_public_ip.sh) echo "TURN public IP: ${TURN_PUBLIC_IP}" diff --git a/openvidu-server/docker/openvidu-server-pro/Dockerfile b/openvidu-server/docker/openvidu-server-pro/Dockerfile index d9e0f587..fe4b10a4 100644 --- a/openvidu-server/docker/openvidu-server-pro/Dockerfile +++ b/openvidu-server/docker/openvidu-server-pro/Dockerfile @@ -14,16 +14,16 @@ RUN apt-get update && apt-get install -y \ docker.io \ && rm -rf /var/lib/apt/lists/* -# OpenVidu -RUN mkdir -p /opt/openvidu /usr/local/bin/ && \ - wget -O /opt/openvidu/openvidu-server.jar \ - https://pro-stripe.openvidu.io/openvidu-server-pro-${OPENVIDU_VERSION}.jar \ - --tries=0 --read-timeout=20 +RUN mkdir -p /opt/openvidu /usr/local/bin/ +COPY openvidu-server.jar /opt/openvidu/openvidu-server.jar COPY ./entrypoint.sh /usr/local/bin +COPY ./discover_my_public_ip.sh /usr/local/bin + RUN mkdir -p /opt/openvidu/recordings && \ - chmod +x /usr/local/bin/entrypoint.sh + chmod +x /usr/local/bin/entrypoint.sh && \ + chmod +x /usr/local/bin/discover_my_public_ip.sh WORKDIR /opt/openvidu -CMD /usr/local/bin/entrypoint.sh \ No newline at end of file +CMD /usr/local/bin/entrypoint.sh diff --git a/openvidu-server/docker/openvidu-server-pro/discover_my_public_ip.sh b/openvidu-server/docker/openvidu-server-pro/discover_my_public_ip.sh new file mode 100755 index 00000000..fd3d7f4b --- /dev/null +++ b/openvidu-server/docker/openvidu-server-pro/discover_my_public_ip.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# Check if a txt is a valid ip +function valid_ip() +{ + local ip=$1 + local stat=1 + + if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then + OIFS=$IFS + IFS='.' + ip=($ip) + IFS=$OIFS + [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \ + && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]] + stat=$? + fi + return $stat +} + +# Services to get public ip +SERVICES=( + "curl --silent -sw :%{http_code} ifconfig.me" + "curl --silent -sw :%{http_code} ident.me" + "curl --silent -sw :%{http_code} icanhazip.com" + "curl --silent -sw :%{http_code} ipecho.net/plain" + "curl --silent -sw :%{http_code} ipinfo.io/ip" +) + +# Get public ip +for service in "${SERVICES[@]}"; do + RUN_COMMAND=$($service | tr -d '[:space:]') + IP=$(echo $RUN_COMMAND | cut -d':' -f1) + HTTP_CODE=$(echo $RUN_COMMAND | cut -d':' -f2) + + if [ "$HTTP_CODE" == "200" ]; then + if valid_ip "$IP"; then + printf "$IP" + exit 0 + fi + fi +done + +printf "error" +exit 0 diff --git a/openvidu-server/docker/openvidu-server/Dockerfile b/openvidu-server/docker/openvidu-server/Dockerfile index 029643a0..4ecbff57 100644 --- a/openvidu-server/docker/openvidu-server/Dockerfile +++ b/openvidu-server/docker/openvidu-server/Dockerfile @@ -12,7 +12,9 @@ RUN apt-get update && apt-get install -y \ # Copy OpenVidu Server COPY openvidu-server.jar / COPY ./entrypoint.sh /usr/local/bin -RUN chmod +x /usr/local/bin/entrypoint.sh +COPY ./discover_my_public_ip.sh /usr/local/bin +RUN chmod +x /usr/local/bin/entrypoint.sh && \ + chmod +x /usr/local/bin/discover_my_public_ip.sh EXPOSE 4443 diff --git a/openvidu-server/docker/openvidu-server/discover_my_public_ip.sh b/openvidu-server/docker/openvidu-server/discover_my_public_ip.sh new file mode 100755 index 00000000..fd3d7f4b --- /dev/null +++ b/openvidu-server/docker/openvidu-server/discover_my_public_ip.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# Check if a txt is a valid ip +function valid_ip() +{ + local ip=$1 + local stat=1 + + if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then + OIFS=$IFS + IFS='.' + ip=($ip) + IFS=$OIFS + [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \ + && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]] + stat=$? + fi + return $stat +} + +# Services to get public ip +SERVICES=( + "curl --silent -sw :%{http_code} ifconfig.me" + "curl --silent -sw :%{http_code} ident.me" + "curl --silent -sw :%{http_code} icanhazip.com" + "curl --silent -sw :%{http_code} ipecho.net/plain" + "curl --silent -sw :%{http_code} ipinfo.io/ip" +) + +# Get public ip +for service in "${SERVICES[@]}"; do + RUN_COMMAND=$($service | tr -d '[:space:]') + IP=$(echo $RUN_COMMAND | cut -d':' -f1) + HTTP_CODE=$(echo $RUN_COMMAND | cut -d':' -f2) + + if [ "$HTTP_CODE" == "200" ]; then + if valid_ip "$IP"; then + printf "$IP" + exit 0 + fi + fi +done + +printf "error" +exit 0