Jelajahi Sumber

Merge pull request #998 from hestiacp/fix/dns-ui-fixes

Fix/dns ui fixes
Kristan Kenney 5 tahun lalu
induk
melakukan
27c0aa4046

+ 6 - 2
bin/v-change-dns-record

@@ -58,13 +58,17 @@ check_hestia_demo_mode
 line=$(grep "ID='$id'" $USER_DATA/dns/$domain.conf)
 parse_object_kv_list "$line"
 
+if [ -z $type ]; then
+    type=$TYPE
+fi
+
 # Null priority for none MX/SRV records
-if [ "$TYPE" != 'MX' ] && [ "$TYPE" != 'SRV' ]; then
+if [ "$type" != 'MX' ] && [ "$TYPE" != 'SRV' ]; then
     priority=''
 fi
 
 # Add trailing dot at the end of NS/CNAME/MX/PTR/SRV record
-if [[ $TYPE =~ NS|CNAME|MX|PTR|SRV ]]; then
+if [[ $type =~ NS|CNAME|MX|PTR|SRV ]]; then
     trailing_dot=$(echo $dvalue | grep "\.$")
     if [ -z $trailing_dot ]; then
         dvalue="$dvalue."

+ 6 - 4
web/add/dns/index.php

@@ -123,15 +123,15 @@ if (!empty($_POST['ok_rec'])) {
     $v_val = escapeshellarg($_POST['v_val']);
     $v_priority = escapeshellarg($_POST['v_priority']);
     $v_ttl = escapeshellarg($_POST['v_ttl']);
-
     // Add dns record
     if (empty($_SESSION['error_msg'])) {
         exec (HESTIA_CMD."v-add-dns-record ".$user." ".$v_domain." ".$v_rec." ".$v_type." ".$v_val." ".$v_priority." '' false ".$v_ttl, $output, $return_var);
         check_return_code($return_var,$output);
         unset($output);
-        $v_type = $_POST['v_type'];
+        
     }
-
+    $v_type = $_POST['v_type'];
+    
     // Flush field values on success
     if (empty($_SESSION['error_msg'])) {
         $_SESSION['ok_msg'] = __('DNS_RECORD_CREATED_OK',htmlentities($_POST['v_rec']),htmlentities($_POST['v_domain']));
@@ -179,8 +179,10 @@ if (empty($_GET['domain'])) {
     render_page($user, $TAB, 'add_dns');
 } else {
     // Display body for dns record
-
     $v_domain = $_GET['domain'];
+    if (empty($v_rec)){
+      $v_rec = '@';  
+    }
     render_page($user, $TAB, 'add_dns_rec');
 }
 

+ 49 - 0
web/js/pages/edit_dns_rec.js

@@ -0,0 +1,49 @@
+//
+//
+// Updates database dns record dynamically, showing its full domain path
+App.Actions.DB.update_dns_record_hint = function(elm, hint) {
+    // clean hint
+    if (hint.trim() == '') {
+        $(elm).parent().find('.hint').html('');
+    }
+
+    // set domain name without rec in case of @ entries
+    if (hint == '@') {
+        hint = '';
+    }
+
+    // dont show pregix if domain name = rec value
+    if (hint == GLOBAL.DNS_REC_PREFIX + '.') {
+        hint = '';
+    }
+
+    // add dot at the end if needed
+    if (hint != '' && hint.slice(-1) != '.') {
+        hint += '.';
+    }
+
+    $(elm).parent().find('.hint').text(hint + GLOBAL.DNS_REC_PREFIX);
+}
+
+//
+// listener that triggers dns record name hint updating
+App.Listeners.DB.keypress_dns_rec_entry = function() {
+    var ref = $('input[name="v_rec"]');
+    var current_rec = ref.val();
+    if (current_rec.trim() != '') {
+        App.Actions.DB.update_dns_record_hint(ref, current_rec);
+    }
+
+    ref.bind('keypress input', function(evt) {
+        clearTimeout(window.frp_usr_tmt);
+        window.frp_usr_tmt = setTimeout(function() {
+            var elm = $(evt.target);
+            App.Actions.DB.update_dns_record_hint(elm, $(elm).val());
+        }, 100);
+    });
+}
+
+//
+// Page entry point
+// Trigger listeners
+App.Listeners.DB.keypress_dns_rec_entry();

+ 6 - 6
web/templates/admin/add_dns_rec.html

@@ -75,18 +75,18 @@
                                     <select class="vst-list" name="v_type">
                                         <option value="A" <?php if ($v_type == 'A') echo selected; ?>>A</option>
                                         <option value="AAAA" <?php if ($v_type == 'AAAA') echo selected; ?>>AAAA</option>
-                                        <option value="NS" <?php if ($v_type == 'NS') echo selected; ?>>NS</option>
+                                        <option value="CAA" <?php if ($v_type == 'CAA') echo selected; ?>>CAA</option>
                                         <option value="CNAME" <?php if ($v_type == 'CNAME') echo selected; ?>>CNAME</option>
-                                        <option value="MX" <?php if ($v_type == 'MX') echo selected; ?>>MX</option>
-                                        <option value="TXT" <?php if ($v_type == 'TXT') echo selected; ?>>TXT</option>
-                                        <option value="SRV" <?php if ($v_type == 'SRV') echo selected; ?>>SRV</option>
                                         <option value="DNSKEY" <?php if ($v_type == 'DNSKEY') echo selected; ?>>DNSKEY</option>
-                                        <option value="KEY" <?php if ($v_type == 'KEY') echo selected; ?>>KEY</option>
                                         <option value="IPSECKEY" <?php if ($v_type == 'IPSECKEY') echo selected; ?>>IPSECKEY</option>
+                                        <option value="KEY" <?php if ($v_type == 'KEY') echo selected; ?>>KEY</option>
+                                        <option value="MX" <?php if ($v_type == 'MX') echo selected; ?>>MX</option>
+                                        <option value="NS" <?php if ($v_type == 'NS') echo selected; ?>>NS</option>
                                         <option value="PTR" <?php if ($v_type == 'PTR') echo selected; ?>>PTR</option>
                                         <option value="SPF" <?php if ($v_type == 'SPF') echo selected; ?>>SPF</option>
+                                        <option value="SRV" <?php if ($v_type == 'SRV') echo selected; ?>>SRV</option>
                                         <option value="TLSA" <?php if ($v_type == 'TLSA') echo selected; ?>>TLSA</option>
-                                        <option value="CAA" <?php if ($v_type == 'CAA') echo selected; ?>>CAA</option>
+                                        <option value="TXT" <?php if ($v_type == 'TXT') echo selected; ?>>TXT</option>
                                     </select>
                                 </td>
                             </tr>

+ 11 - 12
web/templates/admin/edit_dns_rec.html

@@ -73,6 +73,7 @@
                                 <td>
                                   <input type="text" size="20" class="vst-input" name="v_rec" value="<?=htmlentities(trim($v_rec, "'"))?>">
                                   <input type="hidden" name="v_record_id" value="<?=htmlentities($v_record_id)?>">
+                                  <small class="hint"></small>
                                 </td>
                             </tr>
                             <tr>
@@ -85,18 +86,18 @@
                                     <select class="vst-list" name="v_type">
                                         <option value="A" <?php if ($v_type == 'A') echo selected; ?>>A</option>
                                         <option value="AAAA" <?php if ($v_type == 'AAAA') echo selected; ?>>AAAA</option>
-                                        <option value="NS" <?php if ($v_type == 'NS') echo selected; ?>>NS</option>
+                                        <option value="CAA" <?php if ($v_type == 'CAA') echo selected; ?>>CAA</option>
                                         <option value="CNAME" <?php if ($v_type == 'CNAME') echo selected; ?>>CNAME</option>
-                                        <option value="MX" <?php if ($v_type == 'MX') echo selected; ?>>MX</option>
-                                        <option value="TXT" <?php if ($v_type == 'TXT') echo selected; ?>>TXT</option>
-                                        <option value="SRV" <?php if ($v_type == 'SRV') echo selected; ?>>SRV</option>
                                         <option value="DNSKEY" <?php if ($v_type == 'DNSKEY') echo selected; ?>>DNSKEY</option>
-                                        <option value="KEY" <?php if ($v_type == 'KEY') echo selected; ?>>KEY</option>
                                         <option value="IPSECKEY" <?php if ($v_type == 'IPSECKEY') echo selected; ?>>IPSECKEY</option>
+                                        <option value="KEY" <?php if ($v_type == 'KEY') echo selected; ?>>KEY</option>
+                                        <option value="MX" <?php if ($v_type == 'MX') echo selected; ?>>MX</option>
+                                        <option value="NS" <?php if ($v_type == 'NS') echo selected; ?>>NS</option>
                                         <option value="PTR" <?php if ($v_type == 'PTR') echo selected; ?>>PTR</option>
                                         <option value="SPF" <?php if ($v_type == 'SPF') echo selected; ?>>SPF</option>
+                                        <option value="SRV" <?php if ($v_type == 'SRV') echo selected; ?>>SRV</option>
                                         <option value="TLSA" <?php if ($v_type == 'TLSA') echo selected; ?>>TLSA</option>
-                                        <option value="CAA" <?php if ($v_type == 'CAA') echo selected; ?>>CAA</option>
+                                        <option value="TXT" <?php if ($v_type == 'TXT') echo selected; ?>>TXT</option>
                                     </select>
                                 </td>
                             </tr>
@@ -139,14 +140,9 @@
                                     <input type="text" size="20" class="vst-input" name="v_ttl" value="<?=htmlentities(trim($v_ttl, "'"))?>">
                                 </td>
                             </tr>                            
-                            <tr>
-                                <td class="vst-text input-label">
-                                    <?php print __('Record Number');?> <span class="optional">(<?=__('internal');?>)</span>
-                                </td>
-                            </tr>
                             <tr>
                                 <td>
-                                    <input type="text" size="20" class="vst-input" name="v_record_id" value="<?=htmlentities(trim($v_record_id, "'"))?>">
+                                    <input type="hidden" size="20" class="vst-input" name="v_record_id" value="<?=htmlentities(trim($v_record_id, "'"))?>">
                                 </td>
                             </tr>
                         </table>
@@ -156,3 +152,6 @@
             </table>
         </form>
     </div>
+    <script>
+        GLOBAL.DNS_REC_PREFIX = <?=json_encode($_GET['domain'])?>;
+    </script>    

+ 11 - 9
web/templates/admin/list_dns_rec.html

@@ -44,10 +44,11 @@
             <input id="toggle-all" type="checkbox" name="toggle-all" value="toggle-all" onChange="checkedAll('objects');">
           </div>
           <div class="clearfix l-unit__stat-col--left small"><b><?php print __('Record');?></b></div>
-          <div class="clearfix l-unit__stat-col--left compact text-right"><b>&nbsp;</b></div>
-          <div class="clearfix l-unit__stat-col--left compact text-center"><b><?php print __('Type');?></b></div>
-          <div class="clearfix l-unit__stat-col--left compact"><b><?php print __('Priority');?></b></div>
-          <div class="clearfix l-unit__stat-col--left compact"><b><?php print __('TTL');?></b></div>
+          <div class="clearfix l-unit__stat-col--left super-compact text-right"><b>&nbsp;</b></div>
+          <div class="clearfix l-unit__stat-col--left compact text-center" style="padding-left: 32px;"><b><?php print __('Type');?></b></div>
+          <div class="clearfix l-unit__stat-col--left compact text-center"><b><?php print __('Priority');?></b></div>
+          <div class="clearfix l-unit__stat-col--left compact text-center"><b><?php print __('TTL');?></b></div>
+          <div class="clearfix l-unit__stat-col--left super-compact"><b>&nbsp;</b></div>
           <div class="clearfix l-unit__stat-col--left wide-6"><b><?php print __('IP or Value');?></b></div>
         </div>
     </div>
@@ -74,7 +75,7 @@ v_unit_id="<?=$key?>" v_section="dns_rec">
             </div>
             <div class="clearfix l-unit__stat-col--left small"><b><a href="/edit/dns/?domain=<?=htmlspecialchars($_GET['domain'])?>&record_id=<?=$data[$key]['ID']?>&token=<?=$_SESSION['token']?>" title="<?=__('Editing DNS Record').': '.htmlspecialchars($data[$key]['RECORD'])?>"><? echo substr($data[$key]['RECORD'], 0, 12); if(strlen($data[$key]['RECORD']) > 12 ) echo '...'; ?></a></b></div>
             <!-- START QUICK ACTION TOOLBAR AREA -->
-            <div class="clearfix l-unit__stat-col--left compact text-right">
+            <div class="clearfix l-unit__stat-col--left super-compact text-right">
               <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
                 <div class="actions-panel clearfix">
                   <div class="actions-panel__col actions-panel__logs shortcut-enter" key-action="href"><a href="/edit/dns/?domain=<?=htmlspecialchars($_GET['domain'])?>&record_id=<?=$data[$key]['ID']?>&token=<?=$_SESSION['token']?>" title="<?=__('Editing DNS Record')?>"><i class="fas fa-pencil-alt status-icon orange status-icon dim"></i></a></div>
@@ -91,10 +92,11 @@ v_unit_id="<?=$key?>" v_section="dns_rec">
               </div>
             </div>
             <!-- END QUICK ACTION TOOLBAR AREA -->
-            <div class="clearfix l-unit__stat-col--left compact text-center"><b><?=$data[$key]['TYPE']?></b></div>
-            <div class="clearfix l-unit__stat-col--left compact"><?=$data[$key]['PRIORITY']?>&nbsp;</div>
-            <div class="clearfix l-unit__stat-col--left compact"><?php if($data[$key]['TTL'] == ''){ echo __('Default'); }else{ echo $data[$key]['TTL'];} ?></div>
-            <div class="clearfix l-unit__stat-col--left wide-6"><?=htmlspecialchars($data[$key]['VALUE'], ENT_QUOTES, 'UTF-8')?></div>
+            <div class="clearfix l-unit__stat-col--left compact text-center" style="padding-left: 32px;"><b><?=$data[$key]['TYPE']?></b></div>
+            <div class="clearfix l-unit__stat-col--left compact text-center"><?=$data[$key]['PRIORITY']?>&nbsp;</div>
+            <div class="clearfix l-unit__stat-col--left compact text-center"><?php if($data[$key]['TTL'] == ''){ echo __('Default'); }else{ echo $data[$key]['TTL'];} ?></div>
+            <div class="clearfix l-unit__stat-col--left super-compact"><b>&nbsp;</b></div>
+            <div class="clearfix l-unit__stat-col--left wide-6" style="word-break: break-word;"><?=htmlspecialchars($data[$key]['VALUE'], ENT_QUOTES, 'UTF-8')?></div>
           </div>
         </div>
       <?}?>