diff --git a/.gitignore b/.gitignore index b3820d5..34ea3ec 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ build.sh deploy.sh data +compose-test.yml diff --git a/Dockerfile b/Dockerfile index dd89d99..5588891 100644 --- a/Dockerfile +++ b/Dockerfile @@ -36,4 +36,6 @@ RUN set -xe && \ ADD rootfs / ENTRYPOINT ["/entrypoint.sh"] -#CMD ["/usr/sbin/dhcpd -4 -f -d --no-pid -cf /etc/dhcp/dhcpd.conf -lf /etc/dhcp/dhcpd.leases -user dhcpd -group dhcpd"] +CMD ["/usr/sbin/dhcpd", "-4", "-f", "-d", "--no-pid", "-cf", "/data/dhcpd4.conf", "-lf", "/data/dhcpd4.leases", "-user", "dhcpd", "-group", "dhcpd"] + + diff --git a/README.md b/README.md index 0593934..f9456c9 100644 --- a/README.md +++ b/README.md @@ -35,15 +35,22 @@ services: restart: unless-stopped ``` ## Changelog +v13.2.443p1-8-1 - 02.01.2026 +- Defined CMD in Dockerfile; ENTRYPOINT now supports user-provided commands + v13.2.443p1-8 - 31.12.2025 - Debian v.13.2 - isc-dhcp-server v.4.4.3-P1-8 + v13.2.443p12 - 31.12.2025 - Debian v. 13.2 + v.2.0.1 - 08.10.2025 - Set env for isc-dhcp-server version in Dockerfile. + v2.0.0 - 09.09.2025 - Debian v.13.1 + v1.0.0 - 25.06.2025 - Debian v.12.11 - isc-dhcp-server v.4.4.3-P1-2 diff --git a/rootfs/entrypoint.sh b/rootfs/entrypoint.sh index b1499b2..9a6cbc0 100755 --- a/rootfs/entrypoint.sh +++ b/rootfs/entrypoint.sh @@ -39,41 +39,69 @@ function _main { gid=$(id -g dhcpd) chown -R dhcpd: "/data/dhcpd4.leases" "/data/dhcpd6.leases" - export CMDv4="/usr/sbin/dhcpd -4 -f -d --no-pid -cf /data/dhcpd4.conf -lf /data/dhcpd4.leases -user dhcpd -group dhcpd" + #export CMDv4="/usr/sbin/dhcpd -4 -f -d --no-pid -cf /data/dhcpd4.conf -lf /data/dhcpd4.leases -user dhcpd -group dhcpd" export CMDv6="/usr/sbin/dhcpd -6 -f -d --no-pid -cf /data/dhcpd6.conf -lf /data/dhcpd6.leases -user dhcpd -group dhcpd" - [ "$DHCP4" = "1" ] && export CMD=$CMDv4 - if [ "$DHCP6" = "1" ]; then - [ -z "$CMD" ] && export CMD=$CMDv6 || $CMDv6 & - fi chown -R dhcpd: "/data" } -function custom_bashrc { -echo ' +custom_bashrc() { +cat <<'EOF' export LS_OPTIONS="--color=auto" -alias "ls=ls $LS_OPTIONS" -alias "ll=ls $LS_OPTIONS -la" -alias "l=ls $LS_OPTIONS -lA" -' +alias ls='ls $LS_OPTIONS' +alias ll='ls $LS_OPTIONS -la' +alias l='ls $LS_OPTIONS -lA' + +# prompt SOLO per shell interattive +if [[ $- == *i* ]]; then + if [ "$(id -u)" -eq 0 ]; then + PS1="\[\e[35m\][\[\e[31m\]\u\[\e[36m\]@\[\e[32m\]\h\[\e[90m\] \w\[\e[35m\]]\[\e[0m\]# " + else + PS1="\[\e[35m\][\[\e[33m\]\u\[\e[36m\]@\[\e[32m\]\h\[\e[90m\] \w\[\e[35m\]]\[\e[0m\]$ " + fi + export PS1 +fi +EOF } -function _bashrc { -echo "-----------------------------------------" -echo " .bashrc file setup..." -echo "-----------------------------------------" -custom_bashrc | tee /root/.bashrc -echo 'export PS1="\[\e[35m\][\[\e[31m\]\u\[\e[36m\]@\[\e[32m\]\h\[\e[90m\] \w\[\e[35m\]]\[\e[0m\]# "' >> /root/.bashrc -for i in $(ls /home); do echo 'export PS1="\[\e[35m\][\[\e[33m\]\u\[\e[36m\]@\[\e[32m\]\h\[\e[90m\] \w\[\e[35m\]]\[\e[0m\]$ "' >> /home/${i}/.bashrc; done +setup_bashrc() { + for home in /root /home/*; do + [ -d "$home" ] || continue + bashrc="$home/.bashrc" + + # crea se manca + [ -f "$bashrc" ] || touch "$bashrc" + + # evita duplicazioni + grep -q '### CUSTOM BASHRC ###' "$bashrc" && continue + + { + echo '' + echo '### CUSTOM BASHRC ###' + custom_bashrc + } >> "$bashrc" + done } -#_dirs _main -_bashrc +setup_bashrc -#CMD="$@" -[ -z "$CMD" ] && export CMD="supervisord -c /etc/supervisor/supervisord.conf" +# If any arguments were passed (i.e., CMD from Dockerfile), store them in CMD +[ "$#" -gt 0 ] && CMD="$@" -exec $CMD +[ "$DHCP4" = "0" ] && export CMD="" +if [ "$DHCP6" = "1" ]; then + [ -z "$CMD" ] && export CMD=$CMDv6 || $CMDv6 & +fi -exit $? +[ -z "$CMD" ] && echo "Warning! DHCP not selected." && exit + +# Ensure terminal state is restored and cursor is visible when the container exits +trap 'stty sane 2>/dev/null; tput cnorm 2>/dev/null' EXIT + +# print cmd that will be executed +echo "Starting: $*" >&2 + +# Split CMD into proper arguments and execute +set -- $CMD +exec "$@"