Ver Fonte

improved dns zones verifications

Serghey Rodin há 14 anos atrás
pai
commit
2346d26bf9
3 ficheiros alterados com 35 adições e 3 exclusões
  1. 3 3
      bin/v_add_dns_domain_record
  2. 1 0
      bin/v_del_dns_domain_record
  3. 31 0
      func/shared_func.sh

+ 3 - 3
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 
 

+ 1 - 0
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

+ 31 - 0
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" ;;