CVE-2021-42192 (published 2022-05-04T11:15Z)

Konga v0.14.9 is affected by an incorrect access control vulnerability where a specially crafted request can lead to privilege escalation.

Severity: HIGH
CVSS v2 base score: 9.0 (AV:N/AC:L/Au:S/C:C/I:C/A:C)
CVSS v3 base score: 8.8, HIGH (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)

Weakness information:
cwe_id: CWE-863
cwe_name: Incorrect Authorization
description: The product performs an authorization check when an actor attempts to access a resource or perform an action, but it does not correctly perform the check. This allows attackers to bypass intended access restrictions.
extended_description: 
            Assuming a user with a given identity, authorization is the process of determining whether that user can access a given resource, based on the user's privileges and any permissions or other access-control specifications that apply to the resource.
            When access control checks are incorrectly applied, users are able to access data or perform actions that they should not be allowed to perform. This can lead to a wide range of problems, including information exposures, denial of service, and arbitrary code execution.
         
         

Fix information:
repo_url: https://github.com/pantsel/konga
commit_details: repo_url: https://github.com/pantsel/konga
author: Panagis Tselentis
author_date: 2018-12-24 10:25:31+02:00
msg: Fix listing size and added pagination to consumer groups. Ref issue #302
repository: repo_url: https://github.com/pantsel/konga
repo_name: pantsel/konga
description: More than just another GUI to Kong Admin API
repo_language: JavaScript
owner: pantsel
file_changes: filename: acl-model.js
change_type: ModificationType.ADD
diff: @@ -0,0 +1,38 @@
+(function() {
+    'use strict';
+
+    /**
+     * Model for Author API, this is used to wrap all Author objects specified actions and data change actions.
+     */
+    angular.module('frontend.consumers')
+        .service('ACLModel', [
+            'DataModel','DataService','$q','$log',
+            function(DataModel,DataService,$q,$log) {
+
+                var model = new DataModel('kong/acls',true);
+
+
+                model.handleError = function($scope,err) {
+                    $scope.errors = {}
+                    if(err.data){
+
+                        for(var key in err.data.invalidAttributes){
+                            $scope.errors[key] = err.data.invalidAttributes[key][0].message
+                        }
+
+                        // Passport errors
+                        if(err.data.raw && err.data.raw.length) {
+                            err.data.raw.forEach(function(raw){
+                                for(var key in raw.err.invalidAttributes){
+                                    $scope.errors[key] = raw.err.invalidAttributes[key][0].message
+                                }
+                            })
+                        }
+                    }
+                }
+
+                return model;
+            }
+        ])
+    ;
+}());
\ No newline at end of file

programming_language: JavaScript
filename: consumer-apis-controller.js
change_type: ModificationType.MODIFY
diff: @@ -138,7 +138,6 @@
               });
           }
 
-
           function deletePlugin(api,plugin) {
               DialogService.prompt(
                   "Delete Plugin","Really want to delete the plugin?",

programming_language: JavaScript
filename: consumer-groups-controller.js
change_type: ModificationType.MODIFY
diff: @@ -8,22 +8,16 @@
 
   angular.module('frontend.consumers')
     .controller('ConsumerGroupsController', [
-      '_', '$scope', '$log', '$state', 'ConsumerService','$stateParams',
+      '_', '$scope', '$log', '$state', 'ConsumerService','$stateParams', 'ACLModel', 'ListConfig',
       'MessageService', 'DialogService', '$uibModal',
-      function controller(_, $scope, $log, $state, ConsumerService,$stateParams,
+      function controller(_, $scope, $log, $state, ConsumerService,$stateParams, ACLModel, ListConfig,
                           MessageService, DialogService, $uibModal) {
 
+        ACLModel.setScope($scope, false, 'items', 'itemCount');
+        $scope = angular.extend($scope, angular.copy(ListConfig.getConfig('consumerACLs',ACLModel)));
         $scope.addGroup = addGroup
         $scope.deleteGroup = deleteConsumerGroup
-
-
-        ConsumerService.fetchAcls($stateParams.id)
-          .then(function(response){
-            $scope.acls = response.data.data;
-          }).catch(function (err) {
-
-        })
-
+        
         function addGroup(consumer) {
           $uibModal.open({
             animation: true,
@@ -41,7 +35,7 @@
 
                 function createGroup() {
                   ConsumerService.addAcl(_consumer.id, $scope.acl).then(function (data) {
-                    fetcAcls()
+                    fetchData()
                     close()
                   }).catch(function (err) {
                     $log.error(err)
@@ -71,7 +65,7 @@
             function accept() {
               ConsumerService.deleteAcl($scope.consumer.id, group.id)
                 .then(function (data) {
-                  fetcAcls()
+                  fetchData()
                 })
 
             }, function decline() {
@@ -79,12 +73,15 @@
 
         }
 
-        function fetcAcls() {
+        function fetchData() {
           ConsumerService.fetchAcls($scope.consumer.id)
             .then(function (res) {
-              $scope.acls = res.data.data;
+              $scope.items = res.data;
+              console.log('ACLS =>', $scope.items);
             })
         }
+
+        fetchData();
       }
     ])
 }());

programming_language: JavaScript
filename: consumer-groups.html
change_type: ModificationType.MODIFY
diff: @@ -1,33 +1,48 @@
-
-<div class="row">
-    <div class="col-md-3" data-ng-repeat="acl in acls">
-        <div
-                class="panel panel-default panel-flat elipsize" style="background: #fff">
-            <i
-                    data-ng-click="deleteGroup(acl)"
-                    class="mdi mdi-close clickable pull-right margin-top margin-right"></i>
-            <div class="panel-body elipsize">
+<div ng-if="items && items.data">
+    <div class="col-md-12 bg-light-grey padding margin-bottom">
+        <list-search
+                class="pull-right"
+                data-filters="filters"
+                data-options="itemsPerPageOptions"
+                data-items="itemsPerPage"
+        ></list-search>
+    </div>
+    <div class="row">
+        <div class="col-md-3" dir-paginate="acl in items.data | orderBy:sort.column:sort.direction | filter : filters.searchWord | itemsPerPage: itemsPerPage as filteredItems">
+            <div
+                    class="panel panel-default panel-flat elipsize" style="background: #fff">
+                <i
+                        data-ng-click="deleteGroup(acl)"
+                        class="mdi mdi-close clickable pull-right margin-top margin-right"></i>
+                <div class="panel-body elipsize">
                         <span class=" no-wrap ">
                             <i class="mdi mdi-account-multiple-outline"></i>
                             <strong>{{acl.group}}</strong>
 
                         </span>
+                </div>
+
             </div>
 
         </div>
-
-    </div>
-    <div class="col-md-3">
-        <div
-                data-ng-click="addGroup(consumer)"
-                class="panel panel-dashed panel-flat clickable">
-            <div class="panel-body elipsize">
+        <div class="col-md-3">
+            <div
+                    data-ng-click="addGroup(consumer)"
+                    class="panel panel-dashed panel-flat clickable">
+                <div class="panel-body elipsize">
                         <span class=" no-wrap">
                             <i class="mdi mdi-plus"></i>
                             Add a group
                         </span>
 
+                </div>
             </div>
         </div>
     </div>
+    <div class="row">
+        <div class="col-md-12">
+            <dir-pagination-controls class="pull-right"></dir-pagination-controls>
+        </div>
+    </div>
 </div>
+

programming_language: HTML
filename: ListConfigService.js
change_type: ModificationType.MODIFY
diff: @@ -121,15 +121,17 @@
               sortable: true,
               inSearch: true,
               inTitle: true
-            },
-            // {
-            //     title: 'upstream url',
-            //     column: 'upstream_url',
-            //     searchable: true,
-            //     sortable: true,
-            //     inSearch: true,
-            //     inTitle: true
-            // }
+            }
+          ],
+          consumerACLs: [
+            {
+              title: 'group',
+              column: 'group',
+              searchable: true,
+              sortable: true,
+              inSearch: true,
+              inTitle: true
+            }
           ],
           consumerService: [
             {

programming_language: JavaScript
filename: bower.json
change_type: ModificationType.MODIFY
diff: @@ -39,7 +39,7 @@
     "angular-chips": "~1.0.8",
     "ng-file-upload": "~12.2.12",
     "angular-messages": "1.5.*",
-    "angular-utils-pagination": "~0.11.1",
+    "angular-utils-pagination": "0.11.1",
     "angular-chart.js": "~1.0.3",
     "angular-resource": "1.5.*",
     "mdi": "2.4.85",

programming_language: CoffeeScript
filename: layout.ejs
change_type: ModificationType.MODIFY
diff: @@ -30,15 +30,15 @@
     <!--<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">-->
 
     <!--STYLES-->
-    <link rel="stylesheet" href="bower_components/angular-loading-bar/build/loading-bar.css?r=0.14.0">
-    <link rel="stylesheet" href="bower_components/angular-xeditable/dist/css/xeditable.css?r=0.14.0">
-    <link rel="stylesheet" href="bower_components/angular-toastr/dist/angular-toastr.css?r=0.14.0">
-    <link rel="stylesheet" href="bower_components/bootstrap-switch/dist/css/bootstrap3/bootstrap-switch.css?r=0.14.0">
-    <link rel="stylesheet" href="bower_components/angular-spinkit/build/angular-spinkit.min.css?r=0.14.0">
-    <link rel="stylesheet" href="bower_components/angular-chips/dist/main.css?r=0.14.0">
-    <link rel="stylesheet" href="bower_components/angular-json-human/dist/angular-json-human.css?r=0.14.0">
-    <link rel="stylesheet" href="bower_components/mdi/css/materialdesignicons.css?r=0.14.0">
-    <link rel="stylesheet" href="styles/importer.css?r=0.14.0">
+    <link rel="stylesheet" href="bower_components/angular-loading-bar/build/loading-bar.css?r=0.14.1-rc1">
+    <link rel="stylesheet" href="bower_components/angular-xeditable/dist/css/xeditable.css?r=0.14.1-rc1">
+    <link rel="stylesheet" href="bower_components/angular-toastr/dist/angular-toastr.css?r=0.14.1-rc1">
+    <link rel="stylesheet" href="bower_components/bootstrap-switch/dist/css/bootstrap3/bootstrap-switch.css?r=0.14.1-rc1">
+    <link rel="stylesheet" href="bower_components/angular-spinkit/build/angular-spinkit.min.css?r=0.14.1-rc1">
+    <link rel="stylesheet" href="bower_components/angular-chips/dist/main.css?r=0.14.1-rc1">
+    <link rel="stylesheet" href="bower_components/angular-json-human/dist/angular-json-human.css?r=0.14.1-rc1">
+    <link rel="stylesheet" href="bower_components/mdi/css/materialdesignicons.css?r=0.14.1-rc1">
+    <link rel="stylesheet" href="styles/importer.css?r=0.14.1-rc1">
     <!--STYLES END-->
 </head>
 
@@ -100,205 +100,206 @@
 <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
 
 <!--SCRIPTS-->
-<script src="bower_components/jquery/dist/jquery.js?r=0.14.0"></script>
-<script src="bower_components/angular/angular.js?r=0.14.0"></script>
-<script src="bower_components/angular-animate/angular-animate.js?r=0.14.0"></script>
-<script src="bower_components/angular-loading-bar/build/loading-bar.js?r=0.14.0"></script>
-<script src="bower_components/angular-ui-router/release/angular-ui-router.js?r=0.14.0"></script>
-<script src="bower_components/angular-ui-utils/ui-utils.js?r=0.14.0"></script>
-<script src="bower_components/moment/moment.js?r=0.14.0"></script>
-<script src="bower_components/later/later.js?r=0.14.0"></script>
-<script src="bower_components/prettycron/prettycron.js?r=0.14.0"></script>
-<script src="bower_components/angular-bootstrap-show-errors/src/showErrors.js?r=0.14.0"></script>
-<script src="bower_components/angular-sanitize/angular-sanitize.js?r=0.14.0"></script>
-<script src="bower_components/angular-xeditable/dist/js/xeditable.js?r=0.14.0"></script>
-<script src="bower_components/angular-toastr/dist/angular-toastr.tpls.js?r=0.14.0"></script>
-<script src="bower_components/bootstrap/dist/js/bootstrap.js?r=0.14.0"></script>
-<script src="bower_components/angularSails/dist/ngsails.io.js?r=0.14.0"></script>
-<script src="bower_components/ngstorage/ngStorage.js?r=0.14.0"></script>
-<script src="bower_components/bootswatch-dist/js/bootstrap.js?r=0.14.0"></script>
-<script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.js?r=0.14.0"></script>
-<script src="bower_components/lodash/lodash.js?r=0.14.0"></script>
-<script src="bower_components/bootstrap-switch/dist/js/bootstrap-switch.js?r=0.14.0"></script>
-<script src="bower_components/angular-spinkit/build/angular-spinkit.js?r=0.14.0"></script>
-<script src="bower_components/angular-chips/dist/angular-chips.js?r=0.14.0"></script>
-<script src="bower_components/ng-file-upload/ng-file-upload.js?r=0.14.0"></script>
-<script src="bower_components/angular-messages/angular-messages.js?r=0.14.0"></script>
-<script src="bower_components/angular-utils-pagination/dirPagination.js?r=0.14.0"></script>
-<script src="bower_components/chart.js/dist/Chart.js?r=0.14.0"></script>
-<script src="bower_components/angular-resource/angular-resource.js?r=0.14.0"></script>
-<script src="bower_components/angular-moment/angular-moment.js?r=0.14.0"></script>
-<script src="bower_components/bootbox/bootbox.js?r=0.14.0"></script>
-<script src="bower_components/ngBootbox/dist/ngBootbox.js?r=0.14.0"></script>
-<script src="bower_components/angular-json-human/dist/angular-json-human.js?r=0.14.0"></script>
-<script src="bower_components/angular-bootstrap-switch/dist/angular-bootstrap-switch.js?r=0.14.0"></script>
-<script src="bower_components/angular-chart.js/dist/angular-chart.js?r=0.14.0"></script>
-<script src="bower_components/angular-base64/angular-base64.js?r=0.14.0"></script>
-<script src="js/app/apis/00_apis.js?r=0.14.0"></script>
-<script src="js/app/apis/api-model.js?r=0.14.0"></script>
-<script src="js/app/apis/apis-service.js?r=0.14.0"></script>
-<script src="js/app/apis/controllers/add-api-modal-controller.js?r=0.14.0"></script>
-<script src="js/app/apis/controllers/add-api-plugin-modal-controller.js?r=0.14.0"></script>
-<script src="js/app/apis/controllers/api-controller.js?r=0.14.0"></script>
-<script src="js/app/apis/controllers/api-details-controller.js?r=0.14.0"></script>
-<script src="js/app/apis/controllers/api-health-checks-controller.js?r=0.14.0"></script>
-<script src="js/app/apis/controllers/api-metrics-controller.js?r=0.14.0"></script>
-<script src="js/app/apis/controllers/apis-controller.js?r=0.14.0"></script>
-<script src="js/app/apis/views/api-hc-model.js?r=0.14.0"></script>
-<script src="js/app/app.js?r=0.14.0"></script>
-<script src="js/app/certificates/00_certificates.js?r=0.14.0"></script>
-<script src="js/app/certificates/certificate-model.js?r=0.14.0"></script>
-<script src="js/app/certificates/certificates-controller.js?r=0.14.0"></script>
-<script src="js/app/certificates/snis-model.js?r=0.14.0"></script>
-<script src="js/app/cluster/00_cluster.js?r=0.14.0"></script>
-<script src="js/app/cluster/cluster-model.js?r=0.14.0"></script>
-<script src="js/app/cluster/controllers/cluster-list-controller.js?r=0.14.0"></script>
-<script src="js/app/connections/00_connections.js?r=0.14.0"></script>
-<script src="js/app/connections/connections-controller.js?r=0.14.0"></script>
-<script src="js/app/connections/create-connection-controller.js?r=0.14.0"></script>
-<script src="js/app/connections/edit-connection-controller.js?r=0.14.0"></script>
-<script src="js/app/connections/node-model.js?r=0.14.0"></script>
-<script src="js/app/connections/update-user-node-controller.js?r=0.14.0"></script>
-<script src="js/app/consumers/00_consumers.js?r=0.14.0"></script>
-<script src="js/app/consumers/apis/consumer-apis-controller.js?r=0.14.0"></script>
-<script src="js/app/consumers/consumer-controller.js?r=0.14.0"></script>
-<script src="js/app/consumers/consumer-model.js?r=0.14.0"></script>
-<script src="js/app/consumers/consumer-service.js?r=0.14.0"></script>
-<script src="js/app/consumers/consumers-controller.js?r=0.14.0"></script>
-<script src="js/app/consumers/credentials/consumer-credentials-controller.js?r=0.14.0"></script>
-<script src="js/app/consumers/credentials/create-hmac-auth-controller.js?r=0.14.0"></script>
-<script src="js/app/consumers/credentials/create-jwt-controller.js?r=0.14.0"></script>
-<script src="js/app/consumers/credentials/create-key-auth-controller.js?r=0.14.0"></script>
-<script src="js/app/consumers/credentials/create-oauth2-controller.js?r=0.14.0"></script>
-<script src="js/app/consumers/credentials/manage-basic-auth-controller.js?r=0.14.0"></script>
-<script src="js/app/consumers/credentials/mass-assign-credentials-controller.js?r=0.14.0"></script>
-<script src="js/app/consumers/details/consumer-details-controller.js?r=0.14.0"></script>
-<script src="js/app/consumers/groups/consumer-groups-controller.js?r=0.14.0"></script>
-<script src="js/app/consumers/groups/group.js?r=0.14.0"></script>
-<script src="js/app/consumers/groups/manage-groups-modal-controllers.js?r=0.14.0"></script>
-<script src="js/app/consumers/plugins/consumer-plugins-controller.js?r=0.14.0"></script>
-<script src="js/app/consumers/routes/consumer-routes-controller.js?r=0.14.0"></script>
-<script src="js/app/consumers/services/consumer-services-controller.js?r=0.14.0"></script>
-<script src="js/app/core/auth/auth.js?r=0.14.0"></script>
-<script src="js/app/core/auth/login/login.js?r=0.14.0"></script>
-<script src="js/app/core/auth/services/00_services.js?r=0.14.0"></script>
-<script src="js/app/core/auth/services/AuthService.js?r=0.14.0"></script>
-<script src="js/app/core/auth/services/UserService.js?r=0.14.0"></script>
-<script src="js/app/core/auth/signup/signup.js?r=0.14.0"></script>
-<script src="js/app/core/components/components.js?r=0.14.0"></script>
-<script src="js/app/core/components/FocusOn.js?r=0.14.0"></script>
-<script src="js/app/core/constants/AccessLevels.js?r=0.14.0"></script>
-<script src="js/app/core/constants/BackendConfig.js?r=0.14.0"></script>
-<script src="js/app/core/core.js?r=0.14.0"></script>
-<script src="js/app/core/dependencies/dependencies.js?r=0.14.0"></script>
-<script src="js/app/core/directives/directives.js?r=0.14.0"></script>
-<script src="js/app/core/directives/konga-loader.js?r=0.14.0"></script>
-<script src="js/app/core/directives/ListSearch.js?r=0.14.0"></script>
-<script src="js/app/core/directives/RawView.js?r=0.14.0"></script>
-<script src="js/app/core/error/error.js?r=0.14.0"></script>
-<script src="js/app/core/filters/filters.js?r=0.14.0"></script>
-<script src="js/app/core/interceptors/00_interceptors.js?r=0.14.0"></script>
-<script src="js/app/core/interceptors/AuthInterceptor.js?r=0.14.0"></script>
-<script src="js/app/core/interceptors/CsrfInterceptor.js?r=0.14.0"></script>
-<script src="js/app/core/interceptors/ErrorInterceptor.js?r=0.14.0"></script>
-<script src="js/app/core/interceptors/HttpTimeoutInterceptor.js?r=0.14.0"></script>
-<script src="js/app/core/interceptors/KongaIntercenptor.js?r=0.14.0"></script>
-<script src="js/app/core/interceptors/TemplateCacheInterceptor.js?r=0.14.0"></script>
-<script src="js/app/core/layout/00_layout.js?r=0.14.0"></script>
-<script src="js/app/core/layout/01_layout-controllers.js?r=0.14.0"></script>
-<script src="js/app/core/layout/02_layout-directives.js?r=0.14.0"></script>
-<script src="js/app/core/layout/03_layout-services.js?r=0.14.0"></script>
-<script src="js/app/core/libraries/libraries.js?r=0.14.0"></script>
-<script src="js/app/core/libraries/LoDash.js?r=0.14.0"></script>
-<script src="js/app/core/models/00_models.js?r=0.14.0"></script>
-<script src="js/app/core/models/DataModel.js?r=0.14.0"></script>
-<script src="js/app/core/plugins/angular-vertilize.js?r=0.14.0"></script>
-<script src="js/app/core/plugins/jsonc.js?r=0.14.0"></script>
-<script src="js/app/core/plugins/material.spinner.js?r=0.14.0"></script>
-<script src="js/app/core/plugins/uiBreadcrumbs.js?r=0.14.0"></script>
-<script src="js/app/core/services/00_services.js?r=0.14.0"></script>
-<script src="js/app/core/services/DataService.js?r=0.14.0"></script>
-<script src="js/app/core/services/DialogService.js?r=0.14.0"></script>
-<script src="js/app/core/services/HttpStatusService.js?r=0.14.0"></script>
-<script src="js/app/core/services/KongPluginsService.js?r=0.14.0"></script>
-<script src="js/app/core/services/ListConfigService.js?r=0.14.0"></script>
-<script src="js/app/core/services/MessageService.js?r=0.14.0"></script>
-<script src="js/app/core/services/NodesService.js?r=0.14.0"></script>
-<script src="js/app/core/services/NotificationsService.js?r=0.14.0"></script>
-<script src="js/app/core/services/Semver.js?r=0.14.0"></script>
-<script src="js/app/core/services/SocketHelperService.js?r=0.14.0"></script>
-<script src="js/app/core/services/SubscriptionsService.js?r=0.14.0"></script>
-<script src="js/app/dashboard/01_dashboard.js?r=0.14.0"></script>
-<script src="js/app/dashboard/02_dashboard-controller.js?r=0.14.0"></script>
-<script src="js/app/healthchecks/00_healthchecks.js?r=0.14.0"></script>
-<script src="js/app/healthchecks/api-hc-model.js?r=0.14.0"></script>
-<script src="js/app/healthchecks/healthchecks-controller.js?r=0.14.0"></script>
-<script src="js/app/info/00_info.js?r=0.14.0"></script>
-<script src="js/app/info/01_info-controllers.js?r=0.14.0"></script>
-<script src="js/app/info/02_info-service.js?r=0.14.0"></script>
-<script src="js/app/netdata-connections/01_netdata_connection.js?r=0.14.0"></script>
-<script src="js/app/netdata-connections/netdata-connection-model.js?r=0.14.0"></script>
-<script src="js/app/plugins/00_plugins.js?r=0.14.0"></script>
-<script src="js/app/plugins/add-plugin-controller.js?r=0.14.0"></script>
-<script src="js/app/plugins/add-plugin-modal-controller.js?r=0.14.0"></script>
-<script src="js/app/plugins/add-plugins-controller.js?r=0.14.0"></script>
-<script src="js/app/plugins/api-plugins-controller.js?r=0.14.0"></script>
-<script src="js/app/plugins/edit-plugin-controller.js?r=0.14.0"></script>
-<script src="js/app/plugins/plugin-helper-service.js?r=0.14.0"></script>
-<script src="js/app/plugins/plugin-model.js?r=0.14.0"></script>
-<script src="js/app/plugins/plugins-controller.js?r=0.14.0"></script>
-<script src="js/app/plugins/plugins-service.js?r=0.14.0"></script>
-<script src="js/app/routes/00_routes.js?r=0.14.0"></script>
-<script src="js/app/routes/controllers/add-route-modal-controller.js?r=0.14.0"></script>
-<script src="js/app/routes/controllers/add-route-plugin-modal-controller.js?r=0.14.0"></script>
-<script src="js/app/routes/controllers/route-consumers-controller.js?r=0.14.0"></script>
-<script src="js/app/routes/controllers/route-controller.js?r=0.14.0"></script>
-<script src="js/app/routes/controllers/route-details-controller.js?r=0.14.0"></script>
-<script src="js/app/routes/controllers/route-health-checks-controller.js?r=0.14.0"></script>
-<script src="js/app/routes/controllers/route-plugins-controller.js?r=0.14.0"></script>
-<script src="js/app/routes/controllers/routes-controller.js?r=0.14.0"></script>
-<script src="js/app/routes/routes-model.js?r=0.14.0"></script>
-<script src="js/app/routes/routes-service.js?r=0.14.0"></script>
-<script src="js/app/services/00_services.js?r=0.14.0"></script>
-<script src="js/app/services/controllers/add-service-modal-controller.js?r=0.14.0"></script>
-<script src="js/app/services/controllers/add-service-plugin-modal-controller.js?r=0.14.0"></script>
-<script src="js/app/services/controllers/service-consumers-controller.js?r=0.14.0"></script>
-<script src="js/app/services/controllers/service-controller.js?r=0.14.0"></script>
-<script src="js/app/services/controllers/service-details-controller.js?r=0.14.0"></script>
-<script src="js/app/services/controllers/service-health-checks-controller.js?r=0.14.0"></script>
-<script src="js/app/services/controllers/service-plugins-controller.js?r=0.14.0"></script>
-<script src="js/app/services/controllers/service-routes-controller.js?r=0.14.0"></script>
-<script src="js/app/services/controllers/services-controller.js?r=0.14.0"></script>
-<script src="js/app/services/service-model.js?r=0.14.0"></script>
-<script src="js/app/services/services-service.js?r=0.14.0"></script>
-<script src="js/app/services/views/service-hc-model.js?r=0.14.0"></script>
-<script src="js/app/settings/01_settings.js?r=0.14.0"></script>
-<script src="js/app/settings/email-transport-model.js?r=0.14.0"></script>
-<script src="js/app/settings/settings-controller.js?r=0.14.0"></script>
-<script src="js/app/settings/settings-model.js?r=0.14.0"></script>
-<script src="js/app/settings/settings-service.js?r=0.14.0"></script>
-<script src="js/app/snapshots/00_snapshots.js?r=0.14.0"></script>
-<script src="js/app/snapshots/controllers/snapshot-controller.js?r=0.14.0"></script>
-<script src="js/app/snapshots/controllers/snapshots-controller.js?r=0.14.0"></script>
-<script src="js/app/snapshots/controllers/snapshots-list-controller.js?r=0.14.0"></script>
-<script src="js/app/snapshots/controllers/snapshots-scheduled-controller.js?r=0.14.0"></script>
-<script src="js/app/snapshots/snapshot-model.js?r=0.14.0"></script>
-<script src="js/app/snapshots/snapshot-schedule-model.js?r=0.14.0"></script>
-<script src="js/app/snapshots/snapshots-service.js?r=0.14.0"></script>
-<script src="js/app/upstreams/01_upstreams.js?r=0.14.0"></script>
-<script src="js/app/upstreams/add-upstream-modal-controller.js?r=0.14.0"></script>
-<script src="js/app/upstreams/edit-upstream-controller.js?r=0.14.0"></script>
-<script src="js/app/upstreams/edit-upstream-details-controller.js?r=0.14.0"></script>
-<script src="js/app/upstreams/targets/edit-upstream-targets-controller.js?r=0.14.0"></script>
-<script src="js/app/upstreams/update-upstream-modal-controller.js?r=0.14.0"></script>
-<script src="js/app/upstreams/upstream.js?r=0.14.0"></script>
-<script src="js/app/upstreams/upstreams-controller.js?r=0.14.0"></script>
-<script src="js/app/upstreams/upstreams-service.js?r=0.14.0"></script>
-<script src="js/app/users/00_users.js?r=0.14.0"></script>
-<script src="js/app/users/user-controller.js?r=0.14.0"></script>
-<script src="js/app/users/user-create-controller.js?r=0.14.0"></script>
-<script src="js/app/users/user-model.js?r=0.14.0"></script>
-<script src="js/app/users/users-controller.js?r=0.14.0"></script>
+<script src="bower_components/jquery/dist/jquery.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular/angular.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-animate/angular-animate.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-loading-bar/build/loading-bar.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-ui-router/release/angular-ui-router.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-ui-utils/ui-utils.js?r=0.14.1-rc1"></script>
+<script src="bower_components/moment/moment.js?r=0.14.1-rc1"></script>
+<script src="bower_components/later/later.js?r=0.14.1-rc1"></script>
+<script src="bower_components/prettycron/prettycron.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-bootstrap-show-errors/src/showErrors.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-sanitize/angular-sanitize.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-xeditable/dist/js/xeditable.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-toastr/dist/angular-toastr.tpls.js?r=0.14.1-rc1"></script>
+<script src="bower_components/bootstrap/dist/js/bootstrap.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angularSails/dist/ngsails.io.js?r=0.14.1-rc1"></script>
+<script src="bower_components/ngstorage/ngStorage.js?r=0.14.1-rc1"></script>
+<script src="bower_components/bootswatch-dist/js/bootstrap.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.js?r=0.14.1-rc1"></script>
+<script src="bower_components/lodash/lodash.js?r=0.14.1-rc1"></script>
+<script src="bower_components/bootstrap-switch/dist/js/bootstrap-switch.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-spinkit/build/angular-spinkit.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-chips/dist/angular-chips.js?r=0.14.1-rc1"></script>
+<script src="bower_components/ng-file-upload/ng-file-upload.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-messages/angular-messages.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-utils-pagination/dirPagination.js?r=0.14.1-rc1"></script>
+<script src="bower_components/chart.js/dist/Chart.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-resource/angular-resource.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-moment/angular-moment.js?r=0.14.1-rc1"></script>
+<script src="bower_components/bootbox/bootbox.js?r=0.14.1-rc1"></script>
+<script src="bower_components/ngBootbox/dist/ngBootbox.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-json-human/dist/angular-json-human.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-bootstrap-switch/dist/angular-bootstrap-switch.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-chart.js/dist/angular-chart.js?r=0.14.1-rc1"></script>
+<script src="bower_components/angular-base64/angular-base64.js?r=0.14.1-rc1"></script>
+<script src="js/app/apis/00_apis.js?r=0.14.1-rc1"></script>
+<script src="js/app/apis/api-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/apis/apis-service.js?r=0.14.1-rc1"></script>
+<script src="js/app/apis/controllers/add-api-modal-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/apis/controllers/add-api-plugin-modal-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/apis/controllers/api-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/apis/controllers/api-details-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/apis/controllers/api-health-checks-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/apis/controllers/api-metrics-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/apis/controllers/apis-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/apis/views/api-hc-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/app.js?r=0.14.1-rc1"></script>
+<script src="js/app/certificates/00_certificates.js?r=0.14.1-rc1"></script>
+<script src="js/app/certificates/certificate-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/certificates/certificates-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/certificates/snis-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/cluster/00_cluster.js?r=0.14.1-rc1"></script>
+<script src="js/app/cluster/cluster-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/cluster/controllers/cluster-list-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/connections/00_connections.js?r=0.14.1-rc1"></script>
+<script src="js/app/connections/connections-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/connections/create-connection-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/connections/edit-connection-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/connections/node-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/connections/update-user-node-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/00_consumers.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/acl-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/apis/consumer-apis-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/consumer-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/consumer-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/consumer-service.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/consumers-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/credentials/consumer-credentials-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/credentials/create-hmac-auth-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/credentials/create-jwt-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/credentials/create-key-auth-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/credentials/create-oauth2-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/credentials/manage-basic-auth-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/credentials/mass-assign-credentials-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/details/consumer-details-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/groups/consumer-groups-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/groups/group.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/groups/manage-groups-modal-controllers.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/plugins/consumer-plugins-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/routes/consumer-routes-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/consumers/services/consumer-services-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/auth/auth.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/auth/login/login.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/auth/services/00_services.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/auth/services/AuthService.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/auth/services/UserService.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/auth/signup/signup.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/components/components.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/components/FocusOn.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/constants/AccessLevels.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/constants/BackendConfig.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/core.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/dependencies/dependencies.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/directives/directives.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/directives/konga-loader.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/directives/ListSearch.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/directives/RawView.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/error/error.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/filters/filters.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/interceptors/00_interceptors.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/interceptors/AuthInterceptor.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/interceptors/CsrfInterceptor.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/interceptors/ErrorInterceptor.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/interceptors/HttpTimeoutInterceptor.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/interceptors/KongaIntercenptor.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/interceptors/TemplateCacheInterceptor.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/layout/00_layout.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/layout/01_layout-controllers.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/layout/02_layout-directives.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/layout/03_layout-services.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/libraries/libraries.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/libraries/LoDash.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/models/00_models.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/models/DataModel.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/plugins/angular-vertilize.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/plugins/jsonc.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/plugins/material.spinner.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/plugins/uiBreadcrumbs.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/services/00_services.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/services/DataService.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/services/DialogService.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/services/HttpStatusService.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/services/KongPluginsService.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/services/ListConfigService.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/services/MessageService.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/services/NodesService.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/services/NotificationsService.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/services/Semver.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/services/SocketHelperService.js?r=0.14.1-rc1"></script>
+<script src="js/app/core/services/SubscriptionsService.js?r=0.14.1-rc1"></script>
+<script src="js/app/dashboard/01_dashboard.js?r=0.14.1-rc1"></script>
+<script src="js/app/dashboard/02_dashboard-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/healthchecks/00_healthchecks.js?r=0.14.1-rc1"></script>
+<script src="js/app/healthchecks/api-hc-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/healthchecks/healthchecks-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/info/00_info.js?r=0.14.1-rc1"></script>
+<script src="js/app/info/01_info-controllers.js?r=0.14.1-rc1"></script>
+<script src="js/app/info/02_info-service.js?r=0.14.1-rc1"></script>
+<script src="js/app/netdata-connections/01_netdata_connection.js?r=0.14.1-rc1"></script>
+<script src="js/app/netdata-connections/netdata-connection-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/plugins/00_plugins.js?r=0.14.1-rc1"></script>
+<script src="js/app/plugins/add-plugin-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/plugins/add-plugin-modal-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/plugins/add-plugins-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/plugins/api-plugins-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/plugins/edit-plugin-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/plugins/plugin-helper-service.js?r=0.14.1-rc1"></script>
+<script src="js/app/plugins/plugin-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/plugins/plugins-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/plugins/plugins-service.js?r=0.14.1-rc1"></script>
+<script src="js/app/routes/00_routes.js?r=0.14.1-rc1"></script>
+<script src="js/app/routes/controllers/add-route-modal-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/routes/controllers/add-route-plugin-modal-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/routes/controllers/route-consumers-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/routes/controllers/route-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/routes/controllers/route-details-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/routes/controllers/route-health-checks-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/routes/controllers/route-plugins-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/routes/controllers/routes-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/routes/routes-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/routes/routes-service.js?r=0.14.1-rc1"></script>
+<script src="js/app/services/00_services.js?r=0.14.1-rc1"></script>
+<script src="js/app/services/controllers/add-service-modal-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/services/controllers/add-service-plugin-modal-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/services/controllers/service-consumers-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/services/controllers/service-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/services/controllers/service-details-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/services/controllers/service-health-checks-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/services/controllers/service-plugins-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/services/controllers/service-routes-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/services/controllers/services-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/services/service-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/services/services-service.js?r=0.14.1-rc1"></script>
+<script src="js/app/services/views/service-hc-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/settings/01_settings.js?r=0.14.1-rc1"></script>
+<script src="js/app/settings/email-transport-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/settings/settings-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/settings/settings-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/settings/settings-service.js?r=0.14.1-rc1"></script>
+<script src="js/app/snapshots/00_snapshots.js?r=0.14.1-rc1"></script>
+<script src="js/app/snapshots/controllers/snapshot-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/snapshots/controllers/snapshots-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/snapshots/controllers/snapshots-list-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/snapshots/controllers/snapshots-scheduled-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/snapshots/snapshot-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/snapshots/snapshot-schedule-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/snapshots/snapshots-service.js?r=0.14.1-rc1"></script>
+<script src="js/app/upstreams/01_upstreams.js?r=0.14.1-rc1"></script>
+<script src="js/app/upstreams/add-upstream-modal-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/upstreams/edit-upstream-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/upstreams/edit-upstream-details-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/upstreams/targets/edit-upstream-targets-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/upstreams/update-upstream-modal-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/upstreams/upstream.js?r=0.14.1-rc1"></script>
+<script src="js/app/upstreams/upstreams-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/upstreams/upstreams-service.js?r=0.14.1-rc1"></script>
+<script src="js/app/users/00_users.js?r=0.14.1-rc1"></script>
+<script src="js/app/users/user-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/users/user-create-controller.js?r=0.14.1-rc1"></script>
+<script src="js/app/users/user-model.js?r=0.14.1-rc1"></script>
+<script src="js/app/users/users-controller.js?r=0.14.1-rc1"></script>
 <!--SCRIPTS END-->
 
 <% }%>

programming_language: Markdown