mirror of
https://github.com/devilbox/docker-php-fpm.git
synced 2026-01-10 09:54:43 +00:00
Rebuild docker-entrypoint scripts
This commit is contained in:
@@ -1,93 +1,76 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Available global variables:
|
||||
# + MY_USER
|
||||
# + MY_GROUP
|
||||
# + DEBUG_LEVEL
|
||||
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -u
|
||||
|
||||
set -o pipefail
|
||||
|
||||
|
||||
############################################################
|
||||
# Helper Functions
|
||||
############################################################
|
||||
|
||||
###
|
||||
### Helper functions
|
||||
###
|
||||
# Check whether a string is a valid IP address
|
||||
_isip() {
|
||||
local o1=
|
||||
local o2=
|
||||
local o3=
|
||||
local o4=
|
||||
|
||||
# IP is not in correct format
|
||||
if ! echo "${1}" | grep -Eq '^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})$'; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Get each octet
|
||||
isip_o1="$( echo "${1}" | awk -F'.' '{print $1}' )"
|
||||
isip_o2="$( echo "${1}" | awk -F'.' '{print $2}' )"
|
||||
isip_o3="$( echo "${1}" | awk -F'.' '{print $3}' )"
|
||||
isip_o4="$( echo "${1}" | awk -F'.' '{print $4}' )"
|
||||
o1="$( echo "${1}" | awk -F'.' '{print $1}' )"
|
||||
o2="$( echo "${1}" | awk -F'.' '{print $2}' )"
|
||||
o3="$( echo "${1}" | awk -F'.' '{print $3}' )"
|
||||
o4="$( echo "${1}" | awk -F'.' '{print $4}' )"
|
||||
|
||||
# Cannot start with 0 and all must be below 256
|
||||
if [ "${isip_o1}" -lt "1" ] || \
|
||||
[ "${isip_o1}" -gt "255" ] || \
|
||||
[ "${isip_o2}" -gt "255" ] || \
|
||||
[ "${isip_o3}" -gt "255" ] || \
|
||||
[ "${isip_o4}" -gt "255" ]; then
|
||||
unset -v isip_o1
|
||||
unset -v isip_o2
|
||||
unset -v isip_o3
|
||||
unset -v isip_o4
|
||||
if [ "${o1}" -lt "1" ] || \
|
||||
[ "${o1}" -gt "255" ] || \
|
||||
[ "${o2}" -gt "255" ] || \
|
||||
[ "${o3}" -gt "255" ] || \
|
||||
[ "${o4}" -gt "255" ]; then
|
||||
# Error
|
||||
return 1
|
||||
fi
|
||||
|
||||
unset -v isip_o1
|
||||
unset -v isip_o2
|
||||
unset -v isip_o3
|
||||
unset -v isip_o4
|
||||
|
||||
# Success
|
||||
return 0
|
||||
}
|
||||
|
||||
# Check whether a string is a valid hostname
|
||||
_ishostname() {
|
||||
local hostname="${1}"
|
||||
local first_char=
|
||||
local last_char=
|
||||
|
||||
# Does not have correct character class
|
||||
if ! echo "${1}" | grep -Eq '^[-.0-9a-zA-Z]+$'; then
|
||||
if ! echo "${hostname}" | grep -Eq '^[-.0-9a-zA-Z]+$'; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
# first and last character
|
||||
ishostname_f_char="$( echo "${1}" | cut -c1-1 )"
|
||||
ishostname_l_char="$( echo "${1}" | sed -e 's/.*\(.\)$/\1/' )"
|
||||
first_char="${hostname:0:1}"
|
||||
last_char="${hostname: -1}"
|
||||
|
||||
# Dot at beginning or end
|
||||
if [ "${ishostname_f_char}" = "." ] || [ "${ishostname_l_char}" = "." ]; then
|
||||
unset -v ishostname_f_char
|
||||
unset -v ishostname_l_char
|
||||
if [ "${first_char}" = "." ] || [ "${last_char}" = "." ]; then
|
||||
# Error
|
||||
return 1
|
||||
fi
|
||||
# Dash at beginning or end
|
||||
if [ "${ishostname_f_char}" = "-" ] || [ "${ishostname_l_char}" = "-" ]; then
|
||||
unset -v ishostname_f_char
|
||||
unset -v ishostname_l_char
|
||||
if [ "${first_char}" = "-" ] || [ "${last_char}" = "-" ]; then
|
||||
# Error
|
||||
return 1
|
||||
fi
|
||||
|
||||
unset -v ishostname_f_char
|
||||
unset -v ishostname_l_char
|
||||
|
||||
# Multiple dots next to each other
|
||||
if echo "${1}" | grep -Eq '[.]{2,}'; then
|
||||
if echo "${hostname}" | grep -Eq '[.]{2,}'; then
|
||||
# Error
|
||||
return 1
|
||||
fi
|
||||
# Dash next to dot
|
||||
if echo "${1}" | grep -Eq '(\.-)|(-\.)'; then
|
||||
if echo "${hostname}" | grep -Eq '(\.-)|(-\.)'; then
|
||||
# Error
|
||||
return 1
|
||||
fi
|
||||
@@ -97,32 +80,30 @@ _ishostname() {
|
||||
}
|
||||
|
||||
|
||||
|
||||
############################################################
|
||||
# Functions
|
||||
############################################################
|
||||
|
||||
###
|
||||
###
|
||||
### Convert comma separated port-forwards into newline separated "lport:host:rport"
|
||||
###
|
||||
port_forward_get_lines() {
|
||||
local forwards=
|
||||
local l=
|
||||
|
||||
if env_set "${1}"; then
|
||||
|
||||
# Transform into newline separated forwards:
|
||||
# local-port:host:remote-port\n
|
||||
# local-port:host:remote-port\n
|
||||
pfl_forwards="$( env_get "${1}" | sed 's/[[:space:]]*//g' | sed 's/,/\n/g' )"
|
||||
forwards="$( env_get "${1}" | sed 's/[[:space:]]*//g' | sed 's/,/\n/g' )"
|
||||
|
||||
# loop over them line by line
|
||||
IFS='
|
||||
'
|
||||
for pfl_line in ${pfl_forwards}; do
|
||||
echo "${pfl_line}"
|
||||
for l in ${forwards}; do
|
||||
echo "${l}"
|
||||
done
|
||||
|
||||
unset -v pfl_forwards
|
||||
unset -v pfl_line
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -142,47 +123,53 @@ port_forward_get_rport() {
|
||||
|
||||
|
||||
port_forward_validate() {
|
||||
pfv_env_varname="${1}"
|
||||
local env_varname="${1}"
|
||||
local debug="${2}"
|
||||
local line=
|
||||
|
||||
if ! env_set "${pfv_env_varname}"; then
|
||||
log "info" "\$${pfv_env_varname} not set."
|
||||
log "info" "Not ports from other machines will be forwarded to 127.0.0.1 inside this docker"
|
||||
local lport=
|
||||
local rhost=
|
||||
local rport=
|
||||
|
||||
if ! env_set "${env_varname}"; then
|
||||
log "info" "\$${env_varname} not set." "${debug}"
|
||||
log "info" "Not ports from other machines will be forwarded to 127.0.0.1 inside this docker" "${debug}"
|
||||
else
|
||||
|
||||
# Loop over forwards in order to validate them
|
||||
for pfv_line in $( port_forward_get_lines "${pfv_env_varname}" ); do
|
||||
pfv_lport="$( port_forward_get_lport "${pfv_line}" )"
|
||||
pfv_rhost="$( port_forward_get_rhost "${pfv_line}" )"
|
||||
pfv_rport="$( port_forward_get_rport "${pfv_line}" )"
|
||||
for line in $( port_forward_get_lines "${env_varname}" ); do
|
||||
lport="$( port_forward_get_lport "${line}" )"
|
||||
rhost="$( port_forward_get_rhost "${line}" )"
|
||||
rport="$( port_forward_get_rport "${line}" )"
|
||||
|
||||
if ! isint "${pfv_lport}"; then
|
||||
log "err" "Port forwarding error: local port is not an integer: ${pfv_lport}"
|
||||
log "err" "Line: ${pfv_line}"
|
||||
# Wrong number of ':' separators
|
||||
if [ "$( echo "${line}" | grep -o ':' | wc -l )" -ne "2" ]; then
|
||||
log "err" "Port forwarding error: invalid number of ':' separators" "${debug}"
|
||||
log "err" "Line: ${line}" "${debug}"
|
||||
exit
|
||||
fi
|
||||
|
||||
if ! isint "${lport}"; then
|
||||
log "err" "Port forwarding error: local port is not an integer: ${lport}" "${debug}"
|
||||
log "err" "Line: ${line}" "${debug}"
|
||||
exit 1
|
||||
fi
|
||||
if ! _isip "${pfv_rhost}" && ! _ishostname "${pfv_rhost}"; then
|
||||
log "err" "Port forwarding error: remote host is not a valid IP and not a valid hostname: ${pfv_rhost}"
|
||||
log "err" "Line: ${pfv_line}"
|
||||
log "err" ""
|
||||
if ! _isip "${rhost}" && ! _ishostname "${rhost}"; then
|
||||
log "err" "Port forwarding error: remote host is not a valid IP and not a valid hostname: ${rhost}" "${debug}"
|
||||
log "err" "Line: ${line}" "${debug}"
|
||||
log "err" "" "${debug}"
|
||||
exit 1
|
||||
fi
|
||||
if ! isint "${pfv_rport}"; then
|
||||
log "err" "Port forwarding error: remote port is not an integer: ${pfv_rport}"
|
||||
log "err" "Line: ${pfv_line}"
|
||||
log "err" ""
|
||||
if ! isint "${rport}"; then
|
||||
log "err" "Port forwarding error: remote port is not an integer: ${rport}" "${debug}"
|
||||
log "err" "Line: ${line}" "${debug}"
|
||||
log "err" "" "${debug}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log "info" "Forwarding ${pfv_rhost}:${pfv_rport} to 127.0.0.1:${pfv_lport} inside this docker."
|
||||
log "info" "Forwarding ${rhost}:${rport} to 127.0.0.1:${lport} inside this docker." "${debug}"
|
||||
done
|
||||
|
||||
unset -v pfv_line
|
||||
unset -v pfv_lport
|
||||
unset -v pfv_rhost
|
||||
unset -v pfv_rport
|
||||
fi
|
||||
|
||||
unset -v pfv_env_varname
|
||||
}
|
||||
|
||||
|
||||
@@ -190,15 +177,15 @@ port_forward_validate() {
|
||||
# Sanity Checks
|
||||
############################################################
|
||||
|
||||
if ! command -v awk >/dev/null 2>&1; then
|
||||
echo "awk not found, but required."
|
||||
if ! command -v socat >/dev/null 2>&1; then
|
||||
log "err" "socat not found, but required." "1"
|
||||
exit 1
|
||||
fi
|
||||
if ! command -v cut >/dev/null 2>&1; then
|
||||
echo "cut not found, but required."
|
||||
if ! command -v awk >/dev/null 2>&1; then
|
||||
log "awk not found, but required." "1"
|
||||
exit 1
|
||||
fi
|
||||
if ! command -v sed >/dev/null 2>&1; then
|
||||
echo "sed not found, but required."
|
||||
log "sed not found, but required." "1"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user