File: //usr/local/directadmin/scripts/startips
#!/bin/bash
if command -v ip > /dev/null; then
if ! ip route show | grep -q "default"; then
echo "startips: default route not found - sleeping for 10s"
sleep 10
if ! ip route show | grep -q "default"; then
echo "startips: secondary attempt to find default route failed, no DirectAdmin additional IPs will be added"
exit 1
fi
fi
fi
LIMIT_ADDR_FAMILY="${1}" # Can be one of: "", "inet", "inet6"
DIRECTADMIN_HOME=/usr/local/directadmin
DIRECTADMIN_BIN="${DIRECTADMIN_HOME}/directadmin"
DIRECTADMIN_CONF="${DIRECTADMIN_HOME}/conf/directadmin.conf"
IPDIR="${DIRECTADMIN_HOME}/data/admin/ips"
IPLIST="${DIRECTADMIN_HOME}/data/admin/ip.list"
ADDIP=$("${DIRECTADMIN_BIN}" config | grep -m1 "^addip=" | cut -d= -f2)
if [ -z "${ADDIP}" ]; then
ADDIP="${DIRECTADMIN_HOME}/scripts/addip"
fi
if [ -s "${DIRECTADMIN_CONF}" ] && [ -x "${DIRECTADMIN_BIN}" ]; then
ETH_DEV=$(${DIRECTADMIN_BIN} config | grep "^ethernet_dev=" | cut -d= -f2)
if [ -z "${ETH_DEV}" ]; then
ETH_DEV=$(ip route show | awk '/^default/ && NR==1 {print $5}')
fi
fi
while read -r IP; do
grep -q ':' <<< "${IP}" && ADDR_FAMILY=inet6 || ADDR_FAMILY=inet
if [ "${LIMIT_ADDR_FAMILY}" != "" ] && [ "${LIMIT_ADDR_FAMILY}" != "${ADDR_FAMILY}" ]; then
continue
fi
NETMASK=$(grep -m1 "^netmask=" "${IPDIR}/${IP}" | cut -d= -f2);
if [ -z "${NETMASK}" ]; then
if [ "${ADDR_FAMILY}" = "inet6" ]; then
NETMASK=/64
else
NETMASK=255.255.255.0
fi
fi
"${ADDIP}" "${IP}" "${NETMASK}" "${ETH_DEV}" >/dev/null
done < "${IPLIST}"
echo "action=named&value=restart" >> "${DIRECTADMIN_HOME}/data/task.queue"