Serghey Rodin 13 лет назад
Родитель
Сommit
dd249d8e60

+ 3 - 3
bin/v_add_mail_account_autoreply

@@ -1,6 +1,6 @@
 #!/bin/bash
-# info: add mail account alias aka nickname
-# options: user domain account alias
+# info: add mail account autoreply message
+# options: user domain account message
 #
 # The function add new email account.
 
@@ -27,7 +27,7 @@ source $VESTA/func/domain.sh
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '4' "$#" 'user domain account autoreply'
+check_args '4' "$#" 'user domain account message'
 validate_format 'user' 'domain' 'account' 'autoreply'
 is_system_enabled "$MAIL_SYSTEM"
 is_object_valid 'user' 'USER' "$user"

+ 2 - 2
bin/v_list_mail_account

@@ -31,9 +31,9 @@ json_list_account() {
             echo -e "\t\"$value\": {"
         else
             if [ "$fileds_count" -eq "$i" ]; then
-                echo -e "\t\t\"${field//$/}\": \"$value\","
-            else
                 echo -e "\t\t\"${field//$/}\": \"$value\""
+            else
+                echo -e "\t\t\"${field//$/}\": \"$value\","
             fi
         fi
         (( ++i))

+ 1 - 1
bin/v_list_mail_account_autoreply

@@ -23,7 +23,7 @@ json_list_msg() {
     i='1'       # iterator
     echo '{'
     echo -e "\t\"$account\": {"
-    echo "        \"MSG\": \"$msg\""
+    echo "            \"MSG\": \"$msg\""
     echo -e "\t}\n}"
 }
 

+ 1 - 0
web/edit/dns/index.php

@@ -188,6 +188,7 @@ if ($_SESSION['user'] == 'admin') {
                     if (empty($error)) $error = 'Error: vesta did not return any output.';
                     $_SESSION['error_msg'] = $error;
                 }
+                $v_val = $_POST['v_val'];
                 $restart_dns = 'yes';
                 unset($output);
             }

+ 160 - 19
web/edit/mail/index.php

@@ -171,9 +171,11 @@ if ($_SESSION['user'] == 'admin') {
         unset($_SESSION['error_msg']);
         unset($_SESSION['ok_msg']);
     } else {
+
+        $v_username = $user;
         $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);
+        $v_account = escapeshellarg($_GET['account']);
+        exec (VESTA_CMD."v_list_mail_account ".$user." ".$v_domain." ".$v_account." 'json'", $output, $return_var);
         if ($return_var != 0) {
             $error = implode('<br>', $output);
             if (empty($error)) $error = 'Error: vesta did not return any output.';
@@ -183,46 +185,185 @@ if ($_SESSION['user'] == 'admin') {
             unset($output);
             $v_username = $user;
             $v_domain = $_GET['domain'];
-            $v_d = $_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'];
+            $v_account = $_GET['account'];
+            $v_password = "••••••••";
+            $v_aliases = str_replace(',', "\n", $data[$v_account]['ALIAS']);
+            $valiases = explode(",", $data[$v_account]['ALIAS']);
+            $v_fwd = str_replace(',', "\n", $data[$v_account]['FWD']);
+            $vfwd = explode(",", $data[$v_account]['FWD']);
+            $v_quota = $data[$v_account]['QUOTA'];
+            $v_autoreply = $data[$v_account]['AUTOREPLY'];
+            if ( $v_autoreply == 'yes' ) {
+                exec (VESTA_CMD."v_list_mail_account_autoreply ".$user." '".$v_domain."' '".$v_account."' json", $output, $return_var);
+                $autoreply_str = json_decode(implode('', $output), true);
+                unset($output);
+                $v_autoreply_message = $autoreply_str[$v_account]['MSG'];
+            }
+            $v_suspended = $data[$v_account]['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_date = $data[$v_account]['DATE'];
+            $v_time = $data[$v_account]['TIME'];
         }
 
         // Action
         if (!empty($_POST['save'])) {
             $v_domain = escapeshellarg($_POST['v_domain']);
-            $v_record_id = escapeshellarg($_POST['v_record_id']);
+            $v_account = escapeshellarg($_POST['v_account']);
+
+            // Password
+            if (($v_password != $_POST['v_password']) && (empty($_SESSION['error_msg']))) {
+                $v_password = escapeshellarg($_POST['v_password']);
+                exec (VESTA_CMD."v_change_mail_account_password ".$v_username." ".$v_domain." ".$v_account." ".$v_password, $output, $return_var);
+                if ($return_var != 0) {
+                    $error = implode('<br>', $output);
+                    if (empty($error)) $error = 'Error: vesta did not return any output.';
+                    $_SESSION['error_msg'] = $error;
+                }
+                $v_password = "••••••••";
+                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);
+            // Quota
+            if (($v_quota != $_POST['v_quota']) && (empty($_SESSION['error_msg']))) {
+                if (empty($_POST['v_quota'])) {
+                    $v_quota = 0; 
+                } else {
+                    $v_quota = escapeshellarg($_POST['v_quota']);
+                }
+                exec (VESTA_CMD."v_change_mail_account_quota ".$v_username." ".$v_domain." ".$v_account." ".$v_quota, $output, $return_var);
                 if ($return_var != 0) {
                     $error = implode('<br>', $output);
                     if (empty($error)) $error = 'Error: vesta did not return any output.';
                     $_SESSION['error_msg'] = $error;
                 }
-                $restart_dns = 'yes';
                 unset($output);
             }
-    
+
+
+            // Aliases
+            if (empty($_SESSION['error_msg'])) {
+                $waliases = preg_replace("/\n/", " ", $_POST['v_aliases']);
+                $waliases = preg_replace("/,/", " ", $waliases);
+                $waliases = preg_replace('/\s+/', ' ',$waliases);
+                $waliases = trim($waliases);
+                $aliases = explode(" ", $waliases);
+                $v_aliases = str_replace(' ', "\n", $waliases);
+                $result = array_diff($valiases, $aliases);
+                foreach ($result as $alias) {
+                    if (empty($_SESSION['error_msg'])) {
+                        exec (VESTA_CMD."v_delete_mail_account_alias ".$v_username." ".$v_domain." ".$v_account." '".$alias, $output, $return_var);
+                        if ($return_var != 0) {
+                            $error = implode('<br>', $output);
+                            if (empty($error)) $error = 'Error: vesta did not return any output.';
+                            $_SESSION['error_msg'] = $error;
+                        }
+                        unset($output);
+                    }
+                }
+                $result = array_diff($aliases, $valiases);
+                foreach ($result as $alias) {
+                    if (empty($_SESSION['error_msg'])) {
+                        exec (VESTA_CMD."v_add_mail_account_alias ".$v_username." ".$v_domain." ".$v_account." '".$alias, $output, $return_var);
+                        if ($return_var != 0) {
+                            $error = implode('<br>', $output);
+                            if (empty($error)) $error = 'Error: vesta did not return any output.';
+                            $_SESSION['error_msg'] = $error;
+                        }
+                        unset($output);
+                    }
+                }
+            }
+
+            // Forwarders
+            if (empty($_SESSION['error_msg'])) {
+                $wfwd = preg_replace("/\n/", " ", $_POST['v_fwd']);
+                $wfwd = preg_replace("/,/", " ", $wfwd);
+                $wfwd = preg_replace('/\s+/', ' ',$wfwd);
+                $wfwd = trim($wfwd);
+                $fwd = explode(" ", $wfwd);
+                $v_fwd = str_replace(' ', "\n", $wfwd);
+                $result = array_diff($vfwd, $fwd);
+                foreach ($result as $forward) {
+                    if (empty($_SESSION['error_msg'])) {
+                        exec (VESTA_CMD."v_delete_mail_account_forward ".$v_username." ".$v_domain." ".$v_account." '".$forward."'", $output, $return_var);
+                        if ($return_var != 0) {
+                            $error = implode('<br>', $output);
+                            if (empty($error)) $error = 'Error: vesta did not return any output.';
+                            $_SESSION['error_msg'] = $error;
+                        }
+                        unset($output);
+                    }
+                }
+                $result = array_diff($fwd, $vfwd);
+                foreach ($result as $forward) {
+                    if (empty($_SESSION['error_msg'])) {
+                        exec (VESTA_CMD."v_add_mail_account_forward ".$v_username." ".$v_domain." ".$v_account." '".$forward."'", $output, $return_var);
+                        if ($return_var != 0) {
+                            $error = implode('<br>', $output);
+                            if (empty($error)) $error = 'Error: vesta did not return any output.';
+                            $_SESSION['error_msg'] = $error;
+                        }
+                        unset($output);
+                    }
+                }
+            }
+
+            // Autoreply
+            if (($v_autoreply == 'yes') && (empty($_POST['v_autoreply'])) && (empty($_SESSION['error_msg']))) {
+                exec (VESTA_CMD."v_delete_mail_account_autoreply ".$v_username." ".$v_domain." ".$v_account, $output, $return_var);
+                if ($return_var != 0) {
+                    $error = implode('<br>', $output);
+                    if (empty($error)) $error = 'Error: vesta did not return any output.';
+                    $_SESSION['error_msg'] = $error;
+                }
+                unset($output);
+                $v_autoreply = 'no';
+		$v_autoreply_message = '';
+            }
+            if (($v_autoreply == 'yes') && (!empty($_POST['v_autoreply'])) && (empty($_SESSION['error_msg']))) {
+                if ( $v_autoreply_message != str_replace("\r\n", "\n", $_POST['v_autoreply_message'])) {
+                    $v_autoreply_message = str_replace("\r\n", "\n", $_POST['v_autoreply_message']);
+                    $v_autoreply_message = escapeshellarg($v_autoreply_message);
+                    exec (VESTA_CMD."v_add_mail_account_autoreply ".$v_username." ".$v_domain." ".$v_account." ".$v_autoreply_message, $output, $return_var);
+                    if ($return_var != 0) {
+                        $error = implode('<br>', $output);
+                        if (empty($error)) $error = 'Error: vesta did not return any output.';
+                        $_SESSION['error_msg'] = $error;
+                    }
+                    unset($output);
+                    $v_autoreply_message = $_POST['v_autoreply_message'];
+                }
+            }
+
+            if (($v_autoreply == 'no') && (!empty($_POST['v_autoreply'])) && (empty($_SESSION['error_msg']))) {
+                if (empty($_POST['v_autoreply_message'])) $_SESSION['error_msg'] = "Error: field atoreply message  can not be blank.";
+                if (empty($_SESSION['error_msg'])) {
+                    $v_autoreply_message = str_replace("\r\n", "\n", $_POST['v_autoreply_message']);
+                    $v_autoreply_message = escapeshellarg($v_autoreply_message);
+                    exec (VESTA_CMD."v_add_mail_account_autoreply ".$v_username." ".$v_domain." ".$v_account." ".$v_autoreply_message, $output, $return_var);
+                    if ($return_var != 0) {
+                        $error = implode('<br>', $output);
+                        if (empty($error)) $error = 'Error: vesta did not return any output.';
+                        $_SESSION['error_msg'] = $error;
+                    }
+	            unset($output);
+                    $v_autoreply = 'yes';
+                    $v_autoreply_message = $_POST['v_autoreply_message'];
+                }
+            }
+
+
             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');
+        include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/menu_edit_mail_acc.html');
+        include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_mail_acc.html');
         unset($_SESSION['error_msg']);
         unset($_SESSION['ok_msg']);
     }

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

@@ -43,7 +43,7 @@
                     <option value="PTR" <?php if ($v_type == 'PTR') echo selected; ?>>PTR</option>
                     <option value="SPF" <?php if ($v_type == 'SPF') echo selected; ?>>SPF</option>
                 </select></td></tr>
-            <tr><td class="add-text" style="padding: 10px 0 0 2px;">Value</td></tr>
+            <tr><td class="add-text" style="padding: 10px 0 0 2px;">IP or Value</td></tr>
             <tr><td><input type="text" size="20" class="add-input" name="v_val" <?php if (!empty($v_val)) echo "value=".$v_val; ?>></tr>
             <tr><td class="add-text" style="padding: 10px 0 0 2px;">Priority <span style="padding:0 0 0 6px; font-size: 10pt; color:#555;">(optional)</span></td></tr>
             <tr><td><input type="text" size="20" class="add-input" name="v_priority" <?php if (!empty($v_priority)) echo "value=".$v_priority; ?>></tr>

+ 2 - 2
web/templates/admin/add_mail_acc.html

@@ -39,13 +39,13 @@
             <tr><td class="add-text" style="padding: 10px 0 0 2px;">Account</td></tr>
             <tr><td><input type="text" size="20" class="add-input" name="v_account" <?php if (!empty($v_account)) echo "value=".$v_account; ?>></tr>
             <tr><td class="add-text" style="padding: 10px 0 0 2px;">Password <a href="javascript:randomString();" class="genpass">generate</a></td></tr>
-            <tr><td><input type="text" size="20" class="add-input" name="v_password"</tr>
+            <tr><td><input type="text" size="20" class="add-input" name="v_password"></tr>
             <tr><td class="add-text" style="padding: 10px 0 0 2px;"><a href="javascript:elementHideShow('advtable');" class="add-advanced">Advanced Options ⇢</a></td></tr>
             <tr><td class="add-text" style="padding: 9px 0 0 0px;">
                 <table style="display:<?php if (empty($v_adv)) echo 'none';?> ;" id="advtable">
                     <tr><td class="add-text" style="padding: 0 0 0 2px;">Quota <span style="padding: 0pt 0pt 0pt 6px; font-size: 10pt; color: rgb(85, 85, 85);">(in megabytes)</span></td></tr>
                     <tr><td><input type="text" size="20" class="add-input" name="v_quota" <?php if (!empty($v_quota)) echo "value=".$v_quota; ?>></tr>
-                    <tr><td class="add-text" style="padding: 10 0 0 2px;">Aliases <span style="padding: 0pt 0pt 0pt 6px; font-size: 10pt; color: rgb(85, 85, 85);">(local part only)</span></td></tr>
+                    <tr><td class="add-text" style="padding: 10 0 0 2px;">Aliases <span style="padding: 0pt 0pt 0pt 6px; font-size: 10pt; color: rgb(85, 85, 85);">(use local-part)</span></td></tr>
                     <tr><td><textarea size="20" class="add-textinput" name="v_aliases"><?php if (!empty($v_aliases)) echo $v_aliases;  ?></textarea></td></tr>
                     <tr><td class="add-text" style="padding: 10 0 0 2px;">Forward to <span style="padding: 0pt 0pt 0pt 6px; font-size: 10pt; color: rgb(85, 85, 85);">(email address or addresses)</span></td></tr>
                     <tr><td><textarea size="20" class="add-textinput" name="v_fwd"><?php if (!empty($v_fwd)) echo $v_fwd;  ?></textarea></td></tr>

+ 2 - 2
web/templates/admin/edit_dns_rec.html

@@ -19,8 +19,8 @@
             <tr><td><input type="text" size="20" class="add-input" name="v_rec" <?php if (!empty($v_rec)) echo "value=".$v_rec; ?> disabled> <input type="hidden" name="v_record_id" <?php if (!empty($v_record_id)) echo "value=".$v_record_id; ?> ></tr>
             <tr><td class="add-text" style="padding: 10px 0 0 2px;">Type</td></tr>
             <tr><td><input type="text" size="20" class="add-input" name="v_type" <?php if (!empty($v_rec)) echo "value=".$v_type; ?> disabled></tr>
-            <tr><td class="add-text" style="padding: 10px 0 0 2px;">Value</td></tr>
-            <tr><td><input type="text" size="20" class="add-input" name="v_val" <?php if (!empty($v_val)) echo "value=".$v_val; ?>></tr>
+            <tr><td class="add-text" style="padding: 10px 0 0 2px;">IP or Value</td></tr>
+            <tr><td><input type="text" size="20" class="add-input" name="v_val" <?php if (!empty($v_val)) echo "value='".$v_val."'"; ?>></tr>
             <tr><td class="add-text" style="padding: 10px 0 0 2px;">Priority <span style="padding:0 0 0 6px; font-size: 10pt; color:#555;">(optional)</span></td></tr>
             <tr><td><input type="text" size="20" class="add-input" name="v_priority" <?php if (!empty($v_priority)) echo "value=".$v_priority; ?>></tr>
 

+ 63 - 0
web/templates/admin/edit_mail_acc.html

@@ -0,0 +1,63 @@
+<script type="text/javascript">
+  function elementHideShow(elementToHideOrShow) {
+      var el = document.getElementById(elementToHideOrShow);
+      if (el.style.display == "block") {
+        el.style.display = "none";
+      } else {
+        el.style.display = "block";
+      }
+    }
+
+    function randomString() {
+      var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
+      var string_length = 10;
+      var randomstring = '';
+      for (var i=0; i<string_length; i++) {
+        var rnum = Math.floor(Math.random() * chars.length);
+        randomstring += chars.substring(rnum,rnum+1);
+      }
+      document.v_add_user.v_password.value = randomstring;
+    }
+</script>
+
+
+<table class='data'>
+<tr class="data-add">
+    <td class="data-dotted" style="padding: 0px 10px 0px 0px" width="150">
+        <table class="data-col1">
+            <tr><td style="padding: 18 0 4 18;"></td></tr>
+        </table>
+    </td>
+    <td class="data-dotted" width="830px" style="vertical-align:top;">
+        <table width="830px"><tr>
+            <td></td>
+        </tr></table>
+        <table class="data-col2" width="600px">
+            <form method="post" name="v_add_user">
+            <tr><td class="add-text" style="padding: 10 0 0 2px;">Domain</td></tr>
+            <tr><td><input type="text" size="20" class="add-input" name="v_domain" <?php echo "value=".$v_domain;  ?> disabled ><input type="hidden" name="v_domain" <?php echo "value=".$v_domain;  ?>></td></tr>
+            <tr><td class="add-text" style="padding: 10px 0 0 2px;">Account</td></tr>
+            <tr><td><input type="text" size="20" class="add-input" name="v_account" <?php if (!empty($v_account)) echo "value=".$v_account; ?> disabled >  <input type="hidden" name="v_account" <?php if (!empty($v_account)) echo "value=".$v_account; ?> ></tr>
+            <tr><td class="add-text" style="padding: 10px 0 0 2px;">Password <a href="javascript:randomString();" class="genpass">generate</a></td></tr>
+            <tr><td><input type="text" size="20" class="add-input" name="v_password" <?php if (!empty($v_password)) echo "value=".$v_password; ?> </tr>
+            <tr><td class="add-text" style="padding: 10px 0 0 2px;">Quota <span style="padding: 0pt 0pt 0pt 6px; font-size: 10pt; color: rgb(85, 85, 85);">(in megabytes)</span></td></tr>
+            <tr><td><input type="text" size="20" class="add-input" name="v_quota" <?php if (!empty($v_quota)) {echo "value=".$v_quota;} else { echo "value=0";}; ?>></tr>
+            <tr><td class="add-text" style="padding: 10 0 0 2px;">Aliases <span style="padding: 0pt 0pt 0pt 6px; font-size: 10pt; color: rgb(85, 85, 85);">(use local-part)</span></td></tr>
+            <tr><td><textarea size="20" class="add-textinput" name="v_aliases"><?php if (!empty($v_aliases)) echo $v_aliases;  ?></textarea></td></tr>
+            <tr><td class="add-text" style="padding: 10 0 0 2px;">Forward to <span style="padding: 0pt 0pt 0pt 6px; font-size: 10pt; color: rgb(85, 85, 85);">(email address or addresses)</span></td></tr>
+            <tr><td><textarea size="20" class="add-textinput" name="v_fwd"><?php if (!empty($v_fwd)) echo $v_fwd;  ?></textarea></td></tr>
+            <tr><td class="add-text" style="padding: 10px 0 0 2px;">Autoreply</td></tr>
+            <tr><td><input type="checkbox" size="20" class="add-checkbox" name="v_autoreply" <?php if ($v_autoreply == 'yes') echo "checked=yes" ?> onclick="javascript:elementHideShow('autoreplytable');"></tr>
+            <tr><td><table style="display:<?php if ($v_autoreply == 'no') { echo 'none';} else {echo 'block';}?> ;" id="autoreplytable"><tr>
+                <tr><td class="add-text" style="padding: 9px 0 0 2px;">Autoreply Message</td></tr>
+                <tr><td><textarea size="20" class="add-textinput" name="v_autoreply_message"><?php if (!empty($v_autoreply_message)) echo $v_autoreply_message; ?></textarea></tr>
+            </td></tr></tr></table></td></tr>
+
+            <tr><td style="padding: 24px 0 0 0;">
+                <input type="submit" name="save" value="Save" class="add-button"></form>
+                <input type="button" class="add-button" value="Cancel" onClick="location.href='/list/mail/<?php echo "?domain=".$_GET['domain'];  ?>'">
+            </td></tr>
+        </table>
+    </td>
+</tr>
+</table>

+ 2 - 2
web/templates/admin/edit_web.html

@@ -72,7 +72,7 @@
             <tr><td><table style="display:<?php if (empty($v_nginx)) { echo 'none';} else {echo 'block';}?> ;" id="nginxtable"><tr>
                 <tr><td class="add-text" style="padding: 9px 0 0 2px;">Nginx Supported Extentions</td></tr>
                 <tr><td><textarea size="20" class="add-textinput" name="v_nginx_ext"><?php if (!empty($v_nginx_ext)) { echo $v_nginx_ext;} else { echo 'jpg, jpeg, gif, png, ico, svg, css, zip, tgz, gz, rar, bz2, exe, pdf, doc, xls, ppt, txt, odt, ods, odp, odf, tar, bmp, rtf, js, mp3, avi, mpeg, flv, html, htm'; }  ?></textarea></tr>
-            </td></tr></tr></table>
+            </td></tr></tr></table></td></tr>
             <tr><td class="add-text" style="padding: 10px 0 0 2px;">SSL Support</td></tr>
             <tr><td><input type="checkbox" size="20" class="add-checkbox" name="v_ssl" <?php if ($v_ssl == 'yes') echo "checked=yes" ?> onclick="javascript:elementHideShow('ssltable');"></tr>
             <tr><td><table style="display:<?php if ($v_ssl == 'no' ) { echo 'none';} else {echo 'block';}?> ;" id="ssltable"><tr>
@@ -87,7 +87,7 @@
                 <tr><td><textarea size="20" class="add-textinput" name="v_ssl_key"><?php if (!empty($v_ssl_key)) echo $v_ssl_key;  ?></textarea></tr>
                 <tr><td class="add-text" style="padding: 10px 0 0 2px;">SSL Certificate Authority <span style="padding:0 0 0 6px; font-size: 10pt; color:#555;">(optional)</span></td></tr>
                 <tr><td><textarea size="20" class="add-textinput" name="v_ssl_ca"><?php if (!empty($v_ssl_ca)) echo $v_ssl_ca;  ?></textarea></tr>
-            </td></tr></tr></table>
+            </td></tr></tr></table></td></tr>
             <tr><td class="add-text" style="padding: 10px 0 0 2px;">Web Statistics</td></tr>
             <tr><td><select class="add-list" name="v_stats">
             <?php

+ 1 - 1
web/templates/admin/list_mail_acc.html

@@ -24,7 +24,7 @@ foreach ($data as $key => $value) {
     <td class="data-dotted" width="830px" style="vertical-align:top;">
         <table width="830px"><tr>
             <td></td>
-            <td class="data-controls" width="50px"><img src="/images/edit.png" width="8px" height="8px"><a href="#"> edit</a></td>
+            <td class="data-controls" width="50px"><img src="/images/edit.png" width="8px" height="8px"><a href="/edit/mail/?domain=<?php echo $_GET['domain'] ?>&account=<?php echo $key ?>"> edit</a></td>
             <td class="data-controls" width="80px"><img src="/images/suspend.png" width="7px" height="8px"><a href="#"> <?php echo $spnd_action ?></a></td>
             <td class="data-controls" width="70px"><img src="/images/delete.png" width="7px" height="7px"><a href="#"> delete</a></td>
         </tr></table>

+ 15 - 0
web/templates/admin/menu_edit_mail_acc.html

@@ -0,0 +1,15 @@
+<table class="sub-menu">
+<tr>
+    <td style="padding: 10px 2px 28px 0;" ><a class="add-name"><b>Editing Mail Account</b></a>
+    <?php 
+        if (!empty($_SESSION['error_msg'])) {
+            echo "<a class=\"add-error\"> → ".$_SESSION['error_msg']."</a>";
+        } else {
+            if (!empty($_SESSION['ok_msg'])) {
+                echo "<a class=\"add-ok\"> → ".$_SESSION['ok_msg']."</a>";
+            }
+        }
+    ?>
+    </td>
+</tr>
+</table>

+ 1 - 0
web/templates/header.html

@@ -417,6 +417,7 @@ if (!empty($_SESSION['look'])) {
         font-family: Arial, sans-serif;
         font-size: 10pt;
         color: #484243;
+        color: #5c5455;
     }
 
     .cron-counter-name {