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,46 @@
1
+ class LinkView
2
+
3
+ def initialize (map, lnk, status)
4
+ @visible=true
5
+ @link=lnk
6
+ @group = Goo::CanvasGroup.new($network[map].map_view,{:x => 0.0,:y => 0.0, :can_focus => true})
7
+ @group.lower(nil)
8
+ @color = $status_color[$status_value.index(status)]
9
+ display()
10
+ end
11
+
12
+ def display()
13
+ self.show()
14
+ @lign=Goo::CanvasPolyline.new(@group, false,
15
+ [[@link.node1.x+@link.node1.node_view.get_node_size()/2,@link.node1.y+@link.node1.node_view.get_node_size()/2],
16
+ [@link.node2.x+@link.node2.node_view.get_node_size()/2,@link.node2.y+@link.node2.node_view.get_node_size()/2]],
17
+ :stroke_color_rgba => @color,
18
+ :line_width => 2.0)
19
+ end
20
+
21
+ def show()
22
+ @visible=true
23
+ @group.visibility = Goo::CanvasItem::VISIBLE
24
+ end
25
+
26
+ def hide()
27
+ @visible=false
28
+ @group.visibility = Goo::CanvasItem::HIDDEN
29
+ end
30
+
31
+ def remove_link()
32
+ @group.remove_child(@lign)
33
+ end
34
+
35
+ def color(cl)
36
+ @color = cl
37
+ Gtk.thread_protect do
38
+ @lign.stroke_color_rgba = @color
39
+ end
40
+ end
41
+
42
+ def update_status(st)
43
+ color($status_color[$status_value.index(st)])
44
+ end
45
+
46
+ end #class
@@ -0,0 +1,585 @@
1
+ #
2
+ # mib browser window class
3
+ #
4
+ class MibBrowser
5
+
6
+ #######################################
7
+ #append a new node to a treestore
8
+ #######################################
9
+ def add_node_to_tree(tstore,parent,child,value,otype_str,des_str)
10
+
11
+ flag=false
12
+
13
+ tstore.each do |model, path, iter|
14
+
15
+ if iter[0]== parent ####check if the same node has been added
16
+ ##add new node
17
+ iter = model.get_iter(path)
18
+ node= tstore.append(iter)
19
+ node[0]=child
20
+ node[1]=value
21
+ node[2]=child+"("+value+")"
22
+ node[3]=otype_str
23
+ node[4]=des_str
24
+ flag=true
25
+ end
26
+ end
27
+ if !flag
28
+ node= tstore.append(nil)
29
+ node[0]="."
30
+ node[1]="."
31
+ node[2]="."
32
+ node[3]="unknown"
33
+ node[4]=""
34
+ node= tstore.append(node)
35
+ node[0]=parent
36
+ node[1]="1"
37
+ node[2]=parent+"(1)"
38
+ node[3]="unknown"
39
+ node[4]=""
40
+ node= tstore.append(node)
41
+ node[0]=child
42
+ node[1]=value
43
+ node[2]=child+"("+value+")"
44
+ node[3]=otype_str
45
+ node[4]=des_str
46
+ end
47
+ end
48
+
49
+ ###############################
50
+ #create and show the tree
51
+ ###############################
52
+ def create_tree(flag,file)
53
+ if flag
54
+ @treestore.clear
55
+ end
56
+
57
+
58
+ if !FileTest.exist?(file)
59
+ $log.error("File #{file} doesnt exist")
60
+ return
61
+ end
62
+
63
+ fic = File.new(file,'r')
64
+ lign=fic.gets().chomp();
65
+ while lign != nil
66
+
67
+ if lign.index("MACRO") != nil
68
+
69
+ while lign.index("END") == nil
70
+ if lign.index("BEGIN") != nil
71
+ while lign.index("END") == nil
72
+ lign=fic.gets()
73
+ end
74
+ end
75
+ lign=fic.gets()
76
+ end
77
+ end
78
+ ##get the import file and create tree for it
79
+ if lign.index("IMPORTS") != nil
80
+ #print "*******************************************"
81
+ while lign.index("FROM") == nil
82
+ lign=fic.gets()
83
+ end
84
+ $_ = lign
85
+ temp= $_.gsub(/\s+/," ")
86
+ temp=temp.gsub(/\sFROM\s/,"")
87
+ temp=temp.split(/\ /)
88
+ if temp[0] !=nil
89
+ p="#{GNMSLIB}"+'/monitor/client/snmp/mibs/'
90
+ fichier=p+temp[0]+".txt"
91
+ #print "temp=#{fichier}\n"
92
+ clear_tree=false
93
+ create_tree(clear_tree,fichier)
94
+ end
95
+
96
+
97
+
98
+ end
99
+ #The handling to RFC1155-SMI is different with other file
100
+ if file.index("RFC1155-SMI") !=nil
101
+ lign=lign.lstrip
102
+ end
103
+ if lign[0,1] >= 'a' && lign[0,1] <='z' && lign[0,1] != ' ' && lign[0,1] != '' && lign[0,1] != '\n' && lign[0,1] != '}' && lign[0,2] != '--' && lign.index("MACRO") == nil && lign.index("EXPORTS") == nil && lign.index("IMPORTS") == nil && lign.index("BEGIN") == nil && lign.index("END") == nil
104
+ tlign = lign.split(/ /)
105
+ #print tlign,"\n"
106
+ nom=tlign[0].chomp()
107
+ #print "nom=#{nom}\n"
108
+ object_type="unknown"
109
+ description_str=""
110
+
111
+
112
+
113
+ flag=false
114
+ while lign.index(" ::= {") == nil
115
+ lign=fic.gets()
116
+ if lign != nil
117
+ lign=lign.chomp
118
+ if flag
119
+ temp=lign.gsub(/\s+\"/,"")
120
+ temp=temp.gsub(/\.\"(.*)/,"")
121
+ temp=temp.gsub(/\s+/," ")
122
+ temp=temp.gsub(/::=(.*)/,"")
123
+ description_str=description_str+temp
124
+ end
125
+ if lign.index("SYNTAX") !=nil
126
+ lign.gsub(/SYNTAX\s*(\w+)/){|s|}
127
+ object_type=$1
128
+ if object_type == "SEQUENCE"
129
+ if lign.index("SEQUENCE OF") !=nil
130
+ lign.gsub(/SEQUENCE OF (\w+)/){|s|}
131
+ object_type="SEQUENCE OF "+$1
132
+ end
133
+ end
134
+ end
135
+ if lign.index("DESCRIPTION") !=nil
136
+ flag=true
137
+ end
138
+ end
139
+ end
140
+ $_ = lign
141
+ temp=$_.gsub(/.*\{ /,"")
142
+ temp=temp.gsub(/\}.*/,"")
143
+ older, oid = temp.split(/\ /)
144
+ #print "older= #{older},oid= #{oid}\n"
145
+
146
+ #consture the tree for "RFC1155-SMI"
147
+
148
+ if nom == "internet," && older =="iso"
149
+ if file.index("RFC1155-SMI") !=nil
150
+ nom="internet"
151
+ older1="dod"
152
+ oid1="6"
153
+ older2="org"
154
+ oid2="3"
155
+ older3="iso"
156
+ oid="1"
157
+ #oid3="1"
158
+ add_node_to_tree(@treestore,older3,older2,oid2,object_type,description_str)
159
+ add_node_to_tree(@treestore,older2,older1,oid1,object_type,description_str)
160
+ add_node_to_tree(@treestore,older1,nom,oid,object_type,description_str)
161
+
162
+ lign=fic.gets()
163
+ if lign != nil
164
+ lign = lign.chomp
165
+ end
166
+ next
167
+ end
168
+ end
169
+
170
+ add_node_to_tree(@treestore,older,nom,oid,object_type,description_str)
171
+ end #end if
172
+ lign=fic.gets()
173
+ if lign != nil
174
+ lign = lign.chomp
175
+ end
176
+ end # end while
177
+ fic.close()
178
+
179
+ end
180
+
181
+ ####################################################################
182
+ #show the main window of "mib browser" opinion in the menu "Tools".#
183
+ #Here I replace the old gtk function with gtk widgets. #
184
+ #Dylan,Yin May18th,2009 #
185
+ ####################################################################
186
+
187
+ def initialize()
188
+
189
+ @inthread=false
190
+ mibb = Gtk::Window.new
191
+ mibb.set_size_request(480,720)
192
+ mibb.set_title "MIB Browser"
193
+ mibb.resizable=true
194
+ mibb.window_position=Gtk::Window::POS_CENTER
195
+
196
+ frame = Gtk::Frame::new
197
+ frame.border_width=10
198
+ frame.show
199
+ mibb.add frame
200
+
201
+ icon_name="./pixmap/logo_icon.png"
202
+ if FileTest.exist?(icon_name)
203
+ Gtk::Window.set_default_icon(icon_name)
204
+ end
205
+ mibb.show
206
+
207
+ mibb.signal_connect("delete_event") {
208
+ if @inthread
209
+ true
210
+ else
211
+ false
212
+ end
213
+ }
214
+ mibb.signal_connect("destroy") {
215
+ mibb.destroy
216
+ }
217
+ mibb.signal_connect("key_press_event") {|w,e|
218
+ if !@inthread
219
+ if e.keyval == 65307 #Esc key press
220
+ mibb.destroy
221
+ end
222
+ end
223
+ }
224
+
225
+ vboxb = Gtk::VBox.new(false,5)
226
+ vboxb.show
227
+ frame.add vboxb
228
+ #vboxb.set_homogeneous(false)
229
+
230
+ label_node = Gtk::Label.new
231
+ label_node.set_alignment(0,0.5)
232
+ label_node.width_chars=11
233
+ label_node.set_markup("<b><big>MIB File</big></b>",false)
234
+ label_node.show
235
+ @file_box = Gtk::ComboBox.new
236
+ @file_box.set_size_request(350,30)
237
+ #@file_box.append_text("UCD-DEMO-MIB")
238
+ #@file_box.append_text("SNMPv2-SMI")
239
+ @file_box.append_text("SNMPv2-MIB")
240
+ #@file_box.append_text("RFC1213-MIB")
241
+ #@file_box.append_text("RFC-1215")
242
+ #@file_box.append_text("RFC1155-SMI")
243
+ @file_box.set_active(0)
244
+ @file_box.show
245
+ @file_box.signal_connect("changed") {
246
+ p="#{GNMSLIB}"+'/monitor/client/snmp/mibs/'
247
+ fichier=p+@file_box.active_text+".txt"
248
+ clear_tree=true
249
+ create_tree(clear_tree,fichier)
250
+ }
251
+
252
+
253
+ hhboxL = Gtk::HBox.new(false,0)
254
+ hhboxL.show
255
+ hhboxL.pack_start_defaults(label_node)
256
+ hhboxL.pack_start_defaults(@file_box)
257
+
258
+ #vboxb.pack_start_defaults(hhboxL)
259
+ vboxb.add hhboxL
260
+
261
+ hhbox = Gtk::HBox.new
262
+ hhbox.show
263
+ vboxb.add hhbox
264
+
265
+ hbox1 = Gtk::HBox.new
266
+ hbox1.show
267
+
268
+
269
+ ###################
270
+ #new added--by ydh#
271
+ ###################
272
+ @treestore = Gtk::TreeStore.new(String,String,String,String,String)
273
+
274
+
275
+ @ctree = Gtk::TreeView.new(@treestore)
276
+ @ctree.selection.mode = Gtk::SELECTION_NONE
277
+ @ctree.enable_search=true
278
+ @ctree.enable_tree_lines=true
279
+
280
+ # Create a renderer
281
+ renderer = Gtk::CellRendererText.new
282
+
283
+ # Add column using our renderer
284
+ col = Gtk::TreeViewColumn.new("Label", renderer, :text => 2)
285
+ @ctree.append_column(col)
286
+ @ctree.headers_visible=false
287
+ @ctree.show
288
+
289
+ ###################
290
+ hbox1.add @ctree
291
+
292
+ scrolled_mibb = Gtk::ScrolledWindow.new(nil, nil)
293
+ scrolled_mibb.border_width=0
294
+ scrolled_mibb.set_policy(Gtk::POLICY_AUTOMATIC,Gtk::POLICY_AUTOMATIC)
295
+ scrolled_mibb.set_size_request(-1,270)
296
+ hhbox.pack_start_defaults(scrolled_mibb)
297
+
298
+ scrolled_mibb.add_with_viewport(hbox1)
299
+ scrolled_mibb.show
300
+
301
+ ##############################
302
+ #handle the selected tree node
303
+ ##############################
304
+ selection=@ctree.selection
305
+ selection.set_mode(Gtk::SELECTION_SINGLE)
306
+ selection.set_select_function do |selection, model, path, currently_selected|
307
+
308
+ label=""
309
+ oid=""
310
+ object_type=""
311
+ description_str=""
312
+ #handle the leaf node
313
+ iter = model.get_iter(path)
314
+ if iter != nil
315
+ label=iter[0]
316
+ oid=iter[1]
317
+ object_type=iter[3]
318
+ description_str=iter[4]
319
+ end
320
+ #loop to get the oid and label
321
+ while path.up!
322
+ iter = model.get_iter(path)
323
+ if iter != nil
324
+ if iter[0] == "."
325
+ #label="."+label
326
+ #oid="."+oid
327
+ break
328
+ end
329
+ label=iter[0]+"."+label
330
+ oid=iter[1]+"."+oid
331
+ else
332
+ break
333
+ end
334
+
335
+ end
336
+
337
+ if label != nil && oid != nil
338
+ @label_entry.text=label
339
+ @oid_entry.text=oid
340
+ @objecttype_entry.text=object_type
341
+ @description_entry.text=description_str
342
+
343
+ end
344
+ # allow selection state to change
345
+ true
346
+ end
347
+
348
+ ##create the first tree
349
+ p="#{GNMSLIB}"+'/monitor/client/snmp/mibs/'
350
+ fichier=p+@file_box.active_text+".txt"
351
+
352
+ clear_tree=true
353
+ create_tree(clear_tree,fichier)
354
+ ####################################
355
+ #add labels and entries
356
+ ####################################
357
+
358
+ objecttype_label = Gtk::Label.new("Object Type")
359
+ objecttype_label.set_alignment(0,0.5)
360
+ objecttype_label.width_chars=11
361
+ objecttype_label.show
362
+ @objecttype_entry = Gtk::Entry.new
363
+ @objecttype_entry.set_size_request(380,30)
364
+ @objecttype_entry.editable=false
365
+ @objecttype_entry.show
366
+
367
+ hhbox2 = Gtk::HBox.new(false,0)
368
+ hhbox2.show
369
+ hhbox2.pack_start_defaults(objecttype_label)
370
+ hhbox2.pack_start_defaults(@objecttype_entry)
371
+
372
+ oid_label = Gtk::Label.new("OID")
373
+ oid_label.set_alignment(0,0.5)
374
+ oid_label.width_chars=11
375
+ oid_label.show
376
+ @oid_entry = Gtk::Entry.new
377
+ @oid_entry.set_size_request(380,30)
378
+ @oid_entry.editable=false
379
+ @oid_entry.show
380
+
381
+ hhbox3 = Gtk::HBox.new(false,0)
382
+ hhbox3.show
383
+ hhbox3.pack_start_defaults(oid_label)
384
+ hhbox3.pack_start_defaults(@oid_entry)
385
+
386
+
387
+ label_label = Gtk::Label.new("Label")
388
+ label_label.set_alignment(0,0.5)
389
+ label_label.width_chars=11
390
+ label_label.show
391
+ @label_entry = Gtk::Entry.new
392
+ @label_entry.set_size_request(380,30)
393
+ @label_entry.editable=false
394
+ @label_entry.show
395
+
396
+ hhbox4 = Gtk::HBox.new(false,0)
397
+ hhbox4.show
398
+ hhbox4.pack_start_defaults(label_label)
399
+ hhbox4.pack_start_defaults(@label_entry)
400
+
401
+
402
+ description_label = Gtk::Label.new("Description")
403
+ description_label.set_alignment(0,0.5)
404
+ description_label.width_chars=11
405
+ description_label.show
406
+ @description_entry = Gtk::Entry.new
407
+ @description_entry.set_size_request(380,30)
408
+ @description_entry.editable=false
409
+ @description_entry.show
410
+
411
+ hhbox5 = Gtk::HBox.new(false,0)
412
+ hhbox5.show
413
+ hhbox5.pack_start_defaults(description_label)
414
+ hhbox5.pack_start_defaults(@description_entry)
415
+
416
+ host_label = Gtk::Label.new("Host")
417
+ host_label.set_alignment(0,0.5)
418
+ host_label.width_chars=11
419
+ host_label.show
420
+ @host_box = Gtk::ComboBox.new
421
+ @host_box.set_size_request(380,30)
422
+ $host.each_key {|ip|
423
+ @host_box.append_text(ip)
424
+ }
425
+ @host_box.set_active(0)
426
+ @host_box.show
427
+
428
+ hhbox6 = Gtk::HBox.new(false,0)
429
+ hhbox6.show
430
+ hhbox6.pack_start_defaults(host_label)
431
+ hhbox6.pack_start_defaults(@host_box)
432
+
433
+ #vboxb.pack_start_defaults(hhbox2)
434
+ #vboxb.pack_start_defaults(hhbox3)
435
+ #vboxb.pack_start_defaults(hhbox4)
436
+ #vboxb.pack_start_defaults(hhbox5)
437
+ #vboxb.pack_start_defaults(hhbox6)
438
+
439
+ #############################
440
+ #add "Get" and "Set" buttons
441
+ #############################
442
+
443
+ hhbox7=Gtk::HButtonBox.new
444
+ hhbox7.show
445
+ hhbox7.set_layout_style(Gtk::ButtonBox::END)
446
+
447
+ button_get=Gtk::Button.new("Get")
448
+ button_put=Gtk::Button.new("Set")
449
+ ############################
450
+ #snmp get request
451
+ ############################
452
+ button_get.signal_connect("clicked") {
453
+
454
+ if @oid_entry.text != ""
455
+ if (@objecttype_entry.text.index("SEQUENCE OF") == nil) && (@objecttype_entry.text != "unknown")
456
+ $log.debug("get oid_entry = #{@objecttype_entry.text}")
457
+ temp=@oid_entry.text+".0"
458
+
459
+ Thread.start {
460
+ @inthread=true
461
+ button_get.set_sensitive(false)
462
+ button_put.set_sensitive(false)
463
+ puts "h1"
464
+ response = get_snmp_OID($host[@host_box.active_text], temp)
465
+ puts "end h1"
466
+ @text_buffer.text=response.to_s unless !@text_buffer
467
+ button_get.set_sensitive(true)
468
+ button_put.set_sensitive(true)
469
+ @inthread=false
470
+ }
471
+ else
472
+ temp=@oid_entry.text
473
+ Thread.start {
474
+ @inthread=true
475
+ button_get.set_sensitive(false)
476
+ button_put.set_sensitive(false)
477
+ response = walk_snmp_OID($host[@host_box.active_text], temp)
478
+ if response != "Error"
479
+ @text_buffer.text=response.join("\n").ascii unless !@text_buffer
480
+ else
481
+ @text_buffer.text=response
482
+ end
483
+ button_get.set_sensitive(true)
484
+ button_put.set_sensitive(true)
485
+ @inthread=false
486
+ }
487
+ end
488
+ end
489
+ }
490
+ button_get.show
491
+ hhbox7.add button_get
492
+ ############################
493
+ #snmp set request
494
+ ############################
495
+ button_put.signal_connect("clicked") {
496
+ if (@text_buffer.text !=nil) && (@oid_entry.text != "")
497
+ set_value=@text_buffer.text
498
+ if @objecttype_entry.text.index("SEQUENCE OF") ==nil && @objecttype_entry.text!= "unknown"
499
+ #print "oid_entry=#{@objecttype_entry.text}\n"
500
+ temp=@oid_entry.text+".0"
501
+ else
502
+ temp=@oid_entry.text
503
+ end
504
+ #print "set_value=#{set_value}\n"
505
+ Thread.start {
506
+ @inthread=true
507
+ button_get.set_sensitive(false)
508
+ button_put.set_sensitive(false)
509
+ result=set_snmp($host[@host_box.active_text], temp, set_value)
510
+ if result == "Error"
511
+ @text_buffer.text=result
512
+ end
513
+ button_get.set_sensitive(true)
514
+ button_put.set_sensitive(true)
515
+ @inthread=false
516
+ }
517
+ end
518
+ }
519
+ button_put.show
520
+ hhbox7.add button_put
521
+
522
+ value_label = Gtk::Label.new("Value")
523
+ value_label.width_chars=15
524
+ value_label.show
525
+ value_label.set_alignment(0,0.5)
526
+
527
+ hhbox8 = Gtk::HBox.new(false,10)
528
+ hhbox8.show
529
+ hhbox8.add value_label
530
+
531
+
532
+
533
+ ##############################
534
+ #add "value" text view
535
+ ##############################
536
+ @text_buffer=Gtk::TextBuffer.new
537
+ @text_value = Gtk::TextView.new(@text_buffer)
538
+ @text_value.set_size_request(-1,100)
539
+ @text_value.show
540
+
541
+ scrolled_window = Gtk::ScrolledWindow.new(nil, nil)
542
+ scrolled_window.border_width=8
543
+ scrolled_window.set_policy(Gtk::POLICY_AUTOMATIC,Gtk::POLICY_AUTOMATIC)
544
+
545
+ scrolled_window.show
546
+ scrolled_window.add(@text_value)
547
+
548
+
549
+ ###################################
550
+ #add the "Clear" and "Close" button
551
+ ###################################
552
+
553
+ hhbox9=Gtk::HButtonBox.new
554
+ hhbox9.show
555
+
556
+ button_clear=Gtk::Button.new(Gtk::Stock::CLEAR)
557
+ button_clear.signal_connect("clicked") {
558
+ @text_buffer.text=""
559
+ }
560
+ button_clear.show
561
+ hhbox9.add button_clear
562
+ button_close=Gtk::Button.new(Gtk::Stock::CLOSE)
563
+ button_close.signal_connect("clicked") {
564
+ if !@inthread
565
+ @treestore=nil
566
+ mibb.destroy
567
+ end
568
+ }
569
+ button_close.show
570
+ hhbox9.add button_close
571
+
572
+
573
+ vboxb.add hhbox2
574
+ vboxb.add hhbox3
575
+ vboxb.add hhbox4
576
+ vboxb.add hhbox5
577
+ vboxb.add hhbox6
578
+ vboxb.add hhbox7
579
+ vboxb.add hhbox8
580
+
581
+ vboxb.pack_start(scrolled_window, true, true, 0)
582
+ vboxb.add hhbox9
583
+
584
+ end
585
+ end