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 @@
+
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) {
|
"> |
|
-
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 @@
|