浏览代码

Se agrega vista con paquetes de KEA

Espinoza Guillermo 6 年之前
父节点
当前提交
b17fbbc540

+ 2 - 2
composer.lock

@@ -1457,7 +1457,7 @@
             "source": {
                 "type": "git",
                 "url": "ssh://git@200.50.168.30:222/VendorSoftwareFlowdat3/BaseAdmin.git",
-                "reference": "97587f95769fcfac8f3c43fae36aa02633960f62"
+                "reference": "ecd038fbd7c5ea4f686483941902bd15268e8394"
             },
             "type": "library",
             "autoload": {
@@ -1472,7 +1472,7 @@
                 "bootstrap",
                 "sonata"
             ],
-            "time": "2018-07-04T17:03:04+00:00"
+            "time": "2018-07-19T18:13:02+00:00"
         },
         {
             "name": "ik/device-bundle",

+ 32 - 0
src/KeaBundle/Controller/PacketController.php

@@ -0,0 +1,32 @@
+<?php
+
+namespace KeaBundle\Controller;
+
+use FOS\RestBundle\Controller\Annotations\RouteResource;
+use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+use Symfony\Component\HttpFoundation\Request;
+
+/**
+ * PacketController controller.
+ * @RouteResource("Kea")
+ */
+class PacketController extends Controller
+{
+
+    /**
+     * @param Request $request
+     *
+     * @return Response
+     */
+    public function listAction(Request $request) 
+    {
+        $adminPool = $this->get('sonata.admin.pool');
+        
+        return $this->render('KeaBundle:Packet:list.html.twig', array(
+            'base_template' => $adminPool->getTemplate('layout'),
+            'admin_pool' => $adminPool,
+            'admin' => $adminPool->getAdminByClass("KeaBundle\Entity\Config"),
+        ));
+    }
+
+}

+ 4 - 0
src/KeaBundle/Resources/config/routing/admin.xml

@@ -7,5 +7,9 @@
     <route id="kea_get_config" path="/admin/kea/config/get">
         <default key="_controller">KeaBundle:Config:get</default>
     </route>
+
+    <route id="kea_packet_list" path="/admin/kea/packet/">
+        <default key="_controller">KeaBundle:Packet:list</default>
+    </route>
     
 </routes>

+ 5 - 1
src/KeaBundle/Resources/translations/KeaBundle.es.yml

@@ -76,4 +76,8 @@ api:
     generate_config_help: Genera la configuración para el KEA del DHCP partiendo de los datos cargados en el sistema de Flowdat(host, dhcp, subred y pool).
     set_config_help: Genera configuración KEA y la envía hacia el KEA del DHCP seleccionado.
     reload_config_help: Genera configuración KEA y la envía hacia el KEA del DHCP seleccionado.
-    reload_hooks_help: Carga nuevamente las librerías de Hooks.
+    reload_hooks_help: Carga nuevamente las librerías de Hooks.
+kea_packet_list: Ver paquetes
+Filter: Filtro
+Packets: Paquetes
+kea_packet_list_help: Por defecto se muestran los últimos 100 paquetes de KEA

+ 4 - 0
src/KeaBundle/Resources/views/Config/config_manager_button.html.twig

@@ -3,4 +3,8 @@
         <i class="fa fa-cog" aria-hidden="true"></i>
         {{ 'kea_get_config'|trans({}, 'KeaBundle') }}
     </a>
+    <a class="sonata-action-element" href="{{ path('kea_packet_list') }}">
+        <i class="fa fa-eye" aria-hidden="true"></i>
+        {{ 'kea_packet_list'|trans({}, 'KeaBundle') }}
+    </a>
 </li>

+ 133 - 0
src/KeaBundle/Resources/views/Packet/list.html.twig

@@ -0,0 +1,133 @@
+{% extends 'SonataAdminBundle:CRUD:base_list.html.twig' %}
+
+{% block javascripts %}
+{{ parent() }}
+<script src="{{ asset('bundles/baseadmin') }}/js/stomp.js" type="text/javascript" charset="utf-8"></script>
+
+<script type="text/javascript">
+    
+    {# WEBSOCKET STOMP #}
+
+    var ws = new WebSocket('wss://' + window.location.hostname + '/ws');
+    var client = Stomp.over(ws);
+    
+    client.debug = function(e) {};
+    
+    client.onreceive = function(m) {};
+    
+    var on_connect = function(x) {
+      id = client.subscribe("/queue/kea", function(m) {
+          if ($('#tbody tr').length >= 100) {
+              $('#tbody tr:last').remove();
+          }
+
+          $('#tbody').prepend($("<tr>").append($('<td class="sonata-ba-list-field sonata-ba-list-field-text">').text(m.body)));
+      }, {
+        durable: false,
+        "auto-delete": false,
+        exclusive: false
+      });
+    };
+    
+    var on_error =  function(e) {
+        console.log(e);
+    };
+    
+    client.connect('guest', 'guest', on_connect, on_error, '/');
+    
+    
+    {# FILTRO #}
+    
+    $(document).on('ready', function() {
+        $('#filter').on('input', function() {
+            var $filter = $('#filter').val();
+            
+            if ($filter.length >= 3) {
+                $('#tbody td:not(:contains("'+$filter+'"))').hide();
+            } else {
+                $('#tbody td').show();
+            }
+            
+            return false;
+        });
+        
+        $('#first form').submit(function(e) {
+            e.preventDefault();
+            
+            return false;
+        });
+    });
+</script>
+
+{% endblock %}
+
+{% block tab_menu %}
+<ol class="nav navbar-top-links breadcrumb">
+    <li>
+        <a href="{{url('sonata_admin_dashboard')}}"><i class="fa fa-home"></i></a>
+    </li>
+    <li class="active"><span>{{ 'kea_packet_list'|trans({}, 'KeaBundle') }}</span></li>
+</ol>
+{% endblock %}
+
+{% block list_filters_actions %}
+<ul class="nav navbar-nav navbar-right">
+    <li><a class="sonata-action-element" href="{{url('admin_kea_config_list')}}"><i class="fa fa-list" aria-hidden="true"></i>
+        {{ 'link_action_list'|trans({}, 'SonataAdminBundle') }}
+    </a></li>
+</ul>
+{% endblock %}
+
+{% block actions '' %}
+
+{% block title '' %}
+
+{% block navbar_title '' %}
+
+{% block list_filters '' %}
+
+{% block list_table '' %}
+
+{% block sonata_wrapper %}
+{{ parent() }}
+{% endblock %}
+
+{% block content %}
+
+<div class="row">
+    <div class="col-xs-12 col-md-12">
+        <div class="box box-primary">
+            <div id="first" class="sonata-filter-form form-horizontal" style="width: 100%; overflow: auto; padding: 10px;">
+                <div class="box-header">
+                    <h4 class="box-title">
+                        {{ 'Filter'|trans({}, 'KeaBundle') }}
+                    </h4>
+                </div>
+                <form>
+                    <input id="filter" autocomplete="off"></input>
+                </form>
+            </div>
+        </div>
+    </div>
+</div>
+
+<div class="row">
+    <div class="col-xs-12 col-md-12">
+        <div class="box box-primary" style="margin-bottom: 100px;">
+            <div id="second" class="box-body table-responsive no-padding" style="width: 100%; overflow: auto; padding: 10px;">
+                <div class="box-header">
+                    <h4 class="box-title">
+                        {{ 'Packets'|trans({}, 'KeaBundle') }}
+                    </h4>
+                    <span class="help-block sonata-ba-field-help">{{ 'kea_packet_list_help'|trans({}, 'KeaBundle') }}</span>
+                </div>
+                <table class="table table-bordered table-striped sonata-ba-list">
+                    <thead></thead>
+                    <tbody id="tbody"></tbody>
+                </table>
+            </div>
+        </div>
+    </div>
+</div>
+    
+{% endblock %}

+ 4 - 1
src/KeaBundle/Services/BaseKea.php

@@ -16,7 +16,10 @@ class BaseKea implements KeaConfigInterface
     /**
     * @var array
     */
-    private $hooks_libraries = [];
+    private $hooks_libraries = [[
+        'library' => '/hook/dhcp/kea-hook-flowdat3.so',
+        'parameters' => '',
+        ]];
 
     /**
     * @var array