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,28 @@
1
+ require "#{GNMSLIB}"+'/monitor/server/syslog/syslog_server'
2
+ require "#{GNMSLIB}"+'/monitor/server/msg_buffer'
3
+ require "#{GNMSLIB}"+'/monitor/server/syslog/syslog_analyzer'
4
+
5
+ class SyslogCapture
6
+ def initialize()
7
+ if $config.syslog_mon
8
+ buff=MsgBuffer.new(1)
9
+ begin
10
+ @input = SyslogServer.new(buff)
11
+ @output = SyslogAnalyzer.new(buff)
12
+ rescue Errno::EADDRINUSE => msg
13
+ rescue Errno::EACCES => msg
14
+ $log.error("Syslog Server: not started")
15
+ end
16
+ end
17
+ end
18
+
19
+ def stop()
20
+ if defined?(@input) && (@input != nil)
21
+ @input.close_socket()
22
+ Thread.kill(@input.get_thread())
23
+ $log.debug("end of SyslogServer thread")
24
+ #output thread will be done auto
25
+ end
26
+ end
27
+
28
+ end
@@ -0,0 +1,32 @@
1
+ class SyslogMonitoring
2
+
3
+ def initialize (st, syslog_ref, sev)
4
+ @state=st
5
+ @syslog_ref=syslog_ref
6
+ #index of $status, 0 is auto map syslog severity
7
+ @severity=sev
8
+ end
9
+
10
+ def get_syslog_ref()
11
+ return @syslog_ref
12
+ end
13
+
14
+ def get_state()
15
+ return @state
16
+ end
17
+
18
+ def active?()
19
+ return @state==1
20
+ end
21
+
22
+ def raw_severity()
23
+ return @severity
24
+ end
25
+
26
+ def severity()
27
+ if @severity > 0
28
+ return $status[@severity-1]
29
+ end
30
+ return nil
31
+ end
32
+ end #class
@@ -0,0 +1,136 @@
1
+ class SyslogRef
2
+ attr_accessor :name, :description
3
+
4
+ TABLENAME='syslog_ref'
5
+ #############global management###############
6
+ #
7
+ # add an syslog_ref
8
+ # arg n for uniq name, descr the description and calc the calcul to do
9
+ # return true if deleted otherwise false
10
+ #
11
+ def SyslogRef::add_syslog_ref(n, descr, calc)
12
+ if $syslog_refs[n] == nil
13
+ $syslog_refs[n] = SyslogRef.new(n, descr, calc)
14
+ return true
15
+ end
16
+ return false
17
+ end
18
+
19
+ #
20
+ # delete an syslog_ref
21
+ # return true is entry delete otherwise false
22
+ #
23
+ def SyslogRef::del_syslog_ref(n)
24
+ if !$syslog_refs[n].used?()
25
+ $syslog_refs.delete(n)
26
+ return true
27
+ end
28
+ return false
29
+ end
30
+
31
+ def SyslogRef::write_db_syslogref()
32
+ if defined?($db) && ($db !=nil)
33
+ $db.transaction
34
+ db_delete_all_prp(TABLENAME).execute()
35
+ stmt=db_insert_ref_prp(TABLENAME)
36
+ $syslog_refs.each_value do |syslog_ref|
37
+ stmt.execute(syslog_ref.name, syslog_ref.description, syslog_ref.value.source)
38
+ end
39
+ $db.commit
40
+ end
41
+ end
42
+
43
+ def SyslogRef::write_syslogref_conf_file(fic_name=SYSLOGREFS_CONF_FILE)
44
+ field_separator='~'
45
+ fic=Tempfile.new(File.basename(fic_name))
46
+ $syslog_refs.each_value do |syslog_ref|
47
+ fic.puts "#{syslog_ref.name}#{field_separator}#{syslog_ref.description}#{field_separator}#{syslog_ref.value.source}"
48
+ end
49
+ fic.close()
50
+ if !FileUtils.move(fic.path, fic_name)
51
+ $log.error("Can not save syslog ref conf file")
52
+ end
53
+ end
54
+
55
+ def SyslogRef::read_db_syslogref()
56
+ if defined?($db) && ($db !=nil)
57
+ db_select_all_prp(TABLENAME).execute do |rs|
58
+ rs.each do |name, description, value|
59
+ add_syslog_ref(name,description,value)
60
+ end
61
+ end
62
+ end
63
+ end
64
+
65
+ def SyslogRef::read_syslogref_conf_file(fic=SYSLOGREFS_CONF_FILE)
66
+ field_separator='~'
67
+ if FileTest.exist?(fic)
68
+ fic = File.new(fic,'r')
69
+ lign=fic.gets
70
+ while lign
71
+ lign_t = lign.split(field_separator)
72
+ if lign_t.size() == 3
73
+ add_syslog_ref(lign_t[0],lign_t[1],lign_t[2].chomp())
74
+ end
75
+ lign=fic.gets
76
+ end
77
+ fic.close
78
+ else
79
+ puts "syslogrefs conf file not found"
80
+ end
81
+ end
82
+
83
+ #
84
+ # return a table of all syslogref name
85
+ #
86
+ def SyslogRef::get_syslog_refs_name()
87
+ name_t=[]
88
+ $syslog_refs.each_key {|name|
89
+ name_t.push name
90
+ }
91
+ return name_t
92
+ end
93
+
94
+ def SyslogRef::syslog_ref_exist?(name)
95
+ return $syslog_refs[name] != nil
96
+ end
97
+ #############end global management###############
98
+
99
+ def initialize (n, descr, re)
100
+ #name is the identifier, it must be uniq
101
+ @name=n
102
+ @description=descr
103
+ #here value is a regexp
104
+ @value=Regexp.new(re)
105
+ @nb_use=0
106
+ end
107
+
108
+ def add_use()
109
+ @nb_use+=1
110
+ end
111
+
112
+ def del_use()
113
+ @nb_use-=1
114
+ end
115
+
116
+ def used?()
117
+ return @nb_use>0
118
+ end
119
+
120
+ def to_str()
121
+ print "SyslogRef: ", @name, " ", @description, " ", @value
122
+ end
123
+
124
+ def get_regex()
125
+ return @value
126
+ end
127
+
128
+ def value()
129
+ return @value
130
+ end
131
+
132
+ def set_value(re)
133
+ @value=Regexp.new(re)
134
+ end
135
+
136
+ end #class
@@ -0,0 +1,43 @@
1
+ class SyslogServer
2
+
3
+ def initialize(buff)
4
+ require 'socket'
5
+ @port = $config.syslog_port
6
+ @buff=buff
7
+ Socket.do_not_reverse_lookup = true
8
+ @server = UDPSocket.open
9
+ begin
10
+ $log.info("Syslog Server: listening on udp port #{@port}")
11
+ @server.bind("", @port)
12
+ rescue Errno::EADDRINUSE => msg
13
+ $log.fatal("Syslog Server: #{msg}, socket in use")
14
+ raise Errno::EADDRINUSE
15
+ rescue Errno::EACCES => msg
16
+ $log.fatal("Syslog Server: #{msg}, need root perms")
17
+ raise Errno::EACCES
18
+ rescue Exception => msg
19
+ raise msg
20
+ end
21
+
22
+ @listener = Thread.start do
23
+ while $config.syslog_mon
24
+ begin
25
+ msg = @server.recvfrom(1024)
26
+ #extract peer info: domain, port, name, and IP address
27
+ @buff.put Time.new.to_s()+'|'+"#{msg[1][3]}#{msg[0]}"
28
+ Thread.pass if @buff.full?
29
+ rescue Exception => msg
30
+ #catch when stream is closed by close() method
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ def close_socket()
37
+ @server.close unless @server == nil
38
+ end
39
+
40
+ def get_thread
41
+ @listener
42
+ end
43
+ end
@@ -0,0 +1,1020 @@
1
+ require "#{GNMSLIB}"+'/gui/color_macro'
2
+ require "#{GNMSLIB}"+'/service'
3
+ require "#{GNMSLIB}"+'/interface'
4
+
5
+ class Node
6
+
7
+ NONAME_PROPERTY="(noname)"
8
+ NOARP_PROPERTY="(noarp)"
9
+ NODESCR_PROPERTY="(nodesc)"
10
+
11
+ #accessor for inner field
12
+ attr_accessor :uuid, :ip, :netmask, :ipv6, :netmask6, :service, :custom_monitoring, :snmp_monitoring, :wmi_monitoring, :snmptrap_monitoring, :syslog_monitoring, :jmx_monitoring, :http_monitoring, :status, :interface, :x, :y, :icon, :description, :snmp_version, :snmp_port, :snmp_timeout, :snmp_retry, :type, :os, :node_view, :map
13
+ attr_reader :avail_sev, :snmp_sev, :custom_sev, :trap_sev, :service_sev, :wmi_sev, :syslog_sev, :jmx_sev
14
+ #accessor for alert specific reaction
15
+ attr_accessor :mail_by_level, :sound_file_path_by_level, :sms_num_by_level, :script_name_by_level, :im_dest_by_level
16
+ attr_accessor :alert_type_by_level, :inherit_from_global
17
+
18
+ def set_inherit_conf(bool)
19
+ @inherit_from_global=bool
20
+ end
21
+
22
+ #
23
+ # each time global conf is changed we have to modify the root node config
24
+ #
25
+ def set_snmp_conf(rcommunity, wcommunity, version, port, timeout, snmpretry, saveindb_flag=0)
26
+ if account_exist_nr?("snmp")
27
+ self.set_account_login("snmp", rcommunity)
28
+ self.set_account_password("snmp", wcommunity)
29
+ end
30
+ @snmp_version=version
31
+ @snmp_port=port
32
+ @snmp_timeout=timeout
33
+ @snmp_retry=snmpretry
34
+
35
+ if saveindb_flag
36
+ nodeid=db_get_node_id(@ip,NETWORKNODE)
37
+ db_set_snmp_parameter(nodeid, version, port, timeout, snmpretry)
38
+ end
39
+ end
40
+ #
41
+ # enable type of alert according to a level
42
+ #
43
+ def enable_alert_type(type, level)
44
+ ind=$talert_type.index(type)
45
+ if ind > -1
46
+ set_alert_type(type, level, true)
47
+ return 0
48
+ end
49
+ return 1
50
+ end
51
+
52
+ #
53
+ # disable type of alert according to a level
54
+ #
55
+ def disable_alert_type(type, level)
56
+ ind=$talert_type.index(type)
57
+ if ind > -1
58
+ set_alert_type(type, level, false)
59
+ return 0
60
+ end
61
+ return 1
62
+
63
+ end
64
+
65
+ #
66
+ # return either the overwritten snmp port or the inherit snmp port from network ancestor
67
+ #
68
+ def get_default_inherit_snmp_port()
69
+ if (self.class == Network) && (@snmp_port != nil)
70
+ return @snmp_port
71
+ else
72
+ if @map == ROOTMAPADDR
73
+ return $config.snmp_port
74
+ else
75
+ return $network[@map].get_default_inherit_snmp_port()
76
+ end
77
+ end
78
+ end
79
+
80
+ #
81
+ # return either the overwritten snmp version or the default general value
82
+ #
83
+ def get_default_inherit_snmp_version()
84
+ if (self.class == Network) && (@snmp_version != nil)
85
+ return @snmp_version
86
+ else
87
+ if @map == ROOTMAPADDR
88
+ return $config.snmp_version
89
+ else
90
+ return $network[@map].get_default_inherit_snmp_version()
91
+ end
92
+ end
93
+ end
94
+
95
+ #
96
+ # return either the overwritten snmp timeout or the inherit snmp timeout from network ancestor
97
+ #
98
+ def get_default_inherit_snmp_timeout()
99
+ if (self.class == Network) && (@snmp_timeout != nil)
100
+ return @snmp_timeout
101
+ else
102
+ if @map == ROOTMAPADDR
103
+ return $config.snmp_timeout
104
+ else
105
+ return $network[@map].get_default_inherit_snmp_timeout()
106
+ end
107
+ end
108
+ end
109
+
110
+ #
111
+ # return either the overwritten snmp retry or the inherit snmp retry from network ancestor
112
+ #
113
+ def get_default_inherit_snmp_retry()
114
+ if (self.class == Network) && (@snmp_retry != nil)
115
+ return @snmp_retry
116
+ else
117
+ if @map == ROOTMAPADDR
118
+ return $config.snmp_retry
119
+ else
120
+ return $network[@map].get_default_inherit_snmp_retry()
121
+ end
122
+ end
123
+ end
124
+
125
+
126
+ def initialize (ip="", mask=24, ipv6="", mask6=64, mp=nil, serv=nil, s=UNKNOWN, xd=0 ,yd=0, i="", d=NODESCR_PROPERTY, t=nil, o="unknown", uuid=create_uuid())
127
+
128
+ @uuid = uuid
129
+ @ip=ip
130
+ if isInteger(mask)
131
+ @netmask = mask
132
+ elsif isValidIPv4(mask)
133
+ @netmask = IPCalc.netmask_to_bits(mask)
134
+ end
135
+ @ipv6=ipv6
136
+ @netmask6=mask6
137
+ if serv
138
+ #serv must be a hash of service class
139
+ @service=serv.dup
140
+ else
141
+ @service=Hash.new
142
+ end
143
+
144
+ @snmp_monitoring=Hash.new
145
+ @wmi_monitoring=Hash.new
146
+ @custom_monitoring=Hash.new
147
+ @syslog_monitoring=Hash.new
148
+ @snmptrap_monitoring=Hash.new
149
+ @jmx_monitoring=Hash.new
150
+ @http_monitoring=Hash.new
151
+
152
+ @status=s
153
+ @avail_sev=UNKNOWN
154
+ @snmp_sev=UNMANAGED
155
+ @custom_sev=UNMANAGED
156
+ @trap_sev=UNMANAGED
157
+ @service_sev=UNMANAGED
158
+ @wmi_sev=UNMANAGED
159
+ @syslog_sev=UNMANAGED
160
+ @jmx_sev=UNMANAGED
161
+
162
+ @account=Hash.new
163
+ @group=Array.new
164
+ @interface=Hash.new
165
+
166
+ @x=xd
167
+ @y=yd
168
+ @links=[]
169
+ @type=t
170
+
171
+ if i == "" || i == nil
172
+ if $config.host_icon_view=="os"
173
+ @icon = "os/unknown.png"
174
+ else
175
+ #type
176
+ if (@type != nil) && (@type != "")
177
+ @icon = "#{find_extension("type/#{@type}")}"
178
+ end
179
+ end
180
+ else
181
+ @icon=i
182
+ end
183
+
184
+ if d == "" || d == nil
185
+ @description=""
186
+ else
187
+ @description=d
188
+ end
189
+
190
+ @os=o
191
+ #ip and map could not be the same
192
+ if mp != ip
193
+ if mp == nil && ip != ROOTMAPADDR
194
+ #we want the node on the root network
195
+ @map=ROOTMAPADDR
196
+ else
197
+ if ip == ROOTMAPADDR
198
+ @map=nil
199
+ @snmp_version=$config.snmp_version
200
+ @snmp_port=$config.snmp_port
201
+ @snmp_timeout=$config.snmp_timeout
202
+ @snmp_retry=$config.snmp_retry
203
+ else
204
+ @map=mp
205
+ if $network[mp]
206
+ @snmp_version=$network[mp].snmp_version
207
+ @snmp_port=$network[mp].snmp_port
208
+ @snmp_timeout=$network[mp].snmp_timeout
209
+ @snmp_retry=$network[mp].snmp_retry
210
+ end
211
+ end
212
+ end
213
+ else
214
+ @map=ROOTMAPADDR
215
+ end
216
+
217
+ @mail_by_level = Hash.new
218
+ $config.init_hash_conf_by_level(@mail_by_level)
219
+ @sound_file_path_by_level = Hash.new
220
+ $config.init_hash_conf_by_level(@sound_file_path_by_level)
221
+ @sms_num_by_level = Hash.new
222
+ $config.init_hash_conf_by_level(@sms_num_by_level)
223
+ @im_dest_by_level = Hash.new
224
+ $config.init_hash_conf_by_level(@im_dest_by_level)
225
+ @script_name_by_level = Hash.new
226
+ $config.init_hash_conf_by_level(@script_name_by_level)
227
+
228
+ @inherit_from_global=true
229
+ @alert_type_by_level = Hash.new
230
+ init_level_alert_type(@alert_type_by_level)
231
+
232
+ end
233
+ #
234
+ # remove all links between connected nodes
235
+ #
236
+ def del_all_links()
237
+ if nb_links() > 0
238
+ nb_link=nb_links()
239
+ cpt=0
240
+ links_t=@links.dup
241
+ while cpt < nb_link do
242
+ lnk=links_t[cpt]
243
+ lnk.node1.del_link(lnk)
244
+ lnk.node2.del_link(lnk)
245
+ $links.delete(lnk)
246
+ lnk.remove_link()
247
+ cpt+=1
248
+ end
249
+ @links.clear
250
+ end
251
+ end
252
+
253
+ #
254
+ # return links hash
255
+ #
256
+ def get_links()
257
+ return @links
258
+ end
259
+
260
+ #
261
+ # return value corresponding to the links between other nodes
262
+ #
263
+ def nb_links()
264
+ return @links.size
265
+ end
266
+
267
+ #
268
+ # check if it exists a link between node pass in 1st argument
269
+ # return 1 if true or 0 if false
270
+ #
271
+ def linked(node)
272
+ @links.each {|lnk|
273
+ if lnk.point?(node)
274
+ return 1
275
+ end
276
+ }
277
+ return 0
278
+ end
279
+
280
+ #
281
+ # add a link to links hash
282
+ #
283
+ def add_link(lnk)
284
+ if @links.index(lnk) == nil
285
+ @links.push(lnk)
286
+ end
287
+ end
288
+
289
+ #
290
+ # del link from links hash between node pass as 1st argument
291
+ #
292
+ def del_node_link(node)
293
+ @links.each {|lnk|
294
+ if lnk.point?(node)
295
+ lnk.node1.del_link(lnk)
296
+ lnk.node2.del_link(lnk)
297
+ $links.delete(lnk)
298
+ lnk.remove_link()
299
+ return 1
300
+ end
301
+ }
302
+ return 0
303
+ end
304
+
305
+ #
306
+ # del link from links hash pass in 1st argument
307
+ #
308
+ def del_link(lnk)
309
+ @links.delete(lnk)
310
+ end
311
+
312
+ #
313
+ # update status based on the avail, snmp, custom severities
314
+ #
315
+ def refresh_status()
316
+ $log.debug("refresh_status: #{ip} status=#{@status}")
317
+ #if all sev are identical, set general sev as sev
318
+ if @avail_sev == @snmp_sev and @snmp_sev == @custom_sev and @custom_sev == @trap_sev and @trap_sev == @service_sev and @service_sev == @wmi_sev and @wmi_sev == @syslog_sev and @syslog_sev == @jmx_sev
319
+ change_status(@snmp_sev)
320
+ if @snmp_sev == UNMANAGED and self.node_view
321
+ self.node_view.reset_notification()
322
+ self.node_view.update_notification_icon()
323
+ end
324
+ return
325
+ end
326
+
327
+ #reinit specific sev if needed
328
+ if !$config.port_mon and (@service_sev != UNMANAGED)
329
+ @service_sev = UNMANAGED
330
+ end
331
+ if !$config.snmp_mon and (@snmp_sev != UNMANAGED)
332
+ @snmp_sev = UNMANAGED
333
+ end
334
+ if !$config.custom_mon and (@custom_sev != UNMANAGED)
335
+ @custom_sev = UNMANAGED
336
+ end
337
+ if !$config.snmptrap_mon and (@trap_sev != UNMANAGED)
338
+ @trap_sev = UNMANAGED
339
+ end
340
+ if !$config.syslog_mon and (@syslog_sev != UNMANAGED)
341
+ @syslog_sev = UNMANAGED
342
+ end
343
+ if !$config.wmi_mon and (@wmi_sev != UNMANAGED)
344
+ @wmi_sev = UNMANAGED
345
+ end
346
+ if !$config.jmx_mon and (@jmx_sev != UNMANAGED)
347
+ @jmx_sev = UNMANAGED
348
+ end
349
+
350
+ if $config.port_mon and (@service_sev == UNMANAGED)
351
+ @service_sev = UNKNOWN
352
+ end
353
+ if $config.snmp_mon and (@snmp_sev == UNMANAGED)
354
+ @snmp_sev = UNKNOWN
355
+ end
356
+ if $config.custom_mon and (@custom_sev == UNMANAGED)
357
+ @custom_sev = UNKNOWN
358
+ end
359
+ if $config.snmptrap_mon and (@trap_sev == UNMANAGED)
360
+ @trap_sev = UNKNOWN
361
+ end
362
+ if $config.syslog_mon and (@syslog_sev == UNMANAGED)
363
+ @syslog_sev = UNKNOWN
364
+ end
365
+ if $config.wmi_mon and (@wmi_sev == UNMANAGED)
366
+ @wmi_sev = UNKNOWN
367
+ end
368
+ if $config.jmx_mon and (@jmx_sev == UNMANAGED)
369
+ @jmx_sev = UNKNOWN
370
+ end
371
+
372
+ #if at least one is critical set global sev to critical
373
+ if ((@avail_sev == CRITICAL) and (@snmp_sev <= UNMANAGED) and (@custom_sev <= UNMANAGED) and (@trap_sev <= UNMANAGED) and (@service_sev <= UNMANAGED) and (@wmi_sev <= UNMANAGED) and (@syslog_sev <= UNMANAGED) and (@jmx_sev <= UNMANAGED)) || (@snmp_sev == CRITICAL) || (@custom_sev == CRITICAL) || (@trap_sev == CRITICAL) || (@service_sev == CRITICAL) || (@jmx_sev == CRITICAL) || (@syslog_sev == CRITICAL) || (@wmi_sev == CRITICAL)
374
+ change_status(CRITICAL)
375
+ else
376
+ if ((@avail_sev > UNMANAGED) and (@snmp_sev <= UNMANAGED) and (@custom_sev <= UNMANAGED) and (@trap_sev <= UNMANAGED) and (@service_sev <= UNMANAGED) and (@wmi_sev <= UNMANAGED) and (@syslog_sev <= UNMANAGED) and (@jmx_sev <= UNMANAGED))
377
+ change_status(@avail_sev)
378
+ else
379
+ #we have to dont care about UNMANAGED and UNKNOWN value
380
+ cpt=0
381
+ if @snmp_sev > UNMANAGED
382
+ cpt+=1
383
+ end
384
+ if @custom_sev > UNMANAGED
385
+ cpt+=1
386
+ end
387
+ if @trap_sev > UNMANAGED
388
+ cpt+=1
389
+ end
390
+ if @service_sev > UNMANAGED
391
+ cpt+=1
392
+ end
393
+ if @wmi_sev > UNMANAGED
394
+ cpt+=1
395
+ end
396
+ if @syslog_sev > UNMANAGED
397
+ cpt+=1
398
+ end
399
+ if @jmx_sev > UNMANAGED
400
+ cpt+=1
401
+ end
402
+
403
+ if cpt > 0
404
+ val=(
405
+ (((@service_sev>UNMANAGED) and $config.port_mon)?@service_sev:UNMANAGED) +
406
+ (((@snmp_sev>UNMANAGED) and $config.snmp_mon)?@snmp_sev:UNMANAGED) +
407
+ (((@wmi_sev>UNMANAGED) and $config.wmi_mon)?@wmi_sev:UNMANAGED) +
408
+ (((@jmx_sev>UNMANAGED) and $config.jmx_mon)?@jmx_sev:UNMANAGED) +
409
+ (((@custom_sev>UNMANAGED) and $config.custom_mon)?@custom_sev:UNMANAGED) +
410
+ (((@trap_sev>UNMANAGED) and $config.snmptrap_mon)?@trap_sev:UNMANAGED) +
411
+ (((@syslog_sev>UNMANAGED) and $config.syslog_mon)?@syslog_sev:UNMANAGED)
412
+ )/cpt
413
+
414
+ #print "cpt: ",cpt, " val ",val.floor(),"\n"
415
+ if val.floor() <= UNMANAGED
416
+ $log.fatal("refresh_status: fail to compute status")
417
+ else
418
+ change_status(val.floor())
419
+ end
420
+ end
421
+ end
422
+ end
423
+ end
424
+
425
+ def hide_label()
426
+ @node_view.hide_text()
427
+ end
428
+
429
+ def show_label()
430
+ @node_view.show_text() unless !@node_view
431
+ end
432
+
433
+ def set_label_visibility()
434
+ if !$config.show_label
435
+ hide_label()
436
+ return false
437
+ else
438
+ show_label()
439
+ return true
440
+ end
441
+ end
442
+
443
+ def set_severity(event_type, sev)
444
+ case event_type
445
+ when EventWindow::PORT_EVENT_TYPE
446
+ set_service_severity(sev)
447
+ when EventWindow::TRAP_EVENT_TYPE
448
+ set_trap_severity(sev)
449
+ when EventWindow::CUSTOM_EVENT_TYPE
450
+ set_custom_severity(sev)
451
+ when EventWindow::SNMP_EVENT_TYPE
452
+ set_snmp_severity(sev)
453
+ when EventWindow::WMI_EVENT_TYPE
454
+ set_wmi_severity(sev)
455
+ when EventWindow::SYSLOG_EVENT_TYPE
456
+ set_syslog_severity(sev)
457
+ when EventWindow::JMX_EVENT_TYPE
458
+ set_jmx_severity(sev)
459
+ when EventWindow::AVAIL_EVENT_TYPE
460
+ set_avail_severity(sev)
461
+ when EventWindow::CORE_EVENT_TYPE
462
+ else
463
+ $log.error("unknown event type: #{event_type}")
464
+ end
465
+ end
466
+
467
+ def set_avail_severity(sev)
468
+ @avail_sev=sev
469
+ refresh_status()
470
+ end
471
+
472
+ def set_service_severity(sev)
473
+ @service_sev=sev
474
+ refresh_status()
475
+ end
476
+
477
+ def set_wmi_severity(sev)
478
+ @wmi_sev=sev
479
+ refresh_status()
480
+ end
481
+
482
+ def set_jmx_severity(sev)
483
+ @jmx_sev=sev
484
+ refresh_status()
485
+ end
486
+
487
+ def set_syslog_severity(sev)
488
+ @syslog_sev=sev
489
+ refresh_status()
490
+ end
491
+
492
+
493
+ #sev is an index $status_value
494
+ def set_snmp_severity(sev)
495
+ @snmp_sev=sev
496
+ refresh_status()
497
+ end
498
+
499
+ def set_custom_severity(sev)
500
+ @custom_sev=sev
501
+ refresh_status()
502
+ end
503
+
504
+ #use for snmp trap and syslog msgs
505
+ def set_trap_severity(sev)
506
+ @trap_sev=sev
507
+ refresh_status()
508
+ end
509
+
510
+ def set_all_severity(sev)
511
+ @avail_sev=sev
512
+ @snmp_sev=sev
513
+ @custom_sev=sev
514
+ @trap_sev=sev
515
+ @service_sev=sev
516
+ @wmi_sev=sev
517
+ @syslog_sev=sev
518
+ @jmx_sev=sev
519
+ refresh_status()
520
+ end
521
+
522
+ # return custom monitoring severity
523
+ def custom_severity(name)
524
+ cust = @custom_monitoring[name]
525
+ if cust
526
+ return cust.severity
527
+ end
528
+ return nil
529
+ end
530
+
531
+ # return custom monitoring parameter
532
+ def custom_parameter(name)
533
+ cust = @custom_monitoring[name]
534
+ if cust
535
+ return cust.param
536
+ end
537
+ return nil
538
+ end
539
+
540
+ def service_key(protocol, port)
541
+ return "#{protocol}/#{port}"
542
+ end
543
+
544
+ # return service instance based on the service name as a key
545
+ def service_by_name(name)
546
+ @service.each_value {|serv|
547
+ if serv.name == name
548
+ return serv
549
+ end
550
+ }
551
+ return nil
552
+ end
553
+
554
+ def add_service(protocol, port, name="?", monitor_flag=1, sev=0)
555
+ if @service[service_key(protocol, port)] == nil
556
+ @service[service_key(protocol, port)] = Service.new(protocol,port,name,monitor_flag,$status.index(sev))
557
+ end
558
+ #store in db
559
+ db_add_service(ip, get_node_type(), protocol, port, name, monitor_flag, $status.index(sev))
560
+ end
561
+
562
+ def del_service(protocol, port)
563
+ if @service[service_key(protocol, port)] != nil
564
+ @service[service_key(protocol, port)].delete()
565
+ end
566
+ #del in db
567
+ db_del_service(protocol, port)
568
+ end
569
+
570
+ #
571
+ # check if a given port is monitored
572
+ #
573
+ def is_service_monitor(protocol, port)
574
+ return (@service[service_key(protocol, port)] != nil) && (@service[service_key(protocol, port)].monitored?())
575
+ end
576
+
577
+ #
578
+ # get severity associated to a given proto/port
579
+ #
580
+ def get_service_sev(protocol, port)
581
+ return @service[service_key(protocol, port)].severity
582
+ end
583
+
584
+
585
+ def add_wmi_monitoring(state, wmiref_name, op, val, sev, status=nil)
586
+ if @wmi_monitoring[wmiref_name] == nil
587
+ if WMIRef::wmi_ref_exist?(wmiref_name)
588
+ if sev.class != Fixnum
589
+ @wmi_monitoring[wmiref_name]=WmiMonitoring.new(state, wmiref_name, WmiMonitoring::TESTOP.index(op), val, $status.index(sev))
590
+ db_add_wmi_monitoring(ip, get_node_type(), state, wmiref_name, WmiMonitoring::TESTOP.index(op), val, $status.index(sev)) unless status
591
+ else
592
+ @wmi_monitoring[wmiref_name]=WmiMonitoring.new(state, wmiref_name, op, val, sev)
593
+ db_add_wmi_monitoring(ip, get_node_type(), state, wmiref_name, op, val, sev) unless status
594
+ end
595
+ $wmi_refs[wmiref_name].add_use()
596
+ else
597
+ $log.error("WMI entry #{wmiref_name} is unknown")
598
+ end
599
+ end
600
+ end
601
+
602
+ def add_jmx_monitoring(state, jmxref_name, proto, port, auth, attribuesh)
603
+ if @jmx_monitoring[jmxref_name] == nil
604
+ if JMXRef::jmx_ref_exist?(jmxref_name)
605
+ @jmx_monitoring[jmxref_name]=JmxMonitoring.new(state, jmxref_name, proto, port, auth)
606
+ attribuesh.each_value {|attr|
607
+ if attr.class == JmxAttributeMonitoring
608
+ @jmx_monitoring[jmxref_name].add_attribute(attr.attributeName, attr.operator, attr.value, attr.severity)
609
+ end
610
+ }
611
+ $jmx_refs[jmxref_name].add_use()
612
+ else
613
+ $log.error("JMX entry #{jmxref_name} is unknown")
614
+ end
615
+ end
616
+ end
617
+
618
+ def add_snmp_monitoring(state, oidref_name, op, val, sev, status=nil)
619
+ if @snmp_monitoring[oidref_name] == nil
620
+ if OIDRef::oid_ref_exist?(oidref_name)
621
+ if sev.class != Fixnum
622
+ @snmp_monitoring[oidref_name]=SnmpMonitoring.new(state, oidref_name, SnmpMonitoring::TESTOP.index(op), val, $status.index(sev))
623
+ db_add_snmp_monitoring(ip, get_node_type(), state, oidref_name, SnmpMonitoring::TESTOP.index(op), val, $status.index(sev)) unless status
624
+ else
625
+ @snmp_monitoring[oidref_name]=SnmpMonitoring.new(state, oidref_name, op, val, sev)
626
+ db_add_snmp_monitoring(ip, get_node_type(), state, oidref_name, op, val, sev) unless status
627
+ end
628
+ $oid_refs[oidref_name].add_use()
629
+ else
630
+ $log.error("SNMP OID #{oidref_name} is unknown")
631
+ end
632
+ end
633
+ end
634
+
635
+ def nb_interface()
636
+ return @interface.size
637
+ end
638
+
639
+ def add_interface(n, lstatus=nil, sp=nil, tp=nil)
640
+ if @interface[n] == nil
641
+ @interface[n] = Interface.new(n, lstatus, sp, tp)
642
+ #we are adding it in db at save time
643
+ else
644
+ $log.error("Interface #{n} already exists")
645
+ end
646
+ end
647
+
648
+ def del_interface(n)
649
+ if @interface[n] != nil
650
+ @interface[n].delete()
651
+ end
652
+ end
653
+
654
+ def del_wmi_monitoring(oidref_name)
655
+ if @wmi_monitoring[oidref_name] != nil
656
+ $wmi_refs[oidref_name].del_use()
657
+ @wmi_monitoring[oidref_name].delete()
658
+ end
659
+ end
660
+
661
+ def del_jmx_monitoring(oidref_name)
662
+ if @jmx_monitoring[oidref_name] != nil
663
+ $jmx_refs[oidref_name].del_use()
664
+ @jmx_monitoring[oidref_name].delete()
665
+ end
666
+ end
667
+
668
+ def del_snmp_monitoring(oidref_name)
669
+ if @snmp_monitoring[oidref_name] != nil
670
+ $oid_refs[oidref_name].del_use()
671
+ @snmp_monitoring[oidref_name].delete()
672
+ end
673
+ end
674
+
675
+ def add_custom_monitoring(state, custom_mon_name, param, sev, status=nil)
676
+ if $custom_monitor and ($custom_monitor.index(custom_mon_name) != nil) and (@custom_monitoring[custom_mon_name] == nil)
677
+ @custom_monitoring[custom_mon_name] = CustomMonitoring.new(state.to_i, custom_mon_name, param, sev.to_i)
678
+ db_add_custom_monitoring(ip, get_node_type(), [state, custom_mon_name, param, sev]) unless status
679
+ end
680
+ end
681
+
682
+ def add_custom_monitoring_bulk(custom_mon_array)
683
+ custom_mon_array.each {|state, custom_mon_name, param, sev|
684
+ add_custom_monitoring(state.to_i, custom_mon_name, param, sev.to_i, "init")
685
+ }
686
+ db_add_custom_monitoring(ip, get_node_type(), custom_mon_array)
687
+ end
688
+
689
+ def del_custom_monitoring(custom_mon_name)
690
+ if @custom_monitoring[custom_mon_name] != nil
691
+ @custom_monitoring[custom_mon_name].delete()
692
+ end
693
+ end
694
+
695
+ def add_syslog_monitoring(state, syslog_ref_name, sev, status=nil)
696
+ if @syslog_monitoring[syslog_ref_name] == nil
697
+ if SyslogRef::syslog_ref_exist?(syslog_ref_name)
698
+ if sev.class != Fixnum
699
+ #puts "add_syslog_monitoring ", syslog_ref_name, sev, $status.index(sev)
700
+ #here 0 sev corresponds to map syslog default severity
701
+ sev_tmp=$status.index(sev)
702
+ if sev_tmp == nil
703
+ sev_tmp=0
704
+ else
705
+ sev_tmp+=1
706
+ end
707
+ @syslog_monitoring[syslog_ref_name]=SyslogMonitoring.new(state, syslog_ref_name, sev_tmp)
708
+ db_add_syslog_monitoring(ip, get_node_type(), state, syslog_ref_name , sev_tmp) unless status
709
+ else
710
+ #puts "add_syslog_monitoring ", syslog_ref_name, sev
711
+ @syslog_monitoring[syslog_ref_name]=SyslogMonitoring.new(state, syslog_ref_name, sev)
712
+ db_add_syslog_monitoring(ip, get_node_type(), state, syslog_ref_name , sev) unless status
713
+ end
714
+ $syslog_refs[syslog_ref_name].add_use()
715
+ end
716
+ end
717
+ end
718
+
719
+ def del_syslog_monitoring(syslog_ref_name)
720
+ if @syslog_monitoring[syslog_ref_name] != nil
721
+ $syslog_refs[syslog_ref_name].del_use()
722
+ @syslog_monitoring[syslog_ref_name].delete()
723
+ end
724
+ end
725
+
726
+ def add_snmptrap_monitoring(state, snmptrap_ref_name, sev, status=nil)
727
+ if @snmptrap_monitoring[snmptrap_ref_name] == nil
728
+ if SnmpTrapRef::snmptrap_ref_exist?(snmptrap_ref_name)
729
+ if sev.class != Fixnum
730
+ sev_tmp=$status.index(sev)
731
+ if sev_tmp == nil
732
+ sev_tmp=0
733
+ else
734
+ sev_tmp+=1
735
+ end
736
+ @snmptrap_monitoring[snmptrap_ref_name]=SnmpTrapMonitoring.new(state, snmptrap_ref_name, sev_tmp)
737
+ db_add_snmptrap_monitoring(ip, get_node_type(), state, snmptrap_ref_name, sev_tmp) unless status
738
+ else
739
+ @snmptrap_monitoring[snmptrap_ref_name]=SnmpTrapMonitoring.new(state, snmptrap_ref_name, sev)
740
+ db_add_snmptrap_monitoring(ip, get_node_type(), state, snmptrap_ref_name, sev) unless status
741
+ end
742
+ $snmptrap_refs[snmptrap_ref_name].add_use()
743
+ end
744
+ end
745
+ end
746
+
747
+ def del_snmptrap_monitoring(snmptrap_ref_name)
748
+ if @snmptrap_monitoring[snmptrap_ref_name] != nil
749
+ $snmptrap_refs[snmptrap_ref_name].del_use()
750
+ @snmptrap_monitoring[snmptrap_ref_name].delete()
751
+ end
752
+ end
753
+
754
+ #
755
+ # set map for changing map of a node
756
+ #
757
+ def set_map(map)
758
+ if map != @map
759
+ if self.class == Host
760
+ $network[@map].del_host(ip)
761
+ $network[@map].update_status()
762
+ @map=map
763
+ $network[@map].add_host(self)
764
+ $network[@map].update_status()
765
+ @node_view.reparent($network[@map].map_view)
766
+ else
767
+ $network[@map].del_net(ip)
768
+ $network[@map].update_status()
769
+ @map=map
770
+ $network[@map].add_network(self)
771
+ $network[@map].update_status()
772
+ @node_view.reparent($network[@map].map_view)
773
+ end
774
+ end
775
+ end
776
+
777
+ #
778
+ # clear all accounts from the hash
779
+ #
780
+ def clear_account()
781
+ @account=Hash.new
782
+ end
783
+
784
+ #
785
+ # clear all accounts from *db*
786
+ #
787
+ def clear_db_accounts()
788
+ db_del_accounts(ip, get_node_type())
789
+ end
790
+
791
+ #
792
+ # add account in *db*
793
+ #
794
+ def add_db_account(accounts)
795
+ db_add_account(ip, get_node_type(), accounts)
796
+ end
797
+
798
+ #
799
+ # clear all services
800
+ #
801
+ def clear_service()
802
+ @service=Hash.new
803
+ db_del_services(ip, get_node_type())
804
+ end
805
+
806
+ #
807
+ # clear all wmi monitoring
808
+ #
809
+ def clear_wmi_monitoring()
810
+ @wmi_monitoring.each_value do |wmi_mon|
811
+ $wmi_refs[wmi_mon.wmiref].del_use()
812
+ end
813
+ @wmi_monitoring=Hash.new
814
+ db_del_wmi_monitoring(ip, get_node_type())
815
+ end
816
+
817
+ #
818
+ # clear all jmx monitoring
819
+ #
820
+ def clear_jmx_monitoring()
821
+ @jmx_monitoring.each_value do |jmx_mon|
822
+ $jmx_refs[jmx_mon.get_ref()].del_use()
823
+ end
824
+ @jmx_monitoring=Hash.new
825
+ db_del_jmx_monitoring(ip, get_node_type())
826
+ end
827
+
828
+ def init_jmx_from_db()
829
+ @jmx_monitoring.each_value do |jmx_mon|
830
+ $jmx_refs[jmx_mon.get_ref()].del_use()
831
+ end
832
+ @jmx_monitoring=Hash.new
833
+ db_get_jmx_monitoring(ip, get_node_type())
834
+ end
835
+
836
+ def get_node_type()
837
+ nodetype=HOSTNODE
838
+ if self.class == Network
839
+ nodetype=NETWORKNODE
840
+ end
841
+ return nodetype
842
+ end
843
+
844
+ #
845
+ # clear all snmp monitoring
846
+ #
847
+ def clear_snmp_monitoring()
848
+ @snmp_monitoring.each_value do |snmp_mon|
849
+ $oid_refs[snmp_mon.oidref].del_use()
850
+ end
851
+ @snmp_monitoring=Hash.new
852
+ db_del_snmp_monitoring(ip, get_node_type())
853
+ end
854
+
855
+ #
856
+ # clear all custom monitoring
857
+ #
858
+ def clear_custom_monitoring()
859
+ @custom_monitoring=Hash.new
860
+ db_del_custom_monitoring(ip, get_node_type())
861
+ end
862
+
863
+ #
864
+ # clear all snmptrap monitoring
865
+ #
866
+ def clear_snmptrap_monitoring()
867
+ @snmptrap_monitoring.each_value do |snmptrap_mon|
868
+ $snmptrap_refs[snmptrap_mon.get_snmptrap_ref()].del_use()
869
+ end
870
+ @snmptrap_monitoring=Hash.new
871
+ db_del_snmptrap_monitoring(ip, get_node_type())
872
+ end
873
+
874
+ #
875
+ # clear all syslog monitoring
876
+ #
877
+ def clear_syslog_monitoring()
878
+ @syslog_monitoring.each_value do |syslog_mon|
879
+ $syslog_refs[syslog_mon.get_syslog_ref()].del_use()
880
+ end
881
+ @syslog_monitoring=Hash.new
882
+ db_del_syslog_monitoring(ip, get_node_type())
883
+ end
884
+
885
+
886
+ #
887
+ # return description if different from default value
888
+ #
889
+ def description?()
890
+ return description != "(nodesc)"
891
+ end
892
+
893
+ #
894
+ # return a point corresponding to the position of the node
895
+ #
896
+ def point_pos()
897
+ return [@x, @y]
898
+ end
899
+
900
+ #
901
+ # check if a given account id already exist
902
+ #
903
+ def account_size()
904
+ return @account.size()
905
+ end
906
+
907
+ #
908
+ # get the accounts hash
909
+ #
910
+ def get_all_account()
911
+ return @account
912
+ end
913
+
914
+ #
915
+ # set the accounts hash
916
+ #
917
+ def set_all_account(haccount)
918
+ @account=haccount.dup
919
+ end
920
+
921
+ #
922
+ # set the interface hash
923
+ #
924
+ def set_all_interface(intf)
925
+ @interface=intf.dup
926
+ end
927
+
928
+
929
+ #
930
+ # init account from db
931
+ #
932
+ def init_account_from_db()
933
+ clear_account()
934
+ @account=db_get_accounts(ip, get_node_type())
935
+ end
936
+
937
+ #
938
+ # get the account idents
939
+ #
940
+ def get_account_id(id)
941
+ if account_exist_nr?(id)
942
+ return @account[id]
943
+ end
944
+ return $network[@map].get_all_account()[id]
945
+ end
946
+
947
+ #
948
+ # get the account login specify by id
949
+ #
950
+ def get_account_login(id)
951
+ return @account[id][0]
952
+ end
953
+
954
+ #
955
+ # set the account login specify by id
956
+ #
957
+ def set_account_login(id, value)
958
+ @account[id][0]=value
959
+ end
960
+
961
+ #
962
+ # get the account password specify by id
963
+ #
964
+ def get_account_password(id)
965
+ return @account[id][1]
966
+ end
967
+
968
+ #
969
+ # set the account password specify by id
970
+ #
971
+ def set_account_password(id, value)
972
+ @account[id][1]=value
973
+ end
974
+
975
+ #
976
+ # check if a given account id already exist
977
+ #
978
+ def account_exist?(id)
979
+ if !@map
980
+ return @account.has_key?(id)
981
+ end
982
+ #account can also be the account from the network
983
+ return @account.has_key?(id) || $network[@map].get_all_account().has_key?(id)
984
+ end
985
+
986
+ #
987
+ # check if a given account id already exist for the host (non recursive)
988
+ #
989
+ def account_exist_nr?(id)
990
+ return @account.has_key?(id)
991
+ end
992
+
993
+ #
994
+ # add an account
995
+ #
996
+ def add_account(id, login, passwd)
997
+ if !account_exist_nr?(id)
998
+ @account[id] = Array.new(2)
999
+ @account[id][0] = login
1000
+ @account[id][1] = passwd
1001
+ end
1002
+ end
1003
+
1004
+ #
1005
+ # del an account
1006
+ #
1007
+ def del_account(id)
1008
+ return @account.delete(id)
1009
+ end
1010
+
1011
+ #
1012
+ # set type value property based on level
1013
+ #
1014
+ private
1015
+ def set_alert_type(type, level, value)
1016
+ @alert_type_by_level[level][$talert_type.index(type)]=value
1017
+ end
1018
+ alias ipv4 ip
1019
+ alias netmask4 netmask
1020
+ end #class