@@ -170,25 +170,25 @@ function decryptConfigAttrib() {
170170}
171171export -f decryptConfigAttrib
172172
173- # $1 == attribute name
173+ # $1 == feature name
174174# $2 == kamailio config file
175- function enableKamailioConfigAttrib () {
175+ function enableKamailioConfigFeature () {
176176 local NAME=" $1 "
177177 local CONFIG_FILE=" $2 "
178178
179179 sed -i -r -e " s~#+(!(define|trydef|redefine)[[:space:]]? $NAME )~#\1~g" ${CONFIG_FILE}
180180}
181- export -f enableKamailioConfigAttrib
181+ export -f enableKamailioConfigFeature
182182
183- # $1 == attribute name
183+ # $1 == feature name
184184# $2 == kamailio config file
185- function disableKamailioConfigAttrib () {
185+ function disableKamailioConfigFeature () {
186186 local NAME=" $1 "
187187 local CONFIG_FILE=" $2 "
188188
189189 sed -i -r -e " s~#+(!(define|trydef|redefine)[[:space:]]? $NAME )~##\1~g" ${CONFIG_FILE}
190190}
191- export -f disableKamailioConfigAttrib
191+ export -f disableKamailioConfigFeature
192192
193193# $1 == name of defined url to change
194194# $2 == value to change url to
@@ -204,6 +204,24 @@ function setKamailioConfigDburl() {
204204}
205205export -f setKamailioConfigDburl
206206
207+ # $1 == name of define to change
208+ # $2 ==
209+ # $3 == kamailio config file
210+ # $4 == -q (quote as string)
211+ function setKamailioConfigDef() {
212+ local NAME=" $1 "
213+ local VALUE=" $2 "
214+ local CONFIG_FILE=" $3 "
215+
216+ if [[ " $4 " == " -q" ]]; then
217+ VALUE=' "' " ${VALUE} " ' "'
218+ fi
219+
220+ perl -e " \$ name='${NAME} '; \$ value='${VALUE} ';" \
221+ -i -pe ' s%(#+\!)(define|trydef|redefine)([ \t]+${name}[ \t]+).*%\1\2\3${value}%g' ${CONFIG_FILE}
222+ }
223+ export -f setKamailioConfigDef
224+
207225# $1 == name of substdef to change
208226# $2 == value to change substdef to
209227# $3 == kamailio config file
@@ -388,6 +406,8 @@ export -f ipv6Test
388406# notes: prints internal ip, or empty string if not available
389407# notes: tries ipv4 first then ipv6
390408function getInternalIP() {
409+ local IPV6_ENABLED=${IPV6_ENABLED:- 0}
410+
391411 local IP=$( ip -4 route get $GOOGLE_DNS_IPV4 2> /dev/null | head -1 | grep -oP ' src \K([^\s]+)' )
392412 if (( ${IPV6_ENABLED} == 1 )) && [[ -z " $IP " ]]; then
393413 IP=$( ip -6 route get $GOOGLE_DNS_IPV6 2> /dev/null | head -1 | grep -oP ' src \K([^\s]+)' )
@@ -470,11 +490,14 @@ export -f getInternalFQDN
470490# notes: will use EXTERNAL_IP if available or look it up dynamically
471491# notes: tries ipv4 first then ipv6
472492function getExternalFQDN() {
493+ local IPV6_ENABLED=${IPV6_ENABLED:- 0}
494+
473495 local EXTERNAL_IP=${EXTERNAL_IP:- $(getExternalIP)}
474496 local EXTERNAL_FQDN=$( dig @${GOOGLE_DNS_IPV4} +short -x ${EXTERNAL_IP} 2> /dev/null | head -1 | sed ' s/\.$//' )
475497 if (( ${IPV6_ENABLED} == 1 )) && [[ -z " $EXTERNAL_FQDN " ]]; then
476498 EXTERNAL_FQDN=$( dig @${GOOGLE_DNS_IPV6} +short -x ${EXTERNAL_IP} 2> /dev/null | head -1 | sed ' s/\.$//' )
477499 fi
500+
478501 printf ' %s' " $EXTERNAL_FQDN "
479502}
480503export -f getExternalFQDN
@@ -483,6 +506,7 @@ export -f getExternalFQDN
483506# notes: prints internal CIDR address, or empty string if not available
484507# notes: tries ipv4 first then ipv6
485508function getInternalCIDR() {
509+ local IPV6_ENABLED=${IPV6_ENABLED:- 0}
486510 local PREFIX_LEN=" " DEF_IFACE=" "
487511 local IP=$( ip -4 route get $GOOGLE_DNS_IPV4 2> /dev/null | head -1 | grep -oP ' src \K([^\s]+)' )
488512
@@ -505,6 +529,26 @@ function getInternalCIDR() {
505529}
506530export -f getInternalCIDR
507531
532+ # $1 == host to resolve
533+ # $2 == -a (return all resolved IPs)
534+ # output: IP address(es) of host
535+ function hostToIP() {
536+ local IPV6_ENABLED=${IPV6_ENABLED:- 0}
537+ local HOST=" $1 "
538+
539+ local IP_ADDR=$( dig @${GOOGLE_DNS_IPV4} +short A ${HOST} 2> /dev/null)
540+ if (( ${IPV6_ENABLED} == 1 )) && [[ -z " $EXTERNAL_FQDN " ]]; then
541+ IP_ADDR=$( dig @${GOOGLE_DNS_IPV6} +short AAAA ${HOST} 2> /dev/null | head -1 | sed ' s/\.$//' )
542+ fi
543+
544+ if [[ " $2 " == " -a" ]]; then
545+ echo -n " $IP_ADDR "
546+ else
547+ echo -n " $IP_ADDR " | head -1
548+ fi
549+ }
550+ export -f hostToIP
551+
508552# $1 == cmd as executed in systemd (by ExecStart=)
509553# notes: take precaution when adding long running functions as they will block startup in boot order
510554# notes: adding init commands on an AMI instance must not be long running processes, otherwise they will fail
0 commit comments