diff --git a/bin/v_change_dns_domain_record b/bin/v_change_dns_domain_record index 88fc8281..43e9187b 100755 --- a/bin/v_change_dns_domain_record +++ b/bin/v_change_dns_domain_record @@ -1,6 +1,6 @@ #!/bin/bash # info: change dns domain record -# options: user domain id record type value [priority] +# options: user domain id value [priority] # # The function for changing DNS record. @@ -14,13 +14,10 @@ user=$1 domain=$(idn -t --quiet -u "$2" ) domain=$(echo $domain | tr '[:upper:]' '[:lower:]') domain_idn=$(idn -t --quiet -a "$domain") -record=$(idn -t --quiet -u "$3" ) -record=$(echo $record | tr '[:upper:]' '[:lower:]') -rtype=$(echo "$4"| tr '[:lower:]' '[:upper:]') -dvalue=$(idn -t --quiet -u "$5" ) +id=$3 +dvalue=$(idn -t --quiet -u "$4" ) dvalue=$(echo $dvalue | tr '[:upper:]' '[:lower:]') -id=$6 -priority=$7 +priority=$5 # Includes source $VESTA/conf/vesta.conf @@ -32,8 +29,8 @@ source $VESTA/func/domain.sh # Verifications # #----------------------------------------------------------# -check_args '6' "$#" 'user domain record type id value [priority]' -validate_format 'user' 'domain' 'record' 'rtype' 'dvalue' 'id' +check_args '4' "$#" 'user domain id value [priority]' +validate_format 'user' 'domain' 'id' 'dvalue' is_system_enabled "$DNS_SYSTEM" is_object_valid 'user' 'USER' "$user" is_object_unsuspended 'user' 'USER' "$user" @@ -46,15 +43,16 @@ is_object_valid "dns/$domain" 'ID' "$id" # Action # #----------------------------------------------------------# -if [ "$rtype" != 'MX' ] || [ "$rtype" != 'SRV' ]; then +# Deleting old record +line=$(grep "ID='$id'" $USER_DATA/dns/$domain.conf) +eval $line +if [ "$TYPE" != 'MX' ] && [ "$TYPE" != 'SRV' ]; then priority='' fi - -# Deleting old record sed -i "/^ID='$id'/d" $USER_DATA/dns/$domain.conf # Adding record -dns_rec="ID='$id' RECORD='$record' TYPE='$rtype' PRIORITY='$priority'" +dns_rec="ID='$id' RECORD='$RECORD' TYPE='$TYPE' PRIORITY='$priority'" dns_rec="$dns_rec VALUE='$dvalue' SUSPENDED='no' TIME='$TIME' DATE='$DATE'" echo "$dns_rec" >> $USER_DATA/dns/$domain.conf diff --git a/bin/v_list_dns_domain_records b/bin/v_list_dns_domain_records index 6729c3e1..785a8441 100755 --- a/bin/v_list_dns_domain_records +++ b/bin/v_list_dns_domain_records @@ -86,7 +86,7 @@ is_object_valid 'dns' 'DOMAIN' "$domain" # Defining config and fields conf=$USER_DATA/dns/$domain.conf -fields='$ID $RECORD $TYPE $PRIORITY $VALUE $SUSPENDED $TIME $DATE' +fields='$ID $RECORD $TYPE $PRIORITY $VALUE $ID $SUSPENDED $TIME $DATE' # Listing domains case $format in diff --git a/web/edit/dns/index.php b/web/edit/dns/index.php index 9c6fd421..e4aeb787 100644 --- a/web/edit/dns/index.php +++ b/web/edit/dns/index.php @@ -26,119 +26,182 @@ if ($_SESSION['user'] == 'admin') { } // Check domain - $v_domain = escapeshellarg($_GET['domain']); - exec (VESTA_CMD."v_list_dns_domain ".$user." ".$v_domain." json", $output, $return_var); - if ($return_var != 0) { - $error = implode('
', $output); - if (empty($error)) $error = 'Error: vesta did not return any output.'; - $_SESSION['error_msg'] = $error; + if ((!empty($_GET['domain'])) && (empty($_GET['record_id']))) { + $v_domain = escapeshellarg($_GET['domain']); + exec (VESTA_CMD."v_list_dns_domain ".$user." ".$v_domain." json", $output, $return_var); + if ($return_var != 0) { + $error = implode('
', $output); + if (empty($error)) $error = 'Error: vesta did not return any output.'; + $_SESSION['error_msg'] = $error; + } else { + $data = json_decode(implode('', $output), true); + unset($output); + + $v_username = $user; + $v_domain = $_GET['domain']; + $v_ip = $data[$v_domain]['IP']; + $v_template = $data[$v_domain]['TPL']; + $v_ttl = $data[$v_domain]['TTL']; + $v_exp = $data[$v_domain]['EXP']; + $v_soa = $data[$v_domain]['SOA']; + $v_date = $data[$v_domain]['DATE']; + $v_time = $data[$v_domain]['TIME']; + $v_suspended = $data[$v_domain]['SUSPENDED']; + if ( $v_suspended == 'yes' ) { + $v_status = 'suspended'; + } else { + $v_status = 'active'; + } + + exec (VESTA_CMD."v_list_dns_templates json", $output, $return_var); + $templates = json_decode(implode('', $output), true); + unset($output); + } + + // Action + if (!empty($_POST['save'])) { + $v_domain = escapeshellarg($_POST['v_domain']); + + // IP + if (($v_ip != $_POST['v_ip']) && (empty($_SESSION['error_msg']))) { + $v_ip = escapeshellarg($_POST['v_ip']); + exec (VESTA_CMD."v_change_dns_domain_ip ".$v_username." ".$v_domain." ".$v_ip." 'no'", $output, $return_var); + if ($return_var != 0) { + $error = implode('
', $output); + if (empty($error)) $error = 'Error: vesta did not return any output.'; + $_SESSION['error_msg'] = $error; + } + $restart_dns = 'yes'; + unset($output); + } + + // Template + if (($v_template != $_POST['v_template']) && (empty($_SESSION['error_msg']))) { + $v_template = escapeshellarg($_POST['v_template']); + exec (VESTA_CMD."v_change_dns_domain_tpl ".$v_username." ".$v_domain." ".$v_template." 'no'", $output, $return_var); + if ($return_var != 0) { + $error = implode('
', $output); + if (empty($error)) $error = 'Error: vesta did not return any output.'; + $_SESSION['error_msg'] = $error; + } + unset($output); + $restart_dns = 'yes'; + } + + // SOA + if (($v_soa != $_POST['v_soa']) && (empty($_SESSION['error_msg']))) { + $v_soa = escapeshellarg($_POST['v_soa']); + exec (VESTA_CMD."v_change_dns_domain_soa ".$v_username." ".$v_domain." ".$v_soa." 'no'", $output, $return_var); + if ($return_var != 0) { + $error = implode('
', $output); + if (empty($error)) $error = 'Error: vesta did not return any output.'; + $_SESSION['error_msg'] = $error; + } + unset($output); + $restart_dns = 'yes'; + } + + // EXP + if (($v_exp != $_POST['v_exp']) && (empty($_SESSION['error_msg']))) { + $v_exp = escapeshellarg($_POST['v_exp']); + exec (VESTA_CMD."v_change_dns_domain_exp ".$v_username." ".$v_domain." ".$v_exp." 'no'", $output, $return_var); + if ($return_var != 0) { + $error = implode('
', $output); + if (empty($error)) $error = 'Error: vesta did not return any output.'; + $_SESSION['error_msg'] = $error; + } + unset($output); + $restart_dns = 'yes'; + } + + // TTL + if (($v_ttl != $_POST['v_ttl']) && (empty($_SESSION['error_msg']))) { + $v_ttl = escapeshellarg($_POST['v_ttl']); + exec (VESTA_CMD."v_change_dns_domain_ttl ".$v_username." ".$v_domain." ".$v_ttl." 'no'", $output, $return_var); + if ($return_var != 0) { + $error = implode('
', $output); + if (empty($error)) $error = 'Error: vesta did not return any output.'; + $_SESSION['error_msg'] = $error; + } + unset($output); + $restart_dns = 'yes'; + } + + // Restart dns + if (!empty($restart_dns) && (empty($_SESSION['error_msg']))) { + exec (VESTA_CMD."v_restart_dns", $output, $return_var); + if ($return_var != 0) { + $error = implode('
', $output); + if (empty($error)) $error = 'Error: vesta did not return any output.'; + $_SESSION['error_msg'] = $error; + } + } + + if (empty($_SESSION['error_msg'])) { + $_SESSION['ok_msg'] = "OK: changes has been saved."; + } + + } + include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/menu_edit_dns.html'); + include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_dns.html'); + unset($_SESSION['error_msg']); + unset($_SESSION['ok_msg']); } else { - $data = json_decode(implode('', $output), true); - unset($output); + $v_domain = escapeshellarg($_GET['domain']); + $v_record_id = escapeshellarg($_GET['record_id']); + exec (VESTA_CMD."v_list_dns_domain_records ".$user." ".$v_domain." 'json'", $output, $return_var); + if ($return_var != 0) { + $error = implode('
', $output); + if (empty($error)) $error = 'Error: vesta did not return any output.'; + $_SESSION['error_msg'] = $error; + } else { + $data = json_decode(implode('', $output), true); + unset($output); + $v_username = $user; + $v_domain = $_GET['domain']; + $v_record_id = $_GET['record_id']; + $v_rec = $data[$v_record_id]['RECORD']; + $v_type = $data[$v_record_id]['TYPE']; + $v_val = $data[$v_record_id]['VALUE']; + $v_priority = $data[$v_record_id]['PRIORITY']; + $v_suspended = $data[$v_record_id]['SUSPENDED']; + if ( $v_suspended == 'yes' ) { + $v_status = 'suspended'; + } else { + $v_status = 'active'; + } + $v_date = $data[$v_record_id]['DATE']; + $v_time = $data[$v_record_id]['TIME']; + } - $v_username = $user; - $v_domain = $_GET['domain']; - $v_ip = $data[$v_domain]['IP']; - $v_template = $data[$v_domain]['TPL']; - $v_ttl = $data[$v_domain]['TTL']; - $v_exp = $data[$v_domain]['EXP']; - $v_soa = $data[$v_domain]['SOA']; - $v_date = $data[$v_domain]['DATE']; - $v_time = $data[$v_domain]['TIME']; + // Action + if (!empty($_POST['save'])) { + $v_domain = escapeshellarg($_POST['v_domain']); + $v_record_id = escapeshellarg($_POST['v_record_id']); - exec (VESTA_CMD."v_list_dns_templates json", $output, $return_var); - $templates = json_decode(implode('', $output), true); - unset($output); + if (($v_val != $_POST['v_val']) || ($v_priority != $_POST['v_priority']) && (empty($_SESSION['error_msg']))) { + $v_val = escapeshellarg($_POST['v_val']); + $v_priority = escapeshellarg($_POST['v_priority']); + exec (VESTA_CMD."v_change_dns_domain_record ".$v_username." ".$v_domain." ".$v_record_id." ".$v_val." ".$v_priority, $output, $return_var); + if ($return_var != 0) { + $error = implode('
', $output); + if (empty($error)) $error = 'Error: vesta did not return any output.'; + $_SESSION['error_msg'] = $error; + } + $restart_dns = 'yes'; + unset($output); + } + + if (empty($_SESSION['error_msg'])) { + $_SESSION['ok_msg'] = "OK: changes has been saved."; + } + + } + include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/menu_edit_dns_rec.html'); + include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_dns_rec.html'); + unset($_SESSION['error_msg']); + unset($_SESSION['ok_msg']); } - - // Action - if (!empty($_POST['save'])) { - $v_domain = escapeshellarg($_POST['v_domain']); - - // IP - if (($v_ip != $_POST['v_ip']) && (empty($_SESSION['error_msg']))) { - $v_ip = escapeshellarg($_POST['v_ip']); - exec (VESTA_CMD."v_change_dns_domain_ip ".$v_username." ".$v_domain." ".$v_ip." 'no'", $output, $return_var); - if ($return_var != 0) { - $error = implode('
', $output); - if (empty($error)) $error = 'Error: vesta did not return any output.'; - $_SESSION['error_msg'] = $error; - } - $restart_dns = 'yes'; - unset($output); - } - - // Template - if (($v_template != $_POST['v_template']) && (empty($_SESSION['error_msg']))) { - $v_template = escapeshellarg($_POST['v_template']); - exec (VESTA_CMD."v_change_dns_domain_tpl ".$v_username." ".$v_domain." ".$v_template." 'no'", $output, $return_var); - if ($return_var != 0) { - $error = implode('
', $output); - if (empty($error)) $error = 'Error: vesta did not return any output.'; - $_SESSION['error_msg'] = $error; - } - unset($output); - $restart_dns = 'yes'; - } - - // SOA - if (($v_soa != $_POST['v_soa']) && (empty($_SESSION['error_msg']))) { - $v_soa = escapeshellarg($_POST['v_soa']); - exec (VESTA_CMD."v_change_dns_domain_soa ".$v_username." ".$v_domain." ".$v_soa." 'no'", $output, $return_var); - if ($return_var != 0) { - $error = implode('
', $output); - if (empty($error)) $error = 'Error: vesta did not return any output.'; - $_SESSION['error_msg'] = $error; - } - unset($output); - $restart_dns = 'yes'; - } - - // EXP - if (($v_exp != $_POST['v_exp']) && (empty($_SESSION['error_msg']))) { - $v_exp = escapeshellarg($_POST['v_exp']); - exec (VESTA_CMD."v_change_dns_domain_exp ".$v_username." ".$v_domain." ".$v_exp." 'no'", $output, $return_var); - if ($return_var != 0) { - $error = implode('
', $output); - if (empty($error)) $error = 'Error: vesta did not return any output.'; - $_SESSION['error_msg'] = $error; - } - unset($output); - $restart_dns = 'yes'; - } - - // TTL - if (($v_ttl != $_POST['v_ttl']) && (empty($_SESSION['error_msg']))) { - $v_ttl = escapeshellarg($_POST['v_ttl']); - exec (VESTA_CMD."v_change_dns_domain_ttl ".$v_username." ".$v_domain." ".$v_ttl." 'no'", $output, $return_var); - if ($return_var != 0) { - $error = implode('
', $output); - if (empty($error)) $error = 'Error: vesta did not return any output.'; - $_SESSION['error_msg'] = $error; - } - unset($output); - $restart_dns = 'yes'; - } - - // Restart dns - if (!empty($restart_dns) && (empty($_SESSION['error_msg']))) { - exec (VESTA_CMD."v_restart_dns", $output, $return_var); - if ($return_var != 0) { - $error = implode('
', $output); - if (empty($error)) $error = 'Error: vesta did not return any output.'; - $_SESSION['error_msg'] = $error; - } - } - - if (empty($_SESSION['error_msg'])) { - $_SESSION['ok_msg'] = "OK: changes has been saved."; - } - - } - include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/menu_edit_dns.html'); - include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_dns.html'); - unset($_SESSION['error_msg']); - unset($_SESSION['ok_msg']); } // Footer diff --git a/web/templates/admin/edit_dns_rec.html b/web/templates/admin/edit_dns_rec.html new file mode 100644 index 00000000..b25f2962 --- /dev/null +++ b/web/templates/admin/edit_dns_rec.html @@ -0,0 +1,35 @@ + + + + + +
+ + + + +
+
+ + +
+
+ + + + + + + + +
Domain
Record
Type
Value
Priority (optional)
+ + +
+
diff --git a/web/templates/admin/list_dns_rec.html b/web/templates/admin/list_dns_rec.html index 6e0a7ee5..1c29c009 100644 --- a/web/templates/admin/list_dns_rec.html +++ b/web/templates/admin/list_dns_rec.html @@ -18,15 +18,14 @@ foreach ($data as $key => $value) { "> - - - - + + +
edit delete edit delete
diff --git a/web/templates/admin/menu_dns_rec.html b/web/templates/admin/menu_dns_rec.html index 523d7615..887d29de 100644 --- a/web/templates/admin/menu_dns_rec.html +++ b/web/templates/admin/menu_dns_rec.html @@ -1,7 +1,7 @@