gnms 2.1.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of gnms might be problematic. Click here for more details.
- data/LICENSE +459 -0
- data/README +29 -0
- data/bin/gnms +11 -0
- data/gnms.gemspec +70 -0
- data/lib/cmd_parse.rb +747 -0
- data/lib/config_global.rb +414 -0
- data/lib/contact.rb +171 -0
- data/lib/external/crypt/blowfish-tables.rb +190 -0
- data/lib/external/crypt/blowfish.rb +110 -0
- data/lib/external/crypt/cbc.rb +123 -0
- data/lib/external/crypt/stringxor.rb +27 -0
- data/lib/external/fog.rb +41 -0
- data/lib/external/jjmx.rb +45 -0
- data/lib/external/sms.rb +282 -0
- data/lib/external/xmpp4r-simple.rb +497 -0
- data/lib/format.rb +85 -0
- data/lib/gnms.rb +329 -0
- data/lib/gui/about_window.rb +177 -0
- data/lib/gui/adddelnode.rb +799 -0
- data/lib/gui/base_window.rb +789 -0
- data/lib/gui/canvas_map.rb +498 -0
- data/lib/gui/charts/gruff.rb +51 -0
- data/lib/gui/color_macro.rb +145 -0
- data/lib/gui/config_window.rb +2151 -0
- data/lib/gui/custom_plugin_window.rb +90 -0
- data/lib/gui/debug_window.rb +46 -0
- data/lib/gui/event_window.rb +469 -0
- data/lib/gui/find_node_window.rb +438 -0
- data/lib/gui/help_window.rb +47 -0
- data/lib/gui/ipcalculator.rb +147 -0
- data/lib/gui/jmx_ref_window.rb +309 -0
- data/lib/gui/link_view.rb +46 -0
- data/lib/gui/mib_browser.rb +585 -0
- data/lib/gui/node_host_property.rb +3712 -0
- data/lib/gui/node_host_view.rb +270 -0
- data/lib/gui/node_network_property.rb +1059 -0
- data/lib/gui/node_network_view.rb +186 -0
- data/lib/gui/node_view.rb +672 -0
- data/lib/gui/oid_ref_window.rb +288 -0
- data/lib/gui/snmptrap_ref_window.rb +288 -0
- data/lib/gui/sub/account_frame.rb +196 -0
- data/lib/gui/sub/contact_frame.rb +519 -0
- data/lib/gui/syslog_ref_window.rb +288 -0
- data/lib/gui/treenode_window.rb +320 -0
- data/lib/gui/update_window.rb +124 -0
- data/lib/gui/widgets.rb +169 -0
- data/lib/gui/wmi_ref_window.rb +286 -0
- data/lib/interface.rb +16 -0
- data/lib/ipcalc.rb +266 -0
- data/lib/link.rb +45 -0
- data/lib/main.rb +1091 -0
- data/lib/monitor/client/custom/custom_monitoring.rb +40 -0
- data/lib/monitor/client/jmx/jmx_attr_monitoring.rb +36 -0
- data/lib/monitor/client/jmx/jmx_monitoring.rb +83 -0
- data/lib/monitor/client/jmx/jmx_ref.rb +114 -0
- data/lib/monitor/client/snmp/mibs/SNMPv2-MIB.txt +854 -0
- data/lib/monitor/client/snmp/mibs/SNMPv2-SMI.txt +344 -0
- data/lib/monitor/client/snmp/oid_ref.rb +141 -0
- data/lib/monitor/client/snmp/snmp.rb +178 -0
- data/lib/monitor/client/snmp/snmp_monitoring.rb +58 -0
- data/lib/monitor/client/wmi/wmi.rb +139 -0
- data/lib/monitor/client/wmi/wmi_monitoring.rb +60 -0
- data/lib/monitor/client/wmi/wmi_ref.rb +141 -0
- data/lib/monitor/custom_plugin.rb +50 -0
- data/lib/monitor/server/msg_buffer.rb +39 -0
- data/lib/monitor/server/snmp/snmptrap_analyzer.rb +81 -0
- data/lib/monitor/server/snmp/snmptrap_capture.rb +26 -0
- data/lib/monitor/server/snmp/snmptrap_monitoring.rb +32 -0
- data/lib/monitor/server/snmp/snmptrap_ref.rb +135 -0
- data/lib/monitor/server/snmp/snmptrap_server.rb +50 -0
- data/lib/monitor/server/syslog/syslog_analyzer.rb +141 -0
- data/lib/monitor/server/syslog/syslog_capture.rb +28 -0
- data/lib/monitor/server/syslog/syslog_monitoring.rb +32 -0
- data/lib/monitor/server/syslog/syslog_ref.rb +136 -0
- data/lib/monitor/server/syslog/syslog_server.rb +43 -0
- data/lib/node.rb +1020 -0
- data/lib/node_db.rb +2668 -0
- data/lib/node_host.rb +215 -0
- data/lib/node_listener.rb +639 -0
- data/lib/node_network.rb +269 -0
- data/lib/node_property.rb +39 -0
- data/lib/notify/alarm.rb +247 -0
- data/lib/notify/irc_bot.rb +167 -0
- data/lib/notify/xmpp_bot.rb +107 -0
- data/lib/service.rb +36 -0
- data/lib/version.rb +8 -0
- data/pixmap/bg/map_bg.jpg +0 -0
- data/pixmap/bg/map_bg2.jpg +0 -0
- data/pixmap/logo.jpg +0 -0
- data/pixmap/logo_icon.png +0 -0
- data/pixmap/os/3com.png +0 -0
- data/pixmap/os/aix.gif +0 -0
- data/pixmap/os/amiga.png +0 -0
- data/pixmap/os/beos.png +0 -0
- data/pixmap/os/cisco.png +0 -0
- data/pixmap/os/freebsd.png +0 -0
- data/pixmap/os/hp.png +0 -0
- data/pixmap/os/hurd.gif +0 -0
- data/pixmap/os/irix.gif +0 -0
- data/pixmap/os/linux.png +0 -0
- data/pixmap/os/mac.png +0 -0
- data/pixmap/os/netbsd.gif +0 -0
- data/pixmap/os/netware.png +0 -0
- data/pixmap/os/openbsd.png +0 -0
- data/pixmap/os/os2warp.gif +0 -0
- data/pixmap/os/qnx.gif +0 -0
- data/pixmap/os/sco.gif +0 -0
- data/pixmap/os/sgi.xpm +111 -0
- data/pixmap/os/solaris.gif +0 -0
- data/pixmap/os/unix.gif +0 -0
- data/pixmap/os/unknown.png +0 -0
- data/pixmap/os/vms.xpm +345 -0
- data/pixmap/os/windows.png +0 -0
- data/pixmap/type/cloud.png +0 -0
- data/pixmap/type/device.png +0 -0
- data/pixmap/type/firewall.png +0 -0
- data/pixmap/type/gateway.png +0 -0
- data/pixmap/type/home.png +0 -0
- data/pixmap/type/host.png +0 -0
- data/pixmap/type/network.png +0 -0
- data/pixmap/type/printer.png +0 -0
- data/pixmap/type/router.png +0 -0
- data/pixmap/type/server.png +0 -0
- data/pixmap/type/switch.png +0 -0
- data/pixmap/type/vm.png +0 -0
- data/plugins/Defaultme.rb +7 -0
- data/plugins/DnsCheck.rb +46 -0
- data/plugins/FooMonitor.rb +26 -0
- data/plugins/HttpVirtualHostMonitor.rb +43 -0
- data/plugins/MysqlShowStatusMonitor.rb +64 -0
- data/plugins/PgsqlPercentConnectionMonitor.rb +72 -0
- data/plugins/SshCpuLoadMonitor.rb +85 -0
- data/plugins/SshDiskMonitor.rb +69 -0
- data/plugins/SshFgtAvExpiredMonitor.rb +75 -0
- data/plugins/SshPercentUsedRamMonitor.rb +74 -0
- data/plugins/TelnetCpuLoadMonitor.rb +69 -0
- data/plugins/example1.rb +15 -0
- data/plugins/example2.rb +7 -0
- data/sound/beep.wav +0 -0
- metadata +378 -0
@@ -0,0 +1,288 @@
|
|
1
|
+
class OIDRefWindow
|
2
|
+
|
3
|
+
def clear_ls()
|
4
|
+
@oid_ref_ls.clear()
|
5
|
+
end
|
6
|
+
#populate listview with saved values
|
7
|
+
def populate_ls()
|
8
|
+
$oid_refs.each_key do |name|
|
9
|
+
iter = @oid_ref_ls.append
|
10
|
+
iter[0] = name
|
11
|
+
iter[1] = $oid_refs[name].description
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def initialize()
|
16
|
+
#save oidref hash
|
17
|
+
@oidrefs_backup=$oid_refs.dup
|
18
|
+
|
19
|
+
@window=Gtk::Window.new
|
20
|
+
|
21
|
+
@window.set_title("SNMP OID Ref configuration")
|
22
|
+
@window.set_size_request(300, 200)
|
23
|
+
|
24
|
+
@window.signal_connect("key_press_event") {|w,e|
|
25
|
+
if e.keyval == Gdk::Keyval::GDK_Escape
|
26
|
+
@window.destroy
|
27
|
+
end
|
28
|
+
}
|
29
|
+
|
30
|
+
frame = Gtk::Frame::new
|
31
|
+
frame.border_width=5
|
32
|
+
frame.show
|
33
|
+
vbox_root=Gtk::VBox::new
|
34
|
+
vbox_root.show
|
35
|
+
@window.add vbox_root
|
36
|
+
vbox_root.add frame
|
37
|
+
|
38
|
+
vbox = Gtk::VBox.new(false,0)
|
39
|
+
vbox.show
|
40
|
+
frame.add vbox
|
41
|
+
|
42
|
+
@oid_ref_ls = Gtk::ListStore.new(String, String)
|
43
|
+
@oid_ref_view = Gtk::TreeView.new(@oid_ref_ls)
|
44
|
+
@oid_ref_view.show
|
45
|
+
column1 = Gtk::TreeViewColumn.new("Name",
|
46
|
+
Gtk::CellRendererText.new, {:text => 0})
|
47
|
+
column1.set_sort_column_id(0)
|
48
|
+
column2 = Gtk::TreeViewColumn.new("Description",
|
49
|
+
Gtk::CellRendererText.new, {:text => 1})
|
50
|
+
column2.set_sort_column_id(1)
|
51
|
+
|
52
|
+
@oid_ref_view.append_column(column1)
|
53
|
+
@oid_ref_view.append_column(column2)
|
54
|
+
|
55
|
+
scroll = Gtk::ScrolledWindow.new(nil, nil)
|
56
|
+
scroll.border_width=2
|
57
|
+
scroll.set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC)
|
58
|
+
scroll.add @oid_ref_view
|
59
|
+
scroll.show
|
60
|
+
|
61
|
+
# Create a menu
|
62
|
+
menu = Gtk::Menu.new
|
63
|
+
|
64
|
+
item_add = Gtk::ImageMenuItem.new("Add OID Ref")
|
65
|
+
image_item_add = Gtk::Image.new()
|
66
|
+
image_item_add.set_stock(Gtk::Stock::ADD)
|
67
|
+
item_add.set_image(image_item_add)
|
68
|
+
item_add.signal_connect("activate") { add_gui_oid_ref() }
|
69
|
+
menu.append(item_add)
|
70
|
+
item_del = Gtk::ImageMenuItem.new("Delete selected OID Ref")
|
71
|
+
image_item_del = Gtk::Image.new()
|
72
|
+
image_item_del.set_stock(Gtk::Stock::REMOVE)
|
73
|
+
item_del.set_image(image_item_del)
|
74
|
+
item_del.signal_connect("activate") {
|
75
|
+
if @oid_ref_view.selection.selected!=nil
|
76
|
+
if OIDRef::del_oid_ref(@oid_ref_view.selection.selected[0])
|
77
|
+
@oid_ref_view.model.remove(@oid_ref_view.selection.selected)
|
78
|
+
else
|
79
|
+
dialog = Gtk::MessageDialog.new(@window, Gtk::Dialog::DESTROY_WITH_PARENT,
|
80
|
+
Gtk::MessageDialog::ERROR,
|
81
|
+
Gtk::MessageDialog::BUTTONS_OK,
|
82
|
+
"You can't delete! OID Ref in use")
|
83
|
+
dialog.run
|
84
|
+
dialog.destroy
|
85
|
+
end
|
86
|
+
end
|
87
|
+
}
|
88
|
+
menu.append(item_del)
|
89
|
+
item_edit = Gtk::ImageMenuItem.new("Edit OID Ref")
|
90
|
+
image_item_edit = Gtk::Image.new()
|
91
|
+
image_item_edit.set_stock(Gtk::Stock::EDIT)
|
92
|
+
item_edit.set_image(image_item_edit)
|
93
|
+
item_edit.signal_connect("activate") {
|
94
|
+
if @oid_ref_view.selection.selected != nil
|
95
|
+
edit_oid_ref(@oid_ref_view.selection.selected[0])
|
96
|
+
end
|
97
|
+
}
|
98
|
+
menu.append(item_edit)
|
99
|
+
|
100
|
+
@oid_ref_view.signal_connect("button_press_event") do |widget, event|
|
101
|
+
if event.kind_of? Gdk::EventButton and event.button == 3
|
102
|
+
if @oid_ref_view.selection.selected == nil
|
103
|
+
item_del.set_sensitive(false)
|
104
|
+
item_edit.set_sensitive(false)
|
105
|
+
else
|
106
|
+
item_del.set_sensitive(true)
|
107
|
+
item_edit.set_sensitive(true)
|
108
|
+
end
|
109
|
+
menu.popup(nil, nil, event.button, event.time)
|
110
|
+
elsif (@oid_ref_view.selection.selected != nil) && (event.event_type == Gdk::Event::BUTTON2_PRESS)
|
111
|
+
edit_oid_ref(@oid_ref_view.selection.selected[0])
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
menu.show_all
|
116
|
+
|
117
|
+
populate_ls()
|
118
|
+
vbox.add(scroll)
|
119
|
+
|
120
|
+
bbox = Gtk::HBox::new(FALSE, 10)
|
121
|
+
bbox.border_width=10
|
122
|
+
bbox.show
|
123
|
+
|
124
|
+
ok_button = Gtk::Button.new(Gtk::Stock::OK)
|
125
|
+
ok_button.show
|
126
|
+
ok_button.signal_connect("clicked") {
|
127
|
+
OIDRef::write_db_oidref()
|
128
|
+
@window.destroy
|
129
|
+
}
|
130
|
+
|
131
|
+
cancel_button = Gtk::Button.new(Gtk::Stock::CANCEL)
|
132
|
+
cancel_button.show
|
133
|
+
cancel_button.signal_connect("clicked") {
|
134
|
+
$oid_refs=@oidrefs_backup
|
135
|
+
@window.destroy
|
136
|
+
}
|
137
|
+
ok_button.set_flags(Gtk::Widget::CAN_DEFAULT)
|
138
|
+
bbox.pack_start(ok_button, TRUE, TRUE, 0)
|
139
|
+
cancel_button.set_flags(Gtk::Widget::CAN_DEFAULT)
|
140
|
+
bbox.pack_start(cancel_button, TRUE, TRUE, 0)
|
141
|
+
|
142
|
+
separator = Gtk::HSeparator::new()
|
143
|
+
separator.show
|
144
|
+
vbox_root.pack_start(separator, FALSE, TRUE, 0)
|
145
|
+
vbox_root.pack_start(bbox, FALSE, TRUE, 0)
|
146
|
+
|
147
|
+
@window.show
|
148
|
+
end
|
149
|
+
|
150
|
+
def add_gui_oid_ref()
|
151
|
+
add_modify_oid_ref(true)
|
152
|
+
end
|
153
|
+
|
154
|
+
def edit_oid_ref(oid_ref_name)
|
155
|
+
add_modify_oid_ref(false, oid_ref_name)
|
156
|
+
end
|
157
|
+
|
158
|
+
def add_modify_oid_ref(add_boolean, oid_ref_name=nil)
|
159
|
+
window=Gtk::Window.new
|
160
|
+
window.set_modal(true)
|
161
|
+
lbl="Edit OID Ref"
|
162
|
+
if add_boolean
|
163
|
+
lbl="Add OID Ref"
|
164
|
+
end
|
165
|
+
|
166
|
+
window.set_title(lbl)
|
167
|
+
window.set_size_request(460, 160)
|
168
|
+
|
169
|
+
window.signal_connect("key_press_event") {|w,e|
|
170
|
+
if e.keyval == Gdk::Keyval::GDK_Escape
|
171
|
+
window.destroy
|
172
|
+
end
|
173
|
+
}
|
174
|
+
|
175
|
+
frame = Gtk::Frame::new
|
176
|
+
frame.border_width=10
|
177
|
+
frame.show
|
178
|
+
vbox_root=Gtk::VBox::new
|
179
|
+
vbox_root.show
|
180
|
+
window.add vbox_root
|
181
|
+
vbox_root.add frame
|
182
|
+
|
183
|
+
vbox = Gtk::VBox.new
|
184
|
+
vbox.show
|
185
|
+
frame.add vbox
|
186
|
+
|
187
|
+
table = Gtk::Table.new(3,2,false)
|
188
|
+
table.show
|
189
|
+
|
190
|
+
label_name = Gtk::Label.new "Name"
|
191
|
+
label_name.show
|
192
|
+
if add_boolean
|
193
|
+
entry_name = Gtk::Entry.new
|
194
|
+
else
|
195
|
+
entry_name = Gtk::Entry.new
|
196
|
+
entry_name.set_editable false
|
197
|
+
entry_name.set_text(oid_ref_name)
|
198
|
+
end
|
199
|
+
entry_name.show
|
200
|
+
|
201
|
+
table.attach(label_name,0,1,0,1)
|
202
|
+
table.attach(entry_name,1,2,0,1)
|
203
|
+
|
204
|
+
entry_description = Gtk::Entry.new
|
205
|
+
if !add_boolean
|
206
|
+
entry_description.set_text($oid_refs[entry_name.text()].description) unless entry_name.text() == ""
|
207
|
+
end
|
208
|
+
entry_description.show
|
209
|
+
label_description = Gtk::Label.new "Description"
|
210
|
+
label_description.show
|
211
|
+
|
212
|
+
table.attach(label_description,0,1,1,2)
|
213
|
+
table.attach(entry_description,1,2,1,2)
|
214
|
+
|
215
|
+
entry_value = Gtk::Entry.new
|
216
|
+
if !add_boolean
|
217
|
+
entry_value.set_text($oid_refs[entry_name.text()].value) unless entry_name.text() == ""
|
218
|
+
end
|
219
|
+
entry_value.show
|
220
|
+
label_value = Gtk::Label.new "Value"
|
221
|
+
label_value.show
|
222
|
+
|
223
|
+
table.attach(label_value,0,1,2,3)
|
224
|
+
table.attach(entry_value,1,2,2,3)
|
225
|
+
if !add_boolean
|
226
|
+
entry_name.signal_connect("changed") {|e|
|
227
|
+
if e.text() != ""
|
228
|
+
entry_description.set_text($oid_refs[e.text()].description)
|
229
|
+
entry_value.set_text($oid_refs[e.text()].value)
|
230
|
+
end
|
231
|
+
}
|
232
|
+
end
|
233
|
+
bbox =Gtk::HBox::new(FALSE, 10)
|
234
|
+
bbox.border_width=10
|
235
|
+
bbox.show
|
236
|
+
|
237
|
+
ok_button = Gtk::Button.new(Gtk::Stock::OK)
|
238
|
+
ok_button.show
|
239
|
+
ok_button.signal_connect("clicked") {
|
240
|
+
if add_boolean
|
241
|
+
#new entry!
|
242
|
+
if $oid_refs[entry_name.text()] == nil
|
243
|
+
OIDRef::add_oid_ref(entry_name.text(),entry_description.text(),entry_value.text())
|
244
|
+
iter = @oid_ref_ls.append
|
245
|
+
iter[0] = entry_name.text()
|
246
|
+
iter[1] = entry_description.text()
|
247
|
+
window.destroy
|
248
|
+
else
|
249
|
+
dialog = Gtk::MessageDialog.new(window, Gtk::Dialog::DESTROY_WITH_PARENT,
|
250
|
+
Gtk::MessageDialog::ERROR,
|
251
|
+
Gtk::MessageDialog::BUTTONS_OK,
|
252
|
+
"OID Ref '#{entry_name.text()}' already exists!")
|
253
|
+
dialog.run
|
254
|
+
dialog.destroy
|
255
|
+
end
|
256
|
+
else
|
257
|
+
#modify existing entry
|
258
|
+
$oid_refs[entry_name.text()].description=entry_description.text()
|
259
|
+
$oid_refs[entry_name.text()].value=entry_value.text()
|
260
|
+
@oid_ref_ls.each do |model,path,iter|
|
261
|
+
if iter[0] == entry_name.text()
|
262
|
+
iter[1]=entry_description.text()
|
263
|
+
break
|
264
|
+
end
|
265
|
+
end
|
266
|
+
window.destroy
|
267
|
+
end
|
268
|
+
}
|
269
|
+
|
270
|
+
cancel_button = Gtk::Button.new(Gtk::Stock::CANCEL)
|
271
|
+
cancel_button.show
|
272
|
+
cancel_button.signal_connect("clicked") {
|
273
|
+
window.destroy
|
274
|
+
}
|
275
|
+
|
276
|
+
ok_button.set_flags(Gtk::Widget::CAN_DEFAULT)
|
277
|
+
bbox.pack_start(ok_button, TRUE, TRUE, 0)
|
278
|
+
cancel_button.set_flags(Gtk::Widget::CAN_DEFAULT)
|
279
|
+
bbox.pack_start(cancel_button, TRUE, TRUE, 0)
|
280
|
+
|
281
|
+
vbox.add(table)
|
282
|
+
separator = Gtk::HSeparator::new()
|
283
|
+
separator.show
|
284
|
+
vbox_root.pack_start(separator, FALSE, TRUE, 0)
|
285
|
+
vbox_root.pack_start(bbox, FALSE, TRUE, 0)
|
286
|
+
window.show
|
287
|
+
end
|
288
|
+
end
|
@@ -0,0 +1,288 @@
|
|
1
|
+
class SnmpTrapRefWindow
|
2
|
+
|
3
|
+
def clear_ls()
|
4
|
+
@snmptrap_ref_ls.clear()
|
5
|
+
end
|
6
|
+
#populate listview with saved values
|
7
|
+
def populate_ls()
|
8
|
+
$snmptrap_refs.each_key do |name|
|
9
|
+
iter = @snmptrap_ref_ls.append
|
10
|
+
iter[0] = name
|
11
|
+
iter[1] = $snmptrap_refs[name].description
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def initialize()
|
16
|
+
#save snmptrapref hash
|
17
|
+
@snmptraprefs_backup=$snmptrap_refs.dup
|
18
|
+
|
19
|
+
@window=Gtk::Window.new
|
20
|
+
|
21
|
+
@window.set_title("Snmp Trap Ref configuration")
|
22
|
+
@window.set_size_request(300, 200)
|
23
|
+
|
24
|
+
@window.signal_connect("key_press_event") {|w,e|
|
25
|
+
if e.keyval == Gdk::Keyval::GDK_Escape
|
26
|
+
@window.destroy
|
27
|
+
end
|
28
|
+
}
|
29
|
+
|
30
|
+
frame = Gtk::Frame::new
|
31
|
+
frame.border_width=5
|
32
|
+
frame.show
|
33
|
+
vbox_root=Gtk::VBox::new
|
34
|
+
vbox_root.show
|
35
|
+
@window.add vbox_root
|
36
|
+
vbox_root.add frame
|
37
|
+
|
38
|
+
vbox = Gtk::VBox.new(false,0)
|
39
|
+
vbox.show
|
40
|
+
frame.add vbox
|
41
|
+
|
42
|
+
@snmptrap_ref_ls = Gtk::ListStore.new(String, String)
|
43
|
+
@snmptrap_ref_view = Gtk::TreeView.new(@snmptrap_ref_ls)
|
44
|
+
@snmptrap_ref_view.show
|
45
|
+
column1 = Gtk::TreeViewColumn.new("Name",
|
46
|
+
Gtk::CellRendererText.new, {:text => 0})
|
47
|
+
column1.set_sort_column_id(0)
|
48
|
+
column2 = Gtk::TreeViewColumn.new("Description",
|
49
|
+
Gtk::CellRendererText.new, {:text => 1})
|
50
|
+
column2.set_sort_column_id(1)
|
51
|
+
|
52
|
+
@snmptrap_ref_view.append_column(column1)
|
53
|
+
@snmptrap_ref_view.append_column(column2)
|
54
|
+
|
55
|
+
scroll = Gtk::ScrolledWindow.new(nil, nil)
|
56
|
+
scroll.border_width=2
|
57
|
+
scroll.set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC)
|
58
|
+
scroll.add @snmptrap_ref_view
|
59
|
+
scroll.show
|
60
|
+
|
61
|
+
# Create a menu
|
62
|
+
menu = Gtk::Menu.new
|
63
|
+
|
64
|
+
item_add = Gtk::ImageMenuItem.new("Add Snmp Trap Ref")
|
65
|
+
image_item_add = Gtk::Image.new()
|
66
|
+
image_item_add.set_stock(Gtk::Stock::ADD)
|
67
|
+
item_add.set_image(image_item_add)
|
68
|
+
item_add.signal_connect("activate") { add_gui_snmptrap_ref() }
|
69
|
+
menu.append(item_add)
|
70
|
+
item_del = Gtk::ImageMenuItem.new("Delete selected Snmp Trap Ref")
|
71
|
+
image_item_del = Gtk::Image.new()
|
72
|
+
image_item_del.set_stock(Gtk::Stock::REMOVE)
|
73
|
+
item_del.set_image(image_item_del)
|
74
|
+
item_del.signal_connect("activate") {
|
75
|
+
if @snmptrap_ref_view.selection.selected!=nil
|
76
|
+
if SnmpTrapRef::del_snmptrap_ref(@snmptrap_ref_view.selection.selected[0])
|
77
|
+
@snmptrap_ref_view.model.remove(@snmptrap_ref_view.selection.selected)
|
78
|
+
else
|
79
|
+
dialog = Gtk::MessageDialog.new(@window, Gtk::Dialog::DESTROY_WITH_PARENT,
|
80
|
+
Gtk::MessageDialog::ERROR,
|
81
|
+
Gtk::MessageDialog::BUTTONS_OK,
|
82
|
+
"You can't delete! Snmp Trap Ref in use")
|
83
|
+
dialog.run
|
84
|
+
dialog.destroy
|
85
|
+
end
|
86
|
+
end
|
87
|
+
}
|
88
|
+
menu.append(item_del)
|
89
|
+
item_edit = Gtk::ImageMenuItem.new("Edit Snmp Trap Ref")
|
90
|
+
image_item_edit = Gtk::Image.new()
|
91
|
+
image_item_edit.set_stock(Gtk::Stock::EDIT)
|
92
|
+
item_edit.set_image(image_item_edit)
|
93
|
+
item_edit.signal_connect("activate") {
|
94
|
+
if @snmptrap_ref_view.selection.selected != nil
|
95
|
+
edit_snmptrap_ref(@snmptrap_ref_view.selection.selected[0])
|
96
|
+
end
|
97
|
+
}
|
98
|
+
menu.append(item_edit)
|
99
|
+
|
100
|
+
menu.show_all
|
101
|
+
|
102
|
+
@snmptrap_ref_view.signal_connect("button_press_event") do |widget, event|
|
103
|
+
if event.kind_of? Gdk::EventButton and event.button == 3
|
104
|
+
if @snmptrap_ref_view.selection.selected == nil
|
105
|
+
item_del.set_sensitive(false)
|
106
|
+
item_edit.set_sensitive(false)
|
107
|
+
else
|
108
|
+
item_del.set_sensitive(true)
|
109
|
+
item_edit.set_sensitive(true)
|
110
|
+
end
|
111
|
+
menu.popup(nil, nil, event.button, event.time)
|
112
|
+
elsif (@snmptrap_ref_view.selection.selected != nil) && (event.event_type == Gdk::Event::BUTTON2_PRESS)
|
113
|
+
edit_snmptrap_ref(@snmptrap_ref_view.selection.selected[0])
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
populate_ls()
|
118
|
+
vbox.add(scroll)
|
119
|
+
|
120
|
+
bbox = Gtk::HBox::new(FALSE, 10)
|
121
|
+
bbox.border_width=10
|
122
|
+
bbox.show
|
123
|
+
|
124
|
+
ok_button = Gtk::Button.new(Gtk::Stock::OK)
|
125
|
+
ok_button.show
|
126
|
+
ok_button.signal_connect("clicked") {
|
127
|
+
SnmpTrapRef::write_db_snmptrapref()
|
128
|
+
@window.destroy
|
129
|
+
}
|
130
|
+
|
131
|
+
cancel_button = Gtk::Button.new(Gtk::Stock::CANCEL)
|
132
|
+
cancel_button.show
|
133
|
+
cancel_button.signal_connect("clicked") {
|
134
|
+
$snmptrap_refs=@snmptraprefs_backup
|
135
|
+
@window.destroy
|
136
|
+
}
|
137
|
+
ok_button.set_flags(Gtk::Widget::CAN_DEFAULT)
|
138
|
+
bbox.pack_start(ok_button, TRUE, TRUE, 0)
|
139
|
+
cancel_button.set_flags(Gtk::Widget::CAN_DEFAULT)
|
140
|
+
bbox.pack_start(cancel_button, TRUE, TRUE, 0)
|
141
|
+
|
142
|
+
separator = Gtk::HSeparator::new()
|
143
|
+
separator.show
|
144
|
+
vbox_root.pack_start(separator, FALSE, TRUE, 0)
|
145
|
+
vbox_root.pack_start(bbox, FALSE, TRUE, 0)
|
146
|
+
|
147
|
+
@window.show
|
148
|
+
end
|
149
|
+
|
150
|
+
def add_gui_snmptrap_ref()
|
151
|
+
add_modify_snmptrap_ref(true)
|
152
|
+
end
|
153
|
+
|
154
|
+
def edit_snmptrap_ref(snmptrap_ref_name)
|
155
|
+
add_modify_snmptrap_ref(false, snmptrap_ref_name)
|
156
|
+
end
|
157
|
+
|
158
|
+
def add_modify_snmptrap_ref(add_boolean, snmptrap_ref_name=nil)
|
159
|
+
window=Gtk::Window.new
|
160
|
+
window.set_modal(true)
|
161
|
+
lbl="Edit Snmp Trap Ref"
|
162
|
+
if add_boolean
|
163
|
+
lbl="Add Snmp Trap Ref"
|
164
|
+
end
|
165
|
+
|
166
|
+
window.set_title(lbl)
|
167
|
+
window.set_size_request(460, 160)
|
168
|
+
|
169
|
+
window.signal_connect("key_press_event") {|w,e|
|
170
|
+
if e.keyval == Gdk::Keyval::GDK_Escape
|
171
|
+
window.destroy
|
172
|
+
end
|
173
|
+
}
|
174
|
+
|
175
|
+
frame = Gtk::Frame::new
|
176
|
+
frame.border_width=10
|
177
|
+
frame.show
|
178
|
+
vbox_root=Gtk::VBox::new
|
179
|
+
vbox_root.show
|
180
|
+
window.add vbox_root
|
181
|
+
vbox_root.add frame
|
182
|
+
|
183
|
+
vbox = Gtk::VBox.new
|
184
|
+
vbox.show
|
185
|
+
frame.add vbox
|
186
|
+
|
187
|
+
table = Gtk::Table.new(3,2,false)
|
188
|
+
table.show
|
189
|
+
|
190
|
+
label_name = Gtk::Label.new "Name"
|
191
|
+
label_name.show
|
192
|
+
if add_boolean
|
193
|
+
entry_name = Gtk::Entry.new
|
194
|
+
else
|
195
|
+
entry_name = Gtk::Entry.new
|
196
|
+
entry_name.set_editable false
|
197
|
+
entry_name.set_text(snmptrap_ref_name)
|
198
|
+
end
|
199
|
+
entry_name.show
|
200
|
+
|
201
|
+
table.attach(label_name,0,1,0,1)
|
202
|
+
table.attach(entry_name,1,2,0,1)
|
203
|
+
|
204
|
+
entry_description = Gtk::Entry.new
|
205
|
+
if !add_boolean
|
206
|
+
entry_description.set_text($snmptrap_refs[entry_name.text()].description) unless entry_name.text() == ""
|
207
|
+
end
|
208
|
+
entry_description.show
|
209
|
+
label_description = Gtk::Label.new "Description"
|
210
|
+
label_description.show
|
211
|
+
|
212
|
+
table.attach(label_description,0,1,1,2)
|
213
|
+
table.attach(entry_description,1,2,1,2)
|
214
|
+
|
215
|
+
entry_value = Gtk::Entry.new
|
216
|
+
if !add_boolean
|
217
|
+
entry_value.set_text($snmptrap_refs[entry_name.text()].value) unless entry_name.text() == ""
|
218
|
+
end
|
219
|
+
entry_value.show
|
220
|
+
label_value = Gtk::Label.new "Value"
|
221
|
+
label_value.show
|
222
|
+
|
223
|
+
table.attach(label_value,0,1,2,3)
|
224
|
+
table.attach(entry_value,1,2,2,3)
|
225
|
+
if !add_boolean
|
226
|
+
entry_name.signal_connect("changed") {|e|
|
227
|
+
if e.text() != ""
|
228
|
+
entry_description.set_text($snmptrap_refs[e.text()].description)
|
229
|
+
entry_value.set_text($snmptrap_refs[e.text()].value)
|
230
|
+
end
|
231
|
+
}
|
232
|
+
end
|
233
|
+
bbox =Gtk::HBox::new(FALSE, 10)
|
234
|
+
bbox.border_width=10
|
235
|
+
bbox.show
|
236
|
+
|
237
|
+
ok_button = Gtk::Button.new(Gtk::Stock::OK)
|
238
|
+
ok_button.show
|
239
|
+
ok_button.signal_connect("clicked") {
|
240
|
+
if add_boolean
|
241
|
+
#new entry!
|
242
|
+
if $snmptrap_refs[entry_name.text()] == nil
|
243
|
+
SnmpTrapRef::add_snmptrap_ref(entry_name.text(),entry_description.text(),entry_value.text())
|
244
|
+
iter = @snmptrap_ref_ls.append
|
245
|
+
iter[0] = entry_name.text()
|
246
|
+
iter[1] = entry_description.text()
|
247
|
+
window.destroy
|
248
|
+
else
|
249
|
+
dialog = Gtk::MessageDialog.new(window, Gtk::Dialog::DESTROY_WITH_PARENT,
|
250
|
+
Gtk::MessageDialog::ERROR,
|
251
|
+
Gtk::MessageDialog::BUTTONS_OK,
|
252
|
+
"Snmp Trap Ref '#{entry_name.text()}' already exists!")
|
253
|
+
dialog.run
|
254
|
+
dialog.destroy
|
255
|
+
end
|
256
|
+
else
|
257
|
+
#modify existing entry
|
258
|
+
$snmptrap_refs[entry_name.text()].description=entry_description.text()
|
259
|
+
$snmptrap_refs[entry_name.text()].set_value(entry_value.text())
|
260
|
+
@snmptrap_ref_ls.each do |model,path,iter|
|
261
|
+
if iter[0] == entry_name.text()
|
262
|
+
iter[1]=entry_description.text()
|
263
|
+
break
|
264
|
+
end
|
265
|
+
end
|
266
|
+
window.destroy
|
267
|
+
end
|
268
|
+
}
|
269
|
+
|
270
|
+
cancel_button = Gtk::Button.new(Gtk::Stock::CANCEL)
|
271
|
+
cancel_button.show
|
272
|
+
cancel_button.signal_connect("clicked") {
|
273
|
+
window.destroy
|
274
|
+
}
|
275
|
+
|
276
|
+
ok_button.set_flags(Gtk::Widget::CAN_DEFAULT)
|
277
|
+
bbox.pack_start(ok_button, TRUE, TRUE, 0)
|
278
|
+
cancel_button.set_flags(Gtk::Widget::CAN_DEFAULT)
|
279
|
+
bbox.pack_start(cancel_button, TRUE, TRUE, 0)
|
280
|
+
|
281
|
+
vbox.add(table)
|
282
|
+
separator = Gtk::HSeparator::new()
|
283
|
+
separator.show
|
284
|
+
vbox_root.pack_start(separator, FALSE, TRUE, 0)
|
285
|
+
vbox_root.pack_start(bbox, FALSE, TRUE, 0)
|
286
|
+
window.show
|
287
|
+
end
|
288
|
+
end
|