Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/main/main.controller.js
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/main/main.controller.js	(revision 8859)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/main/main.controller.js	(working copy)
@@ -199,8 +199,8 @@
                                     },
                                     {
                                         title: 'DNS Server',
-                                        sub_ui_url: 'network.dns_server',
-                                        state: 'network/dns_server'
+                                        sub_ui_url: 'network.dns_server.dns',
+                                        state: 'network/dns_server/dns'
                                     },
                                     {
                                         title: 'DHCP',
Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/network.module.js
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/network.module.js	(revision 8859)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/network.module.js	(working copy)
@@ -103,10 +103,36 @@
                     url: '^/network/dns_server',
                     views: {
                         'main@index.network': {
+                            templateUrl: 'app/modules/network/submenu/dns_server/dns_server_tab.html',
+                            controller: 'dnsTabCtrl',
+                            controllerAs: 'dnsServer'
+                        }
+                    },
+                    ncyBreadcrumb: {
+                      skip: true
+                    }
+                })
+                .state('index.network.dns_server.dns', {
+                    url: '^/network/dns_server/dns',
+                    views: {
+                        'dns@index.network.dns_server': {
                             templateUrl: 'app/modules/network/submenu/dns_server/dns_server.html',
                             controller: 'dnsServerCtrl',
                             controllerAs: 'dnsServer'
                         }
+                    },
+                    ncyBreadcrumb: {
+                      label: '{{"DNS Server"|T}}',
+                    }
+                })
+                .state('index.network.dns_server.static_dns', {
+                    url: '^/network/dns_server/static_dns',
+                    views: {
+                        'static_dns@index.network.dns_server': {
+                            templateUrl: 'app/modules/network/submenu/dns_server/static_dns/static_dns.html',
+                            controller: 'staticDNSCtrl',
+                            controllerAs: 'staticDns'
+                        }
                     }
                 })
                 //Network-DHCP
Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/network.service.js
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/network.service.js	(revision 8859)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/network.service.js	(working copy)
@@ -90,7 +90,11 @@
                 get_shutdown: get_shutdown,
                 set_shutdown: set_shutdown,
                 get_description: get_description,
-                set_description: set_description
+                set_description: set_description,
+                get_static_dns: get_static_dns,
+                add_static_dns: add_static_dns,
+                delete_static_dns: delete_static_dns,
+                clean_all_static_dns: clean_all_static_dns
             };
             function bind_port_vf_to_va(data) {
                 return apiService.post('/api/avx/network/interface/PortVF/_add', data);
@@ -450,5 +454,39 @@
                 var post_data = {"post_data": JSON.stringify({"description": description})};
                 return apiService.post('/api/avx/network/interface/Description/_update/port_name/%5B%7B%22interface_name%22%3A%20%22'+ port_name +'%22%2C%20%22_asso_idx%22%3A%200%7D%5D', post_data);
             }
+            function get_static_dns() {
+                var url = '/api/avx/network/dns/StaticDNSHostEntry/_get_list_data';
+                return apiService.get(url);
+            }
+            function add_static_dns(data, csrf_id) {
+                var url = '/api/avx/network/dns/StaticDNSHostEntry/_add';
+                var post_data = {
+                    "post_data": JSON.stringify({
+                        "hostname": data.hostname,
+                        "ip": data.ip
+                    }),
+                    "csrfmiddlewaretoken": csrf_id
+                };
+                return apiService.post(url, post_data);
+            }
+            function delete_static_dns(data, csrf_id) {
+                var url = '/api/avx/network/dns/StaticDNSHostEntry/_delete';
+                var post_data = {
+                    "pk": JSON.stringify({
+                        "hostname": data
+                    }),
+                    "csrfmiddlewaretoken": csrf_id
+                };
+                return apiService.post(url, post_data);
+            }
+            function clean_all_static_dns(csrf_id) {
+                var url = '/api/avx/network/dns/StaticDNSHostEntry/_perform?action=CleanAll';
+                var post_data = {
+                    "action": "Clear",
+                    "options": JSON.stringify([]),
+                    "csrfmiddlewaretoken": csrf_id
+                };
+                return apiService.post(url, post_data);
+            }
         }
 ]);
\ No newline at end of file
Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/dns_server.controller.js
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/dns_server.controller.js	(revision 8859)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/dns_server.controller.js	(working copy)
@@ -1,5 +1,19 @@
 angular
     .module('avx.network')
+    .controller('dnsTabCtrl', [
+        '$scope',
+        '$rootScope',
+        '$state',
+        '$location',
+        function($scope, $rootScope, $state, $location) {
+            $scope.url_contain = function(url){
+                if($location.path().indexOf(url) != -1){
+                    return true;
+                }
+                return false;
+            };
+        }
+    ])
     .controller("dnsServerCtrl", [
         '$scope',
         '$rootScope',
Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/dns_server.html
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/dns_server.html	(revision 8859)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/dns_server.html	(working copy)
@@ -1,4 +1,4 @@
-<div class="container-fluid"> 
+<div class="container-fluid">
     <div class="row">
         <rd-widget>
             <rd-widget-header title="{{'DNS Server'|T}}">
Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/dns_server_tab.html
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/dns_server_tab.html	(revision 0)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/dns_server_tab.html	(working copy)
@@ -0,0 +1,14 @@
+<section class="design-tabs">
+    <ul class="nav nav-tabs">
+        <li ng-class="{ active:url_contain('/network/dns_server/dns')}">
+           <a ui-sref="index.network.dns_server.dns">{{'DNS Server'|T}}</a>
+        </li>
+        <li ng-class="{ active:url_contain('/network/dns_server/static_dns')}">
+           <a ui-sref="index.network.dns_server.static_dns">{{'Static DNS Entry'|T}}</a>
+        </li>
+    </ul>
+</section>
+<div class="panel-default">
+    <div class="panel-body" ng-show="url_contain('/network/dns_server/dns')" ui-view="dns"></div>
+    <div class="panel-body" ng-show="url_contain('/network/dns_server/static_dns')" ui-view="static_dns"></div>
+</div>
\ No newline at end of file
Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/static_dns/static_dns.controller.js
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/static_dns/static_dns.controller.js	(revision 0)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/static_dns/static_dns.controller.js	(working copy)
@@ -0,0 +1,94 @@
+angular
+    .module('avx.network')
+    .controller('staticDNSCtrl', [
+        '$scope',
+        '$rootScope',
+        '$state',
+        '$stateParams',
+        '$uibModal',
+        'netResourceService',
+        '$filter',
+        '$window',
+        function ($scope, $rootScope, $state, $stateParams, $uibModal, netResourceService, $filter, $window) {
+            var tableViewModel = this;
+
+            $scope.allow_config = $rootScope.allow_config;
+            $rootScope.title = "Static DNS Entry";
+
+            tableViewModel.csrf_token = "";
+            var localStorageData = $window.localStorage.getItem('user_info');
+            tableViewModel.csrf_token = JSON.parse(localStorageData)["csrf_token"];
+
+            tableViewModel.showProgressBar = function() {
+                var modalInstance = $uibModal.open({
+                    templateUrl: 'app/modules/common/templates/progress.html',
+                    controller: 'showProgressCtrl',
+                    controllerAs: 'progress',
+                    backdrop: false
+                });
+            };
+            tableViewModel.showDnsServer = function() {
+                netResourceService
+                    .get_static_dns()
+                    .then(function(res) {
+                        if (res && res.status === 200) {
+                            tableViewModel.dnsServerList = res.data;
+                        }
+                    });
+            };
+            tableViewModel.refreshDnsServer = function() {
+                tableViewModel.showDnsServer();
+            };
+            tableViewModel.addDnsServer = function() {
+                var modalInstance = $uibModal.open({
+                    templateUrl: 'app/modules/network/submenu/dns_server/static_dns/static_dns_add.html',
+                    controller: 'dnsStaticAddController',
+                    controllerAs: 'dnsStaticAdd',
+                    resolve:{}
+                });
+                modalInstance.result.then(function (selectedItem) {
+                    if (selectedItem) {
+                        tableViewModel.refreshDnsServer();
+                    }
+                });
+            };
+            tableViewModel.delete = function(hostname) {
+                var delete_reminder = confirm($filter('T')("Are you sure you want to delete the static DNS entry?"));
+                if (delete_reminder) {
+                    tableViewModel.showProgressBar();
+                    netResourceService
+                        .delete_static_dns(hostname, tableViewModel.csrf_token)
+                        .then(function(res) {
+                            $rootScope.$broadcast('endLoading', true);
+                            if (res && res.status === 200) {
+                                if (res.data != "None") {
+                                    alert(res.data[1]);
+                                } else {
+                                    tableViewModel.refreshDnsServer();
+                                }
+                            } else {
+                                alert($filter('T')("Failed to delete the Static DNS server."));
+                            }
+                        });
+                }
+            };
+
+            tableViewModel.clean = function() {
+                var delete_reminder = confirm($filter('T')("Are you sure you want to clean the all static DNS entry?"));
+                if (delete_reminder) {
+                    netResourceService
+                    .clean_all_static_dns(tableViewModel.csrf_token)
+                    .then(function(res) {
+                        $rootScope.$broadcast('endLoading', true);
+                        if (res && res.status === 200) {
+                            tableViewModel.refreshDnsServer();
+                        } else {
+                            alert($filter('T')("Failed to Clean the Static DNS server."));
+                        }
+                    });
+                }
+            }
+
+            tableViewModel.showDnsServer();
+        }
+    ]);
\ No newline at end of file
Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/static_dns/static_dns.html
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/static_dns/static_dns.html	(revision 0)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/static_dns/static_dns.html	(working copy)
@@ -0,0 +1,54 @@
+<div class="container-fluid">
+    <div class="row">
+        <rd-widget>
+            <rd-widget-header title="{{'Static DNS Entry'|T}}">
+            </rd-widget-header>
+            <div class="table-toolbar">
+                <div class="btn-group">
+                    <button title="{{'Refresh'|T}}" class="btn btn-link hive_enable_active" ng-click="staticDns.refreshDnsServer()"><i class="fa fa-refresh"></i></button>
+                    <button title="{{'Add Static DNS Entry'|T}}" class="btn btn-link" ng-click="staticDns.addDnsServer()"><i class="fa fa-plus-circle"></i></button>
+                    <button title="Clean All Static DNS Entry" class="btn btn-link" ng-click="staticDns.clean()"><i class="fa fa-trash"></i></button>
+                </div>
+                <div class="btn-group pull-right"></div>
+            </div>
+            <div class="table-container" st-table="displayedCollection" st-safe-src="staticDns.dnsServerList">
+                <div class="table-responsive table-content">
+                    <table class="table table-striped table-hover">
+                        <thead>
+                        <tr>
+                            <th>#</th>
+                            <th>Host name</th>
+                            <th st-sort="ip">{{'DNS Server IP'|T}}</th>
+                            <th>{{'Action'|T}}</th>
+                        </tr>
+                        <tr>
+                            <th></th>
+                            <th></th>
+                            <th>
+                                <input st-search="ip" placeholder="{{'Search by Server IP'|T}}" class="input-sm form-control" type="search"/>
+                            </th>
+                        </tr>
+                        </thead>
+                        <tbody>
+                        <tr ng-repeat="row in displayedCollection">
+                            <td>{{$index + 1}}</td>
+                            <td>{{row.hostname}}</td>
+                            <td>{{row.ip}}</td>
+                            <td>
+                                <div class="btn-group">
+                                    <button ng-show="allow_config" title="{{'Delete'|T}}" class="btn btn-link" ng-click="staticDns.delete(row.hostname)"><i class="fa fa-times-circle"></i></button>
+                                </div>
+                            </td>
+                        </tr>
+                        </tbody>
+                    </table>
+                </div>
+                <div style="margin-bottom: 15px;text-align: center" ng-hide="staticDns.dnsServerList"><img src="app/images/loading.gif"></div>
+                <div class="table-pagination">
+                    <div class="pagination-detail"></div>
+                    <div class="pagination" st-pagination="" st-items-by-page="5"></div>
+                </div>
+            </div>
+        </rd-widget>
+    </div>
+</div>
\ No newline at end of file
Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/static_dns/static_dns_add.controller.js
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/static_dns/static_dns_add.controller.js	(revision 0)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/static_dns/static_dns_add.controller.js	(working copy)
@@ -0,0 +1,78 @@
+angular
+    .module('avx.network')
+    .controller("dnsStaticAddController", [
+        '$scope',
+        '$rootScope',
+        '$state',
+        '$stateParams',
+        '$uibModal',
+        '$filter',
+        '$uibModalInstance',
+        'netResourceService',
+        '$window',
+        function($scope, $rootScope, $state, $stateParams, $uibModal, $filter, $uibModalInstance, netResourceService, $window) {
+            var modalViewModel = this;
+
+            modalViewModel.ipv4 = '';
+            modalViewModel.ipv6 = '';
+            modalViewModel.hostname = '';
+            modalViewModel.chooseIpv4 = true;
+            modalViewModel.chooseIpv6 = false;
+
+            modalViewModel.csrf_token = "";
+            var localStorageData = $window.localStorage.getItem('user_info');
+            modalViewModel.csrf_token = JSON.parse(localStorageData)["csrf_token"];
+
+            modalViewModel.showProgressBar = function() {
+                var modalInstance = $uibModal.open({
+                    templateUrl: 'app/modules/common/templates/progress.html',
+                    controller: 'showProgressCtrl',
+                    controllerAs: 'progress',
+                    backdrop: false
+                });
+            };
+            modalViewModel.clickIpv4 = function() {
+                modalViewModel.chooseIpv4 = true;
+                modalViewModel.chooseIpv6 = false;
+            };
+            modalViewModel.clickIpv6 = function() {
+                modalViewModel.chooseIpv4 = false;
+                modalViewModel.chooseIpv6 = true;
+            };
+
+            modalViewModel.createDnsServer = function() {
+                modalViewModel.showProgressBar();
+                var server_ip;
+                if (modalViewModel.chooseIpv4) {
+                    server_ip = modalViewModel.ipv4;
+                } else {
+                    server_ip = modalViewModel.ipv6;
+                }
+                var requestData = {
+                    "hostname": modalViewModel.hostname,
+                    "ip": server_ip
+                };
+                netResourceService
+                    .add_static_dns(requestData, modalViewModel.csrf_token)
+                    .then(function(res) {
+                        $rootScope.$broadcast('endLoading', true);
+                        if (res && res.status === 200) {
+                            if (!res.data[0]) {
+                                alert(res.data[1]);
+                            } else {
+                                if (res.data[2][0]) {
+                                    alert(res.data[2][0][1]);
+                                }
+                                $uibModalInstance.close(true);
+                            }
+                        } else {
+                            alert($filter('T')("Failed to add the static DNS entry."));
+                        }
+                    });
+            };
+
+            modalViewModel.modalClose = function() {
+                $uibModalInstance.dismiss();
+            };
+        }
+    ]);
\ No newline at end of file
Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/static_dns/static_dns_add.html
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/static_dns/static_dns_add.html	(revision 0)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/dns_server/static_dns/static_dns_add.html	(working copy)
@@ -0,0 +1,37 @@
+<div></div>
+    <div class="modal-header">
+        <button type="button" class="close" ng-click="dnsStaticAdd.modalClose()">&times;</button>
+        <h4 class="modal-title">New Static DNS Entry</h4>
+    </div>
+    <div class="modal-body">
+        <form class="form-horizontal" name="dnsStaticAddForm" verify-scope="tipStyle: 1">
+            <div class="form-group">
+                <label class="col-md-3 control-label">Host Name</label>
+                <div class="col-md-9">
+                    <input type="text" class="form-control" placeholder="" ng-model="dnsStaticAdd.hostname" required>
+                </div>
+            </div>
+            <uib-tabset type="pills" justified="true">
+                <uib-tab heading="IPv4" ng-click="dnsStaticAdd.clickIpv4()">
+                    <div class="form-group">
+                        <label class="col-md-3 control-label">{{'IPv4'|T}}</label>
+                        <div class="col-md-9">
+                            <input ng-verify="union_require:true" type="ipv4" class="form-control" placeholder="" ng-model="dnsStaticAdd.ipv4">
+                        </div>
+                    </div>
+                </uib-tab>
+                <uib-tab heading="IPv6" ng-click="dnsStaticAdd.clickIpv6()">
+                    <div class="form-group">
+                        <label class="col-md-3 control-label">{{'IPv6'|T}}</label>
+                        <div class="col-md-9">
+                            <input ng-verify="union_require:true" type="ipv6" class="form-control" placeholder="" ng-model="dnsStaticAdd.ipv6">
+                        </div>
+                    </div>
+                </uib-tab>
+            </uib-tabset>
+        </form>
+    </div>
+    <div class="modal-footer">
+        <button type="button" class="btn btn-primary" ng-verify="control:'dnsStaticAddForm'" ng-click="dnsStaticAdd.createDnsServer()">{{'Save'|T}}</button>
+    </div>
+</div>
\ No newline at end of file
Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/system/submenu/sys_mgmt/sys_mgmt.controller.js
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/system/submenu/sys_mgmt/sys_mgmt.controller.js	(revision 8859)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/system/submenu/sys_mgmt/sys_mgmt.controller.js	(working copy)
@@ -6,6 +6,7 @@
         '$state',
         '$location',
         'sysResourceService',
+        '$location',
         function($scope, $rootScope, $state, $location, sysResourceService) {
             $scope.url_contain = function(url){
                 if($location.path().indexOf(url) != -1){
Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/system/submenu/user_mgmt/user-add-aaa.html
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/system/submenu/user_mgmt/user-add-aaa.html	(revision 0)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/system/submenu/user_mgmt/user-add-aaa.html	(working copy)
@@ -0,0 +1,41 @@
+<div class="modal-header">
+    <button type="button" class="close" ng-click="userAddAaa.modalClose()">&times;</button>
+    <h4 class="modal-title">New Admin AAA Server</h4>
+</div>
+
+<div class="modal-body">
+    <div class="row">
+        <div class="col-lg-12">
+            <form class="form-horizontal" name="general" verify-scope="tipStyle: 1">
+                <div class="form-group">
+                    <label class="col-md-3 control-label">Host Name/IP Address</label>
+                    <div class="col-md-9">
+                        <input ng-model="userAddAaa.aaa_data.host_ip" ng-verify="required:true" type="text" class="form-control" name="host_ip" >
+                    </div>
+                </div>
+                <div class="form-group">
+                    <label class="col-md-3 control-label">Port</label>
+                    <div class="col-md-9">
+                        <input ng-model="userAddAaa.aaa_data.port" type="number" class="form-control" name="port" >
+                    </div>
+                </div>
+                <div class="form-group">
+                    <label class="col-md-3 control-label">Secret</label>
+                    <div class="col-md-9">
+                        <input ng-model="userAddAaa.aaa_data.secret" type="password" class="form-control" name="secret" >
+                    </div>
+                </div>
+                <div class="form-group">
+                    <label class="col-md-3 control-label">Secret Confirm</label>
+                    <div class="col-md-9">
+                        <input ng-model="userAddAaa.secret_confirm" type="password" class="form-control" name="secret" >
+                    </div>
+                </div>
+            </form>
+        </div>
+    </div>
+</div>
+<div class="modal-footer">
+    <button ng-click="userAddAaa.modalClose()" type="button" class="btn btn-default">{{'Cancel'|T}}</button>
+    <button ng-click="userAddAaa.add()" ng-verify="control:'general'" type="button" class="btn btn-primary">Create the Admin AAA Server</button>
+</div>
Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/system/submenu/user_mgmt/user_mgmt.contorller.js
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/system/submenu/user_mgmt/user_mgmt.contorller.js	(revision 8859)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/system/submenu/user_mgmt/user_mgmt.contorller.js	(working copy)
@@ -7,13 +7,36 @@
         '$uibModal',
         'sysResourceService',
         '$filter',
-        function($scope, $rootScope, $state, $uibModal, sysResourceService, $filter) {
+        '$location',
+        '$window',
+        function($scope, $rootScope, $state, $uibModal, sysResourceService, $filter, $location, $window) {
             var avxViewModel = this;
 
+            $scope.url_contain = function(url){
+                if($location.path().indexOf(url) != -1){
+                    return true;
+                }
+                return false;
+            };
+
             $rootScope.title = "User Management";
             $scope.allow_config = $rootScope.allow_config;
+            $scope.onLabel = $filter('T')('Enable');
+            $scope.offLabel = $filter('T')('Disable');
             avxViewModel.config_hover = $filter('T')("This mode allows you to make changes to any AVX configuration");
             avxViewModel.enable_hover = $filter('T')("This mode allow you to use view-only commands and some troubleshooting tools");
+            avxViewModel.csrf_token = "";
+            var localStorageData = $window.localStorage.getItem('user_info');
+            avxViewModel.csrf_token = JSON.parse(localStorageData)["csrf_token"];
+
+            avxViewModel.aaa_data = {
+                "enable": false,
+                "host_ip": "0.0.0.0",
+                "port": 0,
+                "secret": "*****",
+                "server_name": "es01"
+            };
+
             function get_info() {
                 sysResourceService
                     .get_user()
@@ -24,6 +47,7 @@
                 });
             }
             get_info();
+
             avxViewModel.showAddModal = function() {
                 var modalInstance = $uibModal.open({
                     templateUrl: 'app/modules/system/submenu/user_mgmt/user-add.html',
@@ -33,7 +57,18 @@
                 modalInstance.result.then(function(){
                     avxViewModel.refresh();
                 });
-            }; 
+            };
+
+            avxViewModel.showAddAaaModal = function() {
+                var aaaModalInstance = $uibModal.open({
+                    templateUrl: 'app/modules/system/submenu/user_mgmt/user-add-aaa.html',
+                    controller: 'userAddAaaCtrl',
+                    controllerAs: 'userAddAaa'
+                });
+                aaaModalInstance.result.then(function(){
+                    avxViewModel.refresh();
+                });
+            }
             avxViewModel.showUserEdit = function(username, password, level) {
                 var modalInstance = $uibModal.open({
                     templateUrl: 'app/modules/system/submenu/user_mgmt/user-edit.html',
@@ -50,7 +85,7 @@
                 modalInstance.closed.then(function () {
                     get_info();
                 });
-            }; 
+            };
             var showProgressBar = function() {
                 var modalInstance = $uibModal.open({
                     templateUrl: 'app/modules/common/templates/progress.html',
@@ -80,6 +115,49 @@
                 $scope.user_data = [];
                 get_info();
             };
+
+            function get_aaa_data() {
+                sysResourceService
+                    .get_aaa_data()
+                    .then(function(res) {
+                        if (res && res.status === 200) {
+                            avxViewModel.aaa_data = res.data[0];
+                        }
+                });
+            }
+            get_aaa_data();
+
+            $rootScope.$on('aaaDataUpdated', function() {
+                get_aaa_data();
+            });
+
+            avxViewModel.change_aaa_status = function(status) {
+                sysResourceService
+                    .change_aaa_status(status, avxViewModel.csrf_token)
+                    .then(function() {
+                        get_aaa_data()
+                    });
+            };
+
+            avxViewModel.clear_aaa_data = function() {
+                showProgressBar();
+                sysResourceService
+                    .clear_aaa_data(avxViewModel.csrf_token)
+                    .then(function() {
+                        $rootScope.$broadcast('endLoading', true);
+                        get_aaa_data();
+                    });
+            }
+
+            avxViewModel.delete_aaa_data = function() {
+                showProgressBar();
+                sysResourceService
+                    .delete_aaa_data(avxViewModel.csrf_token)
+                    .then(function() {
+                        $rootScope.$broadcast('endLoading', true);
+                        get_aaa_data();
+                    });
+            }
         }
     ])
     .controller('userAddCtrl', [
@@ -283,7 +361,7 @@
                 modalInstance.result.then(function(){
                     modalViewModel.refresh();
                 });
-            }; 
+            };
             var showProgressBar = function() {
                 var modalInstance = $uibModal.open({
                     templateUrl: 'app/modules/common/templates/progress.html',
@@ -391,7 +469,6 @@
                         modalViewModel.refresh();
                     });
                 }
-                
             }
             modalViewModel.showBindModal = function() {
                 var modalInstance = $uibModal.open({
@@ -402,7 +479,7 @@
                 modalInstance.result.then(function(){
                     modalViewModel.refresh();
                 });
-            };  
+            }
             var showProgressBar = function() {
                 var modalInstance = $uibModal.open({
                     templateUrl: 'app/modules/common/templates/progress.html',
@@ -691,4 +768,82 @@
                 });
             };
         }
-    ]);
\ No newline at end of file
+    ])
+    .controller('userAddAaaCtrl', [
+        '$scope',
+        '$rootScope',
+        '$state',
+        '$filter',
+        '$uibModalInstance',
+        '$uibModal',
+        'sysResourceService',
+        '$window',
+        function($scope, $rootScope, $state, $filter, $uibModalInstance, $uibModal, sysResourceService, $window) {
+            var modalViewModel = this;
+            modalViewModel.data = {};
+            modalViewModel.aaa_data = {
+                "enable": false,
+                "host_ip": "0.0.0.0",
+                "port": 0,
+                "secret": "*****",
+                "server_name": "es01"
+            };
+            modalViewModel.csrf_token = "";
+            var localStorageData = $window.localStorage.getItem('user_info');
+            modalViewModel.csrf_token = JSON.parse(localStorageData)["csrf_token"];
+
+            modalViewModel.secret_confirm = "";
+
+            function get_aaa_data() {
+                sysResourceService
+                    .get_aaa_data()
+                    .then(function(res) {
+                        if (res && res.status === 200) {
+                            modalViewModel.aaa_data.host_ip = res.data[0].host_ip.trim();
+                            modalViewModel.aaa_data.port = res.data[0].port;
+                            modalViewModel.aaa_data.secret = res.data[0].secret.trim();
+                        }
+                });
+            }
+            get_aaa_data();
+
+            modalViewModel.modalClose = function() {
+                $uibModalInstance.dismiss();
+            };
+            var showProgressBar = function() {
+                var modalInstance = $uibModal.open({
+                    templateUrl: 'app/modules/common/templates/progress.html',
+                    controller: 'showProgressCtrl',
+                    controllerAs: 'progress',
+                    backdrop: false
+                });
+            };
+            modalViewModel.add = function() {
+                showProgressBar();
+                if( modalViewModel.aaa_data.secret === modalViewModel.secret_confirm) {
+                    var post_data = {
+                        "host_ip": modalViewModel.aaa_data["host_ip"],
+                        "port": parseInt(modalViewModel.aaa_data["port"], 10),
+                        "secret": modalViewModel.aaa_data["secret"],
+                    };
+                } else {
+                    var post_data = {
+                        "host_ip":modalViewModel.aaa_data["host_ip"],
+                        "port": parseInt(modalViewModel.aaa_data["port"], 10),
+                    };
+                }
+                sysResourceService
+                    .update_aaa_data(post_data, modalViewModel.csrf_token)
+                    .then(function(res) {
+                        $rootScope.$broadcast('endLoading', true);
+                        $rootScope.$broadcast('aaaDataUpdated');
+                        if (res && res.status === 200) {
+                            $uibModalInstance.close();
+                            modalViewModel.modalClose();
+                        } else {
+                            alert("Internal error.");
+                        }
+                });
+            };
+        }
+    ])
\ No newline at end of file
Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/system/submenu/user_mgmt/user_mgmt.html
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/system/submenu/user_mgmt/user_mgmt.html	(revision 8859)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/system/submenu/user_mgmt/user_mgmt.html	(working copy)
@@ -1,50 +1,119 @@
-<div class="container-fluid"> 
-    <div class="row">
-        <rd-widget>
-            <rd-widget-header icon="fa fa-support" title="{{'System Administrator'|T}}">
-            </rd-widget-header>
-            <div class="table-toolbar">
-                <div class="">
-                    <div class="btn-group">
-                        <button title="{{'Refresh'|T}}" class="btn btn-link hive_enable_active" ng-click="user_mgmt.refresh()"><i class="fa fa-refresh"></i></button>
-                        <button title="{{'Add'|T}}" class="btn btn-link" ng-click="user_mgmt.showAddModal()"><i class="fa fa-plus-circle"></i></button>
+<section class="design-tabs">
+    <ul class="nav nav-tabs">
+        <li ng-class="{ active: url_contain('/system/user_mgmt') && !url_contain('/system/user_mgmt/aaa') }">
+            <a ui-sref="index.system.user_mgmt">{{'System Administrator' | T}}</a>
+        </li>
+        <li ng-class="{ active: url_contain('/system/user_mgmt/aaa') }">
+            <a ui-sref="index.system.user_mgmt.aaa">Admin AAA Settings</a>
+        </li>
+    </ul>
+</section>
+<div ng-show="url_contain('/system/user_mgmt') && !url_contain('/system/user_mgmt/aaa')">
+    <div class="container-fluid">
+        <div class="row">
+            <rd-widget>
+                <rd-widget-header icon="fa fa-support" title="{{'System Administrator'|T}}">
+                </rd-widget-header>
+                <div class="table-toolbar">
+                    <div class="">
+                        <div class="btn-group">
+                            <button title="{{'Refresh'|T}}" class="btn btn-link hive_enable_active" ng-click="user_mgmt.refresh()"><i class="fa fa-refresh"></i></button>
+                            <button title="{{'Add'|T}}" class="btn btn-link" ng-click="user_mgmt.showAddModal()"><i class="fa fa-plus-circle"></i></button>
+                        </div>
                     </div>
+                    <div class="btn-group pull-right"></div>
                 </div>
-                <div class="btn-group pull-right"></div>
-            </div>
-            <div class="table-container" st-table="displayedCollection" st-safe-src="user_data">
-                <div class="table-responsive table-content">
-                    <table class="table table-striped table-hover">
-                        <thead>
-                        <tr>
-                            <th>#</th>
-                            <th st-sort="username">{{'Username'|T}}</th>
-                            <th st-sort="level">{{'Access Level'|T}}</th>
-                            <th>{{'Action'|T}}</th>
-                        </tr>
-                        </thead>
-                        <tbody>
-                        <tr ng-repeat="row in displayedCollection">
-                            <td>{{$index + 1}}</td>
-                            <td><a ui-sref="index.system.user_mgmt.detail({name:row.username})" class="active">{{row.username}}</a></td>
-                            <td ng-attr-title="{{row.level=='config' ? user_mgmt.config_hover : user_mgmt.enable_hover}}">{{row.level}}</td>
-                            <td>
-                                <div class="btn-group">
-                                    <button title="{{'Edit'|T}}" class="btn btn-link" ng-click="user_mgmt.showUserEdit(row.username, row.passwords, row.level)" style="margin-right: 10px;"><i class="fa fa-pencil"></i></button>
-                                    <button title="{{'Delete'|T}}" class="btn btn-link" ng-click="user_mgmt.delete(row)"><i class="fa fa-times-circle"></i></button>
-                                </div>
-                            </td>
-                        </tr>
-                        </tbody>
-                    </table>
-                </div>
-                <div style="margin-bottom: 15px;text-align: center" ng-hide="user_data.length"><img src="app/images/loading.gif"></div>
-                <div class="table-pagination">
-                    <div class="pagination-detail"></div>
-                    <div class="pagination" st-pagination="" st-items-by-page="5"></div>
+                <div class="table-container" st-table="displayedCollection" st-safe-src="user_data">
+                    <div class="table-responsive table-content">
+                        <table class="table table-striped table-hover">
+                            <thead>
+                            <tr>
+                                <th>#</th>
+                                <th st-sort="username">{{'Username'|T}}</th>
+                                <th st-sort="level">{{'Access Level'|T}}</th>
+                                <th>{{'Action'|T}}</th>
+                            </tr>
+                            </thead>
+                            <tbody>
+                            <tr ng-repeat="row in displayedCollection">
+                                <td>{{$index + 1}}</td>
+                                <td><a ui-sref="index.system.user_mgmt.detail({name:row.username})" class="active">{{row.username}}</a></td>
+                                <td ng-attr-title="{{row.level=='config' ? user_mgmt.config_hover : user_mgmt.enable_hover}}">{{row.level}}</td>
+                                <td>
+                                    <div class="btn-group">
+                                        <button title="{{'Edit'|T}}" class="btn btn-link" ng-click="user_mgmt.showUserEdit(row.username, row.passwords, row.level)" style="margin-right: 10px;"><i class="fa fa-pencil"></i></button>
+                                        <button title="{{'Delete'|T}}" class="btn btn-link" ng-click="user_mgmt.delete(row)"><i class="fa fa-times-circle"></i></button>
+                                    </div>
+                                </td>
+                            </tr>
+                            </tbody>
+                        </table>
+                    </div>
+                    <div style="margin-bottom: 15px;text-align: center" ng-hide="user_data.length"><img src="app/images/loading.gif"></div>
+                    <div class="table-pagination">
+                        <div class="pagination-detail"></div>
+                        <div class="pagination" st-pagination="" st-items-by-page="5"></div>
+                    </div>
                 </div>
-            </div>
-        </rd-widget>
+            </rd-widget>
+        </div>
     </div>
 </div>
-
+<div ng-show="url_contain('/system/user_mgmt/aaa')">
+    <div class="container-fluid">
+        <div class="row">
+            <rd-widget>
+                <rd-widget-header title="Admin AAA Settings">
+                </rd-widget-header>
+                <rd-widget-body>
+                    <div>
+                        <form class="form-horizontal" name="general">
+                            <div class="form-group">
+                                <label class="col-md-3 control-label">Enable Admin AAA</label>
+                                <div class="col-md-9">
+                                    <div class="switch">
+                                        <input ng-change="user_mgmt.change_aaa_status(user_mgmt.aaa_data.enable)" bs-switch switch-on-text="{{onLabel}}" switch-off-text="{{offLabel}}" ng-model="user_mgmt.aaa_data.enable" type="checkbox" switch-active="{{allow_config}}" name="aaa_enable" resettable>
+                                    </div>
+                                </div>
+                            </div>
+                        </form>
+                    </div>
+                    <div class="table-toolbar">
+                        <div class="">
+                            <div class="btn-group">
+                                <button title="{{'Add'|T}}" class="btn btn-link" ng-click="user_mgmt.showAddAaaModal()"><i class="fa fa-plus-circle"></i></button>
+                                <button title="Delete" class="btn btn-link" ng-click="user_mgmt.delete_aaa_data()"><i class="fa fa-minus-circle"></i></button>
+                                <button title="Clear" class="btn btn-link" ng-click="user_mgmt.clear_aaa_data()"><i class="fa fa-trash"></i></button>
+                            </div>
+                        </div>
+                        <div class="btn-group pull-right">
+                        </div>
+                    </div>
+                    <div class="table-container" st-table="displayedCollection" st-safe-src="user_data">
+                        <div class="table-responsive table-content">
+                            <table class="table table-striped table-hover">
+                                <thead>
+                                <tr>
+                                    <th>Server ID</th>
+                                    <th>Host Name/IP Address</th>
+                                    <th>Port</th>
+                                    <th>Secret</th>
+                                </tr>
+                                </thead>
+                                <tbody>
+                                <tr ng-show="user_mgmt.aaa_data.host_ip && user_mgmt.aaa_data.host_ip != ' '">
+                                    <td>{{ user_mgmt.aaa_data.server_name }}</td>
+                                    <td>{{ user_mgmt.aaa_data.host_ip }}</td>
+                                    <td>{{ user_mgmt.aaa_data.port }}</td>
+                                    <td>{{ user_mgmt.aaa_data.secret }}</td>
+                                </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                        <div style="margin-bottom: 15px;text-align: center" ng-hide="user_data.length"><img src="app/images/loading.gif"></div>
+                    </div>
+                </rd-widget-body>
+            </rd-widget>
+        </div>
+    </div>
+</div>
\ No newline at end of file
Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/system/system.module.js
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/system/system.module.js	(revision 8859)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/system/system.module.js	(working copy)
@@ -76,6 +76,9 @@
                         label: '{{"System Administrator"|T}}',
                     }
                 })
+                .state('index.system.user_mgmt.aaa', {
+                    url: '^/system/user_mgmt/aaa',
+                })
                 .state('index.system.user_mgmt.detail', {
                     url: '^/system/user_mgmt/detail/{name}',
                     views: {
Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/system/system.service.js
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/system/system.service.js	(revision 8859)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/system/system.service.js	(working copy)
@@ -107,6 +107,11 @@
                 get_netgate_sys_pool_license_assignment:get_netgate_sys_pool_license_assignment,
                 get_per_va_netiag_pool_license_assignment:get_per_va_netiag_pool_license_assignment,
                 get_per_va_netgate_pool_license_assignment:get_per_va_netgate_pool_license_assignment,
+                get_aaa_data: get_aaa_data,
+                change_aaa_status: change_aaa_status,
+                update_aaa_data: update_aaa_data,
+                clear_aaa_data: clear_aaa_data,
+                delete_aaa_data: delete_aaa_data,
             };
             function get_udisk_files() {
                 return apiService.get('/api/avx/system/config_mgmt/UdiskFileConfig/_get_list_data');
@@ -676,5 +681,48 @@
             function get_per_va_netgate_pool_license_assignment(va_name) {
                 return apiService.get('/api/avx/system/system_mgmt/NetgateVaLicense/_get_asso_list_data?initial_filter=%7B"va"%3A%5B%7B"va_name"%3A"'+va_name+'"%2C"_asso_idx"%3A0%7D%5D%7D');
             }
-         }
+            function get_aaa_data() {
+                return apiService.get('/api/avx/system/user_mgmt/AAASettings/_get_list_data');
+            }
+            function change_aaa_status(status, csrf_token) {
+                var post_data = {
+                    "action":"Enable",
+                    "options": JSON.stringify({
+                        "enable": status? 1: 0
+                    }),
+                    "csrfmiddlewaretoken": csrf_token
+                };
+                var url = '/api/avx/system/user_mgmt/AAASettings/_perform';
+                return apiService.post(url, post_data);
+            }
+            function update_aaa_data(data, csrf_token) {
+                console.log(data, csrf_token);
+                var post_data = {
+                    "action":"Update",
+                    "options": JSON.stringify(data),
+                    "csrfmiddlewaretoken": csrf_token
+                };
+                var url = '/api/avx/system/user_mgmt/AAASettings/_perform';
+                return apiService.post(url, post_data);
+            }
+            function clear_aaa_data(csrf_token) {
+                var url = '/api/avx/system/user_mgmt/AAASettings/_perform';
+                var post_data = {
+                    "action":"Clear",
+                    "options": JSON.stringify([]),
+                    "csrfmiddlewaretoken": csrf_token
+                };
+                return apiService.post(url, post_data);
+            }
+            function delete_aaa_data(csrf_token) {
+                var url = '/api/avx/system/user_mgmt/AAASettings/_delete';
+                var post_data = {
+                    "pk": JSON.stringify({
+                        "server_name": "es01"
+                    }),
+                    "csrfmiddlewaretoken": csrf_token
+                };
+                return apiService.post(url, post_data);
+            }
+        }
 ]);
\ No newline at end of file
