X-Git-Url: http://ftp.carnet.hr/pub/carnet-debian/scm?a=blobdiff_plain;f=functions.sh;h=851be629fb86e6c708b009ee80f7c7020a7a6ec6;hb=31f85c4552a2420027d09f016d66a3bbd3706834;hp=84af78032ba88e54cec649e2012d70a9cef1adea;hpb=dd60228fb054bcc7ad1f222d1de6c7f351c00069;p=carnet-tools-cn.git diff --git a/functions.sh b/functions.sh index 84af780..851be62 100644 --- a/functions.sh +++ b/functions.sh @@ -151,7 +151,7 @@ cp_get_netaddr() { if [ "$netmask" = "255.255.255.255" ]; then cidr="$ipaddress/32" else - cidr="`ipcalc -ncb $ipaddress $netmask | awk '/^Network:/{print $2}'`" + cidr="`ipcalc -nb $ipaddress $netmask | awk '/^Network:/{print $2}'`" fi RET="$cidr" @@ -476,7 +476,83 @@ cp_get_ldap_realm() { RET="`echo $RET | awk -F, '{print $1}' | awk -F= '{print $2}'`" [ -z "$RET" ] && echo "cp_get_ldap_realm: No LDAP REALM in /etc/ldap/slapd.conf" >&2 - [ -z "$echo_return" ] || echo $RET - CP_ECHO_RETURN="$echo_return" } +# if fqdn is name.dom3.dom2.dom1.hr, check if this host is MX for +# either dom3.dom2.dom1.hr, dom2.dom1.hr or dom1.hr and dump highest level +# domain on stdout +cp_get_mx_domain() { + [ "$CP_SCRIPT_DEBUG" ] && set -vx + + local domains d host + + host=$(hostname -f) + RET="$host" + if ! echo "$host" | grep -q '\.'; then + return + fi + if [ ! -x /usr/bin/host ]; then + # no host command + return + fi + domains=$(/bin/hostname -f | awk -F. ' + { + for (i=2; i output_functions + # new-prefix list-of-functions + perl -e ' + $prefix = shift; %keep = (); $output = ""; + $keep{$_} = 1 for @ARGV; + # add dependent functions + %deps = ( + get_ifaddr => [ "get_ifdefault" ], + get_netaddr => [ "get_ifdefault", "get_ifaddr", "get_ifmask" ], + check_and_backup => [ "backup_conffile" ], + check_and_sed => [ "mv" ], + get_ldap_realm => [ "get_ldap_suffix" ], + ); + foreach my $f (keys(%keep)) { + if (exists($deps{$f})) { + $keep{$_} = 1 for (@{$deps{$f}}); + } + } + while () { + if (/^_?cp_(\w+) *\(\) *\{/) { + if (! exists($keep{$1})) { + while () { last if /^\}/; } # skip it + next; + } else { + $output .= "\n"; + } + } + next if /^\s*(\#|$)/; + $output .= $_; + } + $output =~ s/\b(_?)cp_/$1${prefix}_/sg; + $prefix = uc($prefix); + $output =~ s/\b(_?)CP_/$1${prefix}_/sg; + print $output; + ' -- $* +}