From 2346d26bf98645a2605f83b428db2ac01555c355 Mon Sep 17 00:00:00 2001 From: Serghey Rodin Date: Thu, 25 Aug 2011 12:46:08 +0300 Subject: [PATCH] improved dns zones verifications --- bin/v_add_dns_domain_record | 6 +++--- bin/v_del_dns_domain_record | 1 + func/shared_func.sh | 31 +++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/bin/v_add_dns_domain_record b/bin/v_add_dns_domain_record index cb3023a7d..f37f31fb1 100755 --- a/bin/v_add_dns_domain_record +++ b/bin/v_add_dns_domain_record @@ -11,7 +11,7 @@ domain=$(idn -t --quiet -u "$2" ) domain_idn=$(idn -t --quiet -a "$domain") record=$(idn -t --quiet -u "$3" ) rtype=$(echo "$4"| tr '[:lower:]' '[:upper:]') -value=$(idn -t --quiet -u "$5" ) +dvalue=$(idn -t --quiet -u "$5" ) id="$6" # Importing variables @@ -28,7 +28,7 @@ source $V_FUNC/domain_func.sh check_args '5' "$#" 'user domain record type value [id]' # Checking argument format -format_validation 'user' 'domain' 'record' 'rtype' +format_validation 'user' 'domain' 'record' 'rtype' 'dvalue' # Checking web system is enabled is_system_enabled 'dns' @@ -65,7 +65,7 @@ is_dns_record_free zone="$V_USERS/$user/zones/$domain" # Adding record -dns_rec="ID='$id' RECORD='$record' TYPE='$rtype' VALUE='$value'" +dns_rec="ID='$id' RECORD='$record' TYPE='$rtype' VALUE='$dvalue'" dns_rec="$dns_rec SUSPEND='no' DATE='$V_DATE'" echo "$dns_rec" >> $zone diff --git a/bin/v_del_dns_domain_record b/bin/v_del_dns_domain_record index f5114461d..5a16a904d 100755 --- a/bin/v_del_dns_domain_record +++ b/bin/v_del_dns_domain_record @@ -8,6 +8,7 @@ # Argument defenition user="$1" domain=$(idn -t --quiet -u "$2" ) +domain_idn=$(idn -t --quiet -a "$domain") id="$3" # Importing variables diff --git a/func/shared_func.sh b/func/shared_func.sh index 5140a337b..068a803d6 100644 --- a/func/shared_func.sh +++ b/func/shared_func.sh @@ -266,6 +266,11 @@ format_validation() { MX) known='yes';; TXT) known='yes';; SRV) known='yes';; + DNSKEY) known='yes';; + KEY) known='yes';; + IPSECKEY) known='yes';; + PTR) known='yes';; + SPF) known='yes';; *) known='no';; esac @@ -288,6 +293,31 @@ format_validation() { fi } + # Defining format_dvl function + format_dvl() { + val="$1" + + # Checking spaces + check_spaces="$(echo "$val"|grep ' ')" + check_rtype="$(echo "A AAAA NS CNAME" | grep -i -w "$rtype")" + if [ ! -z "$check_spaces" ] && [ ! -z "$check_rtype" ]; then + echo "Error: $var is out of range" + log_event 'debug' "$E_OUTOFRANGE $V_EVENT" + exit $E_OUTOFRANGE + fi + + # Checking ip + if [ "$rtype" = 'A' ]; then + format_ip "$val" + fi + + # Checking domain + if [ "$rtype" = 'NS' ]; then + format_dom "$val" + fi + + } + # Lopp on all variables for var in $*; do # Parsing reference @@ -302,6 +332,7 @@ format_validation() { domain) format_dom "$v" ;; database) format_db "$v" ;; db_user) format_dbu "$v" ;; + dvalue) format_dvl "$v" ;; fname) format_usr "$v" ;; job) format_int "$v" ;; ns) format_dom "$v" ;;