Revision b2668166
[#1734] Recherche par adresse IP dans VigiBoard
Change-Id: I5607fc922c85be639f1ba5c2ec2a7a600aa3e42a
Refs: #1734
app_cfg.py | ||
---|---|---|
115 | 115 |
'date', |
116 | 116 |
'priority', |
117 | 117 |
'occurrences', |
118 |
# 'address', |
|
118 | 119 |
'hostname', |
119 | 120 |
'servicename', |
120 | 121 |
'output', |
setup.py | ||
---|---|---|
81 | 81 |
'date = vigiboard.controllers.plugins.date:PluginDate', |
82 | 82 |
'priority = vigiboard.controllers.plugins.priority:PluginPriority', |
83 | 83 |
'occurrences = vigiboard.controllers.plugins.occurrences:PluginOccurrences', |
84 |
'address = vigiboard.controllers.plugins.address:PluginAddress', |
|
84 | 85 |
'hostname = vigiboard.controllers.plugins.hostname:PluginHostname', |
85 | 86 |
'servicename = vigiboard.controllers.plugins.servicename:PluginServicename', |
86 | 87 |
'output = vigiboard.controllers.plugins.output:PluginOutput', |
vigiboard/controllers/plugins/address.py | ||
---|---|---|
1 |
# -*- coding: utf-8 -*- |
|
2 |
# vim:set expandtab tabstop=4 shiftwidth=4: |
|
3 |
# Copyright (C) 2007-2016 CS-SI |
|
4 |
# License: GNU GPL v2 <http://www.gnu.org/licenses/gpl-2.0.html> |
|
5 |
|
|
6 |
""" |
|
7 |
Un plugin pour VigiBoard qui ajoute une colonne avec l'adresse (ex: IP) |
|
8 |
de l'hôte sur lequel porte l'événement corrélé. |
|
9 |
""" |
|
10 |
import tw.forms as twf |
|
11 |
from tg.i18n import lazy_ugettext as l_ |
|
12 |
|
|
13 |
from vigilo.models.functions import sql_escape_like |
|
14 |
from vigiboard.controllers.plugins import VigiboardRequestPlugin, ITEMS |
|
15 |
|
|
16 |
class PluginAddress(VigiboardRequestPlugin): |
|
17 |
""" |
|
18 |
Ajoute une colonne avec l'adresse de l'hôte impacté. |
|
19 |
""" |
|
20 |
def get_search_fields(self): |
|
21 |
return [ |
|
22 |
twf.TextField( |
|
23 |
'address', |
|
24 |
label_text=l_('Address'), |
|
25 |
validator=twf.validators.String(if_missing=None), |
|
26 |
) |
|
27 |
] |
|
28 |
|
|
29 |
def handle_search_fields(self, query, search, state, subqueries): |
|
30 |
if state != ITEMS: |
|
31 |
return |
|
32 |
|
|
33 |
if search.get('address'): |
|
34 |
address = sql_escape_like(search['address']) |
|
35 |
query.add_filter(query.items.c.address.ilike(address)) |
|
36 |
|
|
37 |
def get_data(self, event): |
|
38 |
return { |
|
39 |
'address': event.address, |
|
40 |
} |
|
41 |
|
|
42 |
def get_sort_criterion(self, query, column): |
|
43 |
if column == 'address': |
|
44 |
return query.items.c.address |
|
45 |
return None |
|
46 |
|
vigiboard/controllers/root.py | ||
---|---|---|
172 | 172 |
|
173 | 173 |
aggregates.add_table( |
174 | 174 |
CorrEvent, |
175 |
aggregates.items.c.address, |
|
175 | 176 |
aggregates.items.c.hostname, |
176 | 177 |
aggregates.items.c.servicename |
177 | 178 |
) |
vigiboard/controllers/vigiboardrequest.py | ||
---|---|---|
94 | 94 |
LowLevelService.idservice.label("idsupitem"), |
95 | 95 |
LowLevelService.servicename.label("servicename"), |
96 | 96 |
Host.name.label("hostname"), |
97 |
Host.address.label("address"), |
|
97 | 98 |
).join( |
98 | 99 |
(Host, Host.idhost == LowLevelService.idhost), |
99 | 100 |
).distinct() |
... | ... | |
103 | 104 |
Host.idhost.label("idsupitem"), |
104 | 105 |
expr_null().label("servicename"), |
105 | 106 |
Host.name.label("hostname"), |
107 |
Host.address.label("address"), |
|
106 | 108 |
).distinct() |
107 | 109 |
|
108 | 110 |
# Application des filtres des plugins si nécessaire. |
... | ... | |
129 | 131 |
UserSupItem.idsupitem, |
130 | 132 |
UserSupItem.servicename, |
131 | 133 |
UserSupItem.hostname, |
134 |
UserSupItem.address, |
|
132 | 135 |
).filter( |
133 | 136 |
UserSupItem.username == user.user_name |
134 | 137 |
).distinct() |
... | ... | |
430 | 433 |
|
431 | 434 |
def generate_tmpl_context(self): |
432 | 435 |
""" |
433 |
Génère et peuple la variable tmpl_context avec les Dialogs et
|
|
436 |
Génère et peuple la variable tmpl_context avec les dialogues et
|
|
434 | 437 |
formulaires nécessaire au fonctionnement de Vigiboard |
435 | 438 |
""" |
436 | 439 |
|
Also available in: Unified diff