improved dns zones verifications

This commit is contained in:
Serghey Rodin 2011-08-25 12:46:08 +03:00
commit 2346d26bf9
3 changed files with 35 additions and 3 deletions

View file

@ -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

View file

@ -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

View file

@ -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" ;;