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.

Files changed (140) hide show
  1. data/LICENSE +459 -0
  2. data/README +29 -0
  3. data/bin/gnms +11 -0
  4. data/gnms.gemspec +70 -0
  5. data/lib/cmd_parse.rb +747 -0
  6. data/lib/config_global.rb +414 -0
  7. data/lib/contact.rb +171 -0
  8. data/lib/external/crypt/blowfish-tables.rb +190 -0
  9. data/lib/external/crypt/blowfish.rb +110 -0
  10. data/lib/external/crypt/cbc.rb +123 -0
  11. data/lib/external/crypt/stringxor.rb +27 -0
  12. data/lib/external/fog.rb +41 -0
  13. data/lib/external/jjmx.rb +45 -0
  14. data/lib/external/sms.rb +282 -0
  15. data/lib/external/xmpp4r-simple.rb +497 -0
  16. data/lib/format.rb +85 -0
  17. data/lib/gnms.rb +329 -0
  18. data/lib/gui/about_window.rb +177 -0
  19. data/lib/gui/adddelnode.rb +799 -0
  20. data/lib/gui/base_window.rb +789 -0
  21. data/lib/gui/canvas_map.rb +498 -0
  22. data/lib/gui/charts/gruff.rb +51 -0
  23. data/lib/gui/color_macro.rb +145 -0
  24. data/lib/gui/config_window.rb +2151 -0
  25. data/lib/gui/custom_plugin_window.rb +90 -0
  26. data/lib/gui/debug_window.rb +46 -0
  27. data/lib/gui/event_window.rb +469 -0
  28. data/lib/gui/find_node_window.rb +438 -0
  29. data/lib/gui/help_window.rb +47 -0
  30. data/lib/gui/ipcalculator.rb +147 -0
  31. data/lib/gui/jmx_ref_window.rb +309 -0
  32. data/lib/gui/link_view.rb +46 -0
  33. data/lib/gui/mib_browser.rb +585 -0
  34. data/lib/gui/node_host_property.rb +3712 -0
  35. data/lib/gui/node_host_view.rb +270 -0
  36. data/lib/gui/node_network_property.rb +1059 -0
  37. data/lib/gui/node_network_view.rb +186 -0
  38. data/lib/gui/node_view.rb +672 -0
  39. data/lib/gui/oid_ref_window.rb +288 -0
  40. data/lib/gui/snmptrap_ref_window.rb +288 -0
  41. data/lib/gui/sub/account_frame.rb +196 -0
  42. data/lib/gui/sub/contact_frame.rb +519 -0
  43. data/lib/gui/syslog_ref_window.rb +288 -0
  44. data/lib/gui/treenode_window.rb +320 -0
  45. data/lib/gui/update_window.rb +124 -0
  46. data/lib/gui/widgets.rb +169 -0
  47. data/lib/gui/wmi_ref_window.rb +286 -0
  48. data/lib/interface.rb +16 -0
  49. data/lib/ipcalc.rb +266 -0
  50. data/lib/link.rb +45 -0
  51. data/lib/main.rb +1091 -0
  52. data/lib/monitor/client/custom/custom_monitoring.rb +40 -0
  53. data/lib/monitor/client/jmx/jmx_attr_monitoring.rb +36 -0
  54. data/lib/monitor/client/jmx/jmx_monitoring.rb +83 -0
  55. data/lib/monitor/client/jmx/jmx_ref.rb +114 -0
  56. data/lib/monitor/client/snmp/mibs/SNMPv2-MIB.txt +854 -0
  57. data/lib/monitor/client/snmp/mibs/SNMPv2-SMI.txt +344 -0
  58. data/lib/monitor/client/snmp/oid_ref.rb +141 -0
  59. data/lib/monitor/client/snmp/snmp.rb +178 -0
  60. data/lib/monitor/client/snmp/snmp_monitoring.rb +58 -0
  61. data/lib/monitor/client/wmi/wmi.rb +139 -0
  62. data/lib/monitor/client/wmi/wmi_monitoring.rb +60 -0
  63. data/lib/monitor/client/wmi/wmi_ref.rb +141 -0
  64. data/lib/monitor/custom_plugin.rb +50 -0
  65. data/lib/monitor/server/msg_buffer.rb +39 -0
  66. data/lib/monitor/server/snmp/snmptrap_analyzer.rb +81 -0
  67. data/lib/monitor/server/snmp/snmptrap_capture.rb +26 -0
  68. data/lib/monitor/server/snmp/snmptrap_monitoring.rb +32 -0
  69. data/lib/monitor/server/snmp/snmptrap_ref.rb +135 -0
  70. data/lib/monitor/server/snmp/snmptrap_server.rb +50 -0
  71. data/lib/monitor/server/syslog/syslog_analyzer.rb +141 -0
  72. data/lib/monitor/server/syslog/syslog_capture.rb +28 -0
  73. data/lib/monitor/server/syslog/syslog_monitoring.rb +32 -0
  74. data/lib/monitor/server/syslog/syslog_ref.rb +136 -0
  75. data/lib/monitor/server/syslog/syslog_server.rb +43 -0
  76. data/lib/node.rb +1020 -0
  77. data/lib/node_db.rb +2668 -0
  78. data/lib/node_host.rb +215 -0
  79. data/lib/node_listener.rb +639 -0
  80. data/lib/node_network.rb +269 -0
  81. data/lib/node_property.rb +39 -0
  82. data/lib/notify/alarm.rb +247 -0
  83. data/lib/notify/irc_bot.rb +167 -0
  84. data/lib/notify/xmpp_bot.rb +107 -0
  85. data/lib/service.rb +36 -0
  86. data/lib/version.rb +8 -0
  87. data/pixmap/bg/map_bg.jpg +0 -0
  88. data/pixmap/bg/map_bg2.jpg +0 -0
  89. data/pixmap/logo.jpg +0 -0
  90. data/pixmap/logo_icon.png +0 -0
  91. data/pixmap/os/3com.png +0 -0
  92. data/pixmap/os/aix.gif +0 -0
  93. data/pixmap/os/amiga.png +0 -0
  94. data/pixmap/os/beos.png +0 -0
  95. data/pixmap/os/cisco.png +0 -0
  96. data/pixmap/os/freebsd.png +0 -0
  97. data/pixmap/os/hp.png +0 -0
  98. data/pixmap/os/hurd.gif +0 -0
  99. data/pixmap/os/irix.gif +0 -0
  100. data/pixmap/os/linux.png +0 -0
  101. data/pixmap/os/mac.png +0 -0
  102. data/pixmap/os/netbsd.gif +0 -0
  103. data/pixmap/os/netware.png +0 -0
  104. data/pixmap/os/openbsd.png +0 -0
  105. data/pixmap/os/os2warp.gif +0 -0
  106. data/pixmap/os/qnx.gif +0 -0
  107. data/pixmap/os/sco.gif +0 -0
  108. data/pixmap/os/sgi.xpm +111 -0
  109. data/pixmap/os/solaris.gif +0 -0
  110. data/pixmap/os/unix.gif +0 -0
  111. data/pixmap/os/unknown.png +0 -0
  112. data/pixmap/os/vms.xpm +345 -0
  113. data/pixmap/os/windows.png +0 -0
  114. data/pixmap/type/cloud.png +0 -0
  115. data/pixmap/type/device.png +0 -0
  116. data/pixmap/type/firewall.png +0 -0
  117. data/pixmap/type/gateway.png +0 -0
  118. data/pixmap/type/home.png +0 -0
  119. data/pixmap/type/host.png +0 -0
  120. data/pixmap/type/network.png +0 -0
  121. data/pixmap/type/printer.png +0 -0
  122. data/pixmap/type/router.png +0 -0
  123. data/pixmap/type/server.png +0 -0
  124. data/pixmap/type/switch.png +0 -0
  125. data/pixmap/type/vm.png +0 -0
  126. data/plugins/Defaultme.rb +7 -0
  127. data/plugins/DnsCheck.rb +46 -0
  128. data/plugins/FooMonitor.rb +26 -0
  129. data/plugins/HttpVirtualHostMonitor.rb +43 -0
  130. data/plugins/MysqlShowStatusMonitor.rb +64 -0
  131. data/plugins/PgsqlPercentConnectionMonitor.rb +72 -0
  132. data/plugins/SshCpuLoadMonitor.rb +85 -0
  133. data/plugins/SshDiskMonitor.rb +69 -0
  134. data/plugins/SshFgtAvExpiredMonitor.rb +75 -0
  135. data/plugins/SshPercentUsedRamMonitor.rb +74 -0
  136. data/plugins/TelnetCpuLoadMonitor.rb +69 -0
  137. data/plugins/example1.rb +15 -0
  138. data/plugins/example2.rb +7 -0
  139. data/sound/beep.wav +0 -0
  140. 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