1
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/BUGS jffnms-0.9.3/BUGS
2
--- ../jffnms-0.9.2/BUGS 2012-03-04 13:43:13.000000000 +1100
3
+++ jffnms-0.9.3/BUGS 1970-01-01 10:00:00.000000000 +1000
5
-If your find a bug please report it at sourceforge.net
9
- jffnms-users@lists.sourceforge.net
12
- http://marc.theaimsgroup.com/?l=jffnms-users
14
- http://lists.sourceforge.net/lists/listinfo/jffnms-users
16
- http://www.mail-archive.com/jffnms-users@lists.sourceforge.net/
19
- http://sourceforge.net/forum/?group_id=46041
22
- http://sourceforge.net/tracker/?atid=444844&group_id=46041&func=browse
23
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/Changelog jffnms-0.9.3/Changelog
24
--- ../jffnms-0.9.2/Changelog 2012-03-04 13:43:13.000000000 +1100
25
+++ jffnms-0.9.3/Changelog 1970-01-01 10:00:00.000000000 +1000
29
- * really save config file
30
- * engines run with unset repeat values
31
- * Fixed profile update so it works
32
- * Interface selector can select multiple interfaces again
33
- * config save fixes to reduce warnings
34
- * Changed all php short tags to full ones
35
- * Check for existance of some snmp functions that are not in windows
36
- * Update to pass syntax for PHP version 5.4
41
- * SNMP trap receiver table can be edited with poller_backends
42
- * poller backend select fixed
43
- * Consolidater default repeat value set
44
- * check for array to silence error message when array not set
45
- * Config page saves config file and renames it
46
- * Interface selector has some height
50
- * Fixed error in syslog consolidator which fails for postgresql
51
- * All webpage input passes through Sanitizer
52
- * register_globals no longer needs to be turned on, so turn it off!
53
- * rrdtool v1.0 support dropped
55
- * poller rewritten with parent/child code
56
- * autodiscovery the same as poller
57
- * Removed php rrd module support
58
- * Interface auto-discovery will check sysobjid before trying discovery
59
- * IPv6 reachability support
60
- * Separated interface selector code
61
- * SNMP interfaces can have High Speed and optinally no Cisco proxy ping
65
- * Fixed traffic graph
66
- * Commented out logfile checking
67
- * postgresql schema uses mysqldump compat mode
68
- * Adjusted build script to make cleaner tar files
69
- * Change logfile column name offset to file_offset for pgsql
70
- * Cleaned up some more code so STRICT complains less
72
-JFFNMS 0.8.4 Released 2009-10-05
73
-================================
74
- * tcp_status poller only returns ascii data
75
- * Config script redirects to https url if called that way
76
- * Added security patches as per Debian security patch 20_security
77
- * Above Closes SF:1725069
78
- * blentz patch for Dell OpenManage Fans and Tempeature added SF:1633506
79
- * Removed non-free font and change code to handle no font present
80
- * Started on logfile reading
81
- * UPS poller now can work with Mitsubishi Diamondlink devices
82
- * APC PDU support - this and above patch from falz
83
- * Added support for IBM Blades, IBM Servers, IBM DS4XXX controllers,
84
- generic Fibre Channel - All from David Lima
85
- * Informant-Advanced logical disk support added - From Sebastian van Dijk
86
- * Network UPS Tool support added
87
- * import_custom.php fixed for multiple fields in same table
88
- * Host MIB Apps can be case-insensitive checking
90
-JFFNMS 0.8.3 Released 2006-09-16
91
-================================
92
-When other people are involved is noted if not it was me: Javier Szyszlican.
96
- - Support for RRDTool 1.2.x
97
- - Escapes : in COMMENT statements (Reported by: Aaron Daubman <daubman |a|t| gmail |d|o|t| com>)
98
- - Uses LucidaTypewriter font so the graphs are about the same as with RRDTool 1.0.x
100
- - Storage device interface type now tracks index changes (like when adding a USB drive) or restarting the Agent
102
- - OS/400 Interface type with CPU Utilization graph
103
- By: David LIMA <DLIMA |a|t| fr |d|o|t| scc |d|o|t| com>
105
- - Per-Host CPU Threshold for Cisco and Linux/Unix hosts
106
- By: David LIMA <DLIMA |a|t| fr |d|o|t| scc |d|o|t| com>
108
- - Initial Dell OpenManager Interface type (only general alarm for now)
109
- By: Ben Lentz <blentz |a|t| channing-bete |d|o|t| com> and David LIMA <DLIMA@fr |d|o|t| scc |d|o|t| com>
113
- - Apache Discovery now has a 10 seconds timeout.
114
- by: Craig Small <csmall |a|t| enc |d|o|t| com |d|o|t| au>
116
- - Install guide includes cron.allow and new tmpwatch and pcntl dependencies
117
- Reported by: Joel Harrison <joel_harrison |a|t| bankone |d|o|t| com>
119
- - New Installation guide for Windows
120
- By: Fabricio Castro <Fabricio |d|o|t| Castro |a|t| valueadd |d|o|t| com |d|o|t| br>
122
- - Host name field now is bigger
123
- Reported by: Emmanuel Doguet <stage2 |a|t| tbs-internet |d|o|t| com>
125
- - crontab example now has only one Autodiscovery enabled (old one)
126
- Reported by: Cody Holland <cody |d|o|t| holland |a|t| gmail |d|o|t| com>
128
- - Changed some tables to avoid MySQL 5.x keywords ('condition')
129
- Fixed by: Craig Small <csmall |a|t| enc |d|o|t| com |d|o|t| au>
131
- - NAD now works in PostgreSQL
133
- - Cisco CC TFTP copy now works even with the MIBs loaded
134
- Fixed by: Nick Korosi <nkorosi |a|t| sbcglobal |d|o|t| net>
136
- - NTP Client GPS support
138
- - TCP Port Status now supports hosts with a different SNMP port
139
- Reported by: Tim Nelson <tnelson |a|t| utaria |d|o|t| net>
141
- - tmpwatch.sh script should work in most Unices now
142
- Fixed by: Aaron Daubman <daubman |a|t| gmail |d|o|t| com>
144
- - RRDTool will not use the Pipe system when the command line is bigger than 1000 characters
145
- Fixed by: Aaron Daubman <daubman |a|t| gmail |d|o|t| com>
147
- - Added PortChannel link type to NAD
149
- - SNMP Traps Backend GUI now works
150
- Fixed by: Craig Small <csmall |a|t| enc |d|o|t| com |d|o|t| au>
152
- - Timezone removed from PostgreSQL Date results
153
- Reported by: MOYA Yves <MOYA |a|t| ifb-france |d|o|t| com>
155
- - Changed state field in alarm_states to int (10)
156
- Reported by: frederic Vay <frederic |d|o|t| vay |a|t| e-qual |d|o|t| fr>
158
- - HostMIB interfaces on Windows paths with Non-Printable characters were not correctly handled
160
- - Fixed RRDTool grapher to skip empty array items causing problems with some RRDTool versions
161
- By: Sebastien Namche <sebastien |d|o|t| nameche |a|t| netensia |d|o|t| fr>
163
- - Added blocked_devices to storage discovery to avoid problems on MacOSX with /dev and /.vol
166
-JFFNMS 0.8.2 Released 2005-05-09
167
-================================
171
- - Host MIB hrSensor support, tested under net-snmp with lm_sensors patch.
172
- It can graph Temperature, Voltages and Fan's RPM.
173
- Requested by: Michael Fuereder <Michael |d|o|t| Fuereder |a|t| ooe |d|o|t| gv |d|o|t| at>
175
- - New SNMP Trap handler. It uses plugins (receivers) to parse the traps and send them to backends.
176
- It provides a more flexible system for SNMP Trap processing.
177
- By: Erno Rigo <mcree |a|t| tricon |d|o|t| hu>
179
- - SystemMIB Name, Contact and Location added to the Windows, Linux, Solaris, Cisco and Alteon System informantion interface types.
180
- This information is also tracked via AD so you will be notified of any change.
181
- Sponsored by: John Wagrowski <wagrowski |a|t| morainevalley |d|o|t| edu> of Moraine Valley Community College
183
- - UPS MIB support, this should enable support for the Riello UPS or any other that implements the UPSMIB.
184
- Sponsored by: Novikmec Jozef <Jozef |d|o|t| Novikmec |a|t| zentiva |d|o|t| cz> of Zentiva
186
- - Linux IPTables Chain support. This Interface type will graph the IPTables build-in chains bytes and packets.
187
- By: Hans Peter Dittler <hpdittler |a|t| braintec-consult |d|o|t| de>
189
- - Cisco BGP Neighbor Routes graphing. This will only work with Cisco IOS version 12.0(26)S or later.
190
- Request and info from: Fabiano Rodrigo Boscatto <fabiano |d|o|t| boscatto |a|t| pucpr |d|o|t| br> and Jade JDeane@sungardfutures |d|o|t| com
192
- - Cisco PIX support, Number of connections graph included.
193
- By: Mario Spendier <mario |d|o|t| spendier |a|t| at |d|o|t| flextronics |d|o|t| com>
195
- - Windows SNMP Informant Logical Disk Interface Type, offer Windows Disk Usage stats.
196
- by: David Lima <DLIMA |a|t| fr |d|o|t| scc |d|o|t| com>
198
- - Cisco NAT support, Active Binds and Input/Output packets graph by protocol (UDP, TCP, ICMP, Others).
199
- By: Karl S |d|o|t| Hagen <khagen |a|t| greyhelm |d|o|t| com>
201
- - Support for PHP snmp2_* functions.
202
- By: Karl S |d|o|t| Hagen <khagen |a|t| greyhelm |d|o|t| com>
204
- - The host_information discovery script now tries to discovery how many CPUs the host has.
206
- - Added Alarmed Hosts & Events to the Default View profile option values.
208
- - Added PIX Event and PIX Port to the PIX filter
210
- - Added Cisco ISDN Syslog Events
211
- Requested by: Roberto Veiga <roberto |a|t| veiga |d|o|t| biz>
213
- - Included the "simple" discovery script, takes a Test OID and an interface name as parameter and returns an interface
214
- if the OID is available.
216
- - Compaq Temperature Graph can be displayed in Fahrenheit now
217
- Requested by: Chad Markley <cmarkley |a|t| markleytech |d|o|t| com>
221
- - Start Page alarms now exclude the hidden interfaces, so now the number matches what is seen in the interfaces screen.
222
- Reported by: Chris Hammond <chris |a|t| tac |d|o|t| esi |d|o|t| net>
224
- - Rechability interface information is correctly tracked now if the Host IP changes.
225
- Reported by: Travis Johnson <tlj |a|t| ida |d|o|t| net>
227
- - The cpu_util no longer users the number of cpus to scale the graph, since the only ones using this are the Cisco System Info,
228
- and the Windows System info, which we do an average of the CPU usage of all the CPUs, so the MAX is still 100%.
229
- Reported by: David Lima <DLIMA |a|t| fr |d|o|t| scc |d|o|t| com>
231
- - The jffnms-snmp system (for tc and iptables) now uses the pass_persist call in snmpd.conf please re check your configuration.
232
- Reported by: Hans Peter Dittler <hpdittler |a|t| braintec-consult |d|o|t| de>
234
- - SNMPv2 GET now handles multi-line strings correctly.
235
- Reported by: Manoj Khabe <khabemanoj |a|t| yahoo |d|o|t| com>
237
- - is_process_running() function now works fine on BSDs, changed "ps -eo args" to "ps axo args".
238
- Fixed by: Chris Cappuccio <chris |a|t| nmedia |d|o|t| net>
240
- - Disabled ordering in edit mode.
242
- - Triggers Users filter by user when used by a User Admin.
244
- - Trigger analizer now again honors the default "from" field from the trigger definition, if the trigger action parameter is not set.
246
- - PIX Syslog messages should match better now, removed the ^ in the regexps
247
- Reported by: GuruLeeNyc <guruleenyc |a|t| charter |d|o|t| net>
249
- - Its now possible to ack a lot of events with one click.
250
- Reported by: GuruLeeNyc <guruleenyc |a|t| charter |d|o|t| net>
252
- - Alteon Polling and Syslog Fixes
253
- By: Craig Small <csmall |a|t| enc |d|o|t| com |d|o|t| au>
255
- - Poller2 and NAD now work with PostgreSQL.
257
- - Zone and Map trigger fields work again.
258
- Reported by: Karl S |d|o|t| Hagen <khagen |a|t| greyhelm |d|o|t| com>
260
- - Windows Security events work better now.
261
- Reported By: Brian Hoban <Bhoban |a|t| generalrevenue |d|o|t| com> Fixed by: LIMA David <DLIMA@fr |d|o|t| scc |d|o|t| com>
263
-JFFNMS 0.8.1 Released 2005-03-07
264
-================================
268
- - New View: Alarmed Hosts & Events. It will only show the alarmed hosts screen and the events frame.
270
- - Windows Syslog Install Guide
271
- by: Ruud Hop <ruud |d|o|t| hop |a|t| syntec |d|o|t| nl>
273
- - Added 2 - 24 hours Poller Interval options.
274
- Requested by: Jade <JDeane |a|t| sungardfutures |d|o|t| com>
276
- - Added Link to the Aggregated graph, useful to show only that.
278
- - Added Host Name to the State Reports screen.
279
- Requested by: Mario Spendier <Mario |d|o|t| Spendier |a|t| at |d|o|t| flextronics |d|o|t| com>
283
- - The events_latest_max config option is back, this was causing slowdowns in the events screen.
284
- Reported by: Travis Johnson <tlj |a|t| ida |d|o|t| net>
286
- - Syslog matching of messages that contain the work "Unknown" now works again.
287
- Reported by: David Lima <DLIMA |a|t| fr |d|o|t| scc |d|o|t| com>
289
- - New Poller now polls the host in order to avoid gaps in the graphs when using a low number of threads,
290
- starts threads in groups of 5 so it can start working earlier and there were some speedups in the
291
- next-host-to-poll finder.
292
- Reported by: Travis Johnson <tlj |a|t| ida |d|o|t| net>
294
- - User deletion works again.
295
- Reported by: Thomas Mangin <thomas |d|o|t| mangin |a|t| exa-networks |d|o|t| co |d|o|t| uk>
297
- - Logged in Customers can use the calendar page now.
298
- Reported by: ChakraPani <chakra_funny |a|t| yahoo |d|o|t| com>
300
- - Physical interfaces now show the correct bandwidth instead of 128k,
301
- it was caused by a parsing error in the snmp response.
302
- Reported by: Balu <nbkr |a|t| indiatimes |d|o|t| com>
304
- - Matching of Client for Events Triggers now works.
305
- Fixed by: Hans Peter Dittler <hpdittler |a|t| braintec-consult |d|o|t| de>
307
- - Logging file name fixed when using logger() from a web page. Now we use $_SERVER["SCRIPT_NAME"].
308
- Reported by: Eugene Turovsky <john |a|t| igtel |d|o|t| ru> & Min Qiu <mqiu@pop2pop |d|o|t| com>
310
- - Removed Totals section from the Aggregated Traffic graph, because its giving real values.
311
- Reported by: Eugene Turovsky <john |a|t| igtel |d|o|t| ru>
313
- - Remove the SNMPv2c option if we're running on a Windows Host, because there is no support for SNMPv2 on it.
315
- - Events and Map refresh intervals from the User Profile work again.
316
- Reported by: Renegade <guruleenyc |a|t| charter |d|o|t| net>
318
- - Titles with \r\n were causing problems in the RRD Graphs.
319
- Reported by: Chris Zimmerman <chris |d|o|t| zimmerman |a|t| fnf |d|o|t| com>
321
- - Using lots of interfaces in the DHTML maps were generating a long scroll,
322
- now they go to a new row at the end of the visible screen.
323
- Reported by: Jason Humes <jhumes |a|t| acs |d|o|t| on |d|o|t| ca>
325
- - SNMPv2 SETs were not returning a bool value and causing problems with CISCO Ping-MIB.
326
- Reported by: Jose Amengual & Javier Reyes <javier |d|o|t| reyes |a|t| telmex |d|o|t| com>
328
- - Cisco SYSMIB config transfer had a very, very long timeout. Now it waits around 4 to 8 seconds.
329
- Reported by: Johan <johan30 |a|t| easynet |d|o|t| be>
331
- - Fixed Cisco SAA Agent poller to work correctly with the new SNMP API.
332
- Reported by: Jose Amengual & Javier Reyes <javier |d|o|t| reyes |a|t| telmex |d|o|t| com>
335
-JFFNMS 0.8.0 Released 2005-02-15
336
-================================
343
- - New Launcher thread manager, its a generic way to handle item processing to child process,
344
- while keeping the load down. It will launch a fixed number of threads and send them work.
345
- Requested by: Travis Johnson <tlj |a|t| ida |d|o|t| net>
347
- - New Poller using the new launcher. (poller2.php)
348
- Its simpler than the old poller (which is kept for some features like DMII and Satellite that are
349
- not implemented here). This is still experimental and only works in Unix.
351
- - Network Autodiscovery.
352
- Allows you to add 1 or more seed networks and snmp communities to a zone, and when the daemon runs,
353
- it will discover the devices in that network and in attached networks. This is very useful to add
354
- a lot of hosts easily. Experimental Too.
356
- - Support for SNMPv2 and SNMPv3, Including 64 bits counters.
357
- For SNMPv1 and SNMPv3 we are using the integrated PHP functions and for SNMPv2 we are calling the
358
- net-snmp executables (snmpget, snmpwalk and snmpset) that is a little slow, but it works.
359
- When using SNMPv2 or v3, the 64 bit OIDs will be used automatically for input and output,
360
- bytes and packet coutners.
361
- Requested by: A lot of people
363
- - New Backend Configuration Format, uses one defaults file (conf/jffnms.conf.defaults) and
364
- one user-config file (conf/jffnms.conf) for easier automated upgrades.
365
- JFFNMS should automatically upgrade from the old config system (conf/config.ini) to the new format.
366
- Requested by: Craig Small <csmall |a|t| enc |d|o|t| com |d|o|t| au>
368
- - APC UPS Monitoring: Autodiscovery, Status Alerts, Load, Capacity, Voltage (in/out), Time Remaining and Temperature Graphs.
369
- Requested by: Travis Johnson <tlj |a|t| ida |d|o|t| net> and Novikmec Jozef <Jozef |d|o|t| Novikmec@zentiva |d|o|t| cz>
371
- - Nth Percentile graphing support. (Like 95th percentile graphing).
372
- This is configured per-interfaces and allows you to specify the Nth percentil you want.
373
- A New line will be shown in the traffic graph.
374
- Requested by: Richard Sears <rsears |a|t| adnc |d|o|t| com> and Paul Matuszewski <paul@inofficenetworks |d|o|t| com>
376
- - Alteon AD3 monitoring
377
- Monitors system, real and virtual servers and real services, Graphs for bytes, session rate and current value,
378
- Alarms when servers or services go down, Fixes problem with physical ports all having the same name.
379
- By: Craig Small <csmall |a|t| enc |d|o|t| com |d|o|t| au>
381
- - Brocade Fibre Switch monitoring
382
- Monitors temperature and fan sensors, Graphs temperature or fan speed, Monitors FC ports,
383
- Graphs traffic by bits or frames.
384
- By: Craig Small <csmall |a|t| enc |d|o|t| com |d|o|t| au>
387
- Count the number of Async or DSX1 lines used by an access switch removing the D channel.
388
- Should work with all Cisco Routers with an E1/T1 connection to a Telco.
389
- By: Thomas Mangin <thomas |d|o|t| mangin |a|t| exa-networks |d|o|t| co |d|o|t| uk>
391
- - New SQL Query Interface Type.
392
- It uses ODBC to query any database and graph the number of rows returned by the specified query.
393
- Also includes Min/Max limit alerting.
394
- Requested by: Daniel Afonso <dafonso |a|t| afonsoconsulting |d|o|t| com>
396
- - New Interfaces Autodiscovery using the new launcher, replaced the old autodiscovery under the same name, all features re-implemented.
398
- - Managed RRDtool: one RRDtool process is called by each poller and we use the open connection to multiple operations,
399
- reducing the fork load. Only works on Unix.
401
- - New Host fields: Creation, Modification, Last Poll Date and Last Poll duration Time, useful for debugging.
403
- - Cisco PIX syslog events matching and filtering.
404
- By: David Lima <DLIMA |a|t| fr |d|o|t| scc |d|o|t| com>
409
- - Complete GUI redesign using HTML 4.01 and CSS, known as DHTML.
411
- If you want to modify how JFFNMS looks you can use your own CSS file, check the 'Custom CSS' Setup option.
413
- Too many changes to describe them all, you have to see them for yourself.
417
- - Interface Selector: we now use a popup system to show the selected group interfaces, making it possible
418
- to select some interfaces from more than one group at the same time. Its also hiddable.
419
- And when in Customer or Map Filtered mode, you can still select by host.
421
- Requested by: Craig Small <csmall |a|t| enc |d|o|t| com |d|o|t| au>, Jason Humes <jhumes@acs |d|o|t| on |d|o|t| ca>, and others |d|o|t|
423
- - Faster Tools system, now will need to ask for a specific or specifics values, no more load-all-on-start.
424
- Requested by: TIBA Staff <ip |a|t| tiba |d|o|t| com>
426
- - New Standard Administration Features:
427
- - Add without insert
429
- - Export to ASCII Table
433
- - New Administration Menu
434
- Now its vertical on the right side of the screen, and its hiddable.
436
- - View Type (DHTML, text, etc) saved in a Session Cookie.
437
- So it will keep your selection until you change it or you logout, and it will get back to your default.
438
- Requested By: falz <darkfalz |a|t| gmail |d|o|t| com>
440
- - Option to hide a complete Zone from the interfaces view.
441
- Requested by: Chris Hammond <chris |a|t| tac |d|o|t| esi |d|o|t| net>
443
- - Events ACK, now its easier, just click on the blinking red dot.
445
- - View Performance:
446
- - CSV Export of the Input/Output value on Physical interfaces, including Nth percentile calculation.
447
- - Allows hidding of the options box so you will get more space.
449
- - Better Events RSS output, now its RSS 2.0, tests with Mozilla Live Bookmarks
450
- Used as: http://yourserver/jffnms/events.php?view_type=rss&user=admin&pass=admin
455
- - New UNIX Install Instructions using a 'jffnms' user, that way we don't need the system crontab anymore.
459
- - Interface Map sort order fixed, using SORT_NUMERIC for the interface field now.
460
- Reported by: Kelly Hamlin <k |d|o|t| hamlin |a|t| t3com |d|o|t| com>
462
- - Events Interface Filter, now matches *INTERFACE instead of *INTERFACE*
463
- Reported by: Durga Prasad <datasoftindia |a|t| gmail |d|o|t| com>
465
- - Reachablity interface now works when using a host with : in the IP (useful for snmp agents on different ports).
466
- Reported By: Manoj Khabe <khabemanoj |a|t| yahoo |d|o|t| com>
468
- - IF-MIB discovery now works when the host IP is a DNS name.
469
- Reported by: David Lima <DLIMA |a|t| fr |d|o|t| scc |d|o|t| com>
471
- - Setup screen works correctly under SSL now.
473
- - Windows Event Log Syslog events fixes.
474
- By: David Lima <DLIMA |a|t| fr |d|o|t| scc |d|o|t| com>
476
- - Fixed NTP poller bug when you have a Stratum 0 device connected locally.
477
- Reported By: Karl S |d|o|t| Hagen <khagen |a|t| greyhelm |d|o|t| com>
479
- - Cisco SEC-6-IPACCESSLOGDP syslog rule fixed.
480
- By: Craig Small <csmall |a|t| enc |d|o|t| com |d|o|t| au>
482
- - Maps order fixed. Now its by Map Name, not ID.
483
- Reported by: Kelly Hamlin <k |d|o|t| hamlin |a|t| t3com |d|o|t| com>
485
- - Better Linux Syslog matching.
486
- With help from: Craig Small <csmall |a|t| enc |d|o|t| com |d|o|t| au>
488
- - Removed Consolidate Events->Alarms item limit.
490
- - Syslog message matching fixes: now its case-insensitive and has better handling of old/simple match strings, and
491
- has better handling of not-matching hosts.
493
- - NTP discovery and poller do not output errors now.
495
- - Removed support for old UCD-SNMP 4.x
497
- - Old experimental poller removed.
499
- - Apache Poller now works with Apache 1.3.x
501
- - Fixed CatOS interface naming
502
- Reported by: falz <darkfalz |a|t| gmail |d|o|t| com>
504
- - IOS Configuration now skips the ntp clock-period line.
505
- By: Craig Small <csmall |a|t| enc |d|o|t| com |d|o|t| au>
507
- - RRDtool Number of DS
510
-JFFNMS 0.7.9 Released 2004-09-21
511
-================================
516
- I've been testing on PHP 5.0.1 and everything I tried works.
517
- *** Please report any warnings or errors you may get ***
519
- - Support for CatOS, Cisco Catalyst Switch.
520
- Now you will see the correct interface names and descriptions.
521
- Idea/Sample Code by: Perry Lewis <perry |d|o|t| lewis |a|t| htg |d|o|t| net>
523
- - Apache /server-status? Monitoring.
524
- You need to enable mod_status.so with permission to access from the JFFNMS server.
525
- Will autodiscover the server on port 80, and allow for manual add for other ports.
526
- Graphs for: Hits (with aggregation), Bytes transfered (with aggregation),
527
- Bytes per Request, CPU Load and Uptime, Busy/Idle Workers.
528
- By: Robert St Denis <service |a|t| iahu |d|o|t| ca>
530
- - IIS (Internet Information Server) Monitoring.
531
- Graphs for: Bytes Received, CGI Requests, Files Sents, number of GETs and POSTs.
532
- By: Robert St Denis <service |a|t| iahu |d|o|t| ca>
534
- - Compaq Insight Manager Monitoring.
535
- Will allow you to monitor fan, temperature and disks on Compaq/HP servers.
536
- By: Craig Small <csmall |a|t| enc |d|o|t| com |d|o|t| au>
538
- - Livingston Portmaster Serial Port Monitoring.
539
- Allows you to see the general status of the ports in a graph.
540
- By: Thomas Mangin <thomas |d|o|t| mangin |a|t| exa-networks |d|o|t| co |d|o|t| uk>
542
- - Windows EventLog Messages parsing and filter. You have to use NTSyslog.
543
- By: David Lima <DLIMA |a|t| fr |d|o|t| scc |d|o|t| com>
545
- - Windows CPU and Running Processes SLA
546
- New 'Process Threshold' field for SLA
547
- By: David Lima <DLIMA |a|t| fr |d|o|t| scc |d|o|t| com>
549
- - Support for changing the envelope-sender in Triggers/Action emails.
550
- New 'From' option in the trigger configuration.
551
- Requeted/Idea by: ML <mathieu_lubrano |a|t| yahoo |d|o|t| fr>
553
- - New Aggregation (Average) Graphs for: Cisco CPU Utilization, Linux CPU Usage and Load Avearge.
554
- By: Robert St Denis <service |a|t| iahu |d|o|t| ca>
556
- - New Packets and Errors Graphs, still in development.
558
- - New Temperature Aggregation Graph.
559
- By: Craig Small <csmall |a|t| enc |d|o|t| com |d|o|t| au>
561
- - New Manual Discovery Without PorScan (without using nmap).
562
- Requested by: Robert St Denis <service |a|t| iahu |d|o|t| ca>
564
- - Interface Selector now allows to select all interfaces in the group with one click.
565
- And also, when using the Performance Screen, to show only the Date/Graph options
566
- before showing any graph.
567
- Requested by: Robert St Denis <service |a|t| iahu |d|o|t| ca>
569
- - Added HELP link from the setup.php screen to the JFFNMS Documentation.
570
- Documentation By: Craig Small <csmall |a|t| enc |d|o|t| com |d|o|t| au>
572
- - Added 'active alarm' and its start date to the alarmed interfaces infobox.
573
- Requested by: Chris Landegent <chrisl |a|t| adnc |d|o|t| com>
575
- - Customer Selector in the Interfaces Viewer (Map Selector).
576
- Requested by: Travis Johnson <tlj |a|t| ida |d|o|t| net>
578
- - Performance Viewer now allows to show only the Aggregate Graphs,
579
- and to select all the graph types with one click.
580
- Requested by: Robert St Denis <service |a|t| iahu |d|o|t| ca>
582
- - New Trigger Filter to Match by Interface name using 'Contains'.
583
- Requested by: Chris Landegent <chrisl |a|t| adnc |d|o|t| com>
587
- - Fixed Host Screen, now it does not have filters, and when you execute an action,
588
- it will show only the affected host. It also has a new Select Box for selecting the actions.
589
- Reported by: Jason Humes <jhumes |a|t| acs |d|o|t| on |d|o|t| ca>
591
- - Speed in Physical Interfaces will now be correctly set for interfaces without IPs.
593
- - Peer IP will now be correctly shown in the RTT Graph.
594
- Reported by: Jason Humes <jhumes |a|t| acs |d|o|t| on |d|o|t| ca>
596
- - Bandwidth information in traffic graph is now shown even if the BW is not in range
598
- - Temperature Graph will now work, the RRDTool DS name was bad.
599
- Reported by: Chris Epler <cepler |a|t| gmail |d|o|t| com>
601
- - Graph Titles are now better centered in Debian PHP/GD systems.
602
- Reported by: Karel P Kerezman <greyduck |a|t| greyduck |d|o|t| net>
604
- - RRDTool Fetch Fixes that show up on sparc are now fixed.
605
- By: Craig Small <csmall |a|t| enc |d|o|t| com |d|o|t| au>
607
- - RRDTool Fetch Fixes when using RRDTool > 1.0.47 fixed (timestamp parsing problem)
608
- Reported by: Jeff Vaneek <vaneek |a|t| cs |d|o|t| utk |d|o|t| edu>
610
- - Windows Upgrade documentation now includes .exe files copying.
613
- - Allow values of '0' in multi_buffer (!empty("0") is not equal to ("0"!==""))
615
- - BGP Peers now use the Remote Neighbor IP as the Index field.
617
- - HostMIB Applications now use the process name as the Index field, no need for hashes now.
619
- - Traffic Aggregation Graph now includes Totals.
620
- By: Robert St Denis <service |a|t| iahu |d|o|t| ca>
622
- - Linux/Unix Net-SNMP CPU Usage graph now does averaging on devices with more than 1 CPU.
623
- By: Robert St Denis <service |a|t| iahu |d|o|t| ca>
625
- - When evaluating if we are going to store a new TFTP dowloaded config, don't escape the '
627
- - Better SNMP Trap RegExp
628
- By: Nistor Lubomir <lubon_ |a|t| web |d|o|t| de>
630
- - Interface values are now trimmed, to avoid problems.
632
- - Performance Viewer was not filtering by Customer when the User had a Fixed Customer.
633
- Reported by: Johan <johan30 |a|t| easynet |d|o|t| be>
635
- - Performance Viewer nows has a JavaScript refresh stopper (like the events screen).
637
- - Show Hour Control now adds the current hour:minute if not in the list.
639
- - Users List is now sorted by Username.
640
- Reported by: Johan <johan30 |a|t| easynet |d|o|t| be>
642
- - Allow for interfaces with '0' as the value. (!empty("0") is not equal to ("0"!==""))
643
- Reported By: Craig Small <csmall |a|t| enc |d|o|t| com |d|o|t| au>
645
- - RootMap is now shown in the Maps screen for easy background changing.
646
- Reported by: Kelly Hamlin <fizz |a|t| users |d|o|t| sourceforge |d|o|t| net>
649
-JFFNMS 0.7.8 Released 2004-06-21
650
-================================
654
- - Host Information discovery (Windows, Unix, etc) now gathers the SysDescr,
655
- usually it contains the Kernel and Host name, as this field is tracked, you will now when
656
- host changes kernels, or host name.
657
- Requested by: Gregory Leggett
659
- - New general interface option to disable Status Polling completly.
660
- This way all graph information will be polled, but status will not, not even syslog messages
661
- for that interface. The interface upper-right corner will be gray.
662
- Requested by: Tony Nelson & Others.
664
- - Application interfaces now include the Memory used by the Application, with graph.
665
- Requested by: Doug Toombs
667
- - New Calendar for Reports. We're now using 'The Coolest DHTML Calendar'
668
- from http://dynarch.com/mishoo/calendar.epl , Behavior is better now.
670
- - Profile Option to disable DHTML informational boxes.
671
- Requested by: Travis Johnson
673
- - Profile option to restric interface viewing by customer, much like the Base Map option.
674
- Requested by: Travis Johnson
676
- - New Trigger field to match by Map.
677
- Requested by: Alexandru Thomae
679
- - New Trigger Field to match by Customer.
680
- Requested by: Travis Johnson
682
- - UDP Port Monitoring, much like the TCP, but we use NMAP for testing, because it gives better results.
683
- Based on design by: Yery Tannus
685
- - New Option to show the temperature in Farenheit
686
- Requested by: Travis Johnson
688
- - Added Mask to the Physical Interfaces options.
690
- - New AD Policy option to don't alert if an interface is not in host (deletion).
692
- - New Poller for easier handling Status MIB variables.
695
- - Add 'nolog' to the autodiscovery_interfaces to avoid creation of events, useful for debugging.
699
- - Marked Disabled interfaces now don't count in the Status of a host in the Hosts Screen.
700
- Requested by: Chris Tuska
702
- - Easier event ACK'd now works as it should have been in 0.7.7
703
- Reported by: Thomas Mangin
705
- - Syslog Consolidator works again with the * and D variables.
706
- Reported by: Mario Spendier
708
- - Session locking bug, now JFFNMS GUI should feel a lot faster.
710
- - Event Filter fixes.
711
- Reported by: Chris Landegent
713
- - TCP Connections tool fixes.
714
- Reported by: Thomas Mangin
717
- Reported by: Thomas Mangin
719
- - Popups & MiniSLA deprecated. No one used them.
721
- - Interfaces are now sorted using Natural Sort, this will make finding an interface by name easier.
723
- - Better Filter behavior on the Hosts Screen.
725
- - AD Output now includes the Interface Name.
727
- - SNMP Counter function now removes the ( and ) characters from output.
729
- - DOC: Windows Install, added creation of c:\tmp folder
732
-JFFNMS 0.7.7 Released 2004-04-05
733
-================================
737
- - New Login Screen, a new DHTML login screen, is selectable from the setup.
738
- You can also add a logo to the page. This new method uses sessions/cookies to store a session id,
739
- and internall is faster because we don't have to auth in every page request, which made some IDS ring.
740
- An event is created when a user tries to login successfully or not.
742
- Old method (HTTP AUTH) is still there, and will continue to be supported.
744
- - New Tools Framework.
745
- This system allows changes to be made to interfaces on the host.
746
- Examples provided for Changing the Interface description and Admin Status on Routers and
747
- to list or finish TCP connections on agents that support that feature (Cisco's TCP MIB).
749
- A new event (Tool Action) is generated everytime something is changed using this tools.
751
- - New Profile option to select which "View" Page do you want to see when you login.
753
- - New ToolBox Interface Alarms widget. This allows access to more pages related to the selected interface.
754
- Like Tools, Edit, Events and Performance. This is shown when you pass over an interface in the HTML or DHTML view types.
756
- - New Event Type "internal" for JFFNMS related events. Also added a new option to hide the Host Name in the events viewer.
757
- This event is used by the new Login Screen.
759
- - 'Or' Type matching for Triggers.
760
- Requested by: Alexandru Thomae
762
- - Poller, Autodiscovery, and Satellite Distribution now verifies that no other process with the same name are running.
763
- To avoid duplicate processes. This works only on Linux.
765
- - New Poller Helper, checks DMII and Alarmed interfaces, this allow faster UPs and faster poll of imporant interfaces.
766
- Requested by: David Lima.
768
- - Alarm Backend now supports to set the time-span between down and up events,
769
- and the value to assume (or not) when no result is given by the poller.
770
- Also, better (human readable) return values are given.
772
- - RRD Backend again supports update on one DS by call.
773
- This is to make simplier poller groups when only one value is graphed.
774
- And also to check if performance is better than doing all the DS at the end.
776
- - New poller option to poll just the DMII interaces on a host.
777
- Requested by: David Lima.
779
- - snmp_interfaces_status_all now checks if the host has more than 30 interfaces before doing the walk,
780
- if it does not, then uses normal snmp_get's
782
- - When ACK'ing summarized events ('Message Repeated N times'), all events are now ACKd rather than just one.
783
- Requested by: Thomas Mangin
785
- - Interfaces Alarm Screen now autodetects the screen width at start, so no more 'Big Screen' View types.
787
- - New folder ('engine/shared') to store shared code (ie. that may be required for pollers and for tools),
788
- and a new function to call them jffnms_shared().
790
- - Satellite now works with HTTPS, new https_post_message function, that uses the CURL extension.
791
- by: Chris Landegent
793
- - Allow interfaces to be checked only every X minutes (N > 5), useful when used with the TCP Content Checking.
794
- Requested by: Chris Landegent
796
- - Anonymous customer logins. Just define a customer with no password.
797
- Example URL: http://youserver/jffnms/?user=customer_username&pass=&logout=1
798
- Requested by: Chris Tuska
800
- - Direct Graph download. Useful for embedding them on a site, examples:
801
- - Get the traffic graph from one interface:
802
- http://youserver/jffnms/view_performance.php?interace_id=332&want_graph=traffic
804
- - Get the Aggregation Traffic graph of a whole host:
805
- http://youserver/jffnms/view_performance.php?host=6&want_graph=aggr&graph_type=traffic
807
- - Use with the Anonymous logins
808
- http://youserver/jffnms/view_performance.php?user=customer1&pass=&logout=1&interace_id=332&want_graph=traffic
810
- - Syslog Consolidator has a Position parameter now, to handle the order on which the syslog RegExps are tried.
812
- - New Syslog Event Type to match normal linux syslog messages.
814
- - DOC: Added Another Example on using Syslog-NG
816
- - GUI: ACK'd events show differently on the Event Viewer
817
- Requested by: Thomas Mangin
819
- - Storage Threshold can be configured per interface now.
820
- Requested by: Thomas Mangin
822
- - Cleanup Raw tables now supports deletion of N days old Router Configs, N is controlled via setup.
823
- Requested by: Chris Tuska
827
- - DOC: Fixed the documentation about the PHP trap_receiver.
829
- - Alarm table now allows bigger alarm_state ids.
831
- - Syslog Consolidator now checks for Literals.
833
- - Events Screen now does escaping of HTML meta-chars.
835
- - Removal of un-matched < > variables in events.
837
- - Tacacs Consolidator now checks the Normal IP too, rather than only the Tacacs IP of the host when matching.
838
- Requested by: Thomas Mangin
840
- - Severity Level Filter now works again.
841
- Reported by: David Lima
843
- - NTP Discovery now verifies if the Host has and IP address.
845
- - NTP Poller Now checks for timeouts.
847
- - Exp_poller now works correctly with this version.
849
- - Removed old snmp_interfaces_status
851
- - Old 'Event Tools' depreacated. It was an old code that nobody used.
853
- - Old perl trap_receiver depreacated.
855
- - GUI: Event Screen code cleanup, uses more CSS and the resulting file is smaller.
857
- - GUI: Better Interface Selector in the Triggers screen.
859
- - GUI: Better Recursive URL cleaner.
861
- - Manual Add is now show event if the host does not have any interface of that type.
863
- - We now only distribute the SQL Diffs of the past to the current version, not older files.
865
- - Coding Style changes and Call By Reference bugs fixed.
868
-JFFNMS 0.7.6 Released 2004-02-22
869
-================================
873
- - TCP Port Content (port response or URL content) can be checked against a Regular Expression to validate it.
874
- Requested by: Richard Sears
876
- - Manual Add of TCP Ports, now its possible to add any port number you want manually,
877
- or to set up the same port a more than one time with different testing Regular Expressions.
879
- - CPU Usage and Load Average SLA for Linux Hosts.
881
- - CPU and Memory Usage SLA for Cisco Routers.
883
- - Graphing of the number of Application Instances.
885
- - NTP syncronization testing, it reports when a NTP server is syncronized or not to another peer. (it requires the ntpq program)
887
- - GUI: Added New "only when filtering" option to Event Types, to better manage its showing.
888
- Requested by: David Lima
890
- - GUI: New DHTML View Type for Interfaces and Hosts, it doesn't use png's anymore for the boxes, its all CSS and JavaScript,
891
- Tested with Mozilla/Firebird/Firefox on Linux and Windows, and with Internet Explorer 5.0 and 6.0
893
- - GUI: New option to disable refresh on the Interfaces/Hosts Screens.
894
- Requested by: Lucas Iglesias
896
- - GUI: New option to diable the refresh of the Events Screen more easily.
897
- Click on the 'round arrows' icon to stop the refreshing, and click on the 'page refresh' to enable it again.
899
- - GUI: Faster event Acknowlodge, without selecting a Journal.
900
- Requested by: Aaron Aubman
902
- - New Physical Interface option to avoid the automatic Admin Status modifications.
903
- When you mark "Fixed Admin Status" the show type of the interface (Show, Mark Disable, Don't show) will no be modified by the poller.
904
- The Default is not checked, so the poller will automatically modify the Admin Status/View Type of the interface.
906
- - New trap_receiver coded in PHP, now you can use the trap functions with postgresql, because it uses the JFFNMS DB abstraction.
909
- - New Way to use Satellites "Local Master", this means the Satellite will poll the values, store them locally AND send it to the master too.
910
- Requested by: Juan Rojas
912
- - Added Interface Type to the list of Trigger Rules Fields, to match by the interface type.
913
- Requested by: Ray Hatch
915
- - API: Its now possible to poll more than one interface on the same host via the command line (ie for testing)
917
- - API: Added option to use HTTP/1.0 or HTTP/1.1 in HTTP queries
919
- - API: The jffnms-snmp system (plugin's for net-snmp) now caches its response for one minute to ease the load on the server.
921
- - API: Its now possible to setup Default SLAs per interface type
923
- - GUI: Double Clicking on a Graph Type on the Performance Screen, will show it without needing to click on the 'View' Button.
925
- - GUI: Its now possible to select a Default View type in the User profile (ie Normal, Text, etc).
927
- - GUI: New button in the top frame to reload the current selected view
928
- Requested by: Thomas Mangin
930
- - DOC: msyslog & SLA configuration example documentation
931
- by: Chirstian Zimmerman
935
- - Dates in graphs are checked to be sure they are valid.
937
- - BGP Verify Number poller removed, its no longer needed.
939
- - When adding a new interface from Manual Discovery, the interfaces screen now its correctly positioned.
940
- Reported by: Ray Hatch
942
- - Autodiscovery and RRD Analyzer now check the "poll" option in the interface and the host they are working on.
944
- - Last Poll Date is now handled as an added poller/backend because it shares the same structure. (its now injected from poller_plan)
946
- - Cosmetic Changes to Config Transfer Types, and Autodiscovery Policy
947
- Requested by: Thomas Mangin
949
- - Performance Graph Title was badly calculated.
950
- Reported by: Pierre-Damien Gatouillat
952
- - Autodiscovery now checks if the host is localy managed or satellite, this way AD only runs over the hosts this Satellite manages.
954
- - Changed some Satellite Calling functions to make correct use of the 'params' field.
956
- - Interface Type RRA Structure now included in the default field values.
958
- - Fixed handling of & and | in the Satellite Query content.
960
- - Customer Username can now be 60 characters long
961
- Requested by: Thomas Mangin
964
-JFFNMS 0.7.5 Released 2003-12-16
965
-================================
969
- - Per Interface-Type Fields:
971
- Until now every interface had the same fields, for some interface types this was ok, but others required more or different fields,
972
- so this new feature allows different fields per interface type.
973
- ie: Linux TC now has Rate and Ceil fields, and its not using the BW in/out fields, TCP Ports don't have IP address or BW, etc.
975
- This was one of the big "barriers" in the internal design of JFFNMS, so I'm glad I finally made it configurable/modular.
977
- - DB: 3 new tables: interface_types_fields, interface_types_field_types, and interface_values
978
- - GUI: Manual Discovery has a new layout and includes all the specific interface fields.
979
- - GUI: View Interfaces shows all the 'description' fields and has a better text layout
980
- - API: interfaces_update updates every interface value not just the interfaces table.
981
- - API: Events Text now can include any interface type specific fields
982
- - API: Poller Parameters can include any interface type specific fields
984
- - AD Tracked Fields are set from the Interface Type Fields.
985
- - SLA: now you can use SLA expressions with the name of each interface type specific field
987
- - Changed all discovery, poller and backend scripts to use the new and specific fields, ie:
989
- - ALL: changed 'descr' fields to 'description'
990
- - Physical: Pings to Send configurable per interface
991
- - BGP: Separated field for Local IP , Remote IP and ASN values.
992
- - Applications: Number of Instanses stored in DB.
993
- - Linux TC: Specific Ceil and Rate fields.
994
- - Storage: Specific Size Field (it was bandwidth before)
995
- - TCP: Check content option now allows for a specific URL to be included
996
- - Reachability: Now you can configure the fping parameters per interface
997
- - Verify Interface Number Backend now uses specific Index Field.
998
- - RRD Backend gets the RRD Structure from the Interface Type Fields.
1003
- * If you have "custom" interface types, please read the UPGRADE file carefully
1005
- * By default we not 'track' the network interface's description via autodiscovery, so if you don't want to loose
1006
- your custom interface descriptions, please disable the field tracking via the Polling & Discovery=>Interface Types Screen.
1008
- - All AD changes to an interface are summarized on one event.
1010
- - Cleanup old Events and Alarms integrated to cleanup_raw_tables.
1011
- - the number of days is configurable via setup.php (Defaults to 7 Days of Raw Events, and 60 Days of Normal Events/Alarms)
1012
- - We try to repair the tables using a REPAIR/OPTIMIZE or VACUUM command at the end. This is to avoid index problems.
1014
- - Per Host 'Polling Enabled' Option to disallow polling of all host interfaces more easily.
1015
- Requested by: Richard Sears
1017
- - Host View option now acts over the View option of its interfaces, so if the Host is in Don't show or Mark Disabled, it will look as
1018
- all its interfaces where in the same state.
1019
- Reqiested by: Richard Sears
1021
- - Experimental Poller (for networks with a lot of hosts)
1022
- A new polling system that keeps a number of pollers running, and distributed the polling load by interface to them.
1023
- This allow us to poll a lot of hosts without the problems of lauching one poller for each host. This is still experimental, don't use
1024
- it yet for production enviorments. It Requires the SHMOP and PCNTL PHP Modules to work.
1025
- By: Anders Karlsson
1027
- - RRD_Analyzer: SLA is now a seprated analyzer, this mimics all other plugin scripts, SLA still the only one implemented.
1029
- - When a Network Interface (IFMIB) has AdminStatus 'down', it will be set to 'Mark Disabled' automatically,
1030
- also when the interface is back in AdminStatus 'up', it will be set to 'Show'.
1031
- Requested by: Richard Sears
1033
- - GUI: Interface Viewer (Status Map) now includes a link to the interface editor
1035
- - GUI: Graph legends now include the Site Name.
1037
- - GUI: Alarmed Interfaces view now includes the Host Name of the interfaces in a new line
1038
- Requested by: Chris Landegent
1040
- - GUI: When inside a Host in the Interface Viewer, clicking on the "card" (gray) box will show all the graph for that interface type
1042
- - GUI: Added the Current and Last Polled Date to the Performance Viewer
1043
- Requested by: Smith Chen
1045
- - API: Added fetch_ds() method to the interfaces class, to allow an RRDTool Fetch remotely.
1047
- - API: Temporal Buffer Backend supports calling the same variable more than once, until it has a value.
1049
- - API: Poller Plan now allows to filter by type
1051
- - API: Interfaces_Add can use an array as parameter to define more than the host_id of the new record, but only interface table fields
1053
- - UTILS: Added Debug option to jffnms-snmp, to check the output tree.
1057
- - Linux TC regexp fix to allow leaf and prio options
1060
- - Better Autodiscovery Output with specific interface type fields.
1062
- - Better Handling of subinterfaces (VLAN, FrameRelay, etc)
1064
- - Removed some 'extract()' calls in graph's that were not needed.
1066
- - Added more colors to the TC Aggregation Graph.
1068
- - Added more descriptive names to 'View' options in Administration
1070
- - Windows CPU Polling now doing a walk of the CPUs tree to get the avarage usage of all processors
1071
- Report and Fix Concept by: Chen from Taiwan
1073
- - Zone filter now works again.
1075
- - Don't Discover the Reachability Interface if the fping executable is not set-uid.
1077
- - Fix fping response when the IP is in the local subnet and its unreachable (read the last line)
1078
- Reported by: Ben Lentz
1080
- - Cisco MAC Accounting Interfaces now include a unique indentifier.
1082
- - BGP4 MIB implementation fixes, the index is now better calculated to be unique, so no AD problems occur.
1084
- - Alarm Editor is back (under Internal Configuration=>Reports)
1085
- Requested by: Rob Laidlaw
1087
- - Fixes SMS Client action message creation to include the interface data, and to trim the message to 140 chars.
1088
- Reported/Fixed by: Ben Lentz & Yuri Krichevsky
1090
- - Maps List is now in a Select box, because if you have a lot of maps, or long names, you loose the View Types section.
1092
- - API:DB some internal modifications, query doesn't die on failure, it tries 5 times, then it returns, but it doesn't die.
1096
- - Import/Export (distribution) now also updates records on changes, not just deletes and inserts a new one
1098
- - Setup: don't allow " ' & | # = / characters in the fields (SF BUG 841139)
1099
- Requested by: Mark Burdick
1101
- - Cisco CPU Poller now uses the 5 Minutes CPU utilization, rather than the 1 min OID (SF BUG 841140)
1102
- Requested by: Mark Burdick
1105
-JFFNMS 0.7.4 Released 2003-10-13
1106
-================================
1110
- - Reachability Interface Type
1111
- Using fping (http://www.fping.com) we can now monitor hosts via ICMP (ping) and graph the RTT and PL from
1112
- the JFFNMS server. It also issues events when the PL is over a treshold. This plugin will not work on Windows.
1113
- Requested by: a lot of people.
1115
- - Linux Traffic Control (tc) Support
1116
- Using our own net-snmp extension (pass-type) installed on the Shaper Box you can see each Class Bandwith Usage,
1117
- including aggregation to view all usages on the same graph. Tested only with HBT.
1118
- Scripts and example configuration in docs/utils/jffnms-snmp/ .
1120
- - Configurable Interface Field Tracking.
1121
- Now is possible to track other interface fields rather than the name, for example the description.
1122
- Added BGP Description Tracking.
1123
- Requested by: Richard Sears
1125
- - TCP Content Checking.
1126
- The TCP Poller now also check for a valid response in HTTP/HTTPS/FTP/FTPS ports using fopen().
1127
- Until we get Per Interface Type Fields, configuration is done via the description field.
1128
- ie: http|/jffnms/admin/adm/test.php
1129
- ie: ftp://testuser:testpass@|/test.txt
1130
- ie: https|/jffnms/admin/adm/test.php
1132
- 'http' tells the poller to use the HTTP protocol and whats after the | specifies a page rather than the default (/).
1134
- Requested by: Richard Sears
1136
- - Added the SNMP Auth Failed Trap.
1138
- - Added Acknowlodge Field to Express Filter.
1139
- Requested by: Craig Small
1141
- - Added Creation, Modification and Last Poll Time Stamps to the Interfaces table.
1142
- All this information is useful when looking for something wrong.
1144
- - Trigger rule to match the ongoing duration of active alarms (includes new consolidator process).
1145
- By: Anders Karlsson
1147
- - News Section included in the Start Page.
1149
- - Support Client Only in Satellites (just incoming queries).
1151
- - Added Example on how to use Satellites, in docs/utils/satellite-client.php
1153
- - Better support for Juniper Routers (Based on M20): Consolidate Interface List and LowerLayerDown Support.
1154
- Requested by: Richard Sears
1158
- - Added BASE64 Encoding to API:rrd_grapher() and BASE64 Decoding to GUI:performance_graph()
1160
- - When No Zone Image is configured the Events screen doesn't try to show it.
1162
- - When no interfaces were alarmed the 'Alarmed Interfaces' View showed all interfaces, now its fixed.
1163
- Reported by: Kevin R. Armstrong
1165
- - RRDTool Graph now returns the real result of the command.
1166
- Reported by: Anders Karlsson
1168
- - Fixes to poller_plan_next to replace all poller parameters
1170
- - Problem with changing Fullname or Router Access to User, now its not needed to re-enter the password
1172
- - Support WDDX over TCP in Satellites.
1174
- - RRD Files are now (back again) deleted when the interface is deleted.
1176
- - Now we check if allow_url_fopen is set to On in setup.
1178
- - Changed JFFNMS URL to http://www.jffnms.org
1180
- - Fixed Input Error Rate Graph and SLA calculations (Total Input Packets = Input Packets + Input Errors)
1182
- - API:DB added db_free function
1183
- By: Anders Karlsson
1185
- - Make sure most public API functions return some value (breaks satellize otherwise).
1187
- - More separation between API and GUI code.
1189
- - Discovery_none script now doesn't return an error, just an empty list, to use when a new interface type does not have a discovery system.
1190
- Requested by: Craig Small
1192
- - New Database entries on system tables start with id 10000 from now on, so we can add more things without interfering with
1193
- user-created internal configurations, like new Interface Types
1196
-JFFNMS 0.7.3 Released 2003-08-02
1197
-================================
1201
- - Host Config Downloader Rewrite:
1202
- Modular, More Secure and Better Error Reporting (via log, event and alarm)
1203
- by: Javier Szyszlican Ideas from: Michael Samuel
1205
- - GUI: Performance Viewer: Added 'Last 2 Days' to Time Span Options, Multiple Graph Selector, Graph Scale Legend included in IMG ALT
1206
- Requested by: Juan Rojas (TIBA) by: Javier Szyszlican
1208
- - SMS via Mail Action: Modified Email Action for shorter messages.
1209
- Requested by: Michael Orth by: Javier Szyszlican
1211
- - SMS via Modem Action: send SMS via modem with SMSClient (http://www.smsclient.org/)
1214
- - GUI: Interface Viewer Reworked and Modularized:
1215
- - View Interfaces, View Hosts and View Maps use the the same engine (but different sources),
1216
- this also means that you can now view Hosts and Maps in Text Mode also.
1217
- - 'Performance View' is nicer now, and it can also use dynmap.
1218
- - 'Text View' now shows all the links and it has a better layout
1220
- - Temp Files Cleanup Script for Unix
1223
- - Get Interfaces (Manual Discovery): Show Interfaces not found in Host but found in the DB.
1225
- - Support for Cisco Catalyst Config Download
1226
- Thanks to and Requested by: Paul Stewart by: Javier Szyszlican
1228
- - Logging is disbled by default, and the files now don't have the date in their name.
1230
- - New Engine Temp Folder, to store Engine (poller, autodiscovery, etc.) Temporary Files.
1232
- - TCP Port Discovery now uses the New Engine Temp Folder.
1234
- - API: Graph handling was put in the engine, and a wrapper function (performance_graph in GUI) was created.
1235
- Now graphs are stored in the Engine Temp folder, read, deleted, and returned as a variable to the GUI, which
1236
- stores it in Temp Graph Folder and allows the browser to see it.
1238
- - GUI: Some Graphs now show the 'In / Out Flipped' Legend, to let the user know the graph Input and Output are inverted.
1239
- Requested by: Juan Rojas (TIBA) by: Javier Szyszlican
1241
- - SNMPTraps: the traps consolidator now supports placing literal data in the SNMP Trap Rules screen (like 'down' in the State field)
1242
- Also some rewrite of the code, and handling of Up's and Down's in numeric mode
1244
- - GUI: Behavior Change, if the Events Frame does not exists (ie. Hosts, Maps, Interfaces WITHOUT Events) don't display a new window.
1245
- Requested by: Rob Laidlaw
1249
- - Fixed TCP Port Discovery to only return Open TCP Ports, because Validate in AD is unchecked for feature reasons.
1250
- Reported by: Daryl G. Jurbala by: Javier Szyszlican
1252
- - Changed Cisco EnvMIB Discovery (Voltage, PowerSupply, Temperature) to check for status, and
1253
- to give a more generic Interface Name
1254
- Reported by: Daryl G. Jurbala by: Javier Szyszlican
1256
- - Fixed Customer Login when JFFNMS is installed in the Document Root (relative path /)
1257
- Reported by: Brian Watters
1259
- - Fixed Storage Interface Type to return the Device Type String from hard-coded values if the MIB doesn't include them (return OIDs is set).
1261
- - Fixed Host Information Interface Type to convert 'enterprises' to its OID when comparing (return OIDs is set).
1263
- - Smokeping Internal Number Tracking Fixes
1266
- - Don't send the Alarm's 'Date Stop' Field on a Down Alarm in Email Action
1268
- - PgSQL 7.3 fix in UnAck Filter (changed '' for 0)
1270
- - PgSQL 7.3 fix in insert_alarm, don't include zero-lenght string for referer_stop
1272
- - PgSQL fixes (changed " for ') in interface_filter and cleanup_raw_tables
1274
- - Fixed TCP Number of Connections Poller for use with NET-SNMP (not absolute OIDs in the returned array key)
1276
- - Physical Interfaces Discovery now puts the correct Name for Cisco VLAN Interfaces (IOS 12.2.16b)
1277
- Reported by: Lucas Iglesias (TIBA) by: Javier Szyszlican
1279
- - Autodiscovery now informs the New Interface Name when the AD Policy dont allow the name to be changed
1281
- - Fixed Physical Interfaces Status Pollers and Discovery to not depend on the MIBs values
1283
- - Packets Graph does not use the Flip Graph option anymore.
1285
- - Fixed interface_shortname_and_card() to manage a new case when the interface[pos] is not numeric for Cisco ENVMIB
1287
- - snmp_get now tries 2 times to get the requested data.
1289
- - GUI: Administration Menu Internal Code and Organization reworked.
1291
- - GUI: First,Prev,Next,3Next Options Menu now is fixed size, the options don't change places.
1292
- Requested by: Alejandro Alvarez (TIBA)
1294
- - Fixed crypt() usage in Authentication
1295
- Reported by: Michael Samuel
1297
- - Internal Messages Framework Deprecated.
1299
- - Disabled the TIBA TT plugin. You have to write your own TT plugins.
1301
- - Fixed more NET-SNMP returned values handling
1303
- - Fixed most of the functions that use the DB from the GUI, only 2 left. Added more API Classes, and fixed others.
1305
- - Cleanup of unused GUI functions (due to the migration to API Classes)
1307
- - Check if the DB module is loaded before testing the connection for setup in db_test.
1309
- - DOCS: Fixes and additions to the Windows Install Procedure, also start of the Windows Upgrade Procedure.
1312
- - Zone Image (flag) is not longer Required, now is optional.
1315
-JFFNMS 0.7.2 Released 2003-05-27
1316
-================================
1319
- - Cisco Temperature (with graph), Voltage and Power Supply Monitoring.
1320
- By: Anders Karlsson
1322
- - Internal: Support for more alarm_states, now pollers and events can return any state value
1323
- Already Implemented for tcp poller (up,down) and Applications (running, not running)
1324
- Requested: Anders Karlsson
1326
- - Internal: the Alarm Backend can get extra info from the poller with | as the separator
1327
- to include it as the info of a new event.
1329
- - Cisco SA Agent (Service Assurance) (Round Trip Latency, Jitter and Packet Loss)
1330
- By: Anders Karlsson
1332
- - The TCP Poller now tries to read 1 second of data from the open socket to report it in the events.
1334
- - New Autodiscovery Policy to allow adding of interfaces without checking if they have an IP Address (for Switches)
1336
- - NetSNMP Agents added to UCD-SNMP System Interface Type
1338
- - Physical Interface Status is now gathered with a new poller which stores all the table and then processes it.
1339
- By: Anders Karlsson
1341
- - Added in-development tools, an mib parser and an sql update generator (internal)
1343
- - Added InfoBox explaining the alarms in the Hosts View.
1345
- - Hosts now can be hidden or marked disabled like interfaces (to hide old routers)
1347
- - Added Refresh link to the menu interfaces list.
1349
- - New Mailing List Archives at: http://marc.theaimsgroup.com/?l=jffnms-users
1351
- - Added Storage Aggregation (All Selected Storage Interfaces in the same graph)
1353
- - Storage SLA alerts when the Used Space is more than 80%, its autoselected on every new Storage Interface.
1356
- - Satellites understands SOAP, you can talk SOAP with the satellite.php to call any method of any class.
1361
- - State Report didn't show correctly the duration of alarms which lasted more than 24hs.
1362
- Reported: Kevin R. Armstrong
1364
- - Missing Check in hosmib_apps poller caused error when the host had no snmp daemon.
1365
- Reported: Larry Burton
1367
- - Dont show RTT/PL in state report on interfaces which don't have them.
1369
- - Some bugfixes to allow use of net-snmp v5.
1371
- - Modified autodiscovery_interfaces for better output and now it uses alarm_lookup to see if somethins is up or down
1373
- - Modified the tcp_ports discovery to answer open or closed, because discovery now understands them via alarm_lookup
1375
- - Poller Position is now included in the command line parameters when forking poller.php
1376
- Reported: Nigel A. Taylor
1378
- - Changed Interface Types Order, for manual Discovery
1380
- - Performance Graphs now works in paths with dots.
1381
- Reported: Peter Burgstaller
1383
- - Autodiscovery now let you set any interface field from the discovery script's (like slas, clients, etc)
1385
- - Autodiscovery can now be called with a second command line parameter to only discover one interface type (for debugging)
1387
- - New Autodiscovery Policy options to check if the state is UP, and if the IP Address is valid. (both checked for all except the new policy for switches)
1389
- - The Cisco Ping Pollers where using the old buffer, changed to the new one.
1390
- Reported: Oliver Kuhn
1392
- - Coding Style Fixes to get SOAP working, mostly undeclared variables and constant array keys
1393
- By: Anders Karlsson
1395
- - State Report now shows only the customer, map, type, host or interfaces selected.
1396
- Reported: Kevin R. Armstrong
1398
- - Added Zone Image (flag) to the Hosts View.
1400
- - Added Images of More Coutries Flags in the Full Install.
1402
- - Modified view_interfaces card detecting code to handle ie. Tunnel0, Tunnel1 and eth0, eth1 as the same card
1404
- - Modified 'Mark On Map' tool to show only the host of the interface in selected.
1406
- - The syslog consolidator now checks for the host name and ip (for syslog-ng)
1409
- - More Flexible and Clean auth.php
1410
- by: Michael Samuel
1412
- - Customers are now allowed to see their State Report.
1414
- - Fix possible overwriting of unavailability array.
1416
- - Physical Interfaces Discovery and the Tacacs Consolidator didnt handle the ' character in a good way.
1417
- Reported by: Brian Watters
1419
- - Off-by-one RRD DS Position error fixed and now we use interface_name as the file name.
1422
- - snmp_walk now makes 2 tries to get the requested data.
1424
- - Changed INSTALL to allow PHP CLI work correctly from crontab (Current Working Directory Problems)
1426
- - rrd_analizer took the 0's as a value to calculate the averge causing bad readings.
1427
- Reported by: Dan Ratzlaff
1429
- - Some Fixes to clean some alerts when viewing JFFNMS using SSL
1430
- Requested by: TIBA Staff
1432
- - Quick/Bad Fix for the init - exim hash collition.
1433
- Reported by: Craig Small
1436
-JFFNMS 0.7.1 Released 2003-04-02
1437
-================================
1441
- - HostMIB Running Software Polling and Discovery
1442
- By: Anders Karlsson
1444
- - Events RDF Feed availble from http://<yourhost>/jffnms/events.php?view_type=rdf
1447
- - Raw tables cleanup script
1450
- - Added Latitude/Longitude fields to Host table (for future GIS Maps)
1451
- Requested: Anders Karlsson
1453
- - Added Filter to show only UnAck'd Events
1454
- Requested: Walter Brock
1456
- - Added 'Default Event Filter' Profile Option
1458
- - Added 'Events & Maps Refresh Intervals' Profile Options
1459
- Requested: Daniel Farinella
1461
- - Documentation on how to use syslog-ng with JFFNMS.
1466
- - strpos() haystack, needle inversion in syslog parser.
1467
- Fixed: Craig Small
1469
- - Bad Loop in Somekping Poller
1470
- Fixed: Craig Small
1472
- - Satellite Field is now a text label when listing in the Hosts Screen
1474
- - Changed order of Hosts from Zone, Name to Name, Zone
1475
- Requested: Lucas Iglesias
1477
- - Reworked interface_status its lot faster now.
1478
- Requested: Anders Karlsson
1480
- - Added interface_count and hosts_count for speed ups.
1482
- - Graphviz doesn't show the unknown host anymore.
1484
- - Removed Link to old Message System from the control.php, also disabled refresh becasue it was not needed.
1486
- - trap_reciever.pl does not mix the order of the OIDs now. Also changed the DB to reflect the real OID order.
1488
- - Fixed trap_reciever.pl RegExp to match multi-word values in OIDs
1490
- - Setup.php on Windows Escaped \ as \\, causing problems with RRDTool, now it replaces \\ with /
1493
- - Added ScrollBar and Set the height of the color_select.php row to be sure of their size.
1494
- Reported: Jack Snir
1496
- - Fixed Repeated 'control name' in select_color(), it was causing problems in IE.
1497
- Reported. Jack Snir
1499
- - Period Can't be 0 in get_availability, changed to 1 if zero, to avoid division by zero warnings.
1500
- Reported: Andrei Kovacs
1502
- - State Report now sets the default TO time to the actual time rather than at 00:00 today.
1503
- Reported: Andrei Kovacs
1505
- - Customers are now allowed to see the Graph Type Chooser, until we get more flexible on what can a logged in customer do.
1506
- Requested: Alexandra Alvarado
1509
-JFFNMS 0.7.0 - Released 2003-03-10
1510
-==================================
1514
- - New Syslog Message Processing System (support for RegExps and compatible with older definition)
1515
- by: Craig Small and Javier Szyszlican
1517
- - New SNMP Traps Processing System
1520
- - Tacacs+ Consolidator now Supports REJECT messages (minor changes also).
1522
- - Reworked State Report
1523
- - Internal changes to use new rrdtool functions
1527
- - New API for some rrdtool functions to get dynamic structure changes,
1528
- this includes cleanups in all graphs and every function that uses rrdtool.
1529
- Now every DS goes on a different file like interface-999-0.rrd this is handled by the rrd_mode field
1531
- - The Interface Map Views has been broken in pieces for the cleaness of the code.
1532
- This also helps to add a new Map View type. (htdocs/views/*)
1534
- - New Interface Map View on SubMaps (dynmap) allows you to change the position of
1535
- the interfaces in the map and to establish connections between them.
1537
- - Bulk Interface Add Feature in Manual "Get Interfaces" Option, it allows you to add a lot of interfaces with only a few clicks,
1538
- without using autodiscovery.
1540
- - Designated Main Interface(s) (DMII) : You can select an interface or map of interfaces which will be the Main ones for that host, this means:
1541
- if the DMII are all down, the polling of that host other interfaces will stop,
1542
- except for the DMII (to detect the UP again), this solves a domino or 'stacking' problem when some hosts are unreachable.
1543
- Also, a new event is generated when the Polling Fails because of DMII being down.
1544
- Requested: Larry Burton
1546
- - Added Packets Aggregation (useful to see how much packets per second your router is handling)
1548
- - New Interface Type for Windows Hosts (Servers), Number of Users, Number of Processes, Processor Utlization, and TCP Connections Graphs
1549
- Requested: Rob Laidlaw Information: Musfa Baig Coding: Javier Szyszlican URL: http://snmpboy.msft.net/
1551
- - New Interface Type: Cisco MAC Accounting, Polling and Graphing (ip accounting mac input, ip accounting mac output)
1552
- This allows one graph per MAC Address giving you accounting per machine in an Ethernet Segment. Experimental, Autodiscovery Disabled.
1554
- - Modified Linux Host Type: New Graphs and Pollers for Number of Users, Number of Processes, and TCP Connections Graph
1555
- Also Changed its name to UCD-SNMP Host, because we support FreeBSD (Need Testing) or other ucd-snmp implementations
1556
- with this Interface Type
1558
- - Modified Cisco Host: New Graphs and Pollers for TCP Connections Graph, and Accounting
1560
- - TCP Port Delay and Number of connections graph (aggregation too) (modified interface type)
1561
- Requested: Karlheinz Hagen
1563
- - Smokeping Integration (RTT & PL), Discovery, SLAs, Graphs
1566
- - Cisco IP Accouting Polling and Graphing (ip accounting output-packets)
1568
- - If no interfaces found in Manual Discovery Show the "No Interfaces Found" Message
1570
- - Cisco CPU SLA, SLA set to match at > 80%
1571
- Requested: Brian Watters
1573
- - Cisco Syslog Message: ACL Match
1574
- Requested: Alexandra Alvarado
1576
- - Cisco Syslog Message: CDP Duplex Mismatch
1577
- Requested: Alexandra Alvarado
1579
- - Cisco Syslog BGP Notification Message
1581
- - Added Profile option to not show the stats on the start page.
1583
- - Added Shortcuts to go bettween View Performance, Interface Administration and State Reports
1585
- - New FrameWork for Distributed Processing (Satellites)
1586
- Each Satellite is an jffnms in a different machine, this allows Distributed Polling for now
1587
- in the future this will allow to do syslog,trap,discovery an other in a distributed fashion.
1588
- Experimental, Needs Testing, Allows Load Balancing.
1590
- - Added Label at the Setup to know which config file are you using
1592
- - Added Option to Event Filter so now you can filter by Extra Info too (LIKE), useful for seaching in tacacs logs.
1593
- Requested: TIBA Staff
1595
- - Added Options to Event Filter to NOT get a field when it matches.
1597
- - Added the RRDTool Step value to the Interface Type options.
1598
- This is used when creating a new rrd file.
1600
- - Added a Favicon icon and some HTML meta tags.
1602
- - Setup.php now checks for Register_Globals to be set to On
1604
- - Added RRDTool Dump & Restore functions to API
1608
- - Wrong Query date compare in interfaces_status (typo from postgres changes)
1609
- Reported: Stanislav Gaydukov Fixed: Javier Szyszlican
1611
- - RRDTool Fetch Speedups (it was using too much memory)
1612
- Reported: Juan Rojas Fixed: Javier Szyszlican
1614
- - Verify length of info field in insert_event
1615
- Reported: Alejandro Alvarez Fixed: Javier Szyszlican
1617
- - Better handling of LIMIT on a pgsql query
1618
- Reported: Alejandro Alvarez Fixed: Javier Szyszlican
1620
- - Field type of interfaces.host was tinyint, now changed to int. (it was a typo)
1621
- Reported: Kevin R. Armstrong Fixed: Kevin R. Armstrong
1623
- - The Maps Interfaces GUI type changer didn't work right on Mozilla
1624
- Reported: Javier Szyszlican Fixed: Javier Szyszlican
1626
- - The Path of the TFTP windows .bat file was wrong.
1627
- Reported: Gregory A. Leggett Jr.Fixed: Gregory A. Leggett Jr.
1629
- - If no tcp ports were found on a host, the Manual discovery showed garbage
1630
- Reported: Javier Szyszlican Fixed: Javier Szyszlican
1632
- - Sounds where not working on the view_interfaces.php (Main Map).
1633
- Reported: Javier Szyszlican Fixed: Javier Szyszlican
1635
- - Off by 1 error didn't show events if only one is found.
1636
- Reported: Javier Szyszlican Fixed: Javier Szyszlican
1638
- - Events View All Option didnt show all the events.
1639
- Reported: Juan Rojas Fixed: Javier Szyszlican
1641
- - SQL LIMIT and OFFSET doesnt accept numbers with decimals, now rounded.
1642
- Reported: Javier Szyszlican Fixed: Javier Szyszlican
1644
- - State Report showed dates in Seconds, now in Hours:Minutes:Seconds
1645
- Reported: Javier Szyszlican Fixed: Javier Szyszlican
1647
- - State Report did wrong math in Total Values
1648
- Reported: Javier Szyszlican Fixed: Javier Szyszlican
1650
- - Java Map was deprecated.
1652
- - Availability Report was deprecated in favor of the State Report.
1654
- - Fixed SLA Processor (rrd_analizer) to take care of one line SLA's
1655
- Reported: Brian Watters Fixed: Javier Szyszlican
1657
- - Fixed Event Filter to Allow Search of Unknown Events
1659
- - Disable refresh when you go back in the Events Screen
1661
- - Behavior Change: when an interface/host is not reachable (non response) is taken like a down response.
1662
- This affects the report generation also... please test this and give me feedback so we could know which is best.
1664
- - Added Verification of SNMP community to a few pollers
1666
- - Fixed Typo in menu_interfaces
1668
- - Fixed Typo in db_copy_table()
1670
- - Changed Most Event Filter Fields to the LIKE expression rather than equal (=)
1672
- - Added Default Customer to the Get Interfaces Option
1674
- - New Include File Loader, fixed for multiple installtions
1677
-JFFNMS 0.6.9-2 - Released 2002-09-21
1678
-====================================
1682
- - Modified some SQL querys to make them compatible PostgreSQL
1683
- Postgres support now works.
1685
- - Fixed a typo in trap_receiver.php (the name)
1687
- - Make RRDTool functions check for the .rrd file.
1689
- - Converted some GUI selects to the new API.
1691
- - Fixed a function name change in filters.
1694
-JFFNMS 0.6.9 - Released 2002-09-07
1695
-==================================
1699
- -Triggers Framework:
1700
- Parse New Events or Alarms with a condition,
1701
- and triggers an Action.
1703
- -Actions Framework (email for now)
1705
- -Host Default Customer
1706
- Assigns a default customer to an autodiscovered interface.
1708
- -Host TFTP Config Get Type included in DB.
1710
- -TFTP Get Hosts Changed its name. (please update crontabs)
1712
- -TFTP Config Upload Tool (external utility)
1714
- -Use Interface Bandwidth parameter for number of CPU's on CPU Information.
1716
- -SLAs: more verbose debug.
1718
- -SLAs: Updated Rules.
1720
- -Maps: Mark Disabled now affects Maps also.
1722
- -GUI: Events: Summary of Identical Events.
1724
- -GUI: New Interfaces Views (supports bigger graphs)
1730
- -Documentation fixes.
1732
- -Changed field 'tipo' (spanish) from events table to 'type'.
1734
- -Reorganization of some API Classes.
1736
- -FreeBSD (PHP 4.2.2) $_SERVER variable Changes.
1737
- Reported: Nicolas Huret Fixed: Javier Szyszlican
1739
- -Autodiscovery: Verify more before Modification.
1741
- -Consolidate sub-programs name change.
1743
- -API Alarms: Fixed Filters.
1745
- -API Events: Variable resolution now is internal, not in GUI.
1747
- -API RRDTool: verify if .rrd exists before tune.
1749
- -Ticket: Some changes.
1751
- -GUI: Interfaces '1 record only' fixes.
1753
- -GUI: Standard Admin Fixes.
1755
- -GUI: Updated some selects to objects.
1757
- -GUI: changed RRDTool Graph grid color.
1759
- -Alarm Viewer is gone, it didnt work.
1763
-JFFNMS 0.6.8 - Released 2002-07-27
1764
-==================================
1768
- -Windows 2000/XP Support.
1769
- JFFNMS works correctly on Windows, all functions work
1770
- except TCP Port Autodiscovery (I need a windows nmap).
1771
- Install Guide Included.
1773
- -New Graph Types Framework
1774
- Converted all graphs to the new format.
1776
- -New Interface Types (by Robert Bogdon):
1778
- Linux Processor Usage
1779
- Linux Load Average
1780
- Solaris Memory Utilization
1781
- Solaris Processor Usage
1782
- Solaris Load Average
1784
- Includes Autodiscovery, Graphs and Poller Groups.
1786
- -Better Host Information Identification
1787
- Based on Robert Bogdon code.
1789
- -Added Drops (<drops>) variable to SLA's
1791
- -Better SLA presentation, more flexible and useful output.
1792
- Requested by: TIBA Staff
1794
- -New MiniSLA's, SLA verifications every 5 minutes (optional)
1795
- Requested by: TIBA Staff
1797
- -New Journaling Framework, better handling of comments and
1798
- Reporting/Editing.
1800
- -New Trouble Ticket Integration Framework, send Journals to your TT System.
1803
- -Interface Selector, you can now select by Interface Type and
1804
- the View all button is back is Wizard Mode.
1808
- -Documentation fixes.
1810
- -PHP Time Limit Handling implemented.
1811
- Reported: Micheal Orth Fixed: Javier Szyszlican
1813
- -Quotes Handling in Tacacs and TFTP
1814
- Reported: Alberto Passariello Fixed: Javier Szyszlican
1816
- -Changed snmp_interfaces to numerical OIDs.
1818
- -Take care of HexStrings and Quotes on Windows Agents
1820
- -Changed Default Speed of Snmp Interfaces to 128k because 0 makes no graphs.
1822
- -Changed $argv[] to _$SERVER[argv][] in engines.
1823
- Requested by: Someone running FreeBSD with PHP 4.2.1
1825
- -Fixed a typo in poller.php str_replace.
1826
- Fixed by: Robert Bogdon
1828
- -When creating a new Host, now the filter is to the seleced zone, not Uknown.
1830
- -Fixed some Setup Autoconfiguration options
1832
- -Move MiniSLA's and Messages to popups.php and popups/ directory
1834
- -New Graph Type Selection (performance) Algorithm
1836
- -Moved all RRD Related functions to api.rrdtool.inc.php
1838
- -Changed Host_Interfaces (aka Get Interfaces in Host Configuration) to only
1839
- show the interfaces types with records.
1841
- -Don't Show MultiEdit in Interfaces Administration when only one record is shown.
1844
-JFFNMS 0.6.7 - Released 2002-06-29
1845
-==================================
1848
- -When changing password the Router Access was disabled.
1849
- Reported: Mariano Schuler Fixed: Javier Szyszlican
1851
- -Handling of shutdown events, leaves interface down.
1852
- Reported: Lucas Iglesias Fixed: Javier Szyszlican
1854
- -Storage discovery broken in UCD-SNMP 2.4.4
1856
- -TCP Port Poller timeout, too short, increased to 8 seconds.
1858
- -Some Orders are inverted.
1860
- -API: better filter management in interfaces object. (status & list)
1861
- -API: Auth now on jffnms object.
1862
- -API: new delete_from_all method on map_interfaces object.
1864
- -Change Clock color to white in Events.
1867
- -New Interface in Rootmap status, you can mark the interface as disabled (grey).
1868
- -Add to Map option in Interfaces Editor.
1869
- -New Interface Selector (Wizard and Classic mode) (faster)
1870
- -Autoconfigurable Setup.php (Robert Bogdon)
1871
- -Use the OLD-CISCO-SYS-MIB for configuration retrival (optional) (requested by: Mike Hide)
1872
- -Wait 3 seconds before spawning new a process in autodiscovery_interfaces.php and poller.php (requested by: Robert Bogdon)
1873
- -New Poller: BGP Peer Interface Number (track when new bgp peer are added).
1874
- -New Views: Host All Interfaces (not only the ones with show in rootmap), Alarmed interfaces & events.
1879
-Please check http://sourceforge.net/tracker/?atid=444844&group_id=46041&func=browse
1881
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/conf/config.php jffnms-0.9.3/conf/config.php
1882
--- ../jffnms-0.9.2/conf/config.php 2012-03-04 13:43:11.000000000 +1100
1883
+++ jffnms-0.9.3/conf/config.php 2012-05-26 14:50:17.000000000 +1000
1886
/* This file is part of JFFNMS
1887
* Copyright (C) <2002-2005> Javier Szyszlican <javier@szysz.com>
1888
- * Copyright (C) 2011 Craig Small <csmall@enc.com.au>
1889
+ * Copyright (C) 2012 Craig Small <csmall@enc.com.au>
1890
* This program is licensed under the GNU GPL, full terms in the LICENSE file
1892
#error_reporting(E_ALL | E_STRICT);
1894
snmp_set_output_format(SNMP_OID_OUTPUT_NUMERIC);
1895
if (function_exists('snmp_set_quick_print'))
1896
snmp_set_quick_print(1);
1897
-define('JFFNMS_VERSION', '0.9.1');
1898
+define('JFFNMS_VERSION', '0.9.3');
1904
if ($key == 'logging_file')
1906
- if (!array_key_exists('type', $this->default_configs[$key]))
1907
+ if (!array_key_exists($key, $this->default_configs) ||
1908
+ !array_key_exists('type', $this->default_configs[$key]))
1909
$config_type='plain';
1911
$config_type = $this->default_configs[$key]['type'];
1914
break; # this lot dont get saved
1916
- if (!array_key_exists('default', $this->default_configs[$key]) ||
1917
+ if (!array_key_exists($key, $this->default_configs) ||
1918
+ !array_key_exists('default', $this->default_configs[$key]) ||
1919
$value != $this->default_configs[$key]['default'])
1920
$new_config .= "$key = $value\n";
1922
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/docs/unix/crontab jffnms-0.9.3/docs/unix/crontab
1923
--- ../jffnms-0.9.2/docs/unix/crontab 2010-11-09 21:20:49.000000000 +1100
1924
+++ jffnms-0.9.3/docs/unix/crontab 2012-03-27 20:40:58.000000000 +1100
1926
20 * * * * cd $JFFNMS && sh tmpwatch.sh $JFFNMS >/dev/null 2>&1
1929
-# Normal poller - run once (like old poller)
1930
-*/5 * * * * cd $JFFNMS && $PHP -q poller.php -o >/dev/null 2>&1
1931
-# Poller that stays in loop, like poller2
1934
+# Only uncomment one of the following. The -o flag will make it run only
1935
+# once then exit. It is better to use the first one
1936
*/5 * * * * cd $JFFNMS && $PHP -q poller.php >/dev/null 2>&1
1938
+#*/5 * * * * cd $JFFNMS && $PHP -q poller.php -c 0,20 >/dev/null 2>&1
1939
+#*/5 * * * * cd $JFFNMS && $PHP -q poller.php -o >/dev/null 2>&1
1941
# Interface Autodiscovery
1942
*/30 * * * * cd $JFFNMS && $PHP -q autodiscovery_interfaces.php > /dev/null 2>&1
1943
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/autodiscovery_interfaces.php jffnms-0.9.3/engine/autodiscovery_interfaces.php
1944
--- ../jffnms-0.9.2/engine/autodiscovery_interfaces.php 2012-02-14 23:10:39.000000000 +1100
1945
+++ jffnms-0.9.3/engine/autodiscovery_interfaces.php 2012-04-18 09:00:13.000000000 +1000
1956
function iad_get_hosts($host_id,$itype_id)
1958
+ global $opt_force;
1959
if ($host_id === FALSE)
1960
$hostid_match = '> 1';
1963
id, ip, rocommunity, autodiscovery_default_customer, autodiscovery, sysobjectid
1966
- hosts.id $hostid_match
1967
- AND hosts.poll = 1 AND hosts.autodiscovery > 1";
1968
+ hosts.id $hostid_match";
1970
+ $query_hosts .= " AND hosts.poll = 1 AND hosts.autodiscovery > 1";
1972
$result_hosts = db_query($query_hosts) or die ('Query failed - iad_get_hosts() '.db_error());
1974
@@ -175,27 +178,26 @@
1976
function iad_read_children(&$Parent)
1979
+ $read_timeout = max(time() + ENGINE_HEARTBEAT/$Parent->max_children,2);
1981
- while ($repeats--) {
1982
- $read_retval = $Parent->read_children();
1983
- if ($read_retval === FALSE)
1984
+ while (time() < $read_timeout) {
1985
+ if ($Parent->read_children('iad_read_callback') == FALSE)
1987
- if ($read_retval === TRUE)
1989
- // otherwise its something we parse
1990
- list($child_id, $child_data) = $read_retval;
1991
- switch($child_data['cmd'])
1994
- $item_id = $Parent->child_done_job($child_id);
1997
- $Parent->child_notdone_job($child_id);
2000
- } // while repeats
2001
-} //iad_read_children()
2005
+function iad_read_callback(&$Parent, $child_id, $child_data)
2007
+ switch($child_data['cmd'])
2010
+ $item_id = $Parent->child_done_job($child_id);
2013
+ $Parent->child_notdone_job($child_id);
2016
+} //iad_read_callback()
2020
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/common_child.inc.php jffnms-0.9.3/engine/common_child.inc.php
2021
--- ../jffnms-0.9.2/engine/common_child.inc.php 2011-04-15 09:46:32.000000000 +1000
2022
+++ jffnms-0.9.3/engine/common_child.inc.php 2012-03-09 22:56:51.000000000 +1100
2024
die("Cannot write message to parent.\n");
2025
fflush($this->stdout);
2027
+ public function debug($item)
2029
+ $debug_msg = explode("\n", print_r($item, TRUE));
2030
+ $this->send_array("DEBUG",array('msg'=>$debug_msg));
2033
+ public function logger($msg)
2035
+ $this->send_array('LOGGER', array('msg'=>addslashes(rtrim($msg))));
2037
public function send_error($msg)
2039
- $this->send_array('ERROR', array('msg'=>$msg));
2040
+ $this->send_array('ERROR', array('msg'=>rtrim($msg)));
2042
public function check_heartbeat($old_time)
2047
} // class JffmnsEngineChild
2049
+function child_debug($item)
2052
+ $Child->debug($item);
2057
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/common_parent.inc.php jffnms-0.9.3/engine/common_parent.inc.php
2058
--- ../jffnms-0.9.2/engine/common_parent.inc.php 2011-05-23 10:23:31.000000000 +1000
2059
+++ jffnms-0.9.3/engine/common_parent.inc.php 2012-03-21 11:59:17.000000000 +1100
2061
define ('ENGINE_MAX_POLL_TIME', 180);
2062
define ('ENGINE_DIE_TIME', 5);
2063
define ('ENGINE_MAX_CHILDREN', 5);
2064
+define ('ENGINE_SELECT_USEC', 2000); //PHP RECOMMENDATION is 200,000
2066
require_once('../conf/config.php');
2067
$Config = new JffnmsConfig();
2070
$new_wait = count($this->waiting_items);
2071
if ($this->waiting_count != $new_wait) {
2072
- logger("Waiting count adjusted to $new_wait (was ".$this->waiting_count.")\n");
2073
+ logger("PAR: Waiting count adjusted to $new_wait (was ".$this->waiting_count.")\n");
2074
$this->waiting_count = $new_wait;
2076
$new_poll = count($this->polling_items);
2077
if ($this->polling_count != $new_poll) {
2078
- logger("polling count adjusted to $new_poll (was ".$this->polling_count.")\n");
2079
+ logger("PAR: Polling count adjusted to $new_poll (was ".$this->polling_count.")\n");
2080
$this->polling_count = $new_poll;
2086
if (!array_key_exists($item_id, $this->polling_items)) {
2087
- logger("item_set_done(): Item $item_id does not exist in poller items.\n");
2088
+ logger("PAR: ** ERROR ** item_set_done(): Item $item_id does not exist in poller items.\n");
2089
$this->items_recount();
2095
if (!array_key_exists($item_id, $this->polling_items)) {
2096
- logger("item_set_waiting(): Item $item_id does not exist in poller items.\n");
2097
+ logger("PAR: ** ERROR ** item_set_waiting(): Item $item_id does not exist in poller items.\n");
2098
$this->items_recount();
2101
- $this->waiting_items[$item_id] = $this->polling_items[$item_id];
2102
+ if ($this->polling_items[$item_id]['tries'] > ENGINE_MAX_TRIES) {
2103
+ logger("PAR: Cannot process item $item_id after ".ENGINE_MAX_TRIES." attempts.\n");
2105
+ $this->waiting_items[$item_id] = $this->polling_items[$item_id];
2106
+ $this->waiting_count++;
2108
unset($this->polling_items[$item_id]);
2109
- $this->waiting_count++;
2110
$this->polling_count--;
2111
} // item_set_waiting
2116
if (!array_key_exists($item_id, $this->waiting_items)) {
2117
- logger("item_set_polling(): Item $item_id does not exist in waiting items.\n");
2118
+ logger("PAR: ** ERROR ** item_set_polling(): Item $item_id does not exist in waiting items.\n");
2119
$this->items_recount();
2122
@@ -163,13 +168,22 @@
2123
$new_child = $this->start_child();
2124
if ($new_child === FALSE)
2125
return $children_started;
2126
- $this->child_procs[] = $new_child;
2127
+ $this->child_procs[$this->get_child_id()] = $new_child;
2129
$children_started++;
2131
return $children_started;
2132
} // children_start()
2134
+ public function get_child_id()
2138
+ if (!array_key_exists($id, $this->child_procs))
2143
public function stop_all_children($reason)
2145
foreach ($this->child_procs as $child_id => $child)
2146
@@ -179,10 +193,10 @@
2147
public function stop_child($child_id, $reason)
2149
if (!array_key_exists($child_id, $this->child_procs)) {
2150
- logger("** FATAL ** Child ID $child_id stopped but doesn't exist.\n");
2151
+ logger("PAR: ** FATAL ** Child ID $child_id stopped but doesn't exist.\n");
2154
- logger("Child #$child_id (PID:".$this->child_procs[$child_id]['pid'].") stopped: $reason.\n");
2155
+ logger("CH$child_id (".$this->child_procs[$child_id]['pid']."): stopped: $reason.\n");
2156
$this->item_set_waiting($this->child_procs[$child_id]['item_id']);
2157
$this->child_procs[$child_id]['item_id']=FALSE;
2158
$this->child_procs[$child_id]['state']='DEAD';
2160
// Check that the child process actually exists
2161
$child_stat = proc_get_status($child['resource']);
2162
if ($child_stat === FALSE ) {
2163
- logger("Child $child_id has no status - removing.\n");
2164
+ logger("CH:$child_id no status - removing.\n");
2165
$this->item_set_waiting($child['item_id']);
2166
unset($this->child_procs[$child_id]);
2170
if ($child_stat['running'] === FALSE) {
2171
if ($child['state'] != 'DEAD')
2172
- logger("Child $child_id is no longer running - removing.\n");
2173
+ logger("CH:$child_id No longer running - removing.\n");
2174
$this->item_set_waiting($child['item_id']);
2175
proc_close($child['resource']);
2176
unset($this->child_procs[$child_id]);
2180
if ($child['killtime'] + ENGINE_DIE_TIME < $now) {
2181
- logger("Child #$child_id (PID:$child[pid]) took too long to die.\n");
2182
+ logger("CH:$child_id ($child[pid]): took too long to die.\n");
2183
proc_close($child['resource']);
2184
unset($this->child_procs[$child_id]);
2187
} // foreach children
2190
- public function read_children()
2191
+ public function read_children($callback_function)
2193
$read_fds = array();
2195
@@ -262,59 +276,83 @@
2196
if (sizeof($read_fds) == 0)
2199
+ $child_had_data = FALSE;
2200
if ( ($nr = stream_select($read_fds, $write_fds, $except_fds, 0)) !== FALSE) {
2203
foreach($this->child_procs AS $child_id => &$child_proc) {
2204
if ( in_array($child_proc['output'], $read_fds)) {
2205
- if ( ($raw_data = fgets($child_proc['output'])) !== FALSE) {
2206
- $child_proc['lastseen'] = $now;
2207
- $child_data = @unserialize($raw_data);
2208
- //print_r($child_data);
2209
- if (!is_array($child_data)) {
2210
- // If unserialise fails, it needs to be logged
2211
- logger("CHILD #$child_id ".preg_replace('/^\d\d\:\d\d\:\d\d /','',$raw_data));
2214
- if (!array_key_exists('cmd', $child_data))
2216
- logger('Child #'.$child_id.' sent data with no cmd.');
2219
- switch($child_data['cmd'])
2220
+ if ( ($raw_data = fgets($child_proc['output'])) === FALSE)
2222
+ $child_proc['lastseen'] = $now;
2223
+ $child_data = @unserialize($raw_data);
2224
+ //print_r($child_data);
2225
+ if (!is_array($child_data)) {
2226
+ // If unserialise fails, it needs to be logged
2227
+ logger("CH$child_id : RAW:".preg_replace('/^\d\d\:\d\d\:\d\d /','',$raw_data));
2228
+ $child_had_data = TRUE;
2231
+ if (!array_key_exists('cmd', $child_data))
2233
+ logger("CH#$child_id: ERROR sent data with no cmd.");
2234
+ $child_had_data = TRUE;
2237
+ switch($child_data['cmd'])
2240
+ $child_had_data = TRUE;
2243
+ if ($child_proc['state'] != 'STARTING')
2248
- if ($child_proc['state'] != 'STARTING')
2250
- logger('Child #'.$child_id.' sending START after starting.');
2251
+ logger("CH$child_id ($child_proc[pid]): sending START after starting.\n");
2253
+ if (array_key_exists('pid', $child_data)) {
2254
+ $child_proc['pid'] = $child_data['pid'];
2255
+ $child_proc['state'] = 'IDLE';
2256
+ logger("CH:$child_id ($child_proc[pid]): START and idle.\n");
2258
- if (array_key_exists('pid', $child_data))
2260
- $child_proc['pid'] = $child_data['pid'];
2261
- $child_proc['state'] = 'IDLE';
2262
- logger("START Child started with PID $child_proc[pid] and idle.\n");
2264
- logger('START Child #'.$child_id.' sent START with no PID.');
2266
+ logger("CH:$child_id (unknown): ERROR: child started and did not return PID.\n");
2270
- if (array_key_exists('msg', $child_data))
2271
- logger("Child #$child_id (PID:$child_proc[pid]) got error \"$child_data[msg]\"\n");
2273
- logger("Child #$child_id (PID:$child_proc[pid]) got error \"unknown error\"\n");
2276
- return array($child_id, $child_data);
2282
+ $child_had_data = TRUE;
2285
+ if (array_key_exists('msg', $child_data)) {
2286
+ logger("CH:$child_id ($child_proc[pid]): DEBUG\n");
2287
+ foreach ($child_data['msg'] as $line)
2288
+ logger(" $line\n");
2290
+ logger("CH:$child_id ($child_proc[pid]): got DEBUG with no message\n");
2291
+ $child_had_data = TRUE;
2295
+ if (array_key_exists('msg', $child_data)) {
2296
+ $msg = stripslashes($child_data['msg']);
2297
+ logger("CH:$child_id ($child_proc[pid]): $msg\n");
2299
+ logger("CH:$child_id ($child_proc[pid]): logger called with no msg.\n");
2300
+ $child_had_data = TRUE;
2303
+ if (array_key_exists('msg', $child_data))
2304
+ logger("CH$child_id ($child_proc[pid]): ERROR: \"$child_data[msg]\"\n");
2306
+ logger("CH$child_id ($child_proc[pid]): got error \"unknown error\"\n");
2307
+ $child_had_data = TRUE;
2310
+ call_user_func_array($callback_function,array(&$this, $child_id, $child_data));
2311
+ $child_had_data = TRUE;
2314
+ }//child output inarry
2319
+ return $child_had_data;
2320
} // read_children()
2325
$item['poll_time'] = time();
2326
$this->item_set_polling($item_id);
2327
- logger("WORK Child $child_id was idle, working on item $item_id Try $item[tries]\n");
2328
+ logger("PAR: Child $child_id was idle, working on item $item_id Try $item[tries]\n");
2329
$this->send_to_child($child_id, 'POLL',$item);
2334
$child_count = array('starting'=>0, 'idle'=>0, 'busy'=>0,'dead'=>0,
2335
'other'=>0, 'total'=>0 );
2336
- logger('STATUS Items Waiting/Polling=Total: '.
2337
+ logger('PAR: Items Waiting/Polling=Total: '.
2338
$this->waiting_count.'/'.$this->polling_count."\n");
2340
foreach($this->child_procs as $child) {
2342
default: $child_count['other']++; break;
2345
- logger('STATUS Childn Min/Max Idl/Bsy/Srt/Ded/Otr=Tot: '.
2346
+ logger('PAR: Childn Min/Max Idl/Bsy/Srt/Ded/Otr=Tot: '.
2347
$this->min_children.'/'.
2348
$this->max_children.' '.
2349
"$child_count[idle]/$child_count[busy]/$child_count[starting]/$child_count[dead]/$child_count[other]=$child_count[total]\n");
2350
@@ -391,14 +429,15 @@
2351
public function child_notdone_job($child_id)
2353
if (array_key_exists($child_id, $this->child_procs)) {
2354
- logger("Child #$child_id failed to process item $item_id.\n");
2355
- $item_id = $this->child_procs[$child_id]['item_id'];
2356
+ $child = $this->child_procs[$child_id];
2357
+ $item_id = $child['item_id'];
2358
+ logger("CH:$child_id (): ** ERROR ** failed to process item $item_id.\n");
2359
$this->item_set_waiting($item_id);
2360
$this->child_procs[$child_id]['state'] = 'IDLE';
2361
$this->child_procs[$child_id]['item_id'] = FALSE;
2364
- logger("** ERROR ** child_notdone_job(): Child ID $child_id not found.\n");
2365
+ logger("CH: $child_id(): ** ERROR ** child_notdone_job(): Child ID $child_id not found.\n");
2367
} // child_notdone_job()
2370
$msg = serialize($args)."\n";
2371
$msglen = strlen($msg);
2372
if ( fwrite($this->child_procs[$child_id]['input'], $msg, $msglen) != $msglen)
2373
- logger("Error sending message to child #$child_id.\n");
2374
+ logger("CH:$child_id(): ** ERROR ** Parent unable to send message to child.\n");
2375
fflush($this->child_procs[$child_id]['input']);
2378
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/configs/alteon_webos.inc.php jffnms-0.9.3/engine/configs/alteon_webos.inc.php
2379
--- ../jffnms-0.9.2/engine/configs/alteon_webos.inc.php 2010-05-27 19:51:40.000000000 +1000
2380
+++ jffnms-0.9.3/engine/configs/alteon_webos.inc.php 2012-03-06 07:19:23.000000000 +1100
2384
// agGeneral .1.3.6.1.4.1.1872.2.1.2.1
2385
-define(agTftpServer, '.1.3.6.1.4.1.1872.2.1.2.1.18.0');
2386
-define(agTftpCfgFileName, '.1.3.6.1.4.1.1872.2.1.2.1.19.0');
2387
-define(agTftpAction, '.1.3.6.1.4.1.1872.2.1.2.1.21.0');
2388
-define(cfg-get, '3');
2389
-define(agTftpLastActionStatus, '.1.3.6.1.4.1.1872.2.1.2.1.22.0');
2390
+define('agTftpServer', '.1.3.6.1.4.1.1872.2.1.2.1.18.0');
2391
+define('agTftpCfgFileName', '.1.3.6.1.4.1.1872.2.1.2.1.19.0');
2392
+define('agTftpAction', '.1.3.6.1.4.1.1872.2.1.2.1.21.0');
2393
+define('cfg-get', '3');
2394
+define('agTftpLastActionStatus', '.1.3.6.1.4.1.1872.2.1.2.1.22.0');
2396
function config_alteon_webos_get($ip, $community, $server, $filename) {
2398
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/discovery/host_information.inc.php jffnms-0.9.3/engine/discovery/host_information.inc.php
2399
--- ../jffnms-0.9.2/engine/discovery/host_information.inc.php 2012-02-14 23:10:39.000000000 +1100
2400
+++ jffnms-0.9.3/engine/discovery/host_information.inc.php 2012-04-05 18:48:39.000000000 +1000
2402
// If it was, get all the other information and return an interface
2405
- $description = snmp_get ($ip, $rocommunity, $sysDescr_oid);
2406
+ $description = str_replace("\n",' ',snmp_get ($ip, $rocommunity, $sysDescr_oid));
2407
$name = snmp_get ($ip, $rocommunity, $sysName_oid);
2408
$contact = snmp_get ($ip, $rocommunity, $sysContact_oid);
2409
$location = snmp_get ($ip, $rocommunity, $sysLocation_oid);
2410
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/discovery/snmp_interfaces.inc.php jffnms-0.9.3/engine/discovery/snmp_interfaces.inc.php
2411
--- ../jffnms-0.9.2/engine/discovery/snmp_interfaces.inc.php 2010-11-16 22:39:50.000000000 +1100
2412
+++ jffnms-0.9.3/engine/discovery/snmp_interfaces.inc.php 2012-04-09 10:44:26.000000000 +1000
2415
if (!empty($interface_names[$int])) // if it is already loaded in list
2417
- $oid_id = $interface_names[$int];
2418
+ $old_id = $interface_names[$int];
2419
$aux2 = $snmp_interfaces[$old_id];
2420
$aux2['address'] = $new_interface['address'];
2421
$aux2['peer'] = $new_interface['peer'];
2422
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/discovery/tcp_ports.inc.php jffnms-0.9.3/engine/discovery/tcp_ports.inc.php
2423
--- ../jffnms-0.9.2/engine/discovery/tcp_ports.inc.php 2011-02-21 11:55:19.000000000 +1100
2424
+++ jffnms-0.9.3/engine/discovery/tcp_ports.inc.php 2012-04-18 09:23:59.000000000 +1000
2426
foreach($nmap_ports as $nmap_port)
2428
$port_data = explode('/', $nmap_port);
2429
- if (preg_match('%^(\d+)/open/[a-z]+/([^/]+)/%', $nmap_port, $port_data))
2430
+ if ($port_data[1] == 'open')
2432
- $port_num = $port_data[1];
2433
+ $port_num = trim($port_data[0]);
2434
$ports[$port_num] = array(
2435
'interface' => 'Port '.$port_num,
2436
- 'description' => $port_data[2],
2437
+ 'description' => $port_data[4],
2441
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/iad_child.php jffnms-0.9.3/engine/iad_child.php
2442
--- ../jffnms-0.9.2/engine/iad_child.php 2012-02-14 23:10:39.000000000 +1100
2443
+++ jffnms-0.9.3/engine/iad_child.php 2012-04-06 22:10:59.000000000 +1000
2446
function child_discover_interfaces($params)
2448
+ global $Config, $Child;
2449
$iad_time = time_msec();
2450
$Interfaces = new JffnmsInterfaces();
2451
$InterfaceTypesFields = new JffnmsInterface_types_fields();
2452
+ $Events = new JffnmsEvents();
2454
- $autodiscovery = iad_get_autodiscovery($params['autodiscovery_id']);
2455
+ $ad_policy = iad_get_autodiscovery($params['autodiscovery_id']);
2456
$interface_types = iad_get_interface_types($params['itype']);
2457
if ($interface_types === FALSE)
2459
@@ -104,33 +106,39 @@
2460
array('itype'=>$itype['id'],'exclude_types'=>20));
2461
if (is_array($ad_interfaces) && count($ad_interfaces) > 0)
2463
- $unique_interfaces = array_unique(array_merge(array_merge(array_keys($ad_interfaces), array_keys($db_interfaces))));
2464
+ $unique_interfaces = array_unique(array_merge(array_keys($ad_interfaces), array_keys($db_interfaces)));
2465
+ asort($unique_interfaces);
2466
+ reset($unique_interfaces);
2467
foreach($unique_interfaces as $key)
2472
+ if (isset($db_interfaces[$key]))
2473
+ ksort($db_interfaces[$key]);
2474
+ if (isset($ad_interfaces[$key]))
2475
+ ksort($ad_interfaces[$key]);
2477
discovery_logger($params['host_id'], $itype['id'], $key,
2478
'DB : '.(isset($db_interfaces[$key])?iad_show_interface($fields,$db_interfaces[$key]):'Not Found'));
2479
discovery_logger($params['host_id'], $itype['id'], $key,
2480
'HOST: '.(isset($ad_interfaces[$key])?iad_show_interface($fields,$ad_interfaces[$key]):'Not Found'));
2482
// Not in DB but in Host = add new
2483
- if (!isset($db[$key]) && isset($host[$key]))
2484
+ if (!isset($db_interfaces[$key]) && isset($ad_interfaces[$key]))
2486
- if (iad_permit_new($host[$key], $host_info))
2488
+ if (iad_permit_new($ad_interfaces[$key], $ad_policy,$itype)) {
2490
- discovery_logger($host_info['id'], $it['id'], $key,
2491
+ discovery_logger($params['host_id'], $itype['id'], $key,
2492
'RES : New Interface Found');
2493
//if the AD policy permits adding an interface.
2494
- if ($host_info['permit_add']==1)
2495
+ if ($ad_policy['permit_add']==1)
2497
//if the AD policy says use default poller
2498
- if ($host_info['poller_default']==1)
2499
- ad_set_default ($host[$key]['poll'],$it['autodiscovery_default_poller']); //use the interface type default poller for this new interface
2500
- ad_set_default ($host[$key]['client'],$host_info['autodiscovery_default_customer']);
2501
- ad_set_default ($host[$key]['sla'],$it['sla_default']);
2502
+ if ($ad_policy['poller_default']==1)
2503
+ ad_set_default ($ad_interfaces[$key]['poll'],$itype['autodiscovery_default_poller']); //use the interface type default poller for this new interface
2504
+ ad_set_default ($ad_interfaces[$key]['client'],$params['autodiscovery_default_customer']);
2505
+ ad_set_default ($ad_interfaces[$key]['sla'],$itype['sla_default']);
2506
//Find the Index Field
2507
foreach ($fields as $fdata)
2508
if ($fdata['ftype']==3)
2509
@@ -139,28 +147,105 @@
2512
//add the index field as data to use when adding a record
2513
- $host[$key][$index_field]=$key;
2514
+ $ad_interfaces[$key][$index_field]=$key;
2516
//delete the status fields, because they will not be found in the db
2517
- unset ($host[$key]['admin']);
2518
- unset ($host[$key]['oper']);
2519
+ unset ($ad_interfaces[$key]['admin']);
2520
+ unset ($ad_interfaces[$key]['oper']);
2522
- $interface_id = adm_interfaces_add(array('host'=>$host_info['id'],'type'=>$it['id'])); //add new record
2523
- adm_interfaces_update($interface_id,$host[$key]); //update it with the data
2524
+ $interface_id = $Interfaces->add(array('host'=>$params['host_id'],'type'=>$itype['id'])); //add new record
2525
+ $Interfaces->update($interface_id,$ad_interfaces[$key]); //update it with the data
2528
- if ($log_events==true)
2529
- insert_event ($now_date, $event_type_id, $host_info['id'], $host[$key]['interface'], //add informative event
2530
+ $Events->add(date("Y-m-d H:i:s",time()), $Config->get('jffnms_administrative_type'), $params['host_id'], $ad_interfaces[$key]['interface'], //add informative event
2531
'alert','autodiscovery',trim('Found '.$text),0);
2537
+ } // In Host not DB
2539
- } //foreach unique int id
2542
+ if (!isset($ad_interfaces[$key]) && isset($db_interfaces[$key])) {
2543
+ if ($itype['autodiscovery_validate']==1 && $db_interfaces[$key]['poll'] > 1) {
2544
+ discovery_logger($params['host_id'], $itype['id'], $key,
2545
+ 'RES : Not Found in Host');
2547
+ if ($ad_policy['permit_del']==1 && $ad_policy['permit_disable']==0) {
2548
+ $Interfaces->del($db_interfaces[$key]['id']);
2549
+ $text = '- Deleted';
2551
+ if ($ad_policy['permit_del']==0 && $ad_policy['permit_disable']==1) {
2552
+ $Interfaces->update($db_interfaces[$key]['id'],
2553
+ array('poll'=>1, 'show_rootmap'=>2));
2554
+ $text = '- Disabled';
2557
+ if ($ad_policy['alert_del']==1)
2558
+ $Events->add(date("Y-m-d H:i:s",time()), $Config->get('jffnms_administrative_type'), $params['host_id'], $db_interfaces[$key]['interface'], //add informative event
2559
+ 'alert', 'autodiscovery', trim('Not Found in Host '.$text),0);
2564
+ // Found in both and polling enabled
2565
+ if (isset($ad_interfaces[$key]) && isset($db_interfaces[$key])) {
2566
+ if ($itype['autodiscovery_validate']==1) {
2567
+ $fields_to_modify = array();
2568
+ $track_fields = array();
2570
+ $track_fields['interface']='Interface Name';
2571
+ foreach ($fields as $fdata)
2572
+ if ($fdata['tracked']==1)
2573
+ $track_fields[$fdata['name']] = $fdata['description'];
2575
+ foreach ($track_fields as $track_field=>$track_field_descr) {
2576
+ if (!empty($ad_interfaces[$key][$track_field]) &&
2577
+ (strncmp($ad_interfaces[$key][$track_field], $db_interfaces[$key][$track_field], 30) != 0)) {
2578
+ discovery_logger($params['host_id'], $itype['id'], $key,
2579
+ "RES : $track_field_descr changed from ".
2580
+ $db_interfaces[$key][$track_field].' to '.
2581
+ $ad_interfaces[$key][$track_field]);
2582
+ $fields_to_modify[$track_field]=$ad_interfaces[$key][$track_field];
2583
+ } // fields not equal
2584
+ if (count($fields_to_modify) > 0) {
2585
+ $changed_fields = array();
2586
+ foreach ($fields_to_modify as $field_name=>$field_value)
2587
+ $changed_fields[] = $track_fields[$field_name].' to '.$field_value.' was '.$db_interfaces[$key][$field_name];
2588
+ $changed_fields = join(' and ',$changed_fields);
2590
+ if ($ad_policy['permit_mod']==1) {
2591
+ $Interfaces->update($db_interfaces[$key]['id'],
2592
+ $fields_to_modify);
2593
+ if (array_key_exists('interface', $fields_to_modify))
2594
+ $interface_name = $ad_interfaces[$key]['interface'];
2596
+ $interface_name = $db_interfaces[$key]['interface'];
2597
+ $event_comment = '- Changed '.$changed_fields;
2599
+ $interface_name = $db_interfaces[$key]['interface'];
2600
+ $event_comment = '- NOT Changed '.$changed_fields;
2602
+ $Events->add(date("Y-m-d H:i:s",time()), $Config->get('jffnms_administrative_type'), $params['host_id'], $interface_name,
2603
+ 'alert', 'autodiscovery', trim('detected modification '.$event_comment),0);
2608
+ // Check for interfaces with no client assigned
2609
+ if ($db_interfaces[$key]['client'] <= 1) {
2610
+ discovery_logger($params['host_id'], $itype['id'], $key,
2611
+ 'RES : No Customer Selected');
2612
+ $Events->add(date("Y-m-d H:i:s",time()), $Config->get('jffnms_administrative_type'), $params['host_id'], $db_interfaces[$key]['interface'],
2613
+ 'alert', 'autodiscovery', 'Incomplete interface setup (Customer not selected)', 0);
2617
+ discovery_logger($params['host_id'], $itype['id'], $key,
2618
+ 'RES : Nothing done.');
2619
+ } // foreach unique interfaces
2620
+ } //ad_interfaces > 0
2621
+ } //interface types
2622
$iad_time = round(time_msec_diff($iad_time));
2623
- logger('H '.str_pad($params['host_id'],3,' ',STR_PAD_LEFT)." : Autodiscovery took ".$iad_time." msec.\n");
2624
+ $Child->logger('H '.str_pad($params['host_id'],3,' ',STR_PAD_LEFT)." : Autodiscovery took ".$iad_time." msec.\n");
2628
@@ -220,7 +305,10 @@
2630
function discovery_logger($host, $itype, $intid, $result)
2632
- logger( 'H '.str_pad($host,3,' ',STR_PAD_LEFT).' : '.
2636
+ 'H '.str_pad($host,3,' ',STR_PAD_LEFT).' : '.
2637
'IT '.str_pad($itype,3,' ',STR_PAD_LEFT).' : '.
2638
($intid?'I '.str_pad($intid,4,' ',STR_PAD_LEFT).' : ':'').
2640
@@ -239,23 +327,30 @@
2643
// Not in database but found in host - is it really supposed to be there?
2644
-function iad_permit_new(&$host_data, &$host_info)
2645
+function iad_permit_new(&$host_data, &$ad_policy, &$itype)
2647
- if ($itype['autodiscovery_validate'] == 1)
2649
+ if ($itype['autodiscovery_validate'] == 0)
2652
- if ($host_info['skip_loopback'] == 1 && (
2653
- preg_match('/(loopback.*|null.*|lo\d*)$/i', $host_data['interface']) ||
2654
- (array_key_exists('address', $host_data) && $host_data['address'] == '127.0.0.1')))
2656
+ # If we skip looback and have a loopback address - dont add it
2657
+ if ( // Possibly check for loopback
2658
+ $ad_policy['skip_loopback'] == 1 &&
2660
+ ( preg_match('/(loopback.*|null.*|lo\d*)$/i', $host_data['interface']) != 0) ||
2661
+ ( array_key_exists('address', $host_data) && $host_data['address'] == '127.0.0.1')
2663
+ return FALSE; // Skip loopback and loopback detected
2666
- if ($host_info['check_address'] == 1 && (
2667
- !array_key_exists('address', $host_data ||
2668
- $host_data['address'] == '' ||
2669
- $host_data['address'] == '0.0.0.0')))
2672
+ if ( $ad_policy['check_address'] == 1 &&
2673
+ (array_key_exists('address', $host_data) == TRUE) &&
2674
+ ($host_data['address'] == '' || $host_data['address'] == '0.0.0.0')
2676
+ return FALSE; // Found address and its invalid
2678
- if ($host_info['check_state'] == 1 &&
2679
+ $Alarms = new JffnmsAlarms();
2680
+ if ($ad_policy['check_state'] == 1 &&
2681
$Alarms->lookup($host_data['oper']) != ALARM_UP)
2685
$sysObjectId = snmp_get($host_ip, $rocommunity, $oid);
2686
if ($sysObjectId === FALSE)
2688
+ $sysObjectId = str_replace('SNMPv2-SMI::enterprises','ent', $sysObjectId);
2689
db_update('hosts', $host_id, array('sysobjectid' => $sysObjectId));
2690
return $sysObjectId;
2692
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/poller_child.php jffnms-0.9.3/engine/poller_child.php
2693
--- ../jffnms-0.9.2/engine/poller_child.php 2011-04-15 09:43:47.000000000 +1000
2694
+++ jffnms-0.9.3/engine/poller_child.php 2012-03-28 23:26:18.000000000 +1100
2697
function child_poll_interface($params)
2699
- global $Config, $Child;
2700
+ global $Config, $Child, $poller_buffer;
2702
$host_id = $params['host_id'];
2703
if (!is_numeric($host_id)) {
2705
// Poller Group 1 is no polling so return immediately
2706
if ($poller_group == 1)
2708
+ $check_status = $params['check_status'];
2709
$poller_group_query = 'SELECT
2710
pollers.name AS poller_name, pollers.command AS poller_command,
2711
pollers.parameters AS poller_parameters,
2713
pollers_poller_groups.poller_group = '.$poller_group.'
2714
AND pollers_poller_groups.poller = pollers.id
2715
AND pollers_poller_groups.backend = pollers_backend.id
2716
+ '.($check_status==0?' AND pollers_backend.type != 1':'').'
2718
pollers_poller_groups.pos';
2719
//fwrite(STDERR, $poller_query);
2723
$jffnms_real_path = $Config->get('jffnms_real_path');
2724
+ $poller_buffer=array();
2725
while ($poller_row = db_fetch_array($poller_group_result)) {
2726
$poller_command = $poller_row['poller_command'];
2727
$backend_command = $poller_row['backend_command'];
2728
@@ -108,15 +111,23 @@
2729
if ( $Child->require_file($backend_filename, 'backend_'.$backend_command) === FALSE)
2732
+ # Calls poller, poller returns NULL if there is an error
2733
+ # An errors means don't waste time running backend
2734
$poller_data = child_poller_data($interface_id, $poller_row, $params);
2735
$time_poller_query = time_msec();
2736
$poller_result = call_user_func_array('poller_'.$poller_command, array($poller_data));
2737
$time_poller_query = time_msec_diff($time_poller_query);
2739
- $time_backend_query = time_msec();
2740
- $backend_result = call_user_func_array('backend_'.$backend_command,
2741
- array($poller_data, $poller_result));
2742
- $time_backend_query = time_msec_diff($time_backend_query);
2743
+ if ($poller_result === FALSE) {
2744
+ $time_backend_query=0;
2745
+ $poller_result='(FALSE)';
2746
+ $backend_result='(not run)';
2748
+ $time_backend_query = time_msec();
2749
+ $backend_result = call_user_func_array('backend_'.$backend_command,
2750
+ array($poller_data, $poller_result));
2751
+ $time_backend_query = time_msec_diff($time_backend_query);
2754
// Output the results
2755
$poller_param_description = '';
2757
if ( ($desc_len = strlen($poller_param_description)) > 10)
2758
$poller_param_description = substr($poller_param_description,0,4).'..'.
2759
substr($poller_param_description,$desc_len-4,4);
2762
' : H '.str_pad($poller_data['host_id'],3,' ',STR_PAD_LEFT).
2763
' : I '.str_pad($poller_data['interface_id'],3,' ',STR_PAD_LEFT).
2764
' : P '.str_pad($poller_row['poller_pos'],3,' ',STR_PAD_LEFT).
2766
" (time P: $time_poller_query | B: $time_backend_query) ".
2768
} //while poller_row
2769
+ unset($poller_buffer);
2774
$poller_plan_result = poller_plan ($poller_plan_filter); // Get the Poller Plan (things to poll)
2777
- logger(" : H ".str_pad($host_id,3," ",STR_PAD_LEFT)." : Poller Start : ".$poller_plan_result["items"]." Items.\n");
2778
+ $Child->logger(" : H ".str_pad($host_id,3," ",STR_PAD_LEFT)." : Poller Start : ".$poller_plan_result["items"]." Items.\n");
2783
if ($aux = strlen($poller_param_description) > 10)
2784
$poller_param_description = substr($poller_param_description,0,4)."..".substr($poller_param_description,strlen($aux)-4,4);
2786
- logger( " : H ".str_pad($poller_data["host_id"],3," ",STR_PAD_LEFT).
2787
+ $Child->logger( " : H ".str_pad($poller_data["host_id"],3," ",STR_PAD_LEFT).
2788
" : I ".str_pad($poller_data["interface_id"],3," ",STR_PAD_LEFT).
2789
" : P ".str_pad($poller_data["poller_pos"],3," ",STR_PAD_LEFT).
2790
" : ".(($backend_command=="buffer")?"$poller_command:":"").$poller_data["poller_name"]."(".$poller_param_description."): $poller_result ".
2793
$polling_time = round(time_msec_diff($time_start));
2795
- logger(" : H ".str_pad($host_id,3," ",STR_PAD_LEFT)." : Poller End, Total Time: $polling_time msec.\n");
2796
+ $Child->logger(" : H ".str_pad($host_id,3," ",STR_PAD_LEFT)." : Poller End, Total Time: $polling_time msec.\n");
2800
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/poller.php jffnms-0.9.3/engine/poller.php
2801
--- ../jffnms-0.9.2/engine/poller.php 2012-02-14 23:10:39.000000000 +1100
2802
+++ jffnms-0.9.3/engine/poller.php 2012-03-28 23:24:29.000000000 +1100
2804
// Read all the children's chatter
2805
function poller_read_children(&$Parent)
2808
+ $read_timeout = max(time() + ENGINE_HEARTBEAT/$Parent->max_children,2);
2810
- while ($repeats--) {
2811
- $read_retval = $Parent->read_children();
2812
- if ($read_retval === FALSE)
2813
+ while (time() < $read_timeout)
2814
+ if ($Parent->read_children('poller_read_callback') == FALSE)
2816
- if ($read_retval === TRUE)
2818
- // otherwise its something we parse
2819
- list($child_id, $child_data) = $read_retval;
2820
- switch($child_data['cmd'])
2823
- $item_id = $Parent->child_done_job($child_id);
2824
- if ($item_id !== FALSE)
2825
- poller_set_interface_lpd($item_id);
2828
- $Parent->child_notdone_job($child_id);
2831
- } // while repeats
2832
-} //poller_read_children()
2835
+function poller_read_callback(&$Parent, $child_id, $child_data)
2837
+ switch($child_data['cmd'])
2840
+ $item_id = $Parent->child_done_job($child_id);
2841
+ if ($item_id !== FALSE)
2842
+ poller_set_interface_lpd($item_id);
2845
+ $Parent->child_notdone_job($child_id);
2851
function parse_commandline()
2853
'rw_community' => $row['rwcommunity'],
2854
'ro_community' => $row['rocommunity'],
2855
'sysobjectid' => $row['sysobjectid'],
2856
+ 'check_status' => $row['check_status'],
2860
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/bgp_peer_status.php jffnms-0.9.3/engine/pollers/bgp_peer_status.php
2861
--- ../jffnms-0.9.2/engine/pollers/bgp_peer_status.php 2012-02-14 23:10:39.000000000 +1100
2862
+++ jffnms-0.9.3/engine/pollers/bgp_peer_status.php 2012-03-26 18:11:05.000000000 +1100
2864
* This program is licensed under the GNU GPL, full terms in the LICENSE file
2867
-function poller_bgp_peer_status ($options) {
2869
- $oid = ".1.3.6.1.2.1.15.3.1.2.".$options["remote"];
2871
- $value = snmp_get($options["host_ip"],$options["ro_community"],$oid);
2872
+function poller_bgp_peer_status ($options)
2874
+ $oid = '.1.3.6.1.2.1.15.3.1.2.'.$options['remote'];
2875
+ $value = snmp_get($options["host_ip"],$options["ro_community"],$oid);
2878
- case 1: $status = "down"; break;
2879
- case 3: $status = "down"; break; //active
2880
- case 6: $status = "up"; break;
2886
+ if ($value == '6')
2892
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/brocade_fcport_phystate.php jffnms-0.9.3/engine/pollers/brocade_fcport_phystate.php
2893
--- ../jffnms-0.9.2/engine/pollers/brocade_fcport_phystate.php 2010-05-27 19:51:40.000000000 +1000
2894
+++ jffnms-0.9.3/engine/pollers/brocade_fcport_phystate.php 2012-03-26 18:12:01.000000000 +1100
2896
* This program is licensed under the GNU GPL, full terms in the LICENSE file
2899
-define(swFCPortPhyState, '1.3.6.1.4.1.1588.2.1.1.1.6.2.1.3');
2900
- function poller_brocade_fcport_phystate ($options) {
2901
+function poller_brocade_fcport_phystate ($options) {
2902
+ $swFCPortPhyState = '1.3.6.1.4.1.1588.2.1.1.1.6.2.1.3';
2904
$community = $options['ro_community'];
2905
$ip = $options['host_ip'];
2906
$inst = $options['poller_parameters'];
2908
if ($ip && $community && $inst) {
2909
- $snmp_value = snmp_get($ip, $community, swFCPortPhyState.".$inst");
2910
+ $snmp_value = snmp_get($ip, $community, $swFCPortPhyState.".$inst");
2911
switch ($snmp_value) {
2913
return 'down|No card present';
2914
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/buffer.php jffnms-0.9.3/engine/pollers/buffer.php
2915
--- ../jffnms-0.9.2/engine/pollers/buffer.php 2010-11-11 22:35:50.000000000 +1100
2916
+++ jffnms-0.9.3/engine/pollers/buffer.php 2012-03-26 18:12:29.000000000 +1100
2918
* Copyright (C) <2002-2005> Javier Szyszlican <javier@szysz.com>
2919
* This program is licensed under the GNU GPL, full terms in the LICENSE file
2921
- // Get Values fomr the Buffer Temp storage
2922
+ // Get Values from the Buffer Temp storage
2924
function poller_buffer ($options)
2926
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/cisco_envmib_status.php jffnms-0.9.3/engine/pollers/cisco_envmib_status.php
2927
--- ../jffnms-0.9.2/engine/pollers/cisco_envmib_status.php 2012-02-14 23:10:39.000000000 +1100
2928
+++ jffnms-0.9.3/engine/pollers/cisco_envmib_status.php 2012-03-26 14:25:33.000000000 +1100
2930
* Copyright (C) <2002-2005> Javier Szyszlican <javier@szysz.com>
2931
* This program is licensed under the GNU GPL, full terms in the LICENSE file
2933
-function poller_cisco_envmib_status ($options) {
2937
- $data = &$GLOBALS["cisco_envmib_status_data"][$options["host_ip"]][$options["poller_parameters"]];
2939
- if (!is_array($data) && $options["ro_community"]) {
2942
- while (!is_array($rets) and $i++ <=2 ) //try 2 times
2943
- $rets=snmp_walk($options["host_ip"],$options["ro_community"],".1.3.6.1.4.1.9.9.13.1.".$options["poller_parameters"],1);
2945
- if (is_array($rets))
2946
- foreach ( $rets as $key=>$entry ) {
2947
- $key=explode(".",$key);
2948
- $key=array_reverse($key);
2950
- $data[$key]=$entry;
2954
- $value=$data[$options["index"]];
2956
- if ($value == "1") $val="up";
2958
+function poller_cisco_envmib_status ($options)
2960
+ if ($options['ro_community']=='' or !is_numeric($options['index']))
2962
+ $snmp_value = snmp_get($options['host_ip'], $options['ro_community'],
2963
+ '.1.3.6.1.4.1.9.9.13.1.'.$options['poller_parameters'].'.'.
2964
+ $options['index']);
2965
+ if ($snmp_value == '1')
2970
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/cisco_saagent_backwardjitter.php jffnms-0.9.3/engine/pollers/cisco_saagent_backwardjitter.php
2971
--- ../jffnms-0.9.2/engine/pollers/cisco_saagent_backwardjitter.php 2012-02-14 23:10:39.000000000 +1100
2972
+++ jffnms-0.9.3/engine/pollers/cisco_saagent_backwardjitter.php 2012-03-26 18:22:24.000000000 +1100
2974
* Copyright (C) <2002-2005> Javier Szyszlican <javier@szysz.com>
2975
* This program is licensed under the GNU GPL, full terms in the LICENSE file
2977
-function poller_cisco_saagent_backwardjitter($options) {
2978
+function poller_cisco_saagent_backwardjitter($options)
2980
+ if (empty($options['ro_community']) or !is_numeric($options['index']))
2982
+ $sa_oid = '1.3.6.1.4.1.9.9.42.1.5.2.1';
2983
+ $ip = $options['host_ip'];
2984
+ $comm = $options['ro_community'];
2985
+ $inst = $options['index'];
2987
+ if ( ($sumposds = snmp_get($ip, $comm, "$sa_oid.19.$inst")) === FALSE)
2989
+ if ( ($sumnegds = snmp_get($ip, $comm, "$sa_oid.24.$inst")) === FALSE)
2991
+ if ( ($nrposds = snmp_get($ip, $comm, "$sa_oid.18.$inst")) === FALSE)
2993
+ if ( ($nrnegds = snmp_get($ip, $comm, "$sa_oid.23.$inst")) === FALSE)
2996
- if ( !is_array($GLOBALS["cisco_saagent_backwardjitter"][$options["host_id"]])) {
2998
- while ( !is_array($sumpossd) and $i++ <=2 ) {
2999
- $sumpossd=snmp_walk($options["host_ip"],$options["ro_community"],".1.3.6.1.4.1.9.9.42.1.5.2.1.19",1);
3000
- $sumnegsd=snmp_walk($options["host_ip"],$options["ro_community"],".1.3.6.1.4.1.9.9.42.1.5.2.1.24",1);
3001
- $nrpossd=snmp_walk($options["host_ip"],$options["ro_community"],".1.3.6.1.4.1.9.9.42.1.5.2.1.18",1);
3002
- $nrnegsd=snmp_walk($options["host_ip"],$options["ro_community"],".1.3.6.1.4.1.9.9.42.1.5.2.1.23",1);
3004
+ $sum = $sumposds + $sumnegds;
3005
+ $nr = $nrposds + $nrnegds;
3007
- if ( is_array($sumpossd) )
3008
- foreach ( $sumpossd as $key=>$entry ) {
3009
- $key=explode(".",$key);
3010
- $key=$key[count($key)-1];
3012
- $sum_pos_sd[$key]=$entry;
3015
- if ( is_array($sumnegsd) )
3016
- foreach ( $sumnegsd as $key=>$entry ) {
3017
- $key=explode(".",$key);
3018
- $key=$key[count($key)-1];
3020
- $sum_neg_sd[$key]=$entry;
3023
- if ( is_array($nrpossd) )
3024
- foreach ( $nrpossd as $key=>$entry ) {
3025
- $key=explode(".",$key);
3026
- $key=$key[count($key)-1];
3028
- $nr_pos_sd[$key]=$entry;
3031
- if ( is_array($nrnegsd) )
3032
- foreach ( $nrnegsd as $key=>$entry ) {
3033
- $key=explode(".",$key);
3034
- $key=$key[count($key)-1];
3036
- $nr_neg_sd[$key]=$entry;
3039
- if ( is_array($sum_pos_sd) )
3040
- foreach ( $sum_pos_sd as $key=>$entry ) {
3041
- $sum=$sum_pos_sd[$key]+$sum_neg_sd[$key];
3042
- $nr=$nr_pos_sd[$key]+$nr_neg_sd[$key];
3044
- $backward_jitter[$key]=0;
3046
- $backward_jitter[$key]=($sum/$nr);
3048
- $GLOBALS["cisco_saagent_backwardjitter"][$options["host_id"]][$key]=$backward_jitter[$key];
3053
- if ( isset($GLOBALS["cisco_saagent_backwardjitter"][$options["host_id"]][$options["index"]]) )
3054
- $value=$GLOBALS["cisco_saagent_backwardjitter"][$options["host_id"]][$options["index"]];
3056
- return round($value,2);
3059
+ $jitter = round($sum / $nr,2);
3063
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/cisco_saagent_bwpacketloss.php jffnms-0.9.3/engine/pollers/cisco_saagent_bwpacketloss.php
3064
--- ../jffnms-0.9.2/engine/pollers/cisco_saagent_bwpacketloss.php 2012-02-14 23:10:39.000000000 +1100
3065
+++ jffnms-0.9.3/engine/pollers/cisco_saagent_bwpacketloss.php 2012-03-26 18:29:53.000000000 +1100
3068
/* This file is part of JFFNMS
3069
* Copyright (C) <2002-2005> Javier Szyszlican <javier@szysz.com>
3070
+ * Copyright (C) 2012 Craig Small <csmall@enc.com.au>
3071
* This program is licensed under the GNU GPL, full terms in the LICENSE file
3073
-function poller_cisco_saagent_bwpacketloss($options) {
3074
+function poller_cisco_saagent_bwpacketloss($options)
3076
+ if (empty($options['ro_community']) or !is_numeric($options['index']))
3079
+ $sa_oid = '1.3.6.1.4.1.9.9.42.1.5.2.1';
3080
+ $ip = $options['host_ip'];
3081
+ $comm = $options['ro_community'];
3082
+ $inst = $options['index'];
3084
- if (!is_array($GLOBALS["cisco_saagent_bwpacketloss"][$options["host_id"]]) && $options["ro_community"]) {
3086
- while ( !is_array($bwpacketloss) and $i++ <=2 ) {
3087
- $bwpacketloss_sd=snmp_walk($options["host_ip"],$options["ro_community"],".1.3.6.1.4.1.9.9.42.1.5.2.1.27",1);
3088
- $rtlnum=snmp_walk($options["host_ip"],$options["ro_community"],".1.3.6.1.4.1.9.9.42.1.5.2.1.1",1);
3091
- if ( is_array($bwpacketloss_sd) )
3092
- foreach ($bwpacketloss_sd as $key=>$entry) {
3093
- $key=explode(".",$key);
3094
- $key=$key[count($key)-1];
3096
- $bwpacketloss_sd[$key]=$entry;
3099
- if ( is_array($rtlnum) )
3100
- foreach ($rtlnum as $key=>$entry) {
3101
- $key=explode(".",$key);
3102
- $key=$key[count($key)-1];
3104
- $rtlnum[$key]=$entry;
3107
- if ( is_array($bwpacketloss_sd) )
3108
- foreach ( $bwpacketloss_sd as $key=>$entry ) {
3109
- $bwpacketloss[$key]=0;
3110
- $nr=$rtlnum[$key];
3112
- $bwpacketloss[$key]=$bwpacketloss_sd[$key]/($bwpacketloss_sd[$key] + $rtlnum[$key])*100;
3114
- $GLOBALS["cisco_saagent_bwpacketloss"][$options["host_id"]][$key]=$bwpacketloss[$key];
3119
- if ( isset($GLOBALS["cisco_saagent_bwpacketloss"][$options["host_id"]][$options["index"]]) )
3120
- $value=$GLOBALS["cisco_saagent_bwpacketloss"][$options["host_id"]][$options["index"]];
3123
+ if ( ($bwpacketloss = snmp_get($ip, $comm, "$sa_oid.27.$inst")) === FALSE)
3125
+ if ( ($nr = snmp_get($ip, $comm, "$sa_oid.1.$inst")) === FALSE)
3130
+ $pktloss = $bwpacketloss/($bwpacketloss+$nr)*100;
3134
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/cisco_saagent_forwardjitter.php jffnms-0.9.3/engine/pollers/cisco_saagent_forwardjitter.php
3135
--- ../jffnms-0.9.2/engine/pollers/cisco_saagent_forwardjitter.php 2012-02-14 23:10:39.000000000 +1100
3136
+++ jffnms-0.9.3/engine/pollers/cisco_saagent_forwardjitter.php 2012-03-26 18:30:12.000000000 +1100
3138
* Copyright (C) <2002-2005> Javier Szyszlican <javier@szysz.com>
3139
* This program is licensed under the GNU GPL, full terms in the LICENSE file
3141
-function poller_cisco_saagent_forwardjitter($options) {
3143
- if ( !is_array($GLOBALS["cisco_saagent_forwardjitter"][$options["host_id"]])) {
3145
- while ( !is_array($sumpossd) and $i++ <= 2 ) {
3146
- $sumpossd=snmp_walk($options["host_ip"],$options["ro_community"],".1.3.6.1.4.1.9.9.42.1.5.2.1.9",1);
3147
- $sumnegsd=snmp_walk($options["host_ip"],$options["ro_community"],".1.3.6.1.4.1.9.9.42.1.5.2.1.14",1);
3148
- $nrpossd =snmp_walk($options["host_ip"],$options["ro_community"],".1.3.6.1.4.1.9.9.42.1.5.2.1.8",1);
3149
- $nrnegsd =snmp_walk($options["host_ip"],$options["ro_community"],".1.3.6.1.4.1.9.9.42.1.5.2.1.13",1);
3152
- if ( is_array($sumpossd) )
3153
- foreach ( $sumpossd as $key=>$entry ) {
3154
- $key=explode(".",$key);
3155
- $key=$key[count($key)-1];
3157
- $sum_pos_sd[$key]=$entry;
3160
- if ( is_array($sumnegsd) )
3161
- foreach ( $sumnegsd as $key=>$entry ) {
3162
- $key=explode(".",$key);
3163
- $key=$key[count($key)-1];
3165
- $sum_neg_sd[$key]=$entry;
3168
- if ( is_array($nrpossd) )
3169
- foreach ( $nrpossd as $key=>$entry ) {
3170
- $key=explode(".",$key);
3171
- $key=$key[count($key)-1];
3173
- $nr_pos_sd[$key]=$entry;
3176
- if ( is_array($nrnegsd) )
3177
- foreach ( $nrnegsd as $key=>$entry ) {
3178
- $key=explode(".",$key);
3179
- $key=$key[count($key)-1];
3181
- $nr_neg_sd[$key]=$entry;
3184
- if ( is_array($sum_pos_sd) )
3185
- foreach ( $sum_pos_sd as $key=>$entry ) {
3186
- $sum=$sum_pos_sd[$key]+$sum_neg_sd[$key];
3187
- $nr=$nr_pos_sd[$key]+$nr_neg_sd[$key];
3189
- $forward_jitter[$key]=0;
3191
- $forward_jitter[$key]=($sum/$nr);
3193
- $GLOBALS["cisco_saagent_forwardjitter"][$options["host_id"]][$key]=$forward_jitter[$key];
3198
- if ( isset($GLOBALS["cisco_saagent_forwardjitter"][$options["host_id"]][$options["index"]]) )
3199
- $value=$GLOBALS["cisco_saagent_forwardjitter"][$options["host_id"]][$options["index"]];
3201
- return round($value,2);
3202
+function poller_cisco_saagent_forwardjitter($options)
3204
+ if (empty($options['ro_community']) or !is_numeric($options['index']))
3206
+ $sa_oid = '1.3.6.1.4.1.9.9.42.1.5.2.1';
3207
+ $ip = $options['host_ip'];
3208
+ $comm = $options['ro_community'];
3209
+ $inst = $options['index'];
3211
+ if ( ($sumpossd = snmp_get($ip, $comm, "$sa_oid.9.$inst")) === FALSE)
3213
+ if ( ($sumnegsd = snmp_get($ip, $comm, "$sa_oid.14.$inst")) === FALSE)
3215
+ if ( ($nrpossd = snmp_get($ip, $comm, "$sa_oid.8.$inst")) === FALSE)
3217
+ if ( ($nrnegsd = snmp_get($ip, $comm, "$sa_oid.13.$inst")) === FALSE)
3220
+ $sum = $sumpossd + $sumnegsd;
3221
+ $nr = $nrpostsd + $nrnegsd;
3225
+ $jitter = round($sum / $nr,2);
3229
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/cisco_saagent_fwpacketloss.php jffnms-0.9.3/engine/pollers/cisco_saagent_fwpacketloss.php
3230
--- ../jffnms-0.9.2/engine/pollers/cisco_saagent_fwpacketloss.php 2012-02-14 23:10:39.000000000 +1100
3231
+++ jffnms-0.9.3/engine/pollers/cisco_saagent_fwpacketloss.php 2012-03-26 18:31:23.000000000 +1100
3234
/* This file is part of JFFNMS
3235
* Copyright (C) <2002-2005> Javier Szyszlican <javier@szysz.com>
3236
+ * Copyright (C) 2012 Craig Small <csmall@enc.com.au>
3237
* This program is licensed under the GNU GPL, full terms in the LICENSE file
3239
-function poller_cisco_saagent_fwpacketloss($options) {
3240
+function poller_cisco_saagent_fwpacketloss($options)
3242
+ if (empty($options['ro_community']) or !is_numeric($options['index']))
3245
+ $sa_oid = '1.3.6.1.4.1.9.9.42.1.5.2.1';
3246
+ $ip = $options['host_ip'];
3247
+ $comm = $options['ro_community'];
3248
+ $inst = $options['index'];
3250
- if (!is_array($GLOBALS["cisco_saagent_fwpacketloss"][$options["host_id"]]) && $options["ro_community"]) {
3252
- while ( !is_array($fwpacketloss) and $i++ <=2 ) {
3253
- $fwpacketloss_sd=snmp_walk($options["host_ip"],$options["ro_community"],".1.3.6.1.4.1.9.9.42.1.5.2.1.26",1);
3254
- $rtlnum=snmp_walk($options["host_ip"],$options["ro_community"],".1.3.6.1.4.1.9.9.42.1.5.2.1.1",1);
3257
- if ( is_array($fwpacketloss_sd) )
3258
- foreach ($fwpacketloss_sd as $key=>$entry) {
3259
- $key=explode(".",$key);
3260
- $key=$key[count($key)-1];
3262
- $fwpacketloss_sd[$key]=$entry;
3265
- if ( is_array($rtlnum) )
3266
- foreach ($rtlnum as $key=>$entry) {
3267
- $key=explode(".",$key);
3268
- $key=$key[count($key)-1];
3270
- $rtlnum[$key]=$entry;
3273
- if ( is_array($fwpacketloss_sd) )
3274
- foreach ( $fwpacketloss_sd as $key=>$entry ) {
3275
- $fwpacketloss[$key]=0;
3276
- $nr=$rtlnum[$key];
3278
- $fwpacketloss[$key]=$fwpacketloss_sd[$key]/($fwpacketloss_sd[$key] + $rtlnum[$key])*100;
3280
- $GLOBALS["cisco_saagent_fwpacketloss"][$options["host_id"]][$key]=$fwpacketloss[$key];
3285
- if ( isset($GLOBALS["cisco_saagent_fwpacketloss"][$options["host_id"]][$options["index"]]) )
3286
- $value=$GLOBALS["cisco_saagent_fwpacketloss"][$options["host_id"]][$options["index"]];
3289
+ if ( ($fwpacketloss = snmp_get($ip, $comm, "$sa_oid.26.$inst")) === FALSE)
3291
+ if ( ($nr = snmp_get($ip, $comm, "$sa_oid.1.$inst")) === FALSE)
3296
+ $pktloss = $fwpacketloss/($fwpacketloss+$nr)*100;
3300
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/cisco_saagent_rtl.php jffnms-0.9.3/engine/pollers/cisco_saagent_rtl.php
3301
--- ../jffnms-0.9.2/engine/pollers/cisco_saagent_rtl.php 2012-02-14 23:10:39.000000000 +1100
3302
+++ jffnms-0.9.3/engine/pollers/cisco_saagent_rtl.php 2012-03-26 18:31:39.000000000 +1100
3305
/* This file is part of JFFNMS
3306
* Copyright (C) <2002-2005> Javier Szyszlican <javier@szysz.com>
3307
+ * Copyright (C) 2012 Craig Small <csmall@enc.com.au>
3308
* This program is licensed under the GNU GPL, full terms in the LICENSE file
3310
-function poller_cisco_saagent_rtl($options) {
3311
+function poller_cisco_saagent_rtl($options)
3313
+ if (empty($options['ro_community']) or !is_numeric($options['index']))
3315
+ $sa_oid = '1.3.6.1.4.1.9.9.42.1.5.2.1';
3316
+ $ip = $options['host_ip'];
3317
+ $comm = $options['ro_community'];
3318
+ $inst = $options['index'];
3320
- if ( !is_array($GLOBALS["cisco_saagent_rtl"][$options["host_id"]]) ) {
3322
- while ( !is_array($rtlsum) and $i++ <=2 ) {
3323
- $rtlsum=snmp_walk($options["host_ip"],$options["ro_community"],".1.3.6.1.4.1.9.9.42.1.5.2.1.2",1);
3324
- $rtlnum=snmp_walk($options["host_ip"],$options["ro_community"],".1.3.6.1.4.1.9.9.42.1.5.2.1.1",1);
3327
- if ( is_array($rtlsum) )
3328
- foreach ( $rtlsum as $key=>$entry ) {
3329
- $key=explode(".",$key);
3330
- $key=$key[count($key)-1];
3332
- $rtlsum[$key]=$entry;
3335
- if ( is_array($rtlnum) )
3336
- foreach ( $rtlnum as $key=>$entry ) {
3337
- $key=explode(".",$key);
3338
- $key=$key[count($key)-1];
3340
- $rtlnum[$key]=$entry;
3343
- if ( is_array($rtlsum) )
3344
- foreach ( $rtlsum as $key=>$entry ) {
3346
- $nr=$rtlnum[$key];
3348
- $rtl[$key]=$rtlsum[$key]/$rtlnum[$key];
3349
- $GLOBALS["cisco_saagent_rtl"][$options["host_id"]][$key]=$rtl[$key];
3354
- if (isset($GLOBALS["cisco_saagent_rtl"][$options["host_id"]][$options["index"]]) )
3355
- $value=$GLOBALS["cisco_saagent_rtl"][$options["host_id"]][$options["index"]];
3358
+ if ( ($rtlsum = snmpget($ip, $comm, "$sa_oid.2.$inst")) === FALSE)
3360
+ if ( ($rtlnum = snmpget($ip, $comm, "$sa_oid.1.$inst")) === FALSE)
3365
+ $rtl = $rtlsum / $rtlnum;
3369
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/cisco_saagent_verify.php jffnms-0.9.3/engine/pollers/cisco_saagent_verify.php
3370
--- ../jffnms-0.9.2/engine/pollers/cisco_saagent_verify.php 2012-02-14 23:10:39.000000000 +1100
3371
+++ jffnms-0.9.3/engine/pollers/cisco_saagent_verify.php 2012-03-26 18:47:54.000000000 +1100
3373
* Copyright (C) <2002-2005> Javier Szyszlican <javier@szysz.com>
3374
* This program is licensed under the GNU GPL, full terms in the LICENSE file
3376
-function poller_cisco_saagent_verify($options) {
3378
- if (!is_array($GLOBALS["verify_saagent_operation"][$options["host_id"]]) && $options["ro_community"]) {
3380
- while (!is_array($rets) and $i++ <=2 )
3381
- $rets=snmp_walk($options["host_ip"],$options["ro_community"],".1.3.6.1.4.1.9.9.42.1.5.2.1.1",1);
3383
- if ( is_array($rets) )
3384
- foreach ( $rets as $key=>$entry ) {
3385
- $key=explode(".",$key);
3386
- $key=$key[count($key)-1];
3387
- $GLOBALS["verify_saagent_operation"][$options["host_id"]][$key]=$entry;
3390
+function poller_cisco_saagent_verify($options)
3392
+ if ($options['ro_community'] == '')
3395
- //$value="down"; //don't assume DOWN let that job to the alarm backend
3397
- if ( isset($GLOBALS["verify_saagent_operation"][$options["host_id"]][$options["index"]]) )
3398
- $check_val=$GLOBALS["verify_saagent_operation"][$options["host_id"]][$options["index"]];
3400
- if (isset($check_val))
3403
- return "$value|$value";
3404
+ $numrtt = snmpget($options['host_ip'], $options['ro_community'],
3405
+ '.1.3.6.1.4.1.9.9.42.1.5.2.1.1.'.$options['index']);
3406
+ if ($numrtt === FALSE)
3408
+ return "UP|$numrtt";
3411
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/cisco_snmp_ping_end.php jffnms-0.9.3/engine/pollers/cisco_snmp_ping_end.php
3412
--- ../jffnms-0.9.2/engine/pollers/cisco_snmp_ping_end.php 2012-02-14 23:10:39.000000000 +1100
3413
+++ jffnms-0.9.3/engine/pollers/cisco_snmp_ping_end.php 2012-03-26 09:35:44.000000000 +1100
3415
* This program is licensed under the GNU GPL, full terms in the LICENSE file
3417
function poller_cisco_snmp_ping_end ($options) {
3418
- extract($options);
3419
+ $peer = $options['peer'];
3420
+ $host_ip = $options['host_ip'];
3421
+ $rw_community = $options['rw_community'];
3422
+ $interface_id = $options['interface_id'];
3423
+ $oid = '.1.3.6.1.4.1.9.9.16.1.1.1';
3425
- if (($peer) && ($host_ip) && ($rw_community)) {
3426
- $oid = ".1.3.6.1.4.1.9.9.16.1.1.1";
3427
- $result = snmp_set($host_ip,$rw_community,"$oid.16.$random$interface_id","i","6"); //destroy
3428
- return count($result);
3430
+ if ($peer == '' || $host_ip == '' || $rw_community == '' )
3433
+ if (snmp_set($host_ip,$rw_community,"$oid.16.$random$interface_id","i","6") !== FALSE)
3438
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/cisco_snmp_ping_start.php jffnms-0.9.3/engine/pollers/cisco_snmp_ping_start.php
3439
--- ../jffnms-0.9.2/engine/pollers/cisco_snmp_ping_start.php 2010-11-08 10:20:56.000000000 +1100
3440
+++ jffnms-0.9.3/engine/pollers/cisco_snmp_ping_start.php 2012-03-26 09:18:17.000000000 +1100
3443
foreach($set_oids as $set_oid)
3445
- if (count(snmp_set($host_ip,$rw_community,
3446
- $oid.'.'.$set_oid[0].$random.$interface_id,
3447
- $set_oid[1], $set_oid[2])) != 1)
3449
- logger("ERROR: Ping not ready", 0);
3452
+ if (snmp_set($host_ip,$rw_community,
3453
+ $oid.'.'.$set_oid[0].$random.$interface_id,
3454
+ $set_oid[1], $set_oid[2]) === FALSE) {
3455
+ logger("ERROR: Ping not ready", 0);
3459
if (($result = snmp_get($host_ip,$rw_community,"$oid.16.$random$interface_id"))==2) //2 si esta listo
3461
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/hostmib_apps.php jffnms-0.9.3/engine/pollers/hostmib_apps.php
3462
--- ../jffnms-0.9.2/engine/pollers/hostmib_apps.php 2012-02-14 23:10:39.000000000 +1100
3463
+++ jffnms-0.9.3/engine/pollers/hostmib_apps.php 2012-03-26 08:59:01.000000000 +1100
3468
-function poller_hostmib_apps ($options) {
3469
+function poller_hostmib_apps ($options)
3472
+ static $buffer_age = 0;
3473
+ $buffer_max_len=20;
3474
+ $buffer_max_age=180;
3476
$oid = '.1.3.6.1.2.1.25.4.2.1.2'; //host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunName
3477
- $host_id = $options['host_id'];
3478
+ $hid = $options['host_id'];
3481
- while (!is_array($Apps[$host_id]) && ($i++ <= 2) && ($options['ro_community'])) //try 3 times to get the data
3482
- $Apps[$host_id]['raw'] = snmp_walk($options['host_ip'],$options['ro_community'],$oid,1);
3483
+ if (empty($options['ro_community']))
3486
+ // Check freshness of buffer
3487
+ if (!array_key_exists('Apps', $GLOBALS) or ($buffer_age + $buffer_max_age < time())) {
3489
+ $buffer_age = time();
3492
+ if (!array_key_exists($hid, $Apps) || !array_key_exists('raw',$Apps[$hid]))
3493
+ $Apps[$hid] = array(
3494
+ 'raw'=> snmp_walk($options['host_ip'],$options['ro_community'],$oid,1),
3498
- if (is_array($Apps[$host_id]['raw'])) //if we got something
3500
+ if (is_array($Apps[$hid]['raw'])) {
3502
- foreach ($Apps[$host_id]['raw'] as $key=>$service) //go thru all
3503
+ foreach ($Apps[$hid]['raw'] as $key=>$service) //go thru all
3505
- $interface_in = trim(str_replace("'",'',trim($service)));
3506
- if ( $interface_in == $options['interface']
3507
- || ($options['ignorecase']
3508
- && (strcasecmp($interface_in, $options['interface']) == 0))) //until we find the interface we're looking for
3510
+ $interface_in = trim(str_replace(array("\"","'"),'',trim($service)));
3511
+ if (array_key_exists('ignorecase', $options) && $options['ignorecase'])
3512
+ $match = strncasecmp($interface_in,$options['interface'],30);
3514
+ $match = strncmp($interface_in,$options['interface'],30);
3515
+ if ($match == 0) {
3517
$pid = end(explode('.',$key));
3518
- $Apps[$host_id]['pids'][$interface_in][]=$pid;
3519
+ $Apps[$hid]['pids'][$interface_in][]=$pid;
3522
$value='not running';
3523
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/hostmib_perf.php jffnms-0.9.3/engine/pollers/hostmib_perf.php
3524
--- ../jffnms-0.9.2/engine/pollers/hostmib_perf.php 2012-02-14 23:10:39.000000000 +1100
3525
+++ jffnms-0.9.3/engine/pollers/hostmib_perf.php 2012-04-15 10:15:15.000000000 +1000
3527
//By: Javier Szyszlican
3528
//Based on the Status Poller By: Anders Karlsson <anders.x.karlsson@songnetworks.se>
3530
- function poller_hostmib_perf ($options) {
3532
+function poller_hostmib_perf ($options)
3535
+ $hid = $options['host_id'];
3537
- $hrSWRunPerfEntry_oid = ".1.3.6.1.2.1.25.5.1.1";
3538
- $perf_oid = $hrSWRunPerfEntry_oid.".".$options["poller_parameters"];
3540
- if (is_array($Apps[$options["host_id"]]["pids"][$options["interface"]])) { //if we got something
3541
+ $hrSWRunPerfEntry_oid = '.1.3.6.1.2.1.25.5.1.1';
3542
+ $perf_oid = $hrSWRunPerfEntry_oid.'.'.$options['poller_parameters'];
3544
+ if (!array_key_exists('Apps', $GLOBALS))
3547
- $pids = $Apps[$options["host_id"]]["pids"][$options["interface"]];
3549
- foreach ($pids as $pid)
3550
- $values[] = current(explode(" ",snmp_get($options["host_ip"], $options["ro_community"], $perf_oid.".$pid")));
3552
- $value = array_sum($values);
3557
+ if (array_key_exists($hid, $Apps) && is_array($Apps[$hid]['pids'][$options['interface']])) { //if we got something
3559
+ $pids = $Apps[$hid]['pids'][$options['interface']];
3561
+ foreach ($pids as $pid)
3562
+ $value += intval(current(explode(' ',snmp_get($options['host_ip'], $options['ro_community'], $perf_oid.".$pid"))));
3567
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/ntp_client.php jffnms-0.9.3/engine/pollers/ntp_client.php
3568
--- ../jffnms-0.9.2/engine/pollers/ntp_client.php 2011-03-03 12:48:07.000000000 +1100
3569
+++ jffnms-0.9.3/engine/pollers/ntp_client.php 2012-03-26 09:00:26.000000000 +1100
3572
$ntp_command = $Config->get('ntpq_executable');
3573
if (!is_executable($ntp_command))
3577
exec($ntp_command.' -p '.$data['host_ip'].' 2>/dev/null',$raw_result);
3578
if (count($raw_result)<=2)
3579
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/reachability_end.php jffnms-0.9.3/engine/pollers/reachability_end.php
3580
--- ../jffnms-0.9.2/engine/pollers/reachability_end.php 2011-02-03 15:46:34.000000000 +1100
3581
+++ jffnms-0.9.3/engine/pollers/reachability_end.php 2012-03-26 08:44:54.000000000 +1100
3583
$uniq = $poller_buffer['ping-'.$options['interface_id']]; //get file id from reachability_start
3584
$filename = "$temp_path/$uniq.log";
3588
if (file_exists($filename))
3589
$result = unlink ($filename);
3591
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/reachability_start.php jffnms-0.9.3/engine/pollers/reachability_start.php
3592
--- ../jffnms-0.9.2/engine/pollers/reachability_start.php 2011-02-09 11:35:55.000000000 +1100
3593
+++ jffnms-0.9.3/engine/pollers/reachability_start.php 2012-03-26 09:40:03.000000000 +1100
3597
$temp_path = $Config->get('engine_temp_path');
3600
if ( ($host_info = resolve_host($options['host_ip'])) === FALSE)
3603
list ($af, $ip, $port) = $host_info;
3605
$fping = $Config->get('fping6_executable');
3606
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/reachability_wait.php jffnms-0.9.3/engine/pollers/reachability_wait.php
3607
--- ../jffnms-0.9.2/engine/pollers/reachability_wait.php 2011-02-03 15:57:31.000000000 +1100
3608
+++ jffnms-0.9.3/engine/pollers/reachability_wait.php 2012-03-26 10:04:31.000000000 +1100
3610
global $poller_buffer;
3612
$temp_path = $Config->get('engine_temp_path');
3613
- $uniq = $poller_buffer['ping-'.$options['interface_id']]; //get file id from reachability_start
3614
+ $buffer_name ='ping-'.$options['interface_id'];
3615
+ if (!array_key_exists($buffer_name, $poller_buffer))
3617
+ $uniq = $poller_buffer[$buffer_name];
3619
$filename = "$temp_path/$uniq.log";
3621
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/snmp_counter.php jffnms-0.9.3/engine/pollers/snmp_counter.php
3622
--- ../jffnms-0.9.2/engine/pollers/snmp_counter.php 2010-11-17 10:20:02.000000000 +1100
3623
+++ jffnms-0.9.3/engine/pollers/snmp_counter.php 2012-03-26 08:57:07.000000000 +1100
3626
function poller_snmp_counter ($options)
3628
- extract($options);
3629
+ $oid = $options['poller_parameters'];
3630
+ $host_ip = $options['host_ip'];
3632
- $oid = $poller_parameters;
3633
+ if (!$options['ro_community'])
3636
- if ($ro_community) { //dont do anything if we dont have the community
3637
- $value = trim(get_snmp_counter($host_ip,$ro_community,$oid));
3638
- if ($value=="") $value = trim(get_snmp_counter($host_ip,$ro_community,$oid));
3640
- if (strpos($value," ")!==FALSE) $value = substr($value,0,strpos($value," "));
3641
- $value = str_replace("(","", str_replace(")","",$value));
3643
+ $value = trim(get_snmp_counter($options['host_ip'],
3644
+ $options['ro_community'], $oid));
3645
+ if ($value === FALSE or $value == '')
3649
+ if ( ($pos = strpos($value,' ')) !==FALSE)
3650
+ $value = substr($value,0,$pos);
3651
+ return (str_replace(array('(',')'),'',$value));
3654
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/snmp_ibm_power.php jffnms-0.9.3/engine/pollers/snmp_ibm_power.php
3655
--- ../jffnms-0.9.2/engine/pollers/snmp_ibm_power.php 2012-02-14 23:10:39.000000000 +1100
3656
+++ jffnms-0.9.3/engine/pollers/snmp_ibm_power.php 2012-03-26 18:40:30.000000000 +1100
3658
* Copyright (C) <2002-2005> David LIMA <dlima@fr.scc.com>
3659
* This program is licensed under the GNU GPL, full terms in the LICENSE file
3661
-function poller_snmp_ibm_power ($options) {
3662
- extract($options);
3663
+function poller_snmp_ibm_power ($options)
3665
+ $oid = $options['poller_parameters'];
3666
+ if (empty($options['ro_community']))
3669
- $oid = $poller_parameters;
3670
- if ($ro_community) { //dont do anything if we dont have the community
3671
- $value2 = (snmp_get($host_ip,$ro_community,$oid));
3672
- preg_match('{(\d+)}',$value2,$value);
3675
+ $snmp_value = (snmp_get($options['host_ip'],$options['ro_community'],$oid));
3676
+ if ( preg_match('{(\d+)}',$snmp_value,$matches))
3677
+ return $matches[1];
3681
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/snmp_ibm_temperature.php jffnms-0.9.3/engine/pollers/snmp_ibm_temperature.php
3682
--- ../jffnms-0.9.2/engine/pollers/snmp_ibm_temperature.php 2012-02-14 23:10:39.000000000 +1100
3683
+++ jffnms-0.9.3/engine/pollers/snmp_ibm_temperature.php 2012-03-26 18:42:01.000000000 +1100
3685
* Copyright (C) <2002-2005> David LIMA <dlima@fr.scc.com>
3686
* This program is licensed under the GNU GPL, full terms in the LICENSE file
3688
-function poller_snmp_ibm_temperature ($options) {
3689
- extract($options);
3690
+function poller_snmp_ibm_temperature ($options)
3692
+ $oid = $options['poller_parameters'];
3693
+ if (empty($options['ro_community']))
3696
- $oid = $poller_parameters;
3697
- if ($ro_community) { //dont do anything if we dont have the community
3698
- $value2 = (snmp_get($host_ip,$ro_community,$oid));
3699
- preg_match('{[+|-](\d+)}',$value2,$value);
3702
+ $snmp_value = (snmp_get($options['host_ip'],$options['ro_community'],$oid));
3703
+ if ( preg_match('{[+|-](\d+)}',$snmp_value,$matches))
3704
+ return $matches[1];
3708
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/snmp_interface_status_all.php jffnms-0.9.3/engine/pollers/snmp_interface_status_all.php
3709
--- ../jffnms-0.9.2/engine/pollers/snmp_interface_status_all.php 2012-02-14 23:10:39.000000000 +1100
3710
+++ jffnms-0.9.3/engine/pollers/snmp_interface_status_all.php 2012-03-14 21:56:10.000000000 +1100
3713
function poller_snmp_interface_status_all ($options)
3715
- $stored_data = 'snmp_interface_status_data-'.$options['poller_parameters'];
3717
+ static $static_buffer = array();
3718
+ static $buffer_age = 0;
3719
+ $hid = $options['host_id'];
3720
+ $buffer_max_age = 180; // 3 minutes of buffer
3721
+ $buffer_max_size = 20; // 20 hosts worth of data
3722
+ $min_iface_buffer = 30; // If device has 30 or more int, buffer it
3723
+ $snmp_col = $options['poller_parameters'];
3725
if (!$options['ro_community'])
3728
($options['fixed_admin_status']==1)) //And the interface has specified that it does not want its admin status to be modified
3729
return FALSE; //Return nothing
3731
- if (!isset($GLOBALS[$stored_data]['number_of_interfaces'])) //Get the Number of Interfaces
3732
- $GLOBALS[$stored_data]['number_of_interfaces'] =
3733
- snmp_get($options['host_ip'],$options['ro_community'],'.1.3.6.1.2.1.2.1.0');
3734
- if ($GLOBALS[$stored_data]['number_of_interfaces'] > 30) {
3735
- if (count($GLOBALS[$stored_data])==1) { //only the number of interfaces is set
3738
- while (!is_array($rets) and $i++ <= 2) //check 3 times or until we get something valid
3739
- $rets=snmp_walk($options['host_ip'],$options['ro_community'],'.1.3.6.1.2.1.2.2.1.'.$options['poller_parameters'],1);
3740
- if (is_array($rets))
3741
- foreach ($rets as $key=>$entry) {
3742
- $key=explode('.',$key);
3743
- $key=$key[count($key)-1];
3744
- $GLOBALS[$stored_data][$key]=$entry;
3746
+ // Check freshnewss of buffer
3747
+ if ($buffer_age + $buffer_max_age < time()) {
3748
+ $static_buffer = array();
3749
+ $buffer_age = time();
3752
+ // Fill static buffer
3753
+ if (!array_key_exists($hid, $static_buffer)) {
3755
+ if (count($static_buffer) > $buffer_max_size)
3756
+ shift($static_buffer);
3758
+ $static_buffer[$hid]=array('number_of_interfaces' => snmp_get($options['host_ip'],$options['ro_community'],'.1.3.6.1.2.1.2.1.0'));
3760
+ if ($static_buffer[$hid]['number_of_interfaces'] > $min_iface_buffer) {
3761
+ if (!array_key_exists($snmp_col, $static_buffer[$hid])) {
3762
+ $rets=snmp_walk($options['host_ip'],$options['ro_community'],'.1.3.6.1.2.1.2.2.1.'.$options['poller_parameters'],1);
3763
+ if (is_array($rets)) {
3764
+ $static_buffer[$hid][$snmp_col] = array();
3765
+ foreach ($rets as $key=>$entry) {
3766
+ $key=explode('.',$key);
3767
+ $key=$key[count($key)-1];
3768
+ $static_buffer[$hid][$snmp_col][$key]=$entry;
3772
- $GLOBALS[$stored_data][$options['interfacenumber']] =
3773
- snmp_get($options['host_ip'],$options['ro_community'],'.1.3.6.1.2.1.2.2.1.'.$options['poller_parameters'].'.'.$options['interfacenumber']);
3777
+ if ($static_buffer[$hid]['number_of_interfaces'] > $min_iface_buffer) {
3778
+ if (!array_key_exists($options['interfacenumber'], $static_buffer[$hid][$snmp_col]))
3779
+ return FALSE; // No found in buffer
3780
+ $check_val = $static_buffer[$hid][$snmp_col][$options['interfacenumber']];
3782
+ $check_val = snmp_get($options['host_ip'],$options['ro_community'],'.1.3.6.1.2.1.2.2.1.'.$snmp_col.'.'.$options['interfacenumber']);
3785
- if (!array_key_exists($options['interfacenumber'], $GLOBALS[$stored_data]))
3788
- $check_val=$GLOBALS[$stored_data][$options['interfacenumber']];
3789
if ($check_val == '')
3792
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/snmp_walk_average.php jffnms-0.9.3/engine/pollers/snmp_walk_average.php
3793
--- ../jffnms-0.9.2/engine/pollers/snmp_walk_average.php 2012-02-14 23:10:39.000000000 +1100
3794
+++ jffnms-0.9.3/engine/pollers/snmp_walk_average.php 2012-03-26 18:44:07.000000000 +1100
3796
* Copyright (C) <2002-2005> Javier Szyszlican <javier@szysz.com>
3797
* This program is licensed under the GNU GPL, full terms in the LICENSE file
3799
- function poller_snmp_walk_average ($options) {
3800
- $oid = $options["poller_parameters"];
3801
+function poller_snmp_walk_average ($options)
3803
+ $oid = $options["poller_parameters"];
3804
+ if (empty($options['ro_community']))
3807
- if ($options["ro_community"]) { //dont do anything if we dont have the community
3808
- $values = snmp_walk ($options["host_ip"],$options["ro_community"],$oid);
3810
- if (is_array($values) && count($values) > 0)
3811
- $average = array_sum($values)/count($values);
3817
+ $values = snmp_walk ($options['host_ip'],$options['ro_community'],$oid);
3818
+ if (is_array($values) && count($values) > 0)
3819
+ $average = array_sum($values)/count($values);
3823
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/sql_status.php jffnms-0.9.3/engine/pollers/sql_status.php
3824
--- ../jffnms-0.9.2/engine/pollers/sql_status.php 2012-02-14 23:10:39.000000000 +1100
3825
+++ jffnms-0.9.3/engine/pollers/sql_status.php 2012-03-26 18:44:55.000000000 +1100
3827
* This program is licensed under the GNU GPL, full terms in the LICENSE file
3830
- function poller_sql_status ($options) {
3832
- $buffer = &$GLOBALS["session_vars"]["poller_buffer"];
3834
- $record_values = array(
3835
- $buffer["records_counter-".$options["interface_id"]],
3836
- $buffer["records_absolute-".$options["interface_id"]]);
3838
- $records = is_numeric($record_values[0])?$record_values[0]:$record_values[1];
3840
- if ($records >= 0) {
3841
- if (is_numeric($options["max_records"]) && ($records > $options["max_records"]))
3842
- return "out of bounds|$records records is more than Max ".$options["max_records"];
3843
+function poller_sql_status ($options)
3845
+ global $poller_buffer;
3847
+ if (!array_key_exists('records_counter-'.$options['interface_id'], $poller_buffer) or
3848
+ !array_key_exists('records_absolute-'.$options['interface_id'], $poller_buffer))
3851
+ $record_values = array(
3852
+ $poller_buffer['records_counter-'.$options['interface_id']],
3853
+ $poller_buffer['records_absolute-'.$options['interface_id']]);
3855
+ $records = is_numeric($record_values[0])?$record_values[0]:$record_values[1];
3857
+ if ($records >= 0) {
3858
+ if (is_numeric($options['max_records']) && ($records > $options['max_records']))
3859
+ return 'out of bounds|$records records is more than Max '.$options['max_records'];
3861
- if (is_numeric($options["min_records"]) && ($records < $options["min_records"]))
3862
- return "out of bounds|$records records is less than Min ".$options["min_records"];
3863
+ if (is_numeric($options['min_records']) && ($records < $options['min_records']))
3864
+ return 'out of bounds|$records records is less than Min '.$options['min_records'];
3866
- return "ok|$records records is within boundaries";
3867
+ return 'ok|$records records is within boundaries';
3872
- switch ($records) {
3873
- case -1: $error = "Problem connecting to the DB"; break;
3874
- case -2: $error = "Problem in Query"; break;
3875
- case -3: $error = "Problem in Data Retrival"; break;
3878
- return "out of bounds|$error";
3880
+ switch ($records) {
3881
+ case -1: $error = 'Problem connecting to the DB'; break;
3882
+ case -2: $error = 'Problem in Query'; break;
3883
+ case -3: $error = 'Problem in Data Retrival'; break;
3886
+ return 'out of bounds|$error';
3890
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/tcp_connection_number.php jffnms-0.9.3/engine/pollers/tcp_connection_number.php
3891
--- ../jffnms-0.9.2/engine/pollers/tcp_connection_number.php 2011-03-03 13:11:52.000000000 +1100
3892
+++ jffnms-0.9.3/engine/pollers/tcp_connection_number.php 2012-03-26 14:46:18.000000000 +1100
3894
//Read the tcp.tcpConnTable.tcpConnEntry.tcpConnState table to find out
3895
//which ports are used in the host
3897
-function poller_tcp_connection_number ($options) {
3898
- global $poller_buffer;
3899
- $buffer_name = 'tcpConnEntry:'.$options['host_ip'];
3900
+function poller_tcp_connection_number ($options)
3902
+ static $static_buffer = array();
3903
+ static $buffer_age = 0;
3904
+ $buffer_max_len=20; // 20 hosts of details
3905
+ $buffer_max_age=180; // 3 minutes of buffer
3906
+ $port = $options['port'];
3907
+ $hid = $options['host_id'];
3909
if ($options['ro_community'] =='')
3912
- $port = $options['port'];
3915
- if (!array_key_exists($buffer_name, $poller_buffer))
3916
- $poller_buffer[$buffer_name] = snmp_walk ($options['host_ip'],$options['ro_community'],'.1.3.6.1.2.1.6.13.1.1',1);
3917
- $tcpConnEntry = $poller_buffer[$buffer_name];
3918
- if (is_array($tcpConnEntry)) {
3919
- reset($tcpConnEntry);
3920
- //var_dump($tcpConnEntry);
3921
+ if ($buffer_age + $buffer_max_age < time()) {
3922
+ $static_buffer = array();
3923
+ $buffer_age = time();
3925
+ if (!array_key_exists($hid, $static_buffer) or count($static_buffer[$hid])==0) {
3926
+ if (sizeof($static_buffer) > $buffer_max_len)
3927
+ array_shift($static_buffer);
3929
+ // Fill the static buffer with port counts
3930
+ $snmp_table = snmp_walk ($options['host_ip'],$options['ro_community'],'.1.3.6.1.2.1.6.13.1.1',1);
3931
+ if (!is_array($snmp_table))
3933
+ reset($snmp_table);
3934
+ $static_buffer[$hid]=array();
3935
foreach ($tcpConnEntry as $key => $state)
3936
- if (strpos($state,"5")!==FALSE) { //only established
3937
- $entry = explode(".",$key);
3938
- $entry = array_slice ($entry, count($entry)-10,10); //get only the last 10 items (SRC-IP(4) + srcport + DEST-IP(4) + destport)
3939
- $entry_port = $entry[4]; //srcport (local)
3940
+ if (strpos($state,'5')!==FALSE) { //only established
3941
+ $entry = explode('.',$key);
3942
+ $entry = array_slice ($entry, count($entry)-10,10); //get only the last 10 items (SRC-IP(4) + srcport + DEST-IP(4) + destport)
3943
+ $entry_port = $entry[4]; //srcport (local)
3945
- if ($port==$entry_port) //if the search and found ports are equal
3950
+ if (array_key_exists($entry_port,$static_buffer[$hid]))
3951
+ $static_buffer[$hid][$entry_port]++;
3953
+ $static_buffer[$hid][$entry_port]=1;
3955
+ }//buffer doesnt have hid
3956
+ if (array_key_exists($hid, $static_buffer) and array_key_exists($port, $static_buffer[$hid]))
3957
+ return $static_buffer[$hid][$port];
3961
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/tcp_port_content.php jffnms-0.9.3/engine/pollers/tcp_port_content.php
3962
--- ../jffnms-0.9.2/engine/pollers/tcp_port_content.php 2012-02-14 23:10:39.000000000 +1100
3963
+++ jffnms-0.9.3/engine/pollers/tcp_port_content.php 2012-03-26 16:34:02.000000000 +1100
3965
* This program is licensed under the GNU GPL, full terms in the LICENSE file
3967
function poller_tcp_port_content ($options) {
3968
+ global $poller_buffer;
3969
+ $buffer_name = $options['poller_parameters'].'-'.$options['interface_id'];
3971
- if ($options["check_content"]==1) {
3972
+ if (!array_key_exists($buffer_name, $poller_buffer))
3975
- $buffer = &$GLOBALS["session_vars"]["poller_buffer"];
3976
+ if ($options['check_content']!=1)
3977
+ return 'valid|not checked';
3981
- $tcp_data = &$buffer[$options["poller_parameters"]."-".$options["interface_id"]];
3983
- if (!empty($options["check_url"])) //we have a URL to check
3984
- $url = $options["check_url"];
3986
- if (empty($tcp_data)) { //if didn't have data directly from TCP
3988
- $allowed_protos = array("http","ftp","https","ftps"); //protos we can handle
3990
- list ($proto, $param) = explode ("|",$options["description"]);
3991
- $proto_token = strpos($proto,"://");
3993
- if ($proto_token===FALSE)
3994
- $proto_type = $proto;
3996
- $proto_type = substr($proto,0,$proto_token);
3998
- if (in_array($proto_type, $allowed_protos))
3999
- $url = (($proto_token===FALSE)?"$proto_type://":$proto).$options["host_ip"].":".$options["port"].$param;
4005
- if (!empty($url)) {
4006
- if (!isset($buffer["tcp_port_content"][$url]))
4007
- $buffer["tcp_port_content"][$url]= file($url);
4009
- $data = $buffer["tcp_port_content"][$url];
4011
- if (is_array($data)) $data = implode("",$data);
4013
- $data = $tcp_data; //if we didn't have a URL then use the tcp data;
4021
- if ($data!==false) { //if we didn't had an error
4023
- if (!empty($options["check_regexp"])) { //if we have a regular expression set, use it.
4025
- if (strpos($options["check_regexp"],"\\")!==false) //if the user escaped its regexp take it like it is.
4026
- $regexp = $options["check_regexp"];
4027
- else //if he didn't then take it as a simple regexp (without grab) and escape it
4028
- $regexp = preg_quote($options["check_regexp"]);
4030
- $regexp = "/$regexp/i";
4031
- echo "REGEXP: $regexp\nDATA: $data\n"; //DEBUG
4033
- if (preg_match($regexp,$data,$parts)==true) {
4034
- //var_dump($parts); //DEBUG
4038
- if (count($parts) > 1) //more parts means with grab, so take all the parts except the first one as the result
4039
- $data = join(" ",array_slice($parts,1,count($parts)));
4042
- if (strlen($data) >= 60) // if we didn't have a Regular Expression to check, just check if its longer than 60 characters
4046
- if ($valid == true)
4047
- return "valid|".substr(trim(strip_tags($data)),0,40); //return part of the valid data
4049
- return "invalid"; //has URL or TCP data, but data is invalid
4051
- return "valid|Not Checked"; //didn't have check_content=1, or didn't have an allowed proto (because it didn't have a check_url)
4054
+ $tcp_data = $poller_buffer[$buffer_name];
4056
+ if (!empty($options['check_url'])) //we have a URL to check
4057
+ $url = $options['check_url'];
4059
+ if (empty($tcp_data)) { //if didn't have data directly from TCP
4060
+ $allowed_protos = array('http','ftp','https','ftps'); //protos we can handle
4061
+ list ($proto, $param) = explode ('|',$options['description']);
4062
+ $proto_token = strpos($proto,'://');
4063
+ if ($proto_token===FALSE)
4064
+ $proto_type = $proto;
4066
+ $proto_type = substr($proto,0,$proto_token);
4068
+ if (in_array($proto_type, $allowed_protos))
4069
+ $url = (($proto_token===FALSE)?"$proto_type://":$proto).$options["host_ip"].":".$options["port"].$param;
4075
+ if (!empty($url)) {
4076
+ if (!array_key_exists('tcp_port_content', $poller_buffer))
4077
+ $poller_buffer['tcp_port_content']=array();
4078
+ if (!array_key_exists($url, $poller_buffer['tcp_port_content']))
4079
+ $poller_buffer['tcp_port_content'][$url]= file($url);
4081
+ $data = $poller_buffer['tcp_port_content'][$url];
4083
+ if (is_array($data))
4084
+ $data = implode('',$data);
4086
+ $data = $tcp_data; //if we didn't have a URL then use the tcp data;
4094
+ if ($data!==FALSE) { //if we didn't had an error
4096
+ if (!empty($options['check_regexp'])) { //if we have a regular expression set, use it.
4097
+ if (strpos($options["check_regexp"],"\\")!==false) //if the user escaped its regexp take it like it is.
4098
+ $regexp = $options['check_regexp'];
4099
+ else //if he didn't then take it as a simple regexp (without grab) and escape it
4100
+ $regexp = preg_quote($options['check_regexp']);
4101
+ $regexp = "/$regexp/i";
4102
+ //echo "REGEXP: $regexp\nDATA: $data\n"; //DEBUG
4104
+ if (preg_match($regexp,$data,$parts)==true) {
4105
+ //var_dump($parts); //DEBUG
4107
+ if (count($parts) > 1) //more parts means with grab, so take all the parts except the first one as the result
4108
+ $data = join(" ",array_slice($parts,1,count($parts)));
4111
+ if (strlen($data) >= 60) // if we didn't have a Regular Expression to check, just check if its longer than 60 characters
4114
+ if ($valid == true)
4115
+ return "valid|".substr(trim(strip_tags($data)),0,40); //return part of the valid data
4116
+ return 'invalid'; //has URL or TCP data, but data is invalid
4119
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/verify_interface_number.php jffnms-0.9.3/engine/pollers/verify_interface_number.php
4120
--- ../jffnms-0.9.2/engine/pollers/verify_interface_number.php 2011-05-25 15:43:13.000000000 +1000
4121
+++ jffnms-0.9.3/engine/pollers/verify_interface_number.php 2012-03-14 22:01:54.000000000 +1100
4124
/* This file is part of JFFNMS
4125
* Copyright (C) <2002-2005> Javier Szyszlican <javier@szysz.com>
4126
+ * Copyright (C) 2012 Craig Small <csmall@enc.com.au>
4127
* This program is licensed under the GNU GPL, full terms in the LICENSE file
4130
function poller_verify_interface_number ($options)
4132
- static $static_buffer = array();
4133
+ static $static_buffer = array();
4134
+ static $buffer_age = 0;
4135
+ $buffer_max_len=20; // 20 hosts of details
4136
+ $buffer_max_age=180; // 3 minutes of buffer
4137
+ require_once(jffnms_shared('catos'));
4138
+ require_once(jffnms_shared('webos'));
4139
+ $ifIndex_oid = '.1.3.6.1.2.1.2.2.1.1';
4141
- $current_ifindex = $options['interfacenumber'];
4142
+ $current_ifindex = $options['interfacenumber'];
4144
- //Search by Interface Name (ie. Switches or not IP interfaces)
4145
- if (($options['address']=='') && ($options['interfacenumber']!='')) // if IP is empty and it has a interfacenumber in the DB
4147
- if (!array_key_exists('ifIndex', $static_buffer) && $options['ro_community'])
4148
- { //Get the Tables via SNMP only once
4150
- $ifIndex_oid = '.1.3.6.1.2.1.2.2.1.1';
4151
- $static_buffer['ifIndex'] = snmp_walk($options['host_ip'],$options['ro_community'],$ifIndex_oid);
4152
- include_once(jffnms_shared('catos')); //Load CatOS code
4153
- if (is_catos($options['host_ip'], $options['ro_community'])) //If this host is CatOS
4154
- $ifDescr_oid = CATOS_IFDESCR_OID;
4156
- $ifDescr_oid = '.1.3.6.1.2.1.2.2.1.2'; //Use the Standard IF-MIB OID
4157
- $static_buffer['ifDescr'] = snmp_walk($options['host_ip'],$options['ro_community'],$ifDescr_oid);
4159
- if (is_array($static_buffer['ifDescr']))
4161
- $pos = array_search($options['interface'],$static_buffer['ifDescr']); //Find the DB interface name and return the index
4162
- if (is_numeric($pos)) //if we found something
4163
- $current_ifindex = $static_buffer['ifIndex'][$pos]; //return the ifIndex at the same position we found this
4165
- } else //Search by IP Address
4166
- if (strpos($options['address'],'.') === FALSE) // if the address is not an IP, use that as the IfIndex
4168
- $current_ifindex = $options['address'];
4169
- } else //If its an IP Address
4170
- if (!empty($options['ro_community'])) //and has SNMP
4171
- $current_ifindex = snmp_get($options['host_ip'],$options['ro_community'], //Get the interface index
4172
- '.1.3.6.1.2.1.4.20.1.2.'.$options['address']); //by looking up the IP
4173
- return $current_ifindex;
4174
+ if (empty($options['ro_community']))
4176
+ $rocommunity = $options['ro_community'];
4177
+ $ip = $options['host_ip'];
4178
+ $hid = $options['host_id'];
4180
+ # If the interface has no IP address then we need to search by name
4181
+ if (($options['address']=='')) {
4182
+ // Check freshness of buffer
4183
+ if ($buffer_age + $buffer_max_age < time()) {
4184
+ $static_buffer = array();
4185
+ $buffer_age = time();
4187
+ if (!array_key_exists($hid, $static_buffer)) {
4188
+ if (sizeof($static_buffer) > $buffer_max_len)
4189
+ array_shift($static_buffer);
4190
+ $ifIndex = snmp_walk($options['host_ip'],$options['ro_community'],$ifIndex_oid);
4191
+ include_once(jffnms_shared('catos'));
4192
+ if (is_catos($options['host_ip'], $options['ro_community']))
4193
+ $ifDescr_oid = CATOS_IFDESCR_OID;
4195
+ $ifDescr_oid = '.1.3.6.1.2.1.2.2.1.2';
4196
+ $ifDescr = snmp_walk($options['host_ip'],$options['ro_community'],$ifDescr_oid);
4197
+ if (is_array($ifIndex) && count($ifIndex) > 0 && is_array($ifDescr) && count($ifDescr) > 0) {
4198
+ $static_buffer[$hid] = array('ifIndex'=>$ifIndex, 'ifDescr'=>$ifDescr);
4200
+ return -1; //snmpwalk failed
4204
+ if ($current_ifindex != '') {
4205
+ $pos = array_search($current_ifindex, $static_buffer[$hid]['ifIndex']);
4206
+ if (is_numeric($pos) && array_key_exists($pos, $static_buffer[$hid]['ifDescr'])) {
4207
+ $polled_ifdescr = $static_buffer[$hid]['ifDescr'][$pos];
4208
+ if (strncmp($polled_ifdescr, $options['interface'],30)==0)
4209
+ return $current_ifindex; // we found it
4212
+ // If not matched, then its changed, find new index
4213
+ $pos = array_search($options['interface'],$static_buffer[$hid]['ifDescr']); //Find the DB interface name and return the index
4214
+ if (is_numeric($pos) and array_key_exists($pos, $static_buffer[$hid]['ifIndex'])) //if we found something
4215
+ return $static_buffer[$hid]['ifIndex'][$pos]; //return the ifIndex at the same position we found this
4216
+ } else //Search by IP Address
4217
+ if (strpos($options['address'],'.') === FALSE) // if the address is not an IP, use that as the IfIndex
4219
+ return $options['address'];
4220
+ } else //If its an IP Address
4221
+ return snmp_get($options['host_ip'],$options['ro_community'], //Get the interface index
4222
+ '.1.3.6.1.2.1.4.20.1.2.'.$options['address']); //by looking up the IP
4228
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/verify_storage_index.php jffnms-0.9.3/engine/pollers/verify_storage_index.php
4229
--- ../jffnms-0.9.2/engine/pollers/verify_storage_index.php 2012-02-14 23:10:39.000000000 +1100
4230
+++ jffnms-0.9.3/engine/pollers/verify_storage_index.php 2012-03-14 22:13:29.000000000 +1100
4232
* Copyright (C) <2006> Javier Szyszlican <javier@szysz.com>
4233
* This program is licensed under the GNU GPL, full terms in the LICENSE file
4235
-function poller_verify_storage_index ($options) {
4237
- $hrStorageDescr_oid = ".1.3.6.1.2.1.25.2.3.1.3";
4239
+function poller_verify_storage_index ($options)
4241
+ $hrStorageDescr_oid = '.1.3.6.1.2.1.25.2.3.1.3';
4244
- if (!is_array($GLOBALS["verify_storage_index_data"]) && !empty($options["ro_community"])) {
4246
- $aux = snmp_walk($options["host_ip"],$options["ro_community"],
4247
+ static $static_buffer = array();
4248
+ static $buffer_age=0;
4249
+ $buffer_max_len=20;
4250
+ $buffer_max_age=180;
4252
+ if (empty($options['ro_community']))
4253
+ return $index_actual;
4255
+ // Check freshness for buffer
4256
+ if ($buffer_age + $buffer_max_age < time()) {
4257
+ $static_buffer = array();
4258
+ $buffer_age = time();
4260
+ if (!array_key_exists($options['host_id'], $static_buffer)) {
4261
+ // Check buffer length
4262
+ if (sizeof($static_buffer) > $buffer_max_len)
4263
+ array_shift($static_buffer);
4264
+ $storage_descs = snmp_walk($options['host_ip'],$options['ro_community'],
4265
$hrStorageDescr_oid, INCLUDE_OID_1);
4267
- include_once(jffnms_shared("storage"));
4268
+ include_once(jffnms_shared('storage'));
4270
- if (is_array($aux))
4271
- while (list($k, $v) = each ($aux)) // Parse each description to match what we do in discovery
4272
- $GLOBALS["verify_storage_index_data"][$k]=current(storage_interface_parse_description ($v));
4275
+ if (is_array($storage_descs)) {
4276
+ $static_buffer[$options['host_id']] = array();
4277
+ foreach ($storage_descs as $key => $value) {
4278
+ $static_buffer[$options['host_id']][$key]=substr(current(storage_interface_parse_description ($value)),0,30);
4281
+ unset ($storage_descs);
4284
- if (is_array($GLOBALS["verify_storage_index_data"])) {
4285
- $storage_name = $options["interface"];
4287
- if (($index_actual = array_search($storage_name, $GLOBALS["verify_storage_index_data"]))===false)
4288
- $index_actual = 90000+$options["interface_id"]; // if its not found in the host, change its id out of the picture for removal
4289
+ if (array_key_exists($options['host_id'], $static_buffer) and
4290
+ sizeof($static_buffer[$options['host_id']]) > 0) {
4291
+ $storage_name = $options['interface'];
4292
+ if (($index_actual = array_search($storage_name, $static_buffer[$options['host_id']]))===false)
4293
+ $index_actual = 90000+$options['interface_id']; // if its not found in the host, change its id out of the picture for removal
4296
return $index_actual;
4299
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/pollers/verify_tc_class_number.php jffnms-0.9.3/engine/pollers/verify_tc_class_number.php
4300
--- ../jffnms-0.9.2/engine/pollers/verify_tc_class_number.php 2012-02-14 23:10:39.000000000 +1100
4301
+++ jffnms-0.9.3/engine/pollers/verify_tc_class_number.php 2012-03-14 22:24:17.000000000 +1100
4303
* Copyright (C) <2002-2005> Javier Szyszlican <javier@szysz.com>
4304
* This program is licensed under the GNU GPL, full terms in the LICENSE file
4306
-function poller_verify_tc_class_number ($options) {
4307
+function poller_verify_tc_class_number ($options)
4309
+ static $static_buffer = array();
4310
+ static $buffer_age = 0;
4311
+ $buffer_max_len = 20;
4312
+ $buffer_max_age = 180;
4314
- $linux_tc_oid = $options["autodiscovery_parameters"];
4315
+ $linux_tc_oid = $options['autodiscovery_parameters'];
4317
- $index_actual = -1;
4318
- if (!is_array($GLOBALS["verify_tc_class_number_data"]) && !empty($options["ro_community"]))
4319
- $GLOBALS["verify_tc_class_number_data"] = snmp_walk($options["host_ip"],$options["ro_community"],
4320
- "$linux_tc_oid.1.2",1);
4321
+ if (empty($options['ro_community']))
4324
- if (is_array($GLOBALS["verify_tc_class_number_data"])) {
4325
- $class_name = substr($options["interface"],strpos($options["interface"],"/")+1,strlen($options["interface"]));
4326
- $oid_key = array_search($class_name,$GLOBALS["verify_tc_class_number_data"]);
4327
- $index_actual = current(array_reverse(explode (".",$oid_key)));
4328
+ // Check freshness of buffer
4329
+ if ($buffer_age + $buffer_max_age < time()) {
4330
+ $static_buffer = array();
4331
+ $buffer_age = time();
4334
- return $index_actual;
4335
+ if (!array_key_exists($options['host_id'], $static_buffer)) {
4336
+ // Check max buffer size
4337
+ if (sizeof($static_buffer) > $buffer_max_len)
4338
+ array_shift($static_buffer);
4340
+ $static_buffer[$options['host_id']] = snmp_walk($options['host_ip'],$options['ro_community'], $linux_tc_oid.'.1.2',1);
4343
+ if (is_array($static_buffer[$options['host_id']])) {
4344
+ $class_name = substr($options['interface'],strpos($options['interface'],'/')+1,strlen($options['interface']));
4345
+ $oid_key = array_search($class_name,$static_buffer[$options['host_id']]);
4346
+ return current(array_reverse(explode ('.',$oid_key)));
4351
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/rrd_analizer.php jffnms-0.9.3/engine/rrd_analizer.php
4352
--- ../jffnms-0.9.2/engine/rrd_analizer.php 2011-04-19 09:16:51.000000000 +1000
4353
+++ jffnms-0.9.3/engine/rrd_analizer.php 2012-04-13 15:05:18.000000000 +1000
4355
$type_dss[$row['type']] = $interface_data['values'][$row['id']];
4356
unset ($interface_data);
4358
+ if (!array_key_exists($row['type'], $type_dss)) {
4359
+ logger("I$row[id] : has no values.\n");
4363
$dss = &$type_dss[$row['type']];
4364
$values = analyzer_fetch ($row['id'], $start_time, $end_time, $dss);
4365
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/shared/storage.inc.php jffnms-0.9.3/engine/shared/storage.inc.php
4366
--- ../jffnms-0.9.2/engine/shared/storage.inc.php 2011-05-25 15:45:57.000000000 +1000
4367
+++ jffnms-0.9.3/engine/shared/storage.inc.php 2012-03-11 19:56:14.000000000 +1100
4371
function storage_interface_parse_description ($descr) {
4375
$label_hex = strpos($descr,"Hex");
4378
$descr = str_replace("\"","",$descr); // UCD-SNMP 4.2.4 fix
4379
$descr = str_replace("\\","",$descr); // Windows Hack for C:\ breaking the DB
4380
+ // By default it is the filtered thing given to us
4381
+ $interface = $descr;
4383
//Windows XP Disk Label Hack
4384
$label_pos = strpos($descr,"Label");
4385
if ($label_pos!==false) {
4386
$interface = substr($descr,0, $label_pos - 1); //strip the \ and the space
4387
$description = substr($descr,$label_pos, strlen($descr) - $label_pos);
4389
- $interface = $descr;
4392
+ // Juniper JUNOS hack
4393
+ if (preg_match('/mounted on: (\S+)/', $descr, $groups)) {
4394
+ $interface = $groups[1];
4398
return array($interface, $description);
4400
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/engine/tftp_get_host_config.php jffnms-0.9.3/engine/tftp_get_host_config.php
4401
--- ../jffnms-0.9.2/engine/tftp_get_host_config.php 2011-06-02 21:46:21.000000000 +1000
4402
+++ jffnms-0.9.3/engine/tftp_get_host_config.php 2012-03-15 20:19:03.000000000 +1100
4406
$Hosts = new JffnmsHosts();
4407
+ $HostsConfig = new JffnmsHosts_configs();
4409
$time_total = time_msec();
4410
parse_commandline();
4412
$config_time = time_msec();
4413
$config_file = $Config->get('jffnms_real_path').'/engine/configs/'.
4414
$config_row["command"].'.inc.php';
4415
- $config_get_command = 'hosts_config_'.$config_row['command'].'_get';
4416
- $config_wait_command = 'hosts_config_'.$config_row['command'].'_wait';
4417
+ $config_get_command = 'config_'.$config_row['command'].'_get';
4418
+ $config_wait_command = 'config_'.$config_row['command'].'_wait';
4420
$now = date("Y-m-d H:i:s",time());
4421
if (array_key_exists($config_file, $config_included_files))
4425
require_once($config_file);
4426
- if (!function_exists($config_get_function))
4427
+ if (!function_exists($config_get_command))
4429
host_config_logger($config_row, $config_time,
4430
- "ERROR: Config get function '$config_get_function' does not exist in config file '$config_file'.\n");
4431
+ "ERROR: Config get function '$config_get_command' does not exist in config file '$config_file'.\n");
4432
$config_included_files[$config_file] = FALSE;
4435
- if (!function_exists($config_wait_function))
4436
+ if (!function_exists($config_wait_command))
4438
host_config_logger($config_row, $config_time,
4439
- "ERROR: Config wait function '$config_wait_function' does not exist in config file '$config_file'.\n");
4440
+ "ERROR: Config wait function '$config_wait_command' does not exist in config file '$config_file'.\n");
4441
$config_included_files[$config_file] = FALSE;
4448
- $function_data = array($config['host_ip'],$config['rwcommunity'],$config['tftp_server'],$config_filename);
4449
+ $function_data = array($config_row['host_ip'],$config_row['rwcommunity'],
4450
+ $config_row['tftp_server'],$real_tftp_filename);
4452
- if (call_user_func_array($config_get_function, $function_data) === FALSE)
4453
+ if (call_user_func_array($config_get_command, $function_data) === FALSE)
4455
host_config_logger($config_row, $config_time,
4456
- 'Getting config file from host');
4457
+ 'WARNING: Failed to get config file from host');
4458
unlink($real_tftp_filename);
4461
- if (call_user_func_array($wait_function, $function_data) === FALSE)
4462
+ if (call_user_func_array($config_wait_command, $function_data) === FALSE)
4464
host_config_logger($config_row, $config_time,
4465
- 'Waiting for file transfer');
4466
+ 'WARNING: Failed waiting for file transfer');
4467
unlink($real_tftp_filename);
4470
@@ -111,13 +113,13 @@
4471
if (!file_exists($real_tftp_filename) || filesize($real_tftp_filename) == 0)
4473
host_config_logger($config_row, $config_time,
4474
- 'File did not transfer');
4475
+ 'WARNING: file did not transfer');
4476
unlink($real_tftp_filename);
4479
$config_data_new = file_get_contents($real_tftp_filename);
4480
unlink($real_tftp_filename);
4481
- $db_host_configs = $Hosts->config_list(NULL, $config_row['host_id'],NULL,1);
4482
+ $db_host_configs = $HostsConfig->get_all(NULL, $config_row['host_id'],NULL,1);
4483
$config_data_old = $db_host_configs[0]['config'];
4484
$config_id_old = $db_host_configs[0]['id'];
4486
@@ -130,14 +132,14 @@
4488
'host'=>$config_row['host_id'],
4490
- 'config'=>$config_data
4491
+ 'config'=>$config_data_new
4493
- $config_id = $Hosts->config_add();
4494
- $result = $Hosts->config_update($config_id,$data); //save the config in the DB
4495
+ $config_id = $HostsConfig->add();
4496
+ $result = $HostsConfig->update($config_id,$data); //save the config in the DB
4497
$info = "new config id $config_id";
4499
$info = "same config as last one ($config_id_old)";
4500
- hosts_config_logger($config_row, $config_time,'', $info);
4501
+ host_config_logger($config_row, $config_time,'', $info);
4503
$time_total = time_msec_diff($time_total);
4504
logger( "TIMES \t: Total Time $time_total msec.\n");
4508
$Events = new JffnmsEvents();
4509
- $Events->add($now, $Config->get('jffnms_administrative_type'),
4510
+ $Events->add(date("Y-m-d H:i:s",time()), $Config->get('jffnms_administrative_type'),
4511
$config_row['host_id'],'CPU','error','host_config',
4512
- "Host Config Transfer $error",0,0);
4513
+ 'Host Config Transfer: '.addslashes($error),0,0);
4515
$error = "OK $info";
4517
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/htdocs/admin/adm/adm_hosts_config.php jffnms-0.9.3/htdocs/admin/adm/adm_hosts_config.php
4518
--- ../jffnms-0.9.2/htdocs/admin/adm/adm_hosts_config.php 2011-01-05 17:02:12.000000000 +1100
4519
+++ jffnms-0.9.3/htdocs/admin/adm/adm_hosts_config.php 2012-03-15 08:32:27.000000000 +1100
4521
if (!profile('ADMIN_HOSTS')) die ('<H1> You dont have Permission to access this page.</H1></HTML>');
4523
adm_header('Hosts Config');
4524
-$api = new JffnmsHosts_config();
4525
+$api = new JffnmsHosts_configs();
4527
$span = $Sanitizer->get_int('span', 30);
4528
$init = $Sanitizer->get_int('init', 0);
4529
$filter = $Sanitizer->get_string('filter');
4530
$action = $Sanitizer->get_string('action');
4531
+$actionid = $Sanitizer->get_int('actionid');
4532
$diff1 = $Sanitizer->get_int('diff1');
4533
$diff2 = $Sanitizer->get_int('diff2');
4536
radiobutton('diff1', ($diff1==$rec['id'])?1:0, $rec['id']).
4537
radiobutton('diff2', ($diff2==$rec['id'])?1:0, $rec['id']).
4539
- $Sanitizer->get_url('','all', FALSE,
4540
- array('action' => 'read', actionid => $rec['id'], 'init' => $init)),
4541
+ $Sanitizer->get_url('','all',
4542
+ array('action' => 'read', 'actionid' => $rec['id'], 'init' => $init)),
4544
td($rec['id'], 'field_id').
4545
td($rec["date"], "field").
4548
if ($action == 'diff')
4550
- $clean_url = $Sanitizer->get_url('','all', array('action'),
4551
- array('diff1', $diff1, 'diff2', $diff2, 'filter', $filter));
4552
+ $clean_url = $Sanitizer->get_url('','all',
4553
+ array('diff1', $diff1, 'diff2', $diff2, 'filter', $filter),
4555
echo tr(linktext('Go Back',$clean_url), 'action', $fields).
4556
tr('Difference Between Configurations','header',$fields).
4558
td(memobox('', 20, 80, $api->diff($diff1, $diff2)), 'field', 'field_config', $fields, '', true);
4560
echo tr(adm_form_submit('View Diff'), 'action', $fields).
4565
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/htdocs/admin/adm/adm_triggers_rules.php jffnms-0.9.3/htdocs/admin/adm/adm_triggers_rules.php
4566
--- ../jffnms-0.9.2/htdocs/admin/adm/adm_triggers_rules.php 2012-02-14 23:10:39.000000000 +1100
4567
+++ jffnms-0.9.3/htdocs/admin/adm/adm_triggers_rules.php 2012-04-09 12:29:52.000000000 +1000
4572
- #if (is_array($value)) $value = join($value,",");
4573
+ $value = $Sanitizer->get_string('value',array(),TRUE);
4574
+ if (is_array($value))
4575
+ $value = join($value,',');
4576
+ $update_data = array(
4577
+ //'trigger_id' => $Sanitizer->get_int('trigger_id'),
4578
+ 'pos' => $Sanitizer->get_int('pos'),
4579
+ 'field' => $Sanitizer->get_string('field'),
4580
+ 'operator' => $Sanitizer->get_string('operator'),
4581
+ 'value' => $value,
4582
+ 'action_id' => $Sanitizer->get_int('action_id',1),
4583
+ 'stop' => $Sanitizer->get_int('stop',0));
4584
$action_params = $Sanitizer->get_string('action_params');
4585
if (is_array($action_params))
4587
foreach ($action_params as $key=>$data)
4588
$aux[]="$key:$data";
4589
- $action_parameters=join(",",$aux);
4590
+ $update_data['action_parameters']=join(",",$aux);
4592
- $update_data = array(
4593
- 'trigger_id' => $Sanitizer->get_int('trigger_id'),
4594
- 'pos' => $Sanitizer->get_int('pos'),
4595
- 'field' => $Sanitizer->get_string('field'),
4596
- 'operator' => $Sanitizer->get_string('operator'),
4597
- 'value' => $Sanitizer->get_string('value',array(),TRUE),
4598
- 'action_id' => $actionid,
4599
- 'action_parameters' => $action_parameters,
4600
- 'stop' => $Sanitizer->get_int('stop',0));
4601
$TriggersRules->update($actionid,$update_data);
4604
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/htdocs/admin/adm/adm_users.inc.php jffnms-0.9.3/htdocs/admin/adm/adm_users.inc.php
4605
--- ../jffnms-0.9.2/htdocs/admin/adm/adm_users.inc.php 2011-03-10 14:33:54.000000000 +1100
4606
+++ jffnms-0.9.3/htdocs/admin/adm/adm_users.inc.php 2012-03-29 22:34:08.000000000 +1100
4610
if ($actionid == 'new' && !empty($usern))
4611
- $_POST['actionid'] = $api->add($usern);
4612
+ $actionid = $api->add($usern);
4614
$api->modify($actionid, $usern, $old_passwd, $new_passwd, $fullname, $router);
4615
$GLOBALS['action']='list';
4616
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/htdocs/admin/adm/structures.php jffnms-0.9.3/htdocs/admin/adm/structures.php
4617
--- ../jffnms-0.9.2/htdocs/admin/adm/structures.php 2011-06-16 21:23:48.000000000 +1000
4618
+++ jffnms-0.9.3/htdocs/admin/adm/structures.php 2012-04-11 22:40:46.000000000 +1000
4620
'profile'=>'ADMIN_SYSTEM',
4623
- 'sla'=>array( 'name'=>'SLA', 'type'=>'select', 'func'=>'select_slas', 'size'=>30, 'view'=>'sla_description'),
4624
+ //'sla'=>array( 'name'=>'SLA', 'type'=>'select', 'func'=>'select_slas', 'size'=>30, 'view'=>'sla_description'),
4625
'pos'=>array( 'name'=>'Position', 'type'=>'textbox', 'size'=>3),
4626
'cond'=>array( 'name'=>'Condition', 'type'=>'select', 'func'=>'select_slas_cond', 'size'=>30, 'view'=>'cond_description'),
4627
'show_in_result'=>array( 'name'=>'Show', 'type'=>'checkbox'),
4628
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/htdocs/admin/setup.php jffnms-0.9.3/htdocs/admin/setup.php
4629
--- ../jffnms-0.9.2/htdocs/admin/setup.php 2012-02-14 23:10:39.000000000 +1100
4630
+++ jffnms-0.9.3/htdocs/admin/setup.php 2012-03-06 07:22:35.000000000 +1100
4633
if ($Config->get('jffnms_initial_config_finished') ==1)
4635
+ require_once('../auth.php');
4636
if (($Config->get('jffnms_access_method') == 'local') && (db_test()))
4638
if (!profile('ADMIN_SYSTEM')) die ('<H1> You dont have Permission to access this page.</H1></HTML>');
4639
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/INSTALL jffnms-0.9.3/INSTALL
4640
--- ../jffnms-0.9.2/INSTALL 2012-03-04 13:43:13.000000000 +1100
4641
+++ jffnms-0.9.3/INSTALL 1970-01-01 10:00:00.000000000 +1000
4643
-'Just For Fun' Network Management System Version 0.9.2
4644
- By Javier Szyszlican and Craig Small
4645
-======================================================
4651
- . *NIX (Development is on GNU/Linux, It has been tested on FreeBSD and Solaris too)
4652
- . Windows 2000/XP also works (A good crond for windows will be useful).
4653
- If you are installing on Windows please read the INSTALL.win32.txt file.
4655
--Apache ( > 1.3.x or > 2.0.x)
4657
--MySQL ( > 3.23.x or > 4.0.x ) or PostgreSQL ( Tested with 7.4.6 )
4659
--RRDtool (www.rrdtool.org) (> 1.0.33 )
4662
- Extensions: snmp, ssl, gd, sockets, mysql or pgsql, pcre, posix, ob, pcntl and session
4664
--NET-SNMP utilities and trapd server (optional)
4668
--TFTP Server (optional)
4670
--JFF NMS Integration Packages (TACACS+ & Syslog) (optional, useful on routers)
4672
--Graphviz & WebFonts (http://www.graphviz.org) (optional)
4674
--NMAP PortScanner > 2.54B (http://www.insecure.org/nmap/) for TCP Port Discovery (optional)
4676
--Fping (http://www.fping.com) for Reachability (Only on Linux/*NIX)
4678
--tmpwatch (http://linux.maruhn.com/sec/tmpwatch.html) (Only on Linux/*NIX)
4679
- Used for deleting all temporary files
4685
-. Compile and/or Install MySQL / PgSQL
4687
-. Compile and/or Install Apache
4689
-. Compile and/or Install Graphviz and WebFonts (optional)
4691
-. Compile and/or Install NMAP
4693
- Nmap should be set-uid root if you want UDP port monitoring & discovery to work.
4696
- # chmod +s /usr/bin/nmap
4697
- # chmod a+x /usr/bin/nmap
4699
-. Compile and/or Install Fping
4701
- Verify that the user running the cron jobs, is able to execute fping and that it is set-uid root.
4704
- # chmod +s /usr/sbin/fping
4705
- # chmod a+x /usr/sbin/fping
4707
- And you should see something like this:
4708
- -rwsr-xr-x 1 root adm 28291 May 31 22:14 /usr/sbin/fping
4710
-. Compile and/or Install RRDtool
4712
-. Compile and/or Install PHP
4717
- PHP Modules Needed: sockets, snmp, gd, (pgsql and/or mysql), wddx (for satellites), pcre (syslog parsing)
4719
- Be sure to add the required modules to your /etc/php.ini file.
4721
- Remember to verify that your modules are loaded with /admin/adm/test.php or the JFFNMS setup screen.
4725
- ---------------------------------------------------
4726
- ---------------------------------------------------
4727
- Change This in your php.ini file.
4729
- register_globals = On
4730
- register_argc_argv = On
4731
- error_reporting = E_ALL & ~E_NOTICE
4732
- allow_url_fopen = On
4733
- include_path = .:/usr/share/pear
4734
- short_open_tag = On
4736
- ---------------------------------------------------
4737
- ---------------------------------------------------
4739
- Also check if your Apache is loading mod_php.
4741
- Any change to the PHP ini file (ie. /etc/php.ini) requires Apache to be restarted to take effect.
4743
---------------------------------------------------------------
4744
-. Read the docs/* files, these are examples of configuration.
4745
---------------------------------------------------------------
4747
-. Optional: Install Integration Packages tac_plus and msyslog (read the README and INSTALL files of each program).
4749
- -If you have problems with mysql when compiling (mysql.h lines ~245 & ~256) change DB to db (lowercase);
4750
- -If you have a linking problem with compress add -lz to the Makefile libraries
4751
- -msyslog: Remember to change your init.d/syslog to the new binary and command line options. (read the example)
4753
-. Create User & Group
4755
- Note: replace apache by your Apache user (like apache, httpd, www-data, etc)
4758
- # useradd -g jffnms -d /opt/jffnms -s /bin/false -c 'JFFNMS User' jffnms
4759
- # usermod -G jffnms apache
4761
-. Unpack the release:
4763
- # tar xvzf jffnms-0.9.2.tar.gz
4765
- You will get a directory called jffnms-0.9.2/
4767
- # mv jffnms-0.9.2 /opt/jffnms
4771
- # chown -R jffnms:jffnms /opt/jffnms
4772
- # chmod 770 /opt/jffnms
4773
- # chmod -R ug+rw /opt/jffnms
4776
- Install the JFFNMS crontab file
4778
- # crontab -u jffnms /opt/jffnms/docs/unix/crontab
4780
- Now modify the values at the top if they don't match your system:
4782
- # crontab -e -u jffnms
4784
- Allow JFFNMS to run cron jobs (AFAIK only needed in Solaris)
4786
- # echo jffnms >> /etc/cron.allow
4788
-. Create the Databases
4790
- Manually create the database "jffnms", set the permissions and then import the schema and data.
4792
- Replace the 'x' with the jffnms version number.
4796
- # mysql -u <mysql admin username> -p<password>
4797
- mysql> CREATE DATABASE jffnms;
4798
- mysql> GRANT ALL PRIVILEGES ON jffnms.* TO jffnms@localhost IDENTIFIED BY 'jffnms';
4799
- mysql> FLUSH PRIVILEGES;
4802
- # mysql -u jffnms -pjffnms jffnms < docs/install/jffnms-0.9.2.mysql
4806
- # psql template1 postgres
4807
- template1=# create user jffnms password 'jffnms' createdb;
4808
- template1=# \connect template1 jffnms
4809
- template1=# create database jffnms;
4812
- # psql jffnms jffnms < docs/install/jffnms-0.9.2.pgsql
4814
- This will create the jffnms Tables and required records.
4817
-. Configure Apache as follows (from docs/*):
4819
- 1. As a Virtual Host (if you control a DNS server):
4822
- ServerAdmin you@yournet.com
4823
- DocumentRoot /opt/jffnms/htdocs
4824
- ServerName nms.yournet.com
4825
- LimitRequestLine 20000
4828
- 2. As a sym-link (in Unix):
4830
- ln -s /opt/jffnms/htdocs /var/www/html/jffnms
4832
- (or the path your Apache uses).
4834
- JFFNMS needs to be at the main Document Root, a VirtualHost or a SymLink.
4836
-. Restart/Reload Apache, MySQL or PgSQL, xINETD (tftpd)
4838
-. PHP Module Load Errors are reported to /var/log/httpd/error_log (RedHat) or /var/log/apache/error_log (Gentoo)
4840
-. Point your browser to http://www.yourserver.com/jffnms or http://nms.yournet.com/ (depending on what you choose)
4842
- You should see the Setup screen, it should have auto-discovered your configuration.
4843
- Verify that everything is correct (OK, YES in green) before saving the config.
4845
-. Point your browser (again) to http://www.yourserver.com/jffnms or http://nms.yournet.com/ (depending on what you
4851
- And now, you are inside the system.
4854
-. You can read the manual at http://www.jffnms.org
4857
-=========================================================================
4858
-If you need anything, contact us at: jffnms-users@lists.sourceforge.net
4860
-Thank You for trying 'Just For Fun' Network Management System
4862
-Don't forget to Donate to the project if you find it useful for your work.
4863
-=========================================================================
4865
-Javier Szyszlican aka SzYsZ
4866
-Buenos Aires, Argentina
4867
-javier@jffnms.org (please try the mailing list first)
4869
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/INSTALL.win32.txt jffnms-0.9.3/INSTALL.win32.txt
4870
--- ../jffnms-0.9.2/INSTALL.win32.txt 2012-03-04 13:43:13.000000000 +1100
4871
+++ jffnms-0.9.3/INSTALL.win32.txt 1970-01-01 10:00:00.000000000 +1000
4873
-Windows 2000/XP Install Procedure
4874
-=================================
4877
-Note: This will not work for Windows 95/98/Me, it's only for Windows 2000/XP and maybe NT 4.0
4879
-The installation should be done as and Administrator User.
4881
-This guide is for Apache2 with PHP5. If you want to use older versions,
4882
-read the JFFNMS 0.7.9 INSTALL.win32.txt file.
4888
- Download Apache2 from: http://www.apache.org/dist/httpd/binaries/win32/
4889
- Get the latest release "no_ssl.msi" package, like "apache_2.0.52-win32-x86-no_ssl.msi".
4890
- Complete Install, Click on Next until Finish.
4891
- You should see Apache running in your taskbar.
4892
- Test it going browsing to http://localhost/ or http://IP.OF.YOUR.BOX/
4895
- Download from: http://www.mysql.com/downloads/mysql/4.1.html
4896
- Scroll down until you find MySQL Essentials for Windows.
4898
- Select the "Complete Install", Click on Next until Finish.
4900
- When you go into the configuration phase, select "Server Machine",
4901
- and then "Non-Transacctional Database Only".
4903
- Then set a new root password.
4905
- All other configuration leave as default.
4908
- Download PHP 5 from: http://www.php.net/downloads.php
4909
- Get the "Windows Binaries ZIP package" with all the modules (First One).
4911
- Extract the archive to c:\php
4913
- Execute the following:
4914
- c:\> copy c:\php\php.ini-dist c:\windows\php.ini
4915
- c:\> copy c:\php\libmysql.dll c:\windows\
4917
- Create Folder c:\usr
4918
- Copy c:\php\extra\mibs to c:\usr\mibs
4921
- Download the .zip file (I'm sure you already have done this) and extract it to c:\jffnms
4923
- Create the User 'jffnms' in the Windows User Manager with any password you choose.
4925
- Remember to CHECK 'Password Never Expires' and UNCHECK 'Must Change password at next logon' for this user.
4927
- Give the 'jffnms' user FULL CONTROL over the c:\jffnms folder (and its sub-folders)
4930
- Download from: http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/?M=D
4931
- Get the rrdtool-1.0.49-win32-bin.zip (or newer) file.
4932
- Extract the archive to a temporary location.
4933
- Copy the rrdtool.exe file from inside the archive to c:\jffnms
4935
-Install NMAP: (If you are running Windows XP please read the NMAP page carefully, it may not work)
4936
- Download it from: http://www.insecure.org/nmap/nmap_download.html
4937
- Get the nmap-3.81-win32.zip file (or newer)
4938
- Extract the nmap.exe file from the archive to c:\jffnms\
4940
-Install WinPCAP for NMAP:
4942
- Download it from: http://winpcap.polito.it/
4943
- Choose the Auto-Installer.
4944
- Complete Install, Click on Next until Finish.
4950
-Configure Apache for PHP5:
4952
- Add this to the bottom of your c:\program files\apache group\Apache2\conf\httpd.conf file:
4954
- LoadModule php5_module c:/php/php5apache2.dll
4955
- AddType application/x-httpd-php .php
4960
- ServerAdmin webmaster@your-domain.com
4961
- DocumentRoot c:\jffnms\htdocs
4962
- ServerName nms.yourdomain.com
4963
- DirectoryIndex index.php
4964
- LimitRequestLine 20000
4967
- * Make sure you modify the above information to match your needed settings
4970
- Make sure you have this on your php.ini file:
4972
- register_globals = On
4973
- register_argc_argv = On
4974
- allow_url_fopen = On
4976
- extension_dir = c:\php\ext
4978
- (Uncomment the following):
4979
- extension=php_gd2.dll
4980
- extension=php_snmp.dll
4981
- extension=php_mysql.dll
4982
- extension=php_sockets.dll
4984
- SMTP = your.mail.server.com (set it to your mail server IP or DNS name)
4986
- Now Restart the Apache Service.
4988
- if you don't change these, JFFNMS will not work.
4992
- To create the JFFNMS DB run the following:
4994
- Check the path to mysql.exe
4996
- c:\> c:\Program Files\MySQL\MySQL Server 4.1\bin\mysql.exe -u root -p<Root MySQL Password>
4998
- mysql>CREATE DATABASE jffnms;
4999
- mysql>GRANT ALL PRIVILEGES ON jffnms.* TO jffnms@localhost IDENTIFIED BY 'jffnms';
5000
- mysql>FLUSH PRIVILEGES;
5005
- c:\> c:\Program Files\MySQL\MySQL Server 4.1\bin\mysql.exe -ujffnms -pjffnms jffnms < c:\jffnms\docs\jffnms-0.8.x.mysql
5007
- Replace x with the version you are installing.
5015
- Go to: http://yourserver/
5017
- Verify and change (if needed) the options.
5019
- Don't mind the errors on diff, neato, smsclient, fping, ntpq, PgSQL and SOAP.
5021
- Save the configuration and change the values until everything needed is Green.
5023
- Everything else SHOULD be OK.
5027
- If you did not install jffnms in c:\jffnms you will have to change the
5028
- contents of the .bat files (path).
5030
- Start/Settings/Control Panel/Scheduled Tasks/Add Scheduled Task.
5033
- 3) Browse to c:\jffnms\engine\windows and select the first .bat file.
5034
- 4) Select Daily, then Next.
5035
- 5) Change the Start time to 12:00 AM
5036
- 6) Select Every 1 Days then Next.
5037
- 7) Enter Username: jffnms and Password: (the one you choosed before), then Next.
5038
- 8) Click the 'Open Avanced...' checkbox, then click Finish
5039
- 9) Change "Start In" to c:\jffnms\engine
5040
- 10) Click the Schedule tab
5041
- 11) For autodiscovery_interfaces, consolidate, poller & rrd_analizer:
5042
- Click on the Advanced Button.
5043
- Check Repeat Task. In the Every Field enter the respective times:
5044
- autodiscovery_interfaces every 30 minutes.
5045
- consolidate Every 1 Minute.
5046
- poller Every 4 minutes.
5047
- rrd_analizer every 30 minutes.
5048
- Duration: 24 Hours.
5053
- ** REPEAT THESE STEPS FOR EACH .BATCH FILE IN THE C:\JFFNMS\ENGINE\WINDOWS PATH!
5056
-Now... try to access http://yourserver/ or http://yourserver/jffnms/ (if you took this way)
5057
-Remember to add the last slash / to the URL.
5058
-The Default Username and password is "admin".
5060
-If you want to read more, please read the INSTALL file and skip the Unix Parts.
5063
-=========================================================================
5065
-If you need anything, contact us at: jffnms-users@lists.sourceforge.net
5067
-Thank You for trying 'Just For Fun' Network Management System
5069
-Don't forget to Donate to the project if you find it useful for your work.
5071
-=========================================================================
5072
-Javier Szyszlican aka SzYsZ
5073
-Buenos Aires, Argentina
5074
-javier@jffnms.org (please try the mailing list first)
5076
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/lib/api.classes.inc.php jffnms-0.9.3/lib/api.classes.inc.php
5077
--- ../jffnms-0.9.2/lib/api.classes.inc.php 2011-06-15 11:39:31.000000000 +1000
5078
+++ jffnms-0.9.3/lib/api.classes.inc.php 2012-04-11 21:58:45.000000000 +1000
5081
} // class jffnms_graph_types
5083
-class JffnmsHosts_config extends basic
5085
- function diff ($id1, $id2)
5091
- $aux = $this->config_list(array($id1,$id2));
5092
- $str1 = $aux[0]['config'];
5093
- $str2 = $aux[1]['config'];
5095
- $engine_temp = $Config->get('engine_temp_path');
5097
- $name1 = $engine_temp.'/'.uniqid('').'.dat';
5098
- $name2 = $engine_temp.'/'.uniqid('').'.dat';
5100
- $pf = fopen($name1,'w');
5104
- $pf = fopen($name2,"w");
5108
- $diff_executable = $Config->get('diff_executable');
5110
- if (file_exists($diff_executable))
5112
- $c = exec($diff_executable.' -Nru '.$name1.' '.$name2, $diff);
5116
- $diff = join("\n",array_slice($diff, 3));
5124
class JffnmsHosts_config_types extends basic
5126
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/lib/api.iad.inc.php jffnms-0.9.3/lib/api.iad.inc.php
5127
--- ../jffnms-0.9.2/lib/api.iad.inc.php 2010-11-01 10:56:01.000000000 +1100
5128
+++ jffnms-0.9.3/lib/api.iad.inc.php 2012-04-11 22:27:10.000000000 +1000
5133
+ if (!isset($index))
5134
+ return $db_interfaces;
5137
unset ($aux['field_types']);
5138
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/lib/api.inc.php jffnms-0.9.3/lib/api.inc.php
5139
--- ../jffnms-0.9.2/lib/api.inc.php 2012-02-14 23:10:39.000000000 +1100
5140
+++ jffnms-0.9.3/lib/api.inc.php 2012-04-13 20:59:05.000000000 +1000
5143
if ($Config->get('jffnms_debug')==1)
5145
- $file = str_replace('.php','',basename($Config->get('logging_file')));
5146
- $filename = $Config->get('log_path').'/'.$file.'-'.date('Y-m-d').'.log';
5148
- if ( ($log = fopen($filename,"a+")) === FALSE)
5150
- print "Unable to open log file $filename.\n";
5153
- fputs($log, $text);
5155
+ if (array_key_exists('Child', $GLOBALS)) {
5156
+ $GLOBALS['Child']->logger($text);
5159
+ $file = str_replace('.php','',basename($Config->get('logging_file')));
5160
+ $filename = $Config->get('log_path').'/'.$file.'-'.date('Y-m-d').'.log';
5162
+ if ( ($log = fopen($filename,'a+')) === FALSE) {
5163
+ print "Unable to open log file $filename.\n";
5166
+ fputs($log, $text);
5175
+// Youre kidding me right? the float and floatvar are not locale
5177
+// Lucky for us rrdtool exports things as scientific notation so we don't
5178
+// need to worry about thousand separators
5179
+function str2f($str)
5181
+ $linfo = localeconv();
5182
+ $str = str_replace(',','.',$str);
5183
+ return floatval($str);
5188
//-----------------------------------------
5190
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/lib/api.network.inc.php jffnms-0.9.3/lib/api.network.inc.php
5191
--- ../jffnms-0.9.2/lib/api.network.inc.php 2011-06-01 15:10:15.000000000 +1000
5192
+++ jffnms-0.9.3/lib/api.network.inc.php 2012-04-11 22:23:54.000000000 +1000
5195
if ($include_oid > INCLUDE_OID_BASE)
5196
$result = snmp_reduce_table_key ($result, $include_oid-INCLUDE_OID_BASE);
5197
- foreach ($result as $oid => $value)
5198
+ $new_result = array();
5199
+ foreach ($result as $oid => $value) {
5201
(strpos($value, 'No Such Instance') !== FALSE) or
5202
(strpos($value, 'No Such Object') !== FALSE) or
5203
(strpos($value, 'No more variables left') !== FALSE) )
5204
- unset($result[$oid]);
5207
+ $new_result[$oid] = snmp_fix_value($value);
5209
+ return $new_result;
5212
function snmp_get ($host, $comm, $oid, $retries = 2)
5214
(strpos($result, 'No Such Object') !== FALSE) or
5215
(strpos($result, 'No more variables left') !== FALSE) )
5218
+ return snmp_fix_value($result);
5221
function snmp_set ($host, $comm, $oid, $type, $value, $retries = 2)
5222
@@ -158,17 +161,17 @@
5224
function snmp_fix_value ($value)
5226
- $value = trim ($value);
5227
- if (strpos($value,'=') !== false) // if it has = in the value
5228
- $value = substr($value, strpos($value,'=')+2, strlen($value)); // return only the data after the =
5230
- if ($value=preg_replace('/INTEGER: /','',$value))
5233
- if (preg_match("/^\"(\S.+)\"$/",$value,$parts)) $value = $parts[1];
5234
- if (preg_match("/STRING: \"(\S.+)\"/",$value,$parts)) $value = $parts[1];
5236
- return preg_replace('/(?:STRING|IpAddress|Gauge32|Counter32|Counter64): /','',$value);
5237
+ if ($value === FALSE)
5239
+ $value = preg_replace('/(counter32|counter64|gauge|gauge32|gauge64|hex|ipaddress|integer|string):/i', '', $value);
5242
+ if (is_numeric($value))
5243
+ return trim($value);
5245
+ // Remove quotes and other delimiters
5246
+ $value = str_replace(array("\"","'",">","<","\\","\n","\r"),'', $value);
5247
+ return trim($value);
5250
function snmp_reduce_table_key ($table, $important = 1)
5251
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/lib/api.rrdtool.inc.php jffnms-0.9.3/lib/api.rrdtool.inc.php
5252
--- ../jffnms-0.9.2/lib/api.rrdtool.inc.php 2012-02-14 23:10:39.000000000 +1100
5253
+++ jffnms-0.9.3/lib/api.rrdtool.inc.php 2012-04-13 16:42:54.000000000 +1000
5255
$command .= ' --daemon '.RRDCACHED_SOCKET;
5258
+ $command .= ' 2>&1';
5261
list ($ret1, $ret2) = rrd_pipe($method." '".$file."' ".$aux);
5263
- exec($command,$ret1,$ret2);
5264
+ $ret3 = exec($command,$ret1,$ret2);
5270
for ($i = 1; $i < count($line1); $i++) // Part 1 is timestamp
5271
if ($line1[$i]!=="") // Part 2 maybe is a space
5272
- $value[] = ($line1[$i]=="nan")?0:(float)$line1[$i]; // Part 3 (or 2) has the data
5273
+ $value[] = ($line1[$i]=="nan")?0:str2f($line1[$i]); // Part 3 (or 2) has the data
5274
$date = (int)$line1[0]; // Time Stamp
5275
if (!isset($stop)) $stop=0;
5276
if ($date > $stop) $stop = $date;
5285
@@ -125,8 +127,12 @@
5290
- echo("rrd_$method() ERROR: $info");
5292
+ if (array_key_exists('Child', $GLOBALS)) {
5293
+ $GLOBALS['Child']->send_error("rrd_$method(): $ret3");
5295
+ echo("rrd_$method() ERROR: $info");
5300
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/lib/gui.admin.inc.php jffnms-0.9.3/lib/gui.admin.inc.php
5301
--- ../jffnms-0.9.2/lib/gui.admin.inc.php 2012-02-14 23:10:39.000000000 +1100
5302
+++ jffnms-0.9.3/lib/gui.admin.inc.php 2012-04-13 21:26:48.000000000 +1000
5305
function adm_table_header($title, $init, &$span, $cols, $total_items = -1, $id = "", $show_add = true)
5307
- global $Sanitizer;
5308
+ global $Sanitizer;
5309
global $filter, $host_id, $client_id, $map_id, $use_interfaces, $interface_id, $filter_field;
5311
- if (!$span) $span = 20;
5312
- $url = $Sanitizer->get_url('', 'all',
5313
- array('filter' => $filter), //new
5314
- array('action', 'actionid'));//del
5315
- $url_init = $Sanitizer->get_url('', 'all',
5316
- array('filter' => $filter), //new
5317
- array('action', 'actionid', 'init'));//del
5318
- $url_span = $Sanitizer->get_url('', 'all',
5319
- array('filter' => $filter), //new
5320
- array('action', 'actionid', 'span'));//del
5321
+ if (!$span) $span = 20;
5322
+ $url = $Sanitizer->get_url('', array('use_interfaces', 'admin_structure','init','span'),
5323
+ array('filter' => $filter));
5324
+ $url_init = $Sanitizer->get_url('', array('use_interfaces', 'admin_structure', 'span'),
5325
+ array('filter' => $filter));
5326
+ $url_span = $Sanitizer->get_url('', array('use_interfaces', 'admin_structure', 'init'),
5327
+ array('filter' => $filter));
5330
table ($id, "admintable").
5331
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/lib/gui.controls.inc.php jffnms-0.9.3/lib/gui.controls.inc.php
5332
--- ../jffnms-0.9.2/lib/gui.controls.inc.php 2011-06-15 11:40:54.000000000 +1000
5333
+++ jffnms-0.9.3/lib/gui.controls.inc.php 2012-04-11 21:58:37.000000000 +1000
5336
function select_slas_cond ($name,$id, $add_data = NULL, $onchange = "", $params = array())
5338
- $SLAs_cond = new JffnmsSlas_conds();
5339
+ $SLAs_cond = new JffnmsSlas_cond();
5340
return select_object($SLAs_cond,$name,$id,$add_data,'id','description',$params,1,$onchange);
5346
return select_custom($name,$trigger_op,$value);
5348
+ if (array_key_exists($value, $trigger_op))
5349
return $trigger_op[$value];
5354
function get_trigger_fields($type)
5355
@@ -357,10 +357,8 @@
5357
$trigger_fields = get_trigger_fields($type);
5359
- //var_dump(array($type, $field));
5360
- #if ((!$field) || ($field=='any') || ($field=='none'))
5361
- if ( ($field=='any') || ($field=='none'))
5362
- return "field $field f";
5363
+ if ((!$field) || ($field=='any') || ($field=='none'))
5366
return call_user_func_array($trigger_fields[$field]['function'],
5367
array_merge(array($name, $value), $trigger_fields[$field]['params']));
5368
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/lib/hosts_configs.class.php jffnms-0.9.3/lib/hosts_configs.class.php
5369
--- ../jffnms-0.9.2/lib/hosts_configs.class.php 1970-01-01 10:00:00.000000000 +1000
5370
+++ jffnms-0.9.3/lib/hosts_configs.class.php 2012-03-15 21:44:48.000000000 +1100
5373
+/* This file is part of JFFNMS
5374
+ * Copyright (C) <2002-2005> Javier Szyszlican <javier@szysz.com>
5376
+ * This program is licensed under the GNU GPL, full terms in the LICENSE file
5378
+class JffnmsHosts_configs extends basic
5380
+ function jffnms_class()
5382
+ return 'hosts_config';
5385
+ function add($host_id=1) {
5386
+ return db_insert('hosts_config', array('config'=>'New Config', 'host'=>$host_id));
5390
+ function diff ($id1, $id2)
5396
+ $aux = $this->get_all(array($id1,$id2));
5397
+ $str1 = $aux[0]['config'];
5398
+ $str2 = $aux[1]['config'];
5400
+ $engine_temp = $Config->get('engine_temp_path');
5402
+ $name1 = $engine_temp.'/'.uniqid('').'.dat';
5403
+ $name2 = $engine_temp.'/'.uniqid('').'.dat';
5405
+ $pf = fopen($name1,'w');
5409
+ $pf = fopen($name2,"w");
5413
+ $diff_executable = $Config->get('diff_executable');
5415
+ if (file_exists($diff_executable))
5417
+ $c = exec($diff_executable.' -Nru '.$name1.' '.$name2, $diff);
5421
+ $diff = join("\n",array_slice($diff, 3));
5428
+ function get_all($ids = NULL, $host_id=NULL, $init=NULL, $span=NULL, $where_special=NULL)
5430
+ if (!is_array($where_special))
5431
+ $where_special = array();
5433
+ if (is_numeric($host_id))
5434
+ $where_special[]=array('hosts.id','=',$host_id);
5440
+ return get_db_list(
5441
+ array('hosts_config','zones','hosts'),
5443
+ array('hosts_config.*',
5444
+ 'zone_description'=>'zones.zone',
5445
+ 'host_description'=>'hosts.name' ),
5448
+ array('hosts.zone','=','zones.id'),
5449
+ array('hosts_config.host','=','hosts.id'),
5450
+ array('hosts_config.id','>','1')),
5453
+ array('hosts_config.date',$order),
5454
+ array('hosts.id','asc')),
5455
+ '',NULL,$init,$span
5458
+} // class JffnmsHosts_Config
5459
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/LICENSE jffnms-0.9.3/LICENSE
5460
--- ../jffnms-0.9.2/LICENSE 2012-03-04 13:43:13.000000000 +1100
5461
+++ jffnms-0.9.3/LICENSE 1970-01-01 10:00:00.000000000 +1000
5464
- GNU GENERAL PUBLIC LICENSE
5465
- Version 2, June 1991
5467
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
5468
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
5469
- Everyone is permitted to copy and distribute verbatim copies
5470
- of this license document, but changing it is not allowed.
5474
- The licenses for most software are designed to take away your
5475
-freedom to share and change it. By contrast, the GNU General Public
5476
-License is intended to guarantee your freedom to share and change free
5477
-software--to make sure the software is free for all its users. This
5478
-General Public License applies to most of the Free Software
5479
-Foundation's software and to any other program whose authors commit to
5480
-using it. (Some other Free Software Foundation software is covered by
5481
-the GNU Lesser General Public License instead.) You can apply it to
5482
-your programs, too.
5484
- When we speak of free software, we are referring to freedom, not
5485
-price. Our General Public Licenses are designed to make sure that you
5486
-have the freedom to distribute copies of free software (and charge for
5487
-this service if you wish), that you receive source code or can get it
5488
-if you want it, that you can change the software or use pieces of it
5489
-in new free programs; and that you know you can do these things.
5491
- To protect your rights, we need to make restrictions that forbid
5492
-anyone to deny you these rights or to ask you to surrender the rights.
5493
-These restrictions translate to certain responsibilities for you if you
5494
-distribute copies of the software, or if you modify it.
5496
- For example, if you distribute copies of such a program, whether
5497
-gratis or for a fee, you must give the recipients all the rights that
5498
-you have. You must make sure that they, too, receive or can get the
5499
-source code. And you must show them these terms so they know their
5502
- We protect your rights with two steps: (1) copyright the software, and
5503
-(2) offer you this license which gives you legal permission to copy,
5504
-distribute and/or modify the software.
5506
- Also, for each author's protection and ours, we want to make certain
5507
-that everyone understands that there is no warranty for this free
5508
-software. If the software is modified by someone else and passed on, we
5509
-want its recipients to know that what they have is not the original, so
5510
-that any problems introduced by others will not reflect on the original
5511
-authors' reputations.
5513
- Finally, any free program is threatened constantly by software
5514
-patents. We wish to avoid the danger that redistributors of a free
5515
-program will individually obtain patent licenses, in effect making the
5516
-program proprietary. To prevent this, we have made it clear that any
5517
-patent must be licensed for everyone's free use or not licensed at all.
5519
- The precise terms and conditions for copying, distribution and
5520
-modification follow.
5522
- GNU GENERAL PUBLIC LICENSE
5523
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
5525
- 0. This License applies to any program or other work which contains
5526
-a notice placed by the copyright holder saying it may be distributed
5527
-under the terms of this General Public License. The "Program", below,
5528
-refers to any such program or work, and a "work based on the Program"
5529
-means either the Program or any derivative work under copyright law:
5530
-that is to say, a work containing the Program or a portion of it,
5531
-either verbatim or with modifications and/or translated into another
5532
-language. (Hereinafter, translation is included without limitation in
5533
-the term "modification".) Each licensee is addressed as "you".
5535
-Activities other than copying, distribution and modification are not
5536
-covered by this License; they are outside its scope. The act of
5537
-running the Program is not restricted, and the output from the Program
5538
-is covered only if its contents constitute a work based on the
5539
-Program (independent of having been made by running the Program).
5540
-Whether that is true depends on what the Program does.
5542
- 1. You may copy and distribute verbatim copies of the Program's
5543
-source code as you receive it, in any medium, provided that you
5544
-conspicuously and appropriately publish on each copy an appropriate
5545
-copyright notice and disclaimer of warranty; keep intact all the
5546
-notices that refer to this License and to the absence of any warranty;
5547
-and give any other recipients of the Program a copy of this License
5548
-along with the Program.
5550
-You may charge a fee for the physical act of transferring a copy, and
5551
-you may at your option offer warranty protection in exchange for a fee.
5553
- 2. You may modify your copy or copies of the Program or any portion
5554
-of it, thus forming a work based on the Program, and copy and
5555
-distribute such modifications or work under the terms of Section 1
5556
-above, provided that you also meet all of these conditions:
5558
- a) You must cause the modified files to carry prominent notices
5559
- stating that you changed the files and the date of any change.
5561
- b) You must cause any work that you distribute or publish, that in
5562
- whole or in part contains or is derived from the Program or any
5563
- part thereof, to be licensed as a whole at no charge to all third
5564
- parties under the terms of this License.
5566
- c) If the modified program normally reads commands interactively
5567
- when run, you must cause it, when started running for such
5568
- interactive use in the most ordinary way, to print or display an
5569
- announcement including an appropriate copyright notice and a
5570
- notice that there is no warranty (or else, saying that you provide
5571
- a warranty) and that users may redistribute the program under
5572
- these conditions, and telling the user how to view a copy of this
5573
- License. (Exception: if the Program itself is interactive but
5574
- does not normally print such an announcement, your work based on
5575
- the Program is not required to print an announcement.)
5577
-These requirements apply to the modified work as a whole. If
5578
-identifiable sections of that work are not derived from the Program,
5579
-and can be reasonably considered independent and separate works in
5580
-themselves, then this License, and its terms, do not apply to those
5581
-sections when you distribute them as separate works. But when you
5582
-distribute the same sections as part of a whole which is a work based
5583
-on the Program, the distribution of the whole must be on the terms of
5584
-this License, whose permissions for other licensees extend to the
5585
-entire whole, and thus to each and every part regardless of who wrote it.
5587
-Thus, it is not the intent of this section to claim rights or contest
5588
-your rights to work written entirely by you; rather, the intent is to
5589
-exercise the right to control the distribution of derivative or
5590
-collective works based on the Program.
5592
-In addition, mere aggregation of another work not based on the Program
5593
-with the Program (or with a work based on the Program) on a volume of
5594
-a storage or distribution medium does not bring the other work under
5595
-the scope of this License.
5597
- 3. You may copy and distribute the Program (or a work based on it,
5598
-under Section 2) in object code or executable form under the terms of
5599
-Sections 1 and 2 above provided that you also do one of the following:
5601
- a) Accompany it with the complete corresponding machine-readable
5602
- source code, which must be distributed under the terms of Sections
5603
- 1 and 2 above on a medium customarily used for software interchange; or,
5605
- b) Accompany it with a written offer, valid for at least three
5606
- years, to give any third party, for a charge no more than your
5607
- cost of physically performing source distribution, a complete
5608
- machine-readable copy of the corresponding source code, to be
5609
- distributed under the terms of Sections 1 and 2 above on a medium
5610
- customarily used for software interchange; or,
5612
- c) Accompany it with the information you received as to the offer
5613
- to distribute corresponding source code. (This alternative is
5614
- allowed only for noncommercial distribution and only if you
5615
- received the program in object code or executable form with such
5616
- an offer, in accord with Subsection b above.)
5618
-The source code for a work means the preferred form of the work for
5619
-making modifications to it. For an executable work, complete source
5620
-code means all the source code for all modules it contains, plus any
5621
-associated interface definition files, plus the scripts used to
5622
-control compilation and installation of the executable. However, as a
5623
-special exception, the source code distributed need not include
5624
-anything that is normally distributed (in either source or binary
5625
-form) with the major components (compiler, kernel, and so on) of the
5626
-operating system on which the executable runs, unless that component
5627
-itself accompanies the executable.
5629
-If distribution of executable or object code is made by offering
5630
-access to copy from a designated place, then offering equivalent
5631
-access to copy the source code from the same place counts as
5632
-distribution of the source code, even though third parties are not
5633
-compelled to copy the source along with the object code.
5635
- 4. You may not copy, modify, sublicense, or distribute the Program
5636
-except as expressly provided under this License. Any attempt
5637
-otherwise to copy, modify, sublicense or distribute the Program is
5638
-void, and will automatically terminate your rights under this License.
5639
-However, parties who have received copies, or rights, from you under
5640
-this License will not have their licenses terminated so long as such
5641
-parties remain in full compliance.
5643
- 5. You are not required to accept this License, since you have not
5644
-signed it. However, nothing else grants you permission to modify or
5645
-distribute the Program or its derivative works. These actions are
5646
-prohibited by law if you do not accept this License. Therefore, by
5647
-modifying or distributing the Program (or any work based on the
5648
-Program), you indicate your acceptance of this License to do so, and
5649
-all its terms and conditions for copying, distributing or modifying
5650
-the Program or works based on it.
5652
- 6. Each time you redistribute the Program (or any work based on the
5653
-Program), the recipient automatically receives a license from the
5654
-original licensor to copy, distribute or modify the Program subject to
5655
-these terms and conditions. You may not impose any further
5656
-restrictions on the recipients' exercise of the rights granted herein.
5657
-You are not responsible for enforcing compliance by third parties to
5660
- 7. If, as a consequence of a court judgment or allegation of patent
5661
-infringement or for any other reason (not limited to patent issues),
5662
-conditions are imposed on you (whether by court order, agreement or
5663
-otherwise) that contradict the conditions of this License, they do not
5664
-excuse you from the conditions of this License. If you cannot
5665
-distribute so as to satisfy simultaneously your obligations under this
5666
-License and any other pertinent obligations, then as a consequence you
5667
-may not distribute the Program at all. For example, if a patent
5668
-license would not permit royalty-free redistribution of the Program by
5669
-all those who receive copies directly or indirectly through you, then
5670
-the only way you could satisfy both it and this License would be to
5671
-refrain entirely from distribution of the Program.
5673
-If any portion of this section is held invalid or unenforceable under
5674
-any particular circumstance, the balance of the section is intended to
5675
-apply and the section as a whole is intended to apply in other
5678
-It is not the purpose of this section to induce you to infringe any
5679
-patents or other property right claims or to contest validity of any
5680
-such claims; this section has the sole purpose of protecting the
5681
-integrity of the free software distribution system, which is
5682
-implemented by public license practices. Many people have made
5683
-generous contributions to the wide range of software distributed
5684
-through that system in reliance on consistent application of that
5685
-system; it is up to the author/donor to decide if he or she is willing
5686
-to distribute software through any other system and a licensee cannot
5687
-impose that choice.
5689
-This section is intended to make thoroughly clear what is believed to
5690
-be a consequence of the rest of this License.
5692
- 8. If the distribution and/or use of the Program is restricted in
5693
-certain countries either by patents or by copyrighted interfaces, the
5694
-original copyright holder who places the Program under this License
5695
-may add an explicit geographical distribution limitation excluding
5696
-those countries, so that distribution is permitted only in or among
5697
-countries not thus excluded. In such case, this License incorporates
5698
-the limitation as if written in the body of this License.
5700
- 9. The Free Software Foundation may publish revised and/or new versions
5701
-of the General Public License from time to time. Such new versions will
5702
-be similar in spirit to the present version, but may differ in detail to
5703
-address new problems or concerns.
5705
-Each version is given a distinguishing version number. If the Program
5706
-specifies a version number of this License which applies to it and "any
5707
-later version", you have the option of following the terms and conditions
5708
-either of that version or of any later version published by the Free
5709
-Software Foundation. If the Program does not specify a version number of
5710
-this License, you may choose any version ever published by the Free Software
5713
- 10. If you wish to incorporate parts of the Program into other free
5714
-programs whose distribution conditions are different, write to the author
5715
-to ask for permission. For software which is copyrighted by the Free
5716
-Software Foundation, write to the Free Software Foundation; we sometimes
5717
-make exceptions for this. Our decision will be guided by the two goals
5718
-of preserving the free status of all derivatives of our free software and
5719
-of promoting the sharing and reuse of software generally.
5723
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
5724
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
5725
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
5726
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
5727
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
5728
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
5729
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
5730
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
5731
-REPAIR OR CORRECTION.
5733
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
5734
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
5735
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
5736
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
5737
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
5738
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
5739
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
5740
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
5741
-POSSIBILITY OF SUCH DAMAGES.
5743
- END OF TERMS AND CONDITIONS
5745
- How to Apply These Terms to Your New Programs
5747
- If you develop a new program, and you want it to be of the greatest
5748
-possible use to the public, the best way to achieve this is to make it
5749
-free software which everyone can redistribute and change under these terms.
5751
- To do so, attach the following notices to the program. It is safest
5752
-to attach them to the start of each source file to most effectively
5753
-convey the exclusion of warranty; and each file should have at least
5754
-the "copyright" line and a pointer to where the full notice is found.
5756
- <one line to give the program's name and a brief idea of what it does.>
5757
- Copyright (C) <year> <name of author>
5759
- This program is free software; you can redistribute it and/or modify
5760
- it under the terms of the GNU General Public License as published by
5761
- the Free Software Foundation; either version 2 of the License, or
5762
- (at your option) any later version.
5764
- This program is distributed in the hope that it will be useful,
5765
- but WITHOUT ANY WARRANTY; without even the implied warranty of
5766
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5767
- GNU General Public License for more details.
5769
- You should have received a copy of the GNU General Public License along
5770
- with this program; if not, write to the Free Software Foundation, Inc.,
5771
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
5773
-Also add information on how to contact you by electronic and paper mail.
5775
-If the program is interactive, make it output a short notice like this
5776
-when it starts in an interactive mode:
5778
- Gnomovision version 69, Copyright (C) year name of author
5779
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
5780
- This is free software, and you are welcome to redistribute it
5781
- under certain conditions; type `show c' for details.
5783
-The hypothetical commands `show w' and `show c' should show the appropriate
5784
-parts of the General Public License. Of course, the commands you use may
5785
-be called something other than `show w' and `show c'; they could even be
5786
-mouse-clicks or menu items--whatever suits your program.
5788
-You should also get your employer (if you work as a programmer) or your
5789
-school, if any, to sign a "copyright disclaimer" for the program, if
5790
-necessary. Here is a sample; alter the names:
5792
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
5793
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
5795
- <signature of Ty Coon>, 1 April 1989
5796
- Ty Coon, President of Vice
5798
-This General Public License does not permit incorporating your program into
5799
-proprietary programs. If your program is a subroutine library, you may
5800
-consider it more useful to permit linking proprietary applications with the
5801
-library. If this is what you want to do, use the GNU Lesser General
5802
-Public License instead of this License.
5803
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/README jffnms-0.9.3/README
5804
--- ../jffnms-0.9.2/README 2012-03-04 13:43:13.000000000 +1100
5805
+++ jffnms-0.9.3/README 1970-01-01 10:00:00.000000000 +1000
5807
-README file for JFFNMS
5808
-======================
5810
-This file contains important information about JFFNMS and should be read
5811
-before installing or upgrading JFFNMS.
5813
-Upgrading from 0.8.4
5814
---------------------
5815
-JFFNMS version 0.8.4 shipped with a serious bug with the database extraction.
5816
-The part of the build process that makes the databases differences was
5817
-missing, however the database dump worked ok.
5819
-This gives us two scenarios:
5820
- * You had a pre 0.8.4 (eg 0.8.3) JFFNMS and upgraded, giving you an
5821
- unchanged 0.8.3 database.
5822
- * You (re)installed jffnms 0.8.4 and used the database dump. You got the
5825
-The schema for 0.8.4 and 0.8.5 are the same.
5827
-This means if you are the first pre-0.8.4 scenario you WILL need to run the SQL update scripts to update your schema, just like you normally should do.
5829
-If JFFNMS 0.8.4 was your first database install, your schema is already
5830
-current, do NOT update the database (it will error out anyhow).
5832
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/TODO jffnms-0.9.3/TODO
5833
--- ../jffnms-0.9.2/TODO 2012-03-04 13:43:13.000000000 +1100
5834
+++ jffnms-0.9.3/TODO 1970-01-01 10:00:00.000000000 +1000
5836
-This are the remaining tasks to be done in JFFNMS.
5837
-If you want to contribute and you dont know where to start, please read this lines.
5838
-If you want to add a task, send me an email.
5843
- - rewrite tcp_port discovery script to use popen, log better and
5844
- new format for nmap 5.21, also pgrep()
5850
- - events/interface JS/CSS font-size
5851
- - popup selector full-text search
5852
- - discovery params: new/old field ?
5853
- - SNMP Timeout per-host
5854
- - Host Types, IT by Host Type
5855
- - Host Groups (modify maps)
5856
- - alarm backend: N Downs. db records per-int and global
5857
- - Chris ESI: Pix config transfer
5858
- - Host Groups (like maps) (modify maps to allow hosts)
5860
- - ALL Button in admin_header
5861
- - Configurable Delay in the DHTML popups
5862
- - TCP Port Hello/Quit string
5863
- - new/poller+ad satellite filter
5870
- - Thomas DNS monitoring
5871
- - Generic Interface Type
5873
- - Poller Helper: Poll only State
5874
- - Satellite Remote (Auto)Discovery
5875
- - Satellite Sync (virtual satellite in case theres no connection and I'm not the master)
5876
- - Modify Pollers that handle the buffer locally to somehow use the backend (or sync it)
5879
- - How much traffic the Interface had in X time (95th Percentile also)
5880
- - TOP 10 (Top Traffic, Errors, RTT, etc.)
5883
- - Host Tools (Routing Table, ARP Table, Socket State, etc. SNMP-based)
5884
- - Tools for all interface types (id =1)
5886
- - New Trigger/Action to allow config transfer as soon as a config change is made (event)
5887
- - Make consolidate scripts functions (like the other parts)
5888
- - Asset Tracking (Inventory) (Part Number, Serial Number, Cards, etc) (could use ENTITY-MIB/STACK-MIB)
5889
- - TFTP Configuration CVS Upload (Requested by Mike Hyde)
5890
- - TFTP Configuration Scheduled Upload (Requested by Rob Laidlaw)
5891
- - SLA Planned Outages/Maintence Windows
5892
- - SNMP Traps Processing more useful and flexible. (match by interfacenumber also) (Call Handler Scripts)
5893
- - Event Flap Detection.
5896
- - Send a URL to the interface in the Email Action (Requested by Rob Laidlaw)
5900
- - NetFlow Integration
5901
- - Use the Standard msyslog, not one modified for JFFNMS
5902
- - MD5 Signature of the tarball
5904
- - Better SOAP Interoperatibility testing
5905
- - Snort SNMP TRAP messages integration
5906
- - Radius Integration
5907
- - Trouble Ticket Plugins (Framework Ready)
5908
- - Implement ENTITY-MIB & STACK-MIB for Cisco's & others
5914
- - Documentation (on CVS by Craig Small and Javier Szyszlican)
5915
- - Interface inter-dependece (will be based on DMII Designated Main Interfaces)
5916
- - Multi Language Support (Sergio Martinez)
5917
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/UPGRADE jffnms-0.9.3/UPGRADE
5918
--- ../jffnms-0.9.2/UPGRADE 2012-03-04 13:43:13.000000000 +1100
5919
+++ jffnms-0.9.3/UPGRADE 1970-01-01 10:00:00.000000000 +1000
5921
-This file explains the upgrade procedure between versions:
5926
- 0. You are adviced to upgrade your PHP and PostgreSQL (if you use that) versions before the upgrade,
5927
- because some new features may need that.
5929
- The new poller is still experimental, and its not enabled by default.
5931
- Replace the <patch tar.gz path> with the actual path to the patch files,
5932
- '../jffnms-upgrade-0.9.1-to-0.9.2' if you are using jffnms-upgrade-0.9.1-to-0.9.2.tar.gz or
5933
- '/opt/jffnms-0.9.2/docs/upgrade' if you are using jffnms-0.9.2.tar.gz
5935
- 1. Apply the code patch:
5937
- # patch -p1 < <patch tar.gz path>/jffnms-0.9.1-to-0.9.2.patch
5939
- If you have not changed the code, there should not be any errors.
5940
- Replace apache.apache with your HTTPd username and group (nobody, httpd, etc)
5942
- 2. Upgrade the DB:
5944
- Backup in case of failure:
5945
- # mysqldump --opt -ujffnms -pjffnms jffnms > /tmp/jffnms.backup.mysql
5947
- Upgrade the MySQL Tables:
5948
- # cat docs/upgrade/mysql/jffnms-0.9.1-to-0.9.2.mysql.diff* | mysql -u jffnms -pjffnms jffnms
5951
- Backup in case of failure:
5952
- # pg_dump -U jffnms jffnms -dROc > /tmp/jffnms.backup.pgsql
5954
- Upgrade the PgSQL Tables:
5955
- # cat docs/upgrade/pgsql/jffnms-0.9.1-to-0.9.2.pgsql.diff* | psql jffnms jffnms
5957
- 3. Copy the new binary files:
5959
- # cp -Rv <patch tar.gz path>/files/* /opt/jffnms/
5961
- 4. Change Ownership
5963
- # chown -R apache:apache *
5965
- OR if you used the new Instalation method:
5966
- # chown -R jffnms:jffnms *
5969
- And then re apply the permissions to the /opt/jffnms folder:
5971
- # chmod -R ug+rw *
5974
- 5. Verify Everything is ok:
5975
- Go to the Setup page at
5976
- http://youserver/jffnms/admin/setup.php (or the path you set)
5978
- Check everything, make the corrections and SAVE the Configuration anyway.
5979
diff -Nru '-x*.png' '-x*.ini' '-x*.*sql' '-x*.patch' '-x*.svn' ../jffnms-0.9.2/UPGRADE.win32.txt jffnms-0.9.3/UPGRADE.win32.txt
5980
--- ../jffnms-0.9.2/UPGRADE.win32.txt 2012-03-04 13:43:13.000000000 +1100
5981
+++ jffnms-0.9.3/UPGRADE.win32.txt 1970-01-01 10:00:00.000000000 +1000
5983
-How to do an upgrade on Windows?
5984
---------------------------------
5986
-Please read all this note before executing something, so you can understand all the process.
5988
-Step 1 - Code Update:
5989
-=====================
5991
- 1. Rename the c:\jffnms folder to jffnms-old
5992
- 2. Rename the new jffnms version folder (like c:\jffnms-0.7.3) to c:\jffnms
5993
- 3. Copy your c:\jffnms-old\rrd folder to c:\jffnms\rrd
5994
- 4. Copy the c:\jffnms-old\rrdtool.exe and nmap.exe to c:\jffnms\
5995
- 5. Re-apply the permissions, give the jffnms user FULL CONTROL over c:\jffnms
5997
- 6. At this point you have the new version in place with your old version data.
5998
- The only thing missing is a correct configuration. You have to go to your setup.php
5999
- and reconfigure everything like you did when you first install it. (Step 3)
6002
-Step 2 - Database Update:
6003
-=========================
6005
- You have to send every file in the c:\jffnms\docs\upgrade\mysql to the mysql daemon :
6007
- 1. Backup in case of failure:
6008
- c:\> c:\mysql\bin\mysqldump.exe --opt -u root jffnms > c:\jffnms.backup.mysql
6010
- 2. Go to the DB upgrade folder
6011
- c:\> cd \jffnms\docs\upgrade\mysql
6013
- 3. Replace OLD with your current JFFNMS version number (like 0.7.2) and NEW with the new version number (like 0.7.3)
6014
- c:\jffnms\docs\upgrade\mysql> dir jffnms-OLD-to-NEW* (look at all the file names)
6016
- 4. Apply the DB changes
6017
- c:\jffnms\docs\upgrade\mysql> c:\mysql\bin\mysql.exe -u root jffnms < <Put every Filename here>
6019
- or, as suggested by Michael Mayers:
6022
- for /f "tokens=*" %%i in ('dir jffnms* /b') DO c:\mysql\bin\mysql.exe -u root jffnms < %%i
6024
- If not in .cmd file:
6025
- for /f "tokens=*" %i in ('dir jffnms* /b') DO c:\mysql\bin\mysql.exe -u root jffnms < %i
6028
-Step 3 - Check Everything:
6029
-==========================
6031
- Go to your setup in http://yourserver/admin/setup.php (put the correct path here).
6033
- Check if everything is ok, and Save the configuration.
6036
------------------------------------------------------
6037
-If you have any other note you will like added here,
6038
-please send it to the mailing list.